From 04023c3481235f55ac9ff3e9fa78a17fa64e127e Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Fri, 20 Jun 2014 14:11:59 +0000
Subject: [PATCH] SSDM-504: Update side menu after creation.

SVN: 31755
---
 .../newbrowser/html/js/server/ServerFacade.js | 12 +++++
 .../html/js/views/ExperimentForm.js           |  1 +
 .../html/js/widgets/SideMenuWidget.js         | 50 +++++++++++++++++++
 3 files changed, 63 insertions(+)

diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
index eaa0679bd0f..a5760970b31 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/server/ServerFacade.js
@@ -69,6 +69,18 @@ function ServerFacade(openbisServer) {
 		this.openbisServer.listExperiments(projects, null, callbackFunction);
 	}
 	
+	this.getProjectFromIdentifier = function(identifier, callbackFunction) {
+		this.openbisServer.listProjects(function(data) {
+			data.result.forEach(function(project){
+				var projIden = "/" + project.spaceCode + "/" + project.code;
+				if(projIden === identifier) {
+					callbackFunction(project);
+					return;
+				}
+			});
+		});
+	}
+	
 	this.getProjectFromPermId = function(permId, callbackFunction) {
 		this.openbisServer.listProjects(function(data) {
 			data.result.forEach(function(project){
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js
index d9c254e3a95..6e4bcf10fce 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js
@@ -251,6 +251,7 @@ function ExperimentForm(containerId, mainController, experiment, mode) {
 			this._mainController.serverFacade.createReportFromAggregationService(this._mainController.profile.allDataStores[0].code, parameters, function(response) {
 				Util.unblockUI();
 				_this._isFormDirty = false;
+				_this._mainController.sideMenu.refreshExperiment($("#PROJECT").val());
 				_this._mainController.changeView("showExperimentPageFromIdentifier", experimentIdentifier);
 			});
 		} else {
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/widgets/SideMenuWidget.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/widgets/SideMenuWidget.js
index 53211242cbe..99c0a6e7b6e 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/widgets/SideMenuWidget.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/widgets/SideMenuWidget.js
@@ -32,6 +32,56 @@ function SideMenuWidget(mainController, containerId, serverFacade) {
 	this._menuStructure = new SideMenuWidgetComponent(false, true, "Main Menu", null, { children : [] }, 'showBlancPage', null, "");
 	this._pointerToMenuNode = this._menuStructure;
 	this.isHidden = false;
+
+	this.refreshExperiment = function(projectIdentifierToAskForExperiments) {
+		var _this = this;
+		
+		//Clean node
+		var projectNode = _this._getProjectNodeForCode(projectIdentifierToAskForExperiments.split("/")[2]);
+		projectNode.newMenuIfSelected.children = [];
+		
+		//Rebuild node
+		this._serverFacade.getProjectFromIdentifier(projectIdentifierToAskForExperiments, function(project) {
+			delete project["@id"];
+			delete project["@type"];
+			
+			//Fill Experiments
+			_this._serverFacade.listExperiments([project], function(experiments) {
+				var experimentsToAskForSamples = [];
+				for(var i = 0; i < experiments.result.length; i++) {
+					var experiment = experiments.result[i];
+					experimentsToAskForSamples.push(experiment);
+					var projectCode = experiment.identifier.split("/")[2];
+					var projectNode = _this._getProjectNodeForCode(projectCode);
+					
+					var newMenuIfSelectedExperiment = {
+							children : []
+					}
+					
+					var menuItemExperiment = new SideMenuWidgetComponent(true, false, experiment.code, projectNode, newMenuIfSelectedExperiment, "showExperimentPageFromIdentifier", experiment.identifier, "(Experiment)");
+					projectNode.newMenuIfSelected.children.push(menuItemExperiment);
+				}
+					
+				//Fill Sub Experiments
+				_this._serverFacade.listSamplesForExperiments(experimentsToAskForSamples, function(subExperiments) {
+					var a = 0;
+					for(var i = 0; i < subExperiments.result.length; i++) {
+						var subExperiment = subExperiments.result[i];
+						if(subExperiment.experimentIdentifierOrNull) {
+							var projectCode = subExperiment.experimentIdentifierOrNull.split("/")[2];
+							var experimentCode = subExperiment.experimentIdentifierOrNull.split("/")[3];
+							var experimentNode = _this._getExperimentNodeForCode(projectCode, experimentCode);
+							
+							var menuItemSubExperiment = new SideMenuWidgetComponent(true, false, subExperiment.code, experimentNode, null, "showViewSamplePageFromPermId", subExperiment.permId, "(Sub Exp.)");
+							experimentNode.newMenuIfSelected.children.push(menuItemSubExperiment);
+						}
+					}
+					
+					_this.repaint();
+				});
+			});
+		});
+	}
 	
 	this.refreshSubExperiment = function(experimentIdentifierToAskForSamples) {
 		var _this = this;
-- 
GitLab