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 813995c15e6eb9908f7bd7e0c60c89b42e59aec9..835199ebf7bafec1d29f74a674ded48fd1917002 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 @@ -482,7 +482,7 @@ function ServerFacade(openbisServer) { }); } - this.searchWithExperiment = function(experimentPermId, callbackFunction) + this.searchWithExperiment = function(experimentIdentifier, callbackFunction) { var matchClauses = [ {"@type":"AttributeMatchClause", fieldType : "ATTRIBUTE", @@ -491,17 +491,28 @@ function ServerFacade(openbisServer) { } ] + var identifierParts = experimentIdentifier.split("/"); var experimentSubCriteria = { "@type" : "SearchSubCriteria", "targetEntityKind" : "EXPERIMENT", "criteria" : { matchClauses : [{ - "@type":"AttributeMatchClause", - fieldType : "ATTRIBUTE", - attribute : "PERM_ID", - desiredValue : experimentPermId - }], - operator : "MATCH_ANY_CLAUSES" + "@type":"AttributeMatchClause", + fieldType : "ATTRIBUTE", + attribute : "SPACE", + desiredValue : identifierParts[1] + },{ + "@type":"AttributeMatchClause", + fieldType : "ATTRIBUTE", + attribute : "PROJECT", + desiredValue : identifierParts[2] + }, { + "@type":"AttributeMatchClause", + fieldType : "ATTRIBUTE", + attribute : "CODE", + desiredValue : identifierParts[3] + }], + operator : "MATCH_ALL_CLAUSES" } } diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js index a70516d8249e6419af29bd7d17e06cc637f2fb8b..63f66afe28c53c73c14b6577a7fc01674d4baf24 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js @@ -30,7 +30,7 @@ function ExperimentFormView(experimentFormController, experimentFormModel) { 'action' : 'javascript:void(0);', 'onsubmit' : 'mainController.currentView.updateExperiment();' }); - + $form.append($formColumn); // diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js index 05bff72387b22202288905f747bd427d4c3667ab..bdfe2162ae74381cec1664f9ecdb9ad08fc69921 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleTable.js @@ -35,6 +35,7 @@ function SampleTable(serverFacade, sampleTableId, profile, sampleTypeCode, inspe this.sampleTableId = sampleTableId; this.profile = profile; this.sampleTypesOnExperiment = {}; + this.experimentIdentifier = null; this.sampleTypeCode = sampleTypeCode; this.inspectEnabled = inspectEnabled; this.enableEdit = enableEdit; @@ -148,7 +149,8 @@ function SampleTable(serverFacade, sampleTableId, profile, sampleTypeCode, inspe var localReference = this; if(this.sampleTypeCode.indexOf(":") !== -1) { //New experiment behaviour - this.serverFacade.searchWithExperiment(this.sampleTypeCode.split(":")[1], function(data) { + this.experimentIdentifier = this.sampleTypeCode.split(":")[1]; + this.serverFacade.searchWithExperiment(this.experimentIdentifier, function(data) { for(var i = 0; i < data.length; i++) { if(localReference.sampleTypesOnExperiment[data[i].sampleTypeCode]) { localReference.sampleTypesOnExperiment[data[i].sampleTypeCode] = localReference.sampleTypesOnExperiment[data[i].sampleTypeCode] + 1; @@ -191,6 +193,16 @@ function SampleTable(serverFacade, sampleTableId, profile, sampleTypeCode, inspe var sampleType = this.profile.getSampleTypeForSampleTypeCode(this.sampleTypeCode); if(!sampleType) { $("#"+this.sampleTableId).append("<h1>No Samples Found</h1>"); + + var dropDownMenu = ""; + dropDownMenu += "<span class='dropdown'>"; + dropDownMenu += "<a href='#' data-toggle='dropdown' class='dropdown-toggle btn btn-default'>Options <b class='caret'></b></a>"; + dropDownMenu += "<ul class='dropdown-menu' role='menu' aria-labelledby='sampleTableDropdown'>"; + dropDownMenu += " <li role='presentation'><a class='' title='create a new sample' href=\"javascript:mainController.currentView.createNewSample();\">Create Sample</a></li>"; + dropDownMenu += "</ul>"; + dropDownMenu += "</span>"; + $("#"+this.sampleTableId).append(dropDownMenu); + return; } var sampleTypeDisplayName = Util.getEmptyIfNull(sampleType.description); @@ -602,13 +614,17 @@ function SampleTable(serverFacade, sampleTableId, profile, sampleTypeCode, inspe // Create/Import and other table features // this.createNewSample = function() { + var _this = this; var $dropdown = FormUtil.getSampleTypeDropdown("sampleTypeDropdown", true); Util.blockUI("Select the type for the sample: <br><br>" + $dropdown[0].outerHTML + "<br> or <a class='btn btn-default' id='sampleTypeDropdownCancel'>Cancel</a>"); $("#sampleTypeDropdown").on("change", function(event) { var sampleTypeCode = $("#sampleTypeDropdown")[0].value; - - mainController.changeView("showCreateSamplePage", sampleTypeCode); + var argsMap = { + "sampleTypeCode" : sampleTypeCode, + "experimentIdentifier" : _this.experimentIdentifier + } + var argsMapStr = JSON.stringify(argsMap); Util.unblockUI(); mainController.changeView("showCreateSubExperimentPage", argsMapStr); 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 07a302f31d1ccfdd8e7c3c5e2c6e144c91855339..88034e3de679451929b5530e14e0c49bdc9aa3f2 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 @@ -61,7 +61,7 @@ function SideMenuWidget(mainController, containerId, serverFacade) { var menuItemExperiment = null; if(isInventory) { - menuItemExperiment = new SideMenuWidgetComponent(true, false, displayName, experiment.code, projectNode, null, "showSamplesPage", experiment.identifier + ":None"); + menuItemExperiment = new SideMenuWidgetComponent(true, false, displayName, experiment.code, projectNode, null, "showSamplesPage", ":" + experiment.identifier); } else { menuItemExperiment = new SideMenuWidgetComponent(true, false, displayName, experiment.code, projectNode, newMenuIfSelectedExperiment, "showExperimentPageFromIdentifier", experiment.identifier, "(Experiment)"); } @@ -293,7 +293,7 @@ function SideMenuWidget(mainController, containerId, serverFacade) { displayName = experiment.code; } - var menuItemExperiment = new SideMenuWidgetComponent(true, false, displayName, experiment.code, projectNode, null, "showSamplesPage", experiment.identifier + ":" + experiment.permId /* "PROTEIN" */, ""); + var menuItemExperiment = new SideMenuWidgetComponent(true, false, displayName, experiment.code, projectNode, null, "showSamplesPage", ":" + experiment.identifier, ""); projectNode.newMenuIfSelected.children.push(menuItemExperiment); } }