From fa11863c1268a89f5d0308babc4f13c38c8835ed Mon Sep 17 00:00:00 2001
From: juanf <juanf>
Date: Fri, 22 Sep 2017 11:45:18 +0000
Subject: [PATCH] SSDM-4223 : Jupyter integration, view dataset parents codes
 on the dataset form

SVN: 38754
---
 .../html/js/controllers/MainController.js     | 102 +++++++++++-------
 .../js/views/DataSetForm/DataSetFormView.js   |   2 +
 2 files changed, 68 insertions(+), 36 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
index 76f8901d61a..507ea0b9dd6 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/controllers/MainController.js
@@ -534,54 +534,84 @@ function MainController(profile) {
 					break;
 				case "showViewDataSetPageFromPermId":
 					var _this = this;
-					this.serverFacade.searchDataSetWithUniqueId(arg, function(dataSetData) {
-						if(!dataSetData.result || !dataSetData.result[0]) {
-							window.alert("The item is no longer available, refresh the page, if the problem persists tell your admin that the Lucene index is probably corrupted.");
-						} else {
-							if(dataSetData.result[0].sampleIdentifierOrNull) {
-								_this.serverFacade.searchWithIdentifiers([dataSetData.result[0].sampleIdentifierOrNull], function(sampleData) {
-									document.title = "Data Set " + dataSetData.result[0].code;
-									_this._showViewDataSetPage(sampleData[0], dataSetData.result[0]);
-									//window.scrollTo(0,0);
-								});
-							} else if(dataSetData.result[0].experimentIdentifier) {
-								_this.serverFacade.listExperimentsForIdentifiers([dataSetData.result[0].experimentIdentifier], function(experimentResults) {
-									var experimentRules = { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : experimentResults.result[0].permId } };
-									var experimentCriteria = { entityKind : "EXPERIMENT", logicalOperator : "AND", rules : experimentRules };
-									_this.serverFacade.searchForExperimentsAdvanced(experimentCriteria, null, function(experimentData) {
+					var dsCriteria = { 	
+							entityKind : "DATASET", 
+							logicalOperator : "AND", 
+							rules : { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : arg } }
+					};
+					
+					this.serverFacade.searchForDataSetsAdvanced(dsCriteria, null, function(results) {
+						var datasetParentCodes = [];
+						if(results.objects[0]) {
+							for(var pIdx = 0; pIdx < results.objects[0].parents.length; pIdx++) {
+								datasetParentCodes.push(results.objects[0].parents[pIdx].code);
+							}
+						}
+						_this.serverFacade.searchDataSetWithUniqueId(arg, function(dataSetData) {
+							if(!dataSetData.result || !dataSetData.result[0]) {
+								window.alert("The item is no longer available, refresh the page, if the problem persists tell your admin that the Lucene index is probably corrupted.");
+							} else {
+								dataSetData.result[0].parentCodes = datasetParentCodes;
+								if(dataSetData.result[0].sampleIdentifierOrNull) {
+									_this.serverFacade.searchWithIdentifiers([dataSetData.result[0].sampleIdentifierOrNull], function(sampleData) {
 										document.title = "Data Set " + dataSetData.result[0].code;
-										_this._showViewDataSetPage(experimentData.objects[0], dataSetData.result[0]);
+										_this._showViewDataSetPage(sampleData[0], dataSetData.result[0]);
 										//window.scrollTo(0,0);
 									});
-								});
+								} else if(dataSetData.result[0].experimentIdentifier) {
+									_this.serverFacade.listExperimentsForIdentifiers([dataSetData.result[0].experimentIdentifier], function(experimentResults) {
+										var experimentRules = { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : experimentResults.result[0].permId } };
+										var experimentCriteria = { entityKind : "EXPERIMENT", logicalOperator : "AND", rules : experimentRules };
+										_this.serverFacade.searchForExperimentsAdvanced(experimentCriteria, null, function(experimentData) {
+											document.title = "Data Set " + dataSetData.result[0].code;
+											_this._showViewDataSetPage(experimentData.objects[0], dataSetData.result[0]);
+											//window.scrollTo(0,0);
+										});
+									});
+								}
 							}
-						}
+						});
 					});
 					break;
 				case "showEditDataSetPageFromPermId":
 					var _this = this;
-					this.serverFacade.searchDataSetWithUniqueId(arg, function(dataSetData) {
-						if(!dataSetData.result || !dataSetData.result[0]) {
-							window.alert("The item is no longer available, refresh the page, if the problem persists tell your admin that the Lucene index is probably corrupted.");
-						} else {
-							if(dataSetData.result[0].sampleIdentifierOrNull) {
-								_this.serverFacade.searchWithIdentifiers([dataSetData.result[0].sampleIdentifierOrNull], function(sampleData) {
-									document.title = "Data Set " + dataSetData.result[0].code;
-									_this._showEditDataSetPage(sampleData[0], dataSetData.result[0]);
-									//window.scrollTo(0,0);
-								});
-							} else if(dataSetData.result[0].experimentIdentifier) {
-								_this.serverFacade.listExperimentsForIdentifiers([dataSetData.result[0].experimentIdentifier], function(experimentResults) {
-									var experimentRules = { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : experimentResults.result[0].permId } };
-									var experimentCriteria = { entityKind : "EXPERIMENT", logicalOperator : "AND", rules : experimentRules };
-									_this.serverFacade.searchForExperimentsAdvanced(experimentCriteria, null, function(experimentData) {
+					var dsCriteria = { 	
+							entityKind : "DATASET", 
+							logicalOperator : "AND", 
+							rules : { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : arg } }
+					};
+					
+					this.serverFacade.searchForDataSetsAdvanced(dsCriteria, null, function(results) {
+						var datasetParentCodes = [];
+						if(results.objects[0]) {
+							for(var pIdx = 0; pIdx < results.objects[0].parents.length; pIdx++) {
+								datasetParentCodes.push(results.objects[0].parents[pIdx].code);
+							}
+						}
+						_this.serverFacade.searchDataSetWithUniqueId(arg, function(dataSetData) {
+							if(!dataSetData.result || !dataSetData.result[0]) {
+								window.alert("The item is no longer available, refresh the page, if the problem persists tell your admin that the Lucene index is probably corrupted.");
+							} else {
+								dataSetData.result[0].parentCodes = datasetParentCodes;
+								if(dataSetData.result[0].sampleIdentifierOrNull) {
+									_this.serverFacade.searchWithIdentifiers([dataSetData.result[0].sampleIdentifierOrNull], function(sampleData) {
 										document.title = "Data Set " + dataSetData.result[0].code;
-										_this._showEditDataSetPage(experimentData.objects[0], dataSetData.result[0]);
+										_this._showEditDataSetPage(sampleData[0], dataSetData.result[0]);
 										//window.scrollTo(0,0);
 									});
-								});
+								} else if(dataSetData.result[0].experimentIdentifier) {
+									_this.serverFacade.listExperimentsForIdentifiers([dataSetData.result[0].experimentIdentifier], function(experimentResults) {
+										var experimentRules = { "UUIDv4" : { type : "Attribute", name : "PERM_ID", value : experimentResults.result[0].permId } };
+										var experimentCriteria = { entityKind : "EXPERIMENT", logicalOperator : "AND", rules : experimentRules };
+										_this.serverFacade.searchForExperimentsAdvanced(experimentCriteria, null, function(experimentData) {
+											document.title = "Data Set " + dataSetData.result[0].code;
+											_this._showEditDataSetPage(experimentData.objects[0], dataSetData.result[0]);
+											//window.scrollTo(0,0);
+										});
+									});
+								}
 							}
-						}
+						});
 					});
 					break;
 				case "showDrawingBoard":
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 c6a4528bd02..3055f6d8f71 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
@@ -152,6 +152,8 @@ function DataSetFormView(dataSetFormController, dataSetFormModel) {
 			$dataSetTypeFieldSet.append($dataSetTypeLabel);
 			var $dataSetCodeLabel = FormUtil.getFieldForLabelWithText('Code', this._dataSetFormModel.dataSet.code, null);
 			$dataSetTypeFieldSet.append($dataSetCodeLabel);
+			var $dataSetParentsCodeLabel = FormUtil.getFieldForLabelWithText('Parents', JSON.stringify(this._dataSetFormModel.dataSet.parentCodes), null);
+			$dataSetTypeFieldSet.append($dataSetParentsCodeLabel);
 		}
 		
 		var ownerName = null;
-- 
GitLab