From 9250afaea85e89ca94b9dbb76417fc3ba44204da Mon Sep 17 00:00:00 2001 From: EggHsu Date: Sat, 12 Jan 2019 21:32:33 +0800 Subject: [PATCH] Remove duplicate nodes or relations on update --- src/main/scripts/neo4jd3.js | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/main/scripts/neo4jd3.js b/src/main/scripts/neo4jd3.js index 0e53f349..e646c075 100644 --- a/src/main/scripts/neo4jd3.js +++ b/src/main/scripts/neo4jd3.js @@ -895,7 +895,18 @@ function Neo4jD3(_selector, _options) { } function updateNodes(n) { - Array.prototype.push.apply(nodes, n); + var distinctNodes = []; + if (nodes.length > 0) { + n.forEach(function(item, index, array) { + if (contains(nodes, item.id)) + return; + else + distinctNodes.push(item); + }); + } else + distinctNodes = n; + + Array.prototype.push.apply(nodes, distinctNodes); node = svgNodes.selectAll('.node') .data(nodes, function(d) { return d.id; }); @@ -912,7 +923,18 @@ function Neo4jD3(_selector, _options) { } function updateRelationships(r) { - Array.prototype.push.apply(relationships, r); + var distinctRelations = []; + if (relationships.length > 0) { + r.forEach(function(item, index, array) { + if (contains(relationships, item.id)) + return; + else + distinctRelations.push(item); + }); + } else + distinctRelations = r; + + Array.prototype.push.apply(relationships, distinctRelations); relationship = svgRelationships.selectAll('.relationship') .data(relationships, function(d) { return d.id; });