From 12382651c282140977cb4045ed1c9b6223abfdbc Mon Sep 17 00:00:00 2001
From: juanf <juanf@bsse-bs-dock-dhcp-447.ethz.ch>
Date: Wed, 22 Aug 2018 14:30:52 +0200
Subject: [PATCH] SSDM-6971 : Moving datasets + tweaks

---
 .../js/views/DataSetForm/DataSetFormView.js   |  7 +++++
 .../widgets/AdvancedEntitySearchDropdown.js   | 14 +++++-----
 .../ExperimentForm/ExperimentFormView.js      |  4 +--
 .../js/views/SampleForm/SampleFormView.js     |  4 +--
 .../Shared/widgets/MoveEntityController.js    | 27 +++++++++++++++----
 .../js/views/Shared/widgets/MoveEntityView.js | 14 +++++++++-
 6 files changed, 52 insertions(+), 18 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
index 4c4dd312848..7f2287c763a 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/DataSetFormView.js
@@ -92,6 +92,13 @@ function DataSetFormView(dataSetFormController, dataSetFormModel) {
 			});
 			toolbarModel.push({ component : $editBtn, tooltip: "Edit" });
 
+			//Move
+			var $moveBtn = FormUtil.getButtonWithIcon("glyphicon-move", function () {
+				var moveEntityController = new MoveEntityController("DATASET", _this._dataSetFormModel.dataSet.code);
+				moveEntityController.init();
+			});
+			toolbarModel.push({ component : $moveBtn, tooltip: "Move" });
+			
 			//Archiving Requested Button
 			var physicalData = this._dataSetFormModel.dataSetV3.physicalData;
 
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/AdvancedEntitySearchDropdown.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/AdvancedEntitySearchDropdown.js
index 8d17d93c78f..4dce260bc81 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/AdvancedEntitySearchDropdown.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/AdvancedEntitySearchDropdown.js
@@ -146,13 +146,15 @@ function AdvancedEntitySearchDropdown(	isMultiple,
 	//
 	var getDisplayName = function(entity) {
 		var text = null;
-		if(profile.propertyReplacingCode && entity.properties && entity.properties[profile.propertyReplacingCode]) {
-			text = entity.identifier.identifier + " (" + entity.properties[profile.propertyReplacingCode] + ")";
-		} else {
+		if(entity.identifier && entity.identifier.identifier) {
 			text = entity.identifier.identifier;
 		}
+		if(profile.propertyReplacingCode && entity.properties && entity.properties[profile.propertyReplacingCode]) {
+			text += " (" + entity.properties[profile.propertyReplacingCode] + ")";
+		}
 		
 		if(entity["@type"] === "as.dto.dataset.DataSet") {
+			text = entity.permId.permId;
 			if(entity.sample) {
 				text += " " + ELNDictionary.Sample + " [" + getDisplayName(entity.sample) + "]";
 			}
@@ -298,10 +300,10 @@ function AdvancedEntitySearchDropdown(	isMultiple,
 						action = function(result) {
 							searchesResults.push(result);
 						 	if(searches.length > 0) {
-						    	var search = searches.shift();
-						    	search(action);
+							    	var search = searches.shift();
+							    	search(action);
 						    } else {
-						    	success(searchesResults);
+						    		success(searchesResults);
 						    }
 						};
 						      
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 c1c995626d9..8faeccaa1b1 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
@@ -100,9 +100,7 @@ function ExperimentFormView(experimentFormController, experimentFormModel) {
 			
 			//Move
 			var $moveBtn = FormUtil.getButtonWithIcon("glyphicon-move", function () {
-				var moveEntityController = new MoveEntityController("EXPERIMENT", experimentFormModel.experiment.permId, function() {
-					Util.showSuccess("Entity successfully moved.", function() { Util.unblockUI(); });
-				});
+				var moveEntityController = new MoveEntityController("EXPERIMENT", experimentFormModel.experiment.permId);
 				moveEntityController.init();
 			});
 			toolbarModel.push({ component : $moveBtn, tooltip: "Move" });
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
index df3c3666056..8766549f50f 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/SampleForm/SampleFormView.js
@@ -157,9 +157,7 @@ function SampleFormView(sampleFormController, sampleFormModel) {
 			
 			//Move
 			var $moveBtn = FormUtil.getButtonWithIcon("glyphicon-move", function () {
-				var moveEntityController = new MoveEntityController("SAMPLE", _this._sampleFormModel.sample.permId, function() {
-					Util.showSuccess("Entity successfully moved.", function() { Util.unblockUI(); });
-				});
+				var moveEntityController = new MoveEntityController("SAMPLE", _this._sampleFormModel.sample.permId);
 				moveEntityController.init();
 			});
 			toolbarModel.push({ component : $moveBtn, tooltip: "Move" });
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityController.js
index 458312cfc31..4640e379346 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityController.js
@@ -1,5 +1,5 @@
-function MoveEntityController(entityType, entityPermId, callbackOnSuccess) {
-	var moveEntityModel = new MoveEntityModel(callbackOnSuccess);
+function MoveEntityController(entityType, entityPermId) {
+	var moveEntityModel = new MoveEntityModel();
 	var moveEntityView = new MoveEntityView(this, moveEntityModel);
 	
 	this.init = function() {
@@ -32,7 +32,7 @@ function MoveEntityController(entityType, entityPermId, callbackOnSuccess) {
 			            experimentUpdate.setExperimentId(moveEntityModel.entity.getIdentifier());
 			 			experimentUpdate.setProjectId(moveEntityModel.selected.getIdentifier());
 			            mainController.openbisV3.updateExperiments([ experimentUpdate ]).done(function() {
-			                callbackOnSuccess();
+			                Util.showSuccess("Entity successfully moved.", function() { Util.unblockUI(); });
 			            });
         			});
 				break;
@@ -43,12 +43,29 @@ function MoveEntityController(entityType, entityPermId, callbackOnSuccess) {
 			            sampleUpdate.setSampleId(moveEntityModel.entity.getIdentifier());
 			 			sampleUpdate.setExperimentId(moveEntityModel.selected.getIdentifier());
 			            mainController.openbisV3.updateSamples([ sampleUpdate ]).done(function() {
-			                callbackOnSuccess();
+			            		Util.showSuccess("Entity successfully moved.", function() { Util.unblockUI(); });
 			            });
         			});
 				break;
 			case "DATASET":
-				
+				require([ "as/dto/dataset/update/DataSetUpdate"], 
+			        function(DataSetUpdate) {
+			            var datasetUpdate = new DataSetUpdate();
+			            datasetUpdate.setDataSetId(moveEntityModel.entity.getPermId());
+			            
+			            switch(moveEntityModel.selected["@type"]) {
+							case "as.dto.experiment.Experiment":
+								datasetUpdate.setExperimentId(moveEntityModel.selected.getIdentifier());
+							break;
+							case "as.dto.sample.Sample":
+								datasetUpdate.setSampleId(moveEntityModel.selected.getIdentifier());
+							break;
+						}
+						
+			            mainController.openbisV3.updateDataSets([ datasetUpdate ]).done(function() {
+			            		Util.showSuccess("Entity successfully moved.", function() { Util.unblockUI(); });
+			            });
+        			});
 				break;
 		}
 		
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityView.js
index bf4ebf11ba7..bc3039732bf 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/Shared/widgets/MoveEntityView.js
@@ -5,7 +5,16 @@ function MoveEntityView(moveEntityController, moveEntityModel) {
 			Util.unblockUI();
 			moveEntityController.move();
 		});
-		$window.append($('<legend>').append("Moving " + moveEntityModel.entity.identifier + " To:"));
+		
+		switch(moveEntityModel.entity["@type"]) {
+			case "as.dto.experiment.Experiment":
+			case "as.dto.sample.Sample":
+				$window.append($('<legend>').append("Moving " + moveEntityModel.entity.getIdentifier() + " To:"));
+			break;
+			case "as.dto.dataset.DataSet":
+				$window.append($('<legend>').append("Moving " + moveEntityModel.entity.getPermId() + " To:"));
+			break;
+		}
 		
 		var $searchBox = $('<div>');
 		$window.append($searchBox);
@@ -18,6 +27,9 @@ function MoveEntityView(moveEntityController, moveEntityModel) {
 			case "as.dto.sample.Sample":
 				advancedEntitySearchDropdown = new AdvancedEntitySearchDropdown(false, true, "search entity to move to", true, false, false, false);
 			break;
+			case "as.dto.dataset.DataSet":
+				advancedEntitySearchDropdown = new AdvancedEntitySearchDropdown(false, true, "search entity to move to", true, true, false, false);
+			break;
 		}
 		
 		var $btnAccept = $('<input>', { 'type': 'submit', 'class' : 'btn btn-primary', 'value' : 'Accept' });		
-- 
GitLab