summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2014-12-10 15:27:47 +0200
committerAlon Levy <alon@pobox.com>2014-12-16 10:59:14 +0200
commitfe01fba24eab3f42142803e3227e9b0a93dfbd89 (patch)
treedfc8bd98cd98f3b777fda0d3b9943f72e589a3c4
parentd67cb649f26259954d1cfeb0665f93d2059ed1cd (diff)
major addLink() sig refactoring: addLink(link, peer_notify)
-rw-r--r--src/model/graph.js49
-rw-r--r--src/textanalysis.js2
2 files changed, 35 insertions, 16 deletions
diff --git a/src/model/graph.js b/src/model/graph.js
index cc838db2..ac244339 100644
--- a/src/model/graph.js
+++ b/src/model/graph.js
@@ -301,8 +301,9 @@ function Graph() {
}
this.addLinkByName = function(src_name, dst_name, name, state, drop_conjugator_links) {
- var src = findNodeByName(src_name, null),
- dst = findNodeByName(dst_name, null),
+
+ var src = findNodeByName(src_name),
+ dst = findNodeByName(dst_name),
src_id = src ? src.id : null,
dst_id = dst ? dst.id : null;
@@ -311,25 +312,43 @@ function Graph() {
+ dst_name + ' (' + dst_id + ')');
return;
}
- this.addLink(src_id, dst_id, name, state);
+
+ var link = model_core.create_link__set_random_id(src, dst, { name: name,
+ state: state });
+ this.addLink(link);
}
- function addLink(src_id, dst_id, name, state, peer_notify) {
- var src = find_node__by_id(src_id);
- var dst = find_node__by_id(dst_id);
- var found = findLink(src_id,dst_id,name);
+ function addLink(link, peer_notify) {
+
+ util.assert(link instanceof model_core.Link);
+
+ peer_notify = undefined === peer_notify ? true : peer_notify;
+
+ var existing_link = findLink(link.__src.id, link.__dst.id, link.name);
+
+ if (undefined == existing_link) {
- if (undefined === src || undefined === dst) {
- console.log('addLink: undefined src / dst');
- return;
- }
- if (!found) {
- var link = model_core.create_link__set_random_id(src, dst, { name: name, state: state });
links.push(link);
+
+ if (rz_config.backend_enabled && peer_notify){
+ var topo_diff = new model_diff.new_topo_diff({
+ link_set_add : [link].map(model_util.adapt_format_write_link),
+ });
+ var on_success = function(){
+ // FIXME: handle possible outcomes:
+ // - id merge: link already exists -> update id
+ // - attr-merge: link already exists -> merge attrs
+ };
+ var on_error = function(){
+ // TODO: add problem emblem to node
+ };
+ rz_api_backend.commit_diff__topo(topo_diff, on_success, on_error);
+ }
+
diffBus.push({links: {add: [link]}});
} else {
- found.name = name;
- found.state = state;
+ existing_link.name = link.name;
+ existing_link.state = link.state;
}
}
this.addLink = addLink;
diff --git a/src/textanalysis.js b/src/textanalysis.js
index fdc4e837..71621b95 100644
--- a/src/textanalysis.js
+++ b/src/textanalysis.js
@@ -185,7 +185,7 @@ var textAnalyser = function (newtext, finalize) {
}
link_hash[src][dst] = 1;
- var link = model_core.create_link_from_spec(src, dst, {'name':name, 'state':state});
+ var link = {'__src': src, '__dst':dst, 'name':name, 'state':state}; // can't use model_core.create_link_from_spec as src,dst are only names
ret.link_set_add.push(link);
}