From ed444b1f92bc12e0c0e649d53d065de8cb0422d8 Mon Sep 17 00:00:00 2001 From: juanf <juanf> Date: Fri, 20 Jun 2014 13:12:51 +0000 Subject: [PATCH] SSDM-504: Experiment Form Create Mode. SVN: 31753 --- .../html/js/controllers/MainController.js | 14 ++++++++++ .../newbrowser/html/js/util/FormUtil.js | 22 ++++++++++++++++ .../newbrowser/html/js/views/ProjectForm.js | 26 ++++++++++++++++++- 3 files changed, 61 insertions(+), 1 deletion(-) 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 b1fd0124760..31196cf8edd 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 46ed9b87c98..6e09ccbebbe 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 ff1a3a09e1f..5dab54229bc 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 -- GitLab