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 eaa0679bd0f3053bd2ad6cff8af599114b4e9f45..a5760970b3104161893f9e15a81500d9771f41b0 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 d9c254e3a954d2ba63b1e284706f41cc2d2ca019..6e4bcf10fcebf94510774587f250251af763bef5 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 53211242cbee96cd36a991f70f39552a5f4dc166..99c0a6e7b6e9576fbf1f4a68cb1c84929ad70ee1 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;