From ff5c984089c19467304dbec0b87b2aa019717b13 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Sun, 4 Jan 2015 16:44:38 +0200 Subject: initial graph_view introduction - mixing circle & force layouts --- src/client/textanalysis.js | 217 ++++++++++++++------------------------------- 1 file changed, 66 insertions(+), 151 deletions(-) (limited to 'src/client/textanalysis.js') diff --git a/src/client/textanalysis.js b/src/client/textanalysis.js index ebfd3007..a34aac7f 100644 --- a/src/client/textanalysis.js +++ b/src/client/textanalysis.js @@ -70,7 +70,10 @@ var lastnode; var sugg_name = {}, id_to_name_map = {}, - suggestions_options = new Bacon.Bus(); // TODO: Property: same as bus, but with initial value + suggestions_bus = new Bacon.Bus(), + suggestions_options = suggestions_bus.toProperty(); + +suggestions_bus.push([]); var ANALYSIS_NODE_START = 'ANALYSIS_NODE_START'; var ANALYSIS_NODE = 'ANALYSIS_NODE' @@ -88,80 +91,24 @@ function selectedType() function auto_suggest__update_name(name, id) { if (id !== undefined && id_to_name_map[id] !== undefined) { - delete sugg[id_to_name_map[id]]; + delete sugg_name[id_to_name_map[id]]; id_to_name_map[id] = name; } /* note that name can contain spaces - this is ok. We might want to limit this though? */ - sugg[name] = 1; - suggestions_options.push(sugg); + sugg_name[name] = 1; + suggestions_bus.push(sugg_name); } function auto_suggest_remove_name(name, id) { - delete sugg[name]; - if (id !== undefined) { - delete sugg[id]; - } - suggestions_options.push(sugg); -} - -/* up_to_two_renames: - * - * allow one letter or 'new node' to anything changes */ -function up_to_two_renames(graph, old_name, new_name, link_set_add) -{ - var not_one_letter = false; - var k; - /* Allowed renames: - * no change - * s1 is substring of s2 - * older (s1) node being 'new node' - */ - function allowed_rename(s1, s2) - { - return (s1 == s2 || - s1 == 'new node' || - s1.substr(0, s2.length) == s2 || - s2.substr(0, s1.length) == s1); - } - - if (old_name.length != new_name.length) { - console.log('bug: up_to_two_renames: not equal inputs'); - return; - } - if (old_name.length > 2) { - console.log('bug: up_to_two_renames: input length 2 < ' + old_name.length); - return; - } - if (old_name.length == 2) { - if (allowed_rename(old_name[0], new_name[1]) && - allowed_rename(old_name[1], new_name[0])) { - old_name = [old_name[1], old_name[0]]; - } else { - if (!allowed_rename(old_name[0], new_name[0]) || - !allowed_rename(old_name[1], new_name[1])) { - not_one_letter = true; - } - } + if (name !== undefined) { + delete sugg_name[name]; } - if (not_one_letter) { - console.log('bug: up_to_two_renames: not one letter changes'); - console.log(old_name); - console.log(new_name); - return; - } - for (k = 0 ; k < old_name.length ; ++k) { - graph.editNameByName(old_name[k], new_name[k]); - // very disappointing. suicide threats are ok? - link_set_add.forEach(function (link) { - if (link.__src.name == old_name[k]) { - link.__src.name = new_name[k]; - } - if (link.__dst.name == old_name[k]) { - link.__dst.name = new_name[k]; - } - }); + if (id !== undefined) { + delete sugg_name[id_to_name_map[id]]; + delete id_to_name_map[id]; } + suggestions_bus.push(sugg_name); } // TODO: add escape char, i.e. r"bla\"bla" -> ['bla"bla'] @@ -233,7 +180,7 @@ var textAnalyser = function (newtext, finalize) { word, completeSentence, completeSentenceParts, - typesetter, starGraph, + starGraph, n, link_hash = {}, yell_bug = false, // TODO: fix both issues @@ -242,14 +189,14 @@ var textAnalyser = function (newtext, finalize) { START = "START", ret = model_diff.new_topo_diff(); - function __addNode(name, type, state) { + function __addNode(name, type) { if (type === undefined) { console.log('bug: textanalyser.addNode of type undefined'); } - var node = model_core.create_node_from_spec( - {'name':name, - 'type':type, - 'state':state}); + var node = model_core.create_node_from_spec({ + 'name':name, + 'type':type, + }); ret.node_set_add.push(node); } @@ -264,7 +211,7 @@ var textAnalyser = function (newtext, finalize) { return {'existing': name}; }; - function __addLink(src_name, dst_name, name, state) { + function __addLink(src_name, dst_name, name) { if (!src_name || !dst_name) { if (yell_bug) { console.log('bug - adding link (' + src_name + ', ' + dst_name + ')'); @@ -287,7 +234,6 @@ var textAnalyser = function (newtext, finalize) { '__src': src_name, '__dst': dst_name, 'name':name, - 'state':state }; ret.link_set_add.push(link); } @@ -376,19 +322,10 @@ var textAnalyser = function (newtext, finalize) { nodeindex = 0; //CHANGE TO PERMANENT STATE AND UPDATE SUGGESTIONLIST - typesetter = ""; if (finalize === true) { - typesetter = "perm"; for (n = 0; n < token_set_new_node_names.length; n++) { auto_suggest__update_name(token_set_new_node_names[n]); } - } else { - typesetter = "temp"; - } - - //ADD SURROUNDING BUBBLE - if (orderStack.length > 0) { - __addNode("", "bubble","temp"); } //0-N ORDER STACK @@ -400,11 +337,11 @@ var textAnalyser = function (newtext, finalize) { } break; case NODE: - __addNode(token_set_new_node_names[nodeindex], typeStack[nodeindex], typesetter); + __addNode(token_set_new_node_names[nodeindex], typeStack[nodeindex]); if (!starGraph && nodeindex > 0 && token_set_new_link_names[linkindex] !== undefined) { __addLink(token_set_new_node_names[nodeindex - 1], token_set_new_node_names[nodeindex], - token_set_new_link_names[linkindex], typesetter); + token_set_new_link_names[linkindex]); } nodeindex++; break; @@ -428,11 +365,11 @@ var textAnalyser = function (newtext, finalize) { break; case NODE: typeStack[nodeindex] = selectedType(); - __addNode(token_set_new_node_names[nodeindex], typeStack[nodeindex], typesetter); + __addNode(token_set_new_node_names[nodeindex], typeStack[nodeindex]); if (!starGraph && nodeindex > 0 && token_set_new_link_names[linkindex] !== undefined) { __addLink(token_set_new_node_names[nodeindex - 1], token_set_new_node_names[nodeindex], - token_set_new_link_names[linkindex], typesetter); + token_set_new_link_names[linkindex]); and_connect(token_set_new_node_names[nodeindex]); } ret.state = ANALYSIS_NODE_START; @@ -455,9 +392,10 @@ var textAnalyser = function (newtext, finalize) { if(token_set_new_link_names[x])if(token_set_new_link_names[x].replace(/ /g,"")!=="and"){ verb = token_set_new_link_names[x]; for(var y=0; y 0; }) @@ -562,12 +476,13 @@ function init(graph) .flatMap(Bacon.fromArray) .map(".name") .map(function (name) { return name.toLowerCase(); }) + // FIXME - should be removal of existing name via id, we know the id too. .onValue(auto_suggest__update_name); // deal with renamed links /* // TODO renamed links - broken in server, DBO_attr_diff_commit doesn't return an Attr_Diff - graph.diffBus + main_graph.diffBus .filter(function (diff) { return diff && diff.link_set_rm && diff.link_set_rm.length > 0; }) -- cgit v1.3.1