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 2db4dc9a1892e724dc717910bcc18ec961cbcf0c..9c2cd5c5385e04bf3291a0b35215875c08c86728 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 ead5b531db4a6e189b3879bdd8e34732c348a102..108447c03cec084601c92caeabcd38940766ec4f 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 54b397207e900f0a63bc667ff3ebc73c2140368e..ba08f6e4f709304cc011250ed774052e6ea2d53c 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(); }