summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-06 21:40:40 +0200
committerAlon Levy <alon@pobox.com>2015-01-06 21:40:40 +0200
commit546ee33efaaa0df3e121a7ba5c16bc3aa1a0aeeb (patch)
treef5e5743f5d9cab413efae79f4a867161cd955e45 /src
parenta7d4e65fa944e2174f6f20a20c3ad0b37c2c0304 (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.js12
-rw-r--r--src/client/model/graph.js84
-rw-r--r--src/client/model/util.js1
-rw-r--r--src/client/view/graph_view.js2
-rw-r--r--src/client/view/selection.js4
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));
});
}