From ed62cb0e503f68d7139702d1b331e6d69c282100 Mon Sep 17 00:00:00 2001
From: juanf <juanf@bsse-bs-dock-dhcp-447.ethz.ch>
Date: Fri, 24 Aug 2018 13:56:13 +0200
Subject: [PATCH] SSDM-6791 : Do not show storage positions in hierarchy graph
 and table

---
 .../eln-lims/html/js/config/Profile.js        | 59 +++++++++++++++++++
 .../HierarchyTable/HierarchyTableModel.js     |  5 ++
 .../html/js/views/legacy/SampleHierarchy.js   |  5 ++
 3 files changed, 69 insertions(+)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
index 2db4dc9a189..9c2cd5c5385 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
@@ -278,6 +278,65 @@ $.extend(DefaultProfile.prototype, {
 				"experimentTypeCodes" : []
 		}
 		
+		this._deleteSampleConnectionsByTypeIfNotVisited = function(sample, visited) {
+			var permId = null;
+			
+			if(sample["@type"] === "as.dto.sample.Sample") {
+				permId = sample.getPermId().getPermId();
+			} else if(sample["@type"] === "Sample") {
+				permId = sample.permId;
+			}
+					
+			if(visited[permId]) {
+				return;
+			} else {
+				visited[permId] = true;
+			}
+			
+			if(sample.parents) {
+				for(var i=0; i < sample.parents.length; i++) {
+					var sampleParent = sample.parents[i];
+					var sampleTypeCode = null;
+					
+					if(sample["@type"] === "as.dto.sample.Sample") {
+						sampleTypeCode = sampleParent.getType().getCode();
+					} else if(sample["@type"] === "Sample") {
+						sampleTypeCode = sampleParent.sampleTypeCode;
+					}
+					
+					if($.inArray(sampleTypeCode, this.hideTypes["sampleTypeCodes"]) !== -1) {
+						sample.parents.splice(i, 1);
+						i--;
+					} else {
+						this._deleteSampleConnectionsByTypeIfNotVisited(sampleParent, visited);
+					}
+				}
+			}
+			if(sample.children) {
+				for(var i=0; i < sample.children.length; i++) {
+					var sampleChild = sample.children[i];
+					var sampleTypeCode = null;
+					
+					if(sample["@type"] === "as.dto.sample.Sample") {
+						sampleTypeCode = sampleChild.getType().getCode();
+					} else if(sample["@type"] === "Sample") {
+						sampleTypeCode = sampleChild.sampleTypeCode;
+					}
+					
+					if($.inArray(sampleTypeCode, this.hideTypes["sampleTypeCodes"]) !== -1) {
+						sample.children.splice(i, 1);
+						i--;
+					} else {
+						this._deleteSampleConnectionsByTypeIfNotVisited(sampleChild, visited);
+					}
+				}
+			}
+		}
+		
+		this.deleteSampleConnectionsByType = function(sample) {
+			var visited = {};
+			this._deleteSampleConnectionsByTypeIfNotVisited(sample, visited);
+		}
 		
 		this.propertyReplacingCode = "NAME";
 		
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/HierarchyTable/HierarchyTableModel.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/HierarchyTable/HierarchyTableModel.js
index ead5b531db4..108447c03ce 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/HierarchyTable/HierarchyTableModel.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/HierarchyTable/HierarchyTableModel.js
@@ -16,6 +16,11 @@
 
 function HierarchyTableModel(entity) {
 	this.entity = entity;
+	
+	if(this.entity["@type"] === "as.dto.sample.Sample") {  // V3 Sample
+		profile.deleteSampleConnectionsByType(this.entity);
+	}
+	
 	this.relationShipsMap = HierarchyUtil.createRelationShipsMap(entity);
 	
 	this.getData = function(dataList) {
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/legacy/SampleHierarchy.js b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/legacy/SampleHierarchy.js
index 54b397207e9..ba08f6e4f70 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/legacy/SampleHierarchy.js
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/legacy/SampleHierarchy.js
@@ -22,6 +22,11 @@ function SampleHierarchy(serverFacade, views, profile, sample) {
 	this.sample = sample;
 	this.hierarchyFilterController = null;
 	
+	//
+	if(this.sample["@type"] === "Sample") { // V1 Sample
+		profile.deleteSampleConnectionsByType(this.sample);
+	}
+	//
 	this.init = function() {
 		this.repaint();
 	}
-- 
GitLab