diff options
| author | Alon Levy <alon@pobox.com> | 2015-01-06 21:40:40 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-01-06 21:40:40 +0200 |
| commit | 546ee33efaaa0df3e121a7ba5c16bc3aa1a0aeeb (patch) | |
| tree | f5e5743f5d9cab413efae79f4a867161cd955e45 /src | |
| parent | a7d4e65fa944e2174f6f20a20c3ad0b37c2c0304 (diff) | |
client: adapt to new node_id_set_add and link_id_set_add, renames all around
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/model/diff.js | 12 | ||||
| -rw-r--r-- | src/client/model/graph.js | 84 | ||||
| -rw-r--r-- | src/client/model/util.js | 1 | ||||
| -rw-r--r-- | src/client/view/graph_view.js | 2 | ||||
| -rw-r--r-- | src/client/view/selection.js | 4 |
5 files changed, 55 insertions, 48 deletions
diff --git a/src/client/model/diff.js b/src/client/model/diff.js index 4ad0d169..c41fbc53 100644 --- a/src/client/model/diff.js +++ b/src/client/model/diff.js @@ -31,8 +31,8 @@ define([], */ function Topo_Diff(obj_spec) { - this.link_set_rm = obj_spec.link_set_rm; - this.node_set_rm = obj_spec.node_set_rm; + this.link_id_set_rm = obj_spec.link_id_set_rm; + this.node_id_set_rm = obj_spec.node_id_set_rm; this.node_set_add = obj_spec.node_set_add; this.link_set_add = obj_spec.link_set_add; @@ -42,7 +42,7 @@ define([], } Topo_Diff.prototype.for_each_node_rm = function(callback, this_arg) { - this.node_set_rm.forEach(callback, this_arg); + this.node_id_set_rm.forEach(callback, this_arg); } Topo_Diff.prototype.for_each_link_add = function(callback, this_arg) { @@ -50,7 +50,7 @@ define([], } Topo_Diff.prototype.for_each_link_rm = function(callback, this_arg) { - this.link_set_rm.forEach(callback, this_arg); + this.link_id_set_rm.forEach(callback, this_arg); } /** @@ -140,8 +140,8 @@ define([], undefined == obj_spec && (obj_spec = {}); undefined == obj_spec.node_set_add && (obj_spec.node_set_add = []); undefined == obj_spec.link_set_add && (obj_spec.link_set_add = []); - undefined == obj_spec.node_set_rm && (obj_spec.node_set_rm = []); - undefined == obj_spec.link_set_rm && (obj_spec.link_set_rm = []); + undefined == obj_spec.node_id_set_rm && (obj_spec.node_id_set_rm = []); + undefined == obj_spec.link_id_set_rm && (obj_spec.link_id_set_rm = []); ret = new Topo_Diff(obj_spec); return ret; } diff --git a/src/client/model/graph.js b/src/client/model/graph.js index f0a118ac..e5d40b5b 100644 --- a/src/client/model/graph.js +++ b/src/client/model/graph.js @@ -77,37 +77,35 @@ function Graph(spec) { */ var commit_and_tx_diff__topo = function (topo_diff) { util.assert(temporary === false, "cannot be temporary"); - $.merge(topo_diff.link_set_rm, nodes_to_touched_links(topo_diff.node_set_rm)); + $.merge(topo_diff.link_id_set_rm, nodes_to_touched_links(topo_diff.node_id_set_rm)); topo_diff.node_set_add = topo_diff.node_set_add .filter(function(n) { util.assert(undefined !== n.id, "undefined id in node in topo diff"); util.assert(undefined === server_pending_objects[n.id], "cache full at id"); return find_node__by_id(n.id) === undefined; }) - .map(function(n) { - // FIXME: url, startdate, etc - all properties. i.e. a Node to - // spec function - server_pending_objects[n.id] = { - name: n.name, - }; - return model_util.adapt_format_write_node(n); + .map(function(n_spec) { + server_pending_objects[n_spec.id] = n_spec; + return model_util.adapt_format_write_node(n_spec); }); - topo_diff.link_set_add = topo_diff.link_set_add.map(function(l) { - util.assert(l.id !== undefined, "undefined id in link in topo diff"); - if (l.source === undefined) { - l.source = l.__src; + topo_diff.link_set_add = topo_diff.link_set_add.map(function(l_spec) { + util.assert(l_spec.id !== undefined, "undefined id in link in topo diff"); + if (l_spec.source === undefined) { + l_spec.source = l_spec.__src; } - if (l.target === undefined) { - l.target = l.__dst; + if (l_spec.target === undefined) { + l_spec.target = l_spec.__dst; } - if (l.name == undefined) { - l.name = 'is'; // cannot have a zero length name, using name as label in neo4j + if (l_spec.name == undefined) { + // cannot have a zero length name, using name as label in neo4j + l_spec.name = 'is'; } - if (l.__type === undefined) { - l.__type = l.name; + if (l_spec.__type === undefined) { + l_spec.__type = l_spec.name; } - return model_util.adapt_format_write_link(l); + server_pending_objects[l_spec.id] = l_spec; + return model_util.adapt_format_write_link(l_spec); }); // filter already existing nodes now, after we conveniently used them // for name_to_node map @@ -551,7 +549,7 @@ function Graph(spec) { return link.id; }); - var topo_diff = model_diff.new_topo_diff({link_set_rm: ids}); + var topo_diff = model_diff.new_topo_diff({link_id_set_rm: ids}); this.commit_and_tx_diff__topo(topo_diff); } @@ -572,7 +570,7 @@ function Graph(spec) { var node_ids = get_nodes().filter(function (n) { return n.state == state; }) .map(function (n) { return n.id; }), topo_diff = model_diff.new_topo_diff({ - node_set_rm : node_ids, + node_id_set_rm : node_ids, }); this.commit_and_tx_diff__topo(topo_diff); @@ -714,29 +712,39 @@ function Graph(spec) { return link_spec; } + function __commit_diff_ajax__clone(clone) { + var node_specs = clone.node_set_add.map(on_backend__node_add), + link_specs = clone.link_set_add.map(on_backend__link_add), + nodes = _add_node_set(node_specs), + links = _add_link_set(link_specs); + diffBus.push({node_set_add: nodes, link_set_add: links}); + } + function __commit_diff_ajax__topo(diff) { - // must add nodes first because links may point to them - _add_node_set(diff.node_set_add.map(on_backend__node_add)); - diff.node_set_add = []; - diff.link_set_add = diff.link_set_add.map(on_backend__link_add); + diff.node_set_add = diff.node_id_set_add.map(_get_server_pending); + diff.link_set_add = diff.link_id_set_add.map(_get_server_pending); commit_diff__topo(diff); } + function _get_server_pending(id) { + // FIXME: should track cache + var spec; + + util.assert(undefined !== server_pending_objects[id]); + + spec = server_pending_objects[id]; + delete server_pending_objects[id]; + return spec; + } + function _add_node_set(node_specs) { - node_specs.map(function (node_spec) { - // server returns a bare node, just the id, we fill it in from cached nodes - // we sent the server, and clean our cache. - // FIXME: should track cache - if (undefined !== server_pending_objects[node_spec.id]) { - $.extend(node_spec, server_pending_objects[node_spec.id]); - delete server_pending_objects[node_spec.id]; - } + return node_specs.map(function (node_spec) { __addNode(node_spec); }); } function _add_link_set(link_specs) { - link_specs.map(function (link_spec) { + 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), @@ -757,8 +765,8 @@ function Graph(spec) { _add_node_set(diff.node_set_add); _add_link_set(diff.link_set_add); // done under protest - _remove_link_set(diff.link_set_rm); - _remove_node_set(diff.node_set_rm); + _remove_link_set(diff.link_id_set_rm); + _remove_node_set(diff.node_id_set_rm); diffBus.push(diff); } this.commit_diff__topo = commit_diff__topo; @@ -771,8 +779,8 @@ function Graph(spec) { // @ajax-trans function load_from_backend(on_success) { - function on_success__ajax(diff) { - __commit_diff_ajax__topo(diff); + function on_success__ajax(clone) { + __commit_diff_ajax__clone(clone); undefined != on_success && on_success(); } diff --git a/src/client/model/util.js b/src/client/model/util.js index b65ad313..cf9f005d 100644 --- a/src/client/model/util.js +++ b/src/client/model/util.js @@ -90,7 +90,6 @@ define([ 'jquery', 'model/diff' ], function($, model_diff) { delete ret.state; delete ret.status; delete ret.target; - delete ret.__type; delete ret.name; return ret; diff --git a/src/client/view/graph_view.js b/src/client/view/graph_view.js index 96c6dee1..df703892 100644 --- a/src/client/view/graph_view.js +++ b/src/client/view/graph_view.js @@ -151,7 +151,7 @@ function GraphView(spec) { view.node_info.on_delete(function() { var topo_diff = model_diff.new_topo_diff({ - node_set_rm: [node.id] + node_id_set_rm: [node.id] }); console.log("closing node info"); closed = true; diff --git a/src/client/view/selection.js b/src/client/view/selection.js index 4d8495a5..28c5e9a8 100644 --- a/src/client/view/selection.js +++ b/src/client/view/selection.js @@ -18,13 +18,13 @@ var selected_nodes = [], function listen_on_diff_bus(diffBus) { diffBus - .filter(".node_set_rm") + .filter(".node_id_set_rm") .onValue(function (diff) { var node_node_cmp = (function (a, b) { return a.id > b.id; }), node_id_cmp = (function (a, b) { return a.id === b ? 0 : (a.id > b ? 1 : -1); }); updateSelectedNodesBus(sortedArrayDiff(selected_nodes.sort(node_node_cmp), - diff.node_set_rm.sort(), node_id_cmp)); + diff.node_id_set_rm.sort(), node_id_cmp)); }); } |
