diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-05 19:08:15 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-05 19:08:15 +0200 |
| commit | 557fcbf75fcfdb3172e1bb562bed933dfb9e330f (patch) | |
| tree | 8523447ce4698da944590e6625f7ae3d618083c3 /src/client/model/graph.js | |
| parent | 5492367f72c9f3fb3a4eb277b04485c869a523a5 (diff) | |
client/model/graph: fix link deletion round trip, just one id2link & id2node map now, plus cached lists
Diffstat (limited to 'src/client/model/graph.js')
| -rw-r--r-- | src/client/model/graph.js | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/client/model/graph.js b/src/client/model/graph.js index 87bb6926..aadccfed 100644 --- a/src/client/model/graph.js +++ b/src/client/model/graph.js @@ -8,9 +8,7 @@ var debug = false; function Graph(spec) { var id_to_node_map = {}, - node_map = {}, id_to_link_map = {}, - link_map = {}, diffBus = new Bacon.Bus(), cached_links, invalidate_links, @@ -29,14 +27,14 @@ function Graph(spec) { this.diffBus = diffBus; var links_forEach = function (f) { - for (var link_key in link_map) { - f(link_map[link_key]); + for (var link_key in id_to_link_map) { + f(id_to_link_map[link_key]); } } var nodes_forEach = function (f) { - for (var node_key in node_map) { - f(node_map[node_key]); + for (var node_key in id_to_node_map) { + f(id_to_node_map[node_key]); } } @@ -153,28 +151,25 @@ function Graph(spec) { var _node_remove_helper = function (node_id) { util.assert(node_id, "missing node id"); delete id_to_node_map[node_id]; - delete node_map[node_id]; invalidate_nodes = true; } var _node_add_helper = function (node) { util.assert(node.id, "missing node id"); id_to_node_map[node.id] = node; - node_map[node.id] = node; invalidate_nodes = true; } var _link_remove_helper = function (link_id) { util.assert(link_id, "missing link id"); delete id_to_link_map[link_id]; - delete link_map[link_id]; + util.assert(id_to_link_map[link_id] === undefined, "delete failed?!"); invalidate_links = true; } var _link_add_helper = function (link) { util.assert(link.id, "missing link id"); id_to_link_map[link.id] = link; - link_map[link.id] = link; invalidate_links = true; } @@ -555,7 +550,7 @@ function Graph(spec) { console.log("warning: server returned an id we don't have " + id); return; } - _link_remove_helper(link); + _link_remove_helper(id); console.log('_remove_link_set: ' + id); }); } @@ -574,8 +569,8 @@ function Graph(spec) { var findLink = function(src_id, dst_id, name) { var link_key, link; - for (link_key in link_map) { - link = link_map[link_key]; + for (link_key in id_to_link_map) { + link = id_to_link_map[link_key]; if (link.__src.id === src_id && link.__dst.id === dst_id) { return link; } @@ -632,9 +627,9 @@ function Graph(spec) { } var find_node__by_name = function(name) { - for (var k in node_map) { - if (compareNames(node_map[k].name, name)) { - return node_map[k]; + for (var k in id_to_node_map) { + if (compareNames(id_to_node_map[k].name, name)) { + return id_to_node_map[k]; } } } @@ -653,9 +648,9 @@ function Graph(spec) { function clear(push_diff) { push_diff = push_diff === undefined ? true : push_diff; id_to_node_map = {}; - node_map = {} + id_to_node_map = {} + id_to_link_map = {}; id_to_link_map = {}; - link_map = {}; invalidate_links = true; invalidate_nodes = true; if (push_diff) { @@ -868,7 +863,7 @@ function Graph(spec) { var get_nodes = function() { if (cached_nodes === undefined || invalidate_nodes) { - cached_nodes = object_values(node_map); + cached_nodes = object_values(id_to_node_map); invalidate_nodes = false; } return cached_nodes; @@ -877,7 +872,7 @@ function Graph(spec) { var get_links = function() { if (cached_links === undefined || invalidate_links) { - cached_links = object_values(link_map); + cached_links = object_values(id_to_link_map); invalidate_links = false; } return cached_links; @@ -887,15 +882,15 @@ function Graph(spec) { function setRegularState() { var x, node, link, s; - for (x in node_map) { - node = node_map[x]; + for (x in id_to_node_map) { + node = id_to_node_map[x]; s = node.state; if (s === 'chosen' || s === 'enter' || s === 'exit') { node.state = 'perm'; } } - for (x in link_map) { - link = link_map[x]; + for (x in id_to_link_map) { + link = id_to_link_map[x]; s = link.state; if (s === 'chosen' || s === 'enter' || s === 'exit') { link.state = 'perm'; |
