diff options
| author | Alon Levy <alon@pobox.com> | 2014-12-23 23:14:29 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2014-12-23 23:14:29 +0200 |
| commit | 60d3cbb5dac88be86237cb933c7fbfc8bc03ad7b (patch) | |
| tree | a7aeb5f3100a19fcc3a006d02a2a22ab23bfb493 | |
| parent | f7ff8bc38410c2666665c4c70cc71c17f6eb7835 (diff) | |
client: fix submitting sentences including existing nodes
| -rw-r--r-- | src/client/model/graph.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/client/model/graph.js b/src/client/model/graph.js index b7f3e67e..a1d9886f 100644 --- a/src/client/model/graph.js +++ b/src/client/model/graph.js @@ -35,7 +35,12 @@ function Graph() { var name_to_node = {}; topo_diff.node_set_add = topo_diff.node_set_add.map(function(n) { if (n.id === undefined) { - n.id = model_core.random_node_name(); + var existing = findNodeByName(n.name); + if (existing) { + n = existing; + } else { + n.id = model_core.random_node_name(); + } } name_to_node[n.name] = n; return model_util.adapt_format_write_node(n); @@ -62,6 +67,11 @@ function Graph() { } return model_util.adapt_format_write_link(l); }); + // filter already existing nodes now, after we conveniently used them + // for name_to_node map + topo_diff.node_set_add = topo_diff.node_set_add.filter(function(n) { + return !hasNodeByName(n.name); + }); var graph_on_success = function(diff) { on_backend__diff(diff); if (on_success) { @@ -691,7 +701,7 @@ function Graph() { var hasNodeByName = function(name, state) { return nodes.filter(function (n) { - return compareNames(n.name, name) && n.state === state; + return compareNames(n.name, name) && (undefined === state || n.state === state); }).length > 0; } this.hasNodeByName = hasNodeByName; |
