From 91e3ad7dc1c35bc6710a08a4cc9e34618f56ea6f Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Wed, 20 Sep 2017 09:57:18 +0000
Subject: [PATCH] SSDM-4223 : Jupyter integration - ongoing work

SVN: 38736
---
 .../widgets/AdvancedEntitySearchDropdown.js   | 56 ++++++++++++++++---
 .../widgets/JupyterNotebookView.js            | 10 ++--
 2 files changed, 53 insertions(+), 13 deletions(-)

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 4b664c5505e..95df16dea5b 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
@@ -31,22 +31,62 @@ function AdvancedEntitySearchDropdown(	isMultiple,
 	// External API
 	//
 	
-	this.addSelected = function(entity) {
-		var text = getDisplayName(entity);
+	this.addSelectedExperiment = function(experimentIdentifier) {
+		var _this = this;
+		require([ 'as/dto/experiment/id/ExperimentIdentifier', "as/dto/experiment/fetchoptions/ExperimentFetchOptions" ],
+				function(ExperimentIdentifier, ExperimentFetchOptions) {
+		            var id1 = new ExperimentIdentifier(experimentIdentifier);
+		            var fetchOptions = new ExperimentFetchOptions();
+		            mainController.openbisV3.getExperiments([ id1 ], fetchOptions).done(function(map) {
+		            	_this.addSelected(map[experimentIdentifier]);
+		            });
+		});
+	}
+	
+	this.addSelectedSample = function(sampleIdentifier) {
+		var _this = this;
+		require([ "as/dto/sample/id/SampleIdentifier", "as/dto/sample/fetchoptions/SampleFetchOptions" ],
+				function(SampleIdentifier, SampleFetchOptions) {
+		            var id1 = new SampleIdentifier(sampleIdentifier);
+		            var fetchOptions = new SampleFetchOptions();
+		            mainController.openbisV3.getSamples([ id1 ], fetchOptions).done(function(map) {
+		            	_this.addSelected(map[sampleIdentifier]);
+		            });
+		});
+	}
+	
+	this.addSelectedDataSet = function(datasetPermId) {
+		var _this = this;
+		require([ "as/dto/dataset/id/DataSetPermId", "as/dto/dataset/fetchoptions/DataSetFetchOptions" ],
+				function(DataSetPermId, DataSetFetchOptions) {
+		            var id1 = new DataSetPermId(datasetPermId);
+		            var fetchOptions = new DataSetFetchOptions();
+		            mainController.openbisV3.getDataSets([ id1 ], fetchOptions).done(function(map) {
+		            	_this.addSelected(map[datasetPermId]);
+		            });
+		});
+	}
+	
+	this.addSelected = function(v3entity) {
+		var text = getDisplayName(v3entity);
 		var id = null;
 		
-		if(entity.permId && entity.permId.permId) { //If is a v3 object
-			id = entity.permId.permId;
-		} else if(entity.permId) { //If is a v1 object
-			id = entity.permId;
+		if(v3entity.permId && v3entity.permId.permId) { //Only v3 objects supported
+			id = v3entity.permId.permId;
 		} else {
-			id = entity.code; // If is a v1 dataset
+			throw {
+			    name: "NonV3ObjectException",
+			    message: "Object without v3 permId",
+			    toString: function() {
+			      return this.name + ": " + this.message;
+			    }
+			}
 		}
 		
 		var data = {
 				id : id,
 				text : text,
-				data : entity
+				data : v3entity
 		};
 		
 		var newOption = new Option(text, id, true, true);
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/JupyterNotebookView.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/JupyterNotebookView.js
index d40db3b232d..4e41cc0bbca 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/JupyterNotebookView.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataSetForm/widgets/JupyterNotebookView.js
@@ -33,7 +33,7 @@ function JupyterNotebookView(jupyterNotebookController, jupyterNotebookModel) {
 		
 		switch(entity["@type"]) {
 			case "DataSet":
-				datasetsSearchDropdown.addSelected(entity);
+				datasetsSearchDropdown.addSelectedDataSet(entity.code);
 				break;
 		}
 		
@@ -45,16 +45,16 @@ function JupyterNotebookView(jupyterNotebookController, jupyterNotebookModel) {
 		switch(entity["@type"]) {
 			case "DataSet":
 				if(entity.sampleIdentifierOrNull) {
-					
+					ownerSearchDropdown.addSelectedSample(entity.sampleIdentifierOrNull);
 				} else if(entity.experimentIdentifier) {
-					
+					ownerSearchDropdown.addSelectedExperiment(entity.experimentIdentifier);
 				}
 				break;
 			case "Sample":
-				//ownerSearchDropdown.addSelected(entity);
+				ownerSearchDropdown.addSelectedSample(entity.identifier);
 				break;
 			case "Experiment":
-				//ownerSearchDropdown.addSelected(entity);
+				ownerSearchDropdown.addSelectedExperiment(entity.identifier);
 				break;
 		}
 		
-- 
GitLab