summaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-03-15 12:56:42 +0200
committerAlon Levy <alon@pobox.com>2015-03-15 12:56:42 +0200
commit4e5ca4fb71b04ed7584669878ad9c3644ac5d4ae (patch)
tree5363026be2dbc5de5ea9fcba82697ecf43c41750 /src/client
parent26a90e2c6843ad4cb433487e94841b61fab3b998 (diff)
client: ignore bad links on clone
Diffstat (limited to 'src/client')
-rw-r--r--src/client/model/graph.js24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/client/model/graph.js b/src/client/model/graph.js
index c560ca30..9662378c 100644
--- a/src/client/model/graph.js
+++ b/src/client/model/graph.js
@@ -795,8 +795,14 @@ function Graph(spec) {
link_spec.__src = find_node__by_id(src_id);
link_spec.__dst = find_node__by_id(dst_id);
- util.assert(undefined !== link_spec.__src, "src_id not found");
- util.assert(undefined !== link_spec.__dst, "dst_id not found");
+ if (null === link_spec.__src) {
+ console.log("src_id not found: " + src_id);
+ return null;
+ }
+ if (null === link_spec.__dst) {
+ console.log("dst_id not found: " + dst_id);
+ return null;
+ }
return link_spec;
}
@@ -804,7 +810,9 @@ function Graph(spec) {
function __commit_diff_ajax__clone(clone) {
var node_specs = clone.node_set_add.map(on_backend__node_add),
nodes = _add_node_set(node_specs),
- link_specs = clone.link_set_add.map(on_backend__link_add),
+ link_specs = clone.link_set_add.map(on_backend__link_add).filter(function (link_spec) {
+ return link_spec !== null;
+ }),
links = _add_link_set(link_specs);
diffBus.push({node_set_add: nodes, link_set_add: links});
}
@@ -835,10 +843,12 @@ function Graph(spec) {
function _add_link_set(link_specs) {
return link_specs.map(function (link_spec) {
// resolve link ptr
- var src = (link_spec.__src && (find_node__by_id(link_spec.__src.id) || link_spec.__src))
- || find_node__by_id(link_spec.__src_id),
- dst = (link_spec.__dst && (find_node__by_id(link_spec.__dst.id) || link_spec.__dst))
- || find_node__by_id(link_spec.__dst_id),
+ var src = (undefined !== link_spec.__src && null !== link_spec.__src &&
+ (find_node__by_id(link_spec.__src.id) || link_spec.__src)) ||
+ find_node__by_id(link_spec.__src_id),
+ dst = (undefined !== link_spec.__dst && null !== link_spec.__dst &&
+ (find_node__by_id(link_spec.__dst.id) || link_spec.__dst)) ||
+ find_node__by_id(link_spec.__dst_id),
link = model_core.create_link_from_spec(src, dst, link_spec);
__addLink(link);