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