diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js index b1fd0124760056e0f300c46033d658f9016f3143..31196cf8edd8dbdc73bd7579cb0c48a7f5c4a0ff 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js @@ -189,6 +189,20 @@ function MainController(profile) { window.scrollTo(0,0); }); break; + + case "showCreateExperimentPage": + var cleanText = decodeURIComponent(arg); //If the JSON is written on the URL we need to clean special chars + var argsMap = JSON.parse(cleanText); + var experimentTypeCode = argsMap["experimentTypeCode"]; + var projectIdentifier = argsMap["projectIdentifier"]; + document.title = "Create Experiment " + experimentTypeCode; + var experiment = { + experimentTypeCode : experimentTypeCode, + identifier : projectIdentifier + } + this._showExperimentPage(experiment, FormMode.CREATE); + window.scrollTo(0,0); + break; case "showExperimentPageFromIdentifier": var _this = this; this.serverFacade.listExperimentsForIdentifiers([arg], function(data) { diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js index 46ed9b87c98f5e66c800429a36f0b630897f241f..6e09ccbebbe32c1f653e18ef16f1cbabe28d4387 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/util/FormUtil.js @@ -40,6 +40,28 @@ var FormUtil = new function() { return $component; } + this.getExperimentTypeDropdown = function(id, isRequired) { + var experimentTypes = this.profile.allExperimentTypes; + + var $component = $("<select>", {"id" : id, class : 'form-control'}); + if (isRequired) { + $component.attr('required', ''); + } + + $component.append($("<option>").attr('value', '').attr('selected', '').text('')); + for(var i = 0; i < experimentTypes.length; i++) { + var experimentType = experimentTypes[i]; + var label = Util.getEmptyIfNull(experimentType.description); + if(label === "") { + label = experimentType.code; + } + + $component.append($("<option>").attr('value',experimentType.code).text(label)); + } + + return $component; + } + // // Get Field with container to obtain a correct layout // diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm.js index ff1a3a09e1f150413af1cca0eb4e2aab5f37d2d1..5dab54229bcda15299b1f94b12e6d58d2da9292f 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm.js @@ -35,7 +35,31 @@ function ProjectForm(containerId, mainController, project) { // // Title // - $formColumn.append($("<h1>").append("Project /" + this._project.spaceCode + "/" + this._project.code)); + var $formTitle = $("<h2>").append("Project /" + this._project.spaceCode + "/" + this._project.code); + $formColumn.append($formTitle); + + var $createExpBtn = $("<a>", { "class" : "btn btn-default"}).append("Create Experiment"); + $createExpBtn.click(function() { + var $dropdown = FormUtil.getExperimentTypeDropdown("experimentTypeDropdown", true); + Util.blockUI("Select the type for the Experiment: <br><br>" + $dropdown[0].outerHTML + "<br> or <a class='btn btn-default' id='experimentTypeDropdownCancel'>Cancel</a>"); + + $("#experimentTypeDropdown").on("change", function(event) { + var experimentTypeCode = $("#experimentTypeDropdown")[0].value; + var argsMap = { + "experimentTypeCode" : experimentTypeCode, + "projectIdentifier" : "/" + _this._project.spaceCode + "/" + _this._project.code + } + var argsMapStr = JSON.stringify(argsMap); + + _this._mainController.changeView("showCreateExperimentPage", argsMapStr); + }); + + $("#experimentTypeDropdownCancel").on("click", function(event) { + Util.unblockUI(); + }); + }); + $formTitle.append(" "); + $formTitle.append($createExpBtn); // // Metadata Fields