summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-13 13:01:06 +0200
committerAlon Levy <alon@pobox.com>2015-01-13 13:01:06 +0200
commitede80059779e6c8c71d47c7efe7d1274419f5964 (patch)
tree36035f715b49fa43f7abfe7341a9a97978a5e01e /src
parent458364a2a4bff2b2c213ff164ee6383302039bb6 (diff)
textanalysis: only send new nodes. Fixes #260
Diffstat (limited to 'src')
-rw-r--r--src/client/textanalysis.js27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/client/textanalysis.js b/src/client/textanalysis.js
index 0c557412..1bb4e988 100644
--- a/src/client/textanalysis.js
+++ b/src/client/textanalysis.js
@@ -398,25 +398,32 @@ var textAnalyser = function (spec) {
ret.applyToGraph = function(spec) {
var edit_graph = spec.edit_graph,
backend_commit = spec.backend_commit,
- main_graph = edit_graph.base;
+ main_graph = edit_graph.base,
+ existing_nodes = [];
util.assert(edit_graph !== undefined &&
main_graph !== undefined &&
backend_commit !== undefined, "missing inputs");
window.ret = ret;
- ret.node_set_add = nodes.map(function (node) {
- var main_node = main_graph.find_node__by_name(node.name);
- if (main_node) {
- console.log('!!! returning a node from the parent graph');
- return main_node;
- }
- return model_core.create_node__set_random_id(node);
- });
- // fill in hash to be used for link creation
+ ret.node_set_add = nodes
+ .filter(function (node_spec) {
+ var main_node = main_graph.find_node__by_name(node_spec.name);
+ if (main_node) {
+ existing_nodes.push(main_node);
+ }
+ return main_node === null;
+ })
+ .map(function (node_spec) {
+ return model_core.create_node__set_random_id(node_spec);
+ });
+ // fill in hash to be used for link creation, new and existing nodes
ret.node_set_add.forEach(function (node) {
node_by_name[node.name] = node;
});
+ existing_nodes.forEach(function (node) {
+ node_by_name[node.name] = node;
+ });
ret.link_set_add = links
.filter(function (link) {