From 6dfc9763ed22a7cbb6c8d2b79177b85f0eb9e9e9 Mon Sep 17 00:00:00 2001
From: Juan Fuentes <juanf@bs-mbpr28.d.ethz.ch>
Date: Thu, 7 Mar 2019 13:43:03 +0100
Subject: [PATCH] SSDM-7423 : Freezing experiments, basic UI infrastructure +
 detect feature is available to show buttons

---
 .../views/ExperimentForm/ExperimentFormController.js  | 11 ++++++++++-
 .../js/views/ExperimentForm/ExperimentFormView.js     |  8 ++++++++
 .../html/js/views/ProjectForm/ProjectFormView.js      | 10 ++++++----
 .../eln-lims/html/js/views/SpaceForm/SpaceFormView.js | 10 ++++++----
 4 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormController.js
index db1a41b272c..b986674a2a8 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormController.js
@@ -20,7 +20,16 @@ function ExperimentFormController(mainController, mode, experiment) {
 	this._experimentFormView = new ExperimentFormView(this, this._experimentFormModel);
 	
 	this.init = function(views) {
-		this._experimentFormView.repaint(views);
+		var _this = this;
+		
+		require([ "as/dto/experiment/id/ExperimentPermId", "as/dto/experiment/fetchoptions/ExperimentFetchOptions" ],
+				function(ExperimentPermId, ExperimentFetchOptions) {
+				var id = new ExperimentPermId(experiment.permId);
+				mainController.openbisV3.getExperiments([ id ], new ExperimentFetchOptions()).done(function(map) {
+	                _this._experimentFormModel.v3_experiment = map[id];
+	                _this._experimentFormView.repaint(views);
+	            });		
+		});
 	}
 	
 	this.isDirty = function() {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js
index 6c8940f9cc0..1796385329d 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentForm/ExperimentFormView.js
@@ -104,6 +104,14 @@ function ExperimentFormView(experimentFormController, experimentFormModel) {
 				toolbarModel.push({ component : $createBtn, tooltip: "Create " + Util.getDisplayNameFromCode(mandatorySampleTypeCode) });
 			}
 			
+			//Freeze
+			if(_this._experimentFormModel.v3_experiment.frozen !== undefined) { //Freezing available on the API
+				var isEntityFrozen = _this._experimentFormModel.v3_experiment.frozen;
+				var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
+				var $freezeButton = FormUtil.getFreezeButton("EXPERIMENT", this._experimentFormModel.v3_experiment.permId.permId, isEntityFrozen);
+				toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+			}
+			
 			//Edit
 			var $editBtn = FormUtil.getButtonWithIcon("glyphicon-edit", function () {
 				mainController.changeView("showEditExperimentPageFromIdentifier", _this._experimentFormModel.experiment.identifier);
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
index f164de2f337..0e58cd4cc26 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
@@ -94,10 +94,12 @@ function ProjectFormView(projectFormController, projectFormModel) {
 			}
 			
 			//Freeze
-			var isEntityFrozen = _this._projectFormModel.v3_project.frozen;
-			var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
-			var $freezeButton = FormUtil.getFreezeButton("PROJECT", this._projectFormModel.v3_project.permId.permId, isEntityFrozen);
-			toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+			if(_this._projectFormModel.v3_project.frozen !== undefined) { //Freezing available on the API
+				var isEntityFrozen = _this._projectFormModel.v3_project.frozen;
+				var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
+				var $freezeButton = FormUtil.getFreezeButton("PROJECT", this._projectFormModel.v3_project.permId.permId, isEntityFrozen);
+				toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+			}
 			
 			//Edit
 			var $editBtn = FormUtil.getButtonWithIcon("glyphicon-edit", function () {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
index c2f98f96597..e242ee700d4 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SpaceForm/SpaceFormView.js
@@ -41,10 +41,12 @@ function SpaceFormView(spaceFormController, spaceFormModel) {
 		toolbarModel.push({ component : $createProj, tooltip: "Create Project" });
 
 		//Freeze
-		var isEntityFrozen = _this._spaceFormModel.v3_space.frozen;
-		var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
-		var $freezeButton = FormUtil.getFreezeButton("SPACE", _this._spaceFormModel.v3_space.permId.permId, isEntityFrozen);
-		toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+		if(_this._spaceFormModel.v3_space.frozen !== undefined) { //Freezing available on the API
+			var isEntityFrozen = _this._spaceFormModel.v3_space.frozen;
+			var isEntityFrozenTooltip = (isEntityFrozen)?"Entity Frozen":"Freeze Entity (Disable further modifications)";
+			var $freezeButton = FormUtil.getFreezeButton("SPACE", _this._spaceFormModel.v3_space.permId.permId, isEntityFrozen);
+			toolbarModel.push({ component : $freezeButton, tooltip: isEntityFrozenTooltip });
+		}
 		
 		//Export
 		var $exportAll = FormUtil.getExportButton([{ type: "SPACE", permId : _this._spaceFormModel.space.code, expand : true }], false);
-- 
GitLab