diff options
Diffstat (limited to 'scripts/textanalysis.ui.js')
| -rw-r--r-- | scripts/textanalysis.ui.js | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/scripts/textanalysis.ui.js b/scripts/textanalysis.ui.js new file mode 100644 index 00000000..98d0fe83 --- /dev/null +++ b/scripts/textanalysis.ui.js @@ -0,0 +1,147 @@ +define('textanalysis.ui', ['autocomplete', 'rhizicore', 'textanalysis', 'history'], function(autocomplete, RZ, textanalysis, history) { +var text = ""; // Last text of sentence +var element_name = '#textanalyser'; +var element = $(element_name); + +// TODO - hide this in a scope +function analyzeSentence(sentence, finalize) +{ + var ret = textanalysis.textAnalyser2(sentence, finalize); + switch (ret.state) { + case textanalysis.ANALYSIS_NODE_START: + $('.typeselection').css({top:window.innerHeight/2-115,left:window.innerWidth/2-325}); + $('.typeselection').html('<table><tr><td style="height:28px"></td></tr><tr><td>Use [TAB] key to pick a type</td></tr></table>'); + break; + case textanalysis.ANALYSIS_LINK: + $('.typeselection').css('top', -300); + $('.typeselection').css('left', 0); + break; + } + ret.applyToGraph(RZ.graph); + if (finalize || sentence.length == 0) { + $('.typeselection').css('top', -300); + $('.typeselection').css('left', 0); + } +} + +function textSelect(inp, s, e) { + e = e || s; + if (inp.createTextRange) { + var r = inp.createTextRange(); + r.collapse(true); + r.moveEnd('character', e); + r.moveStart('character', s); + r.select(); + }else if(inp.setSelectionRange) { + inp.focus(); + inp.setSelectionRange(s, e); + } +} + +function changeType(arg, id) { + if(!id) { + id = "new node"; + } + if (arg === 'up') { + if (typeindex < 4) typeindex++; + else typeindex = 0; + RZ.graph.editType(id, null, nodetypes[typeindex]); + $('.typeselection').html('<table><tr><td style="height:28px"></td></tr><tr><td>' + "Chosen Type: " + nodetypes[typeindex] + '</td></tr></table>'); + RZ.graph.findCoordinates(lastnode,null); + } else { + if (typeindex > 0) typeindex--; + else typeindex = 4; + + RZ.graph.editType(id, null, nodetypes[typeindex]); + $('.typeselection').html('<table><tr><td style="height:28px"></td></tr><tr><td>' + "Chosen Type: " + nodetypes[typeindex] + '</td></tr></table>'); + RZ.graph.findCoordinates(lastnode,null); + } + RZ.graph.update(true); +} + +return { + main:function () { + if (element.length != 1) { + return; + } + + element.autocompleteTrigger({ + triggerStart: '#', + triggerEnd: '', + source: textanalysis.autocompleteCallback + }); + + $(document).keydown(function(e) { + + if (RZ.graph.history !== undefined) { + RZ.graph.history.record_keystrokes(history.KEYSTROKE_WHERE_DOCUMENT, [e.KeyCode]); + } + if (e.keyCode == 9) {//TAB + e.preventDefault(); + changeType("down", lastnode); + return false; + } + + if (e.keyCode == 37) {//UP + $('html, body').scrollLeft(0); + } + if (e.keyCode == 39) {//DOWN + $('html, body').scrollLeft(0); + } + + if (e.keyCode == 38) {//UP + suggestionChange = true; + } + if (e.keyCode == 40) {//DOWN + suggestionChange = true; + } + + if (e.keyCode == 9) {//TAB + return false; + } + }); + + element.keypress(function(e) { + if (RZ.graph.history !== undefined) { + RZ.graph.history.record_keystrokes(history.KEYSTROKE_WHERE_TEXTANALYSIS, [e.which]); + } + if (e.which == 13) { + if(!suggestionChange) { + text = element.val(); + element.val(""); + analyzeSentence(text, true); + typeStack = []; + } else { + suggestionChange = false; + } + return false; + } + + if (e.which == 37) {//RIGHT + $('body').scrollLeft(0); + e.stopPropagation(); + return false; + } + if (e.which == 39) { //LEFT + $('body').scrollLeft(0); + e.stopPropagation(); + return false; + } + }); + + /* TODO: don't use interval by default but only if keys are comming to fast (but still - 5 ms??) */ + window.setInterval(function() { + if (element.val() != text) { + + if (text.length * 8 > 500) { + element.css('width', text.length * 8 + 20); + } + // text changed + text = element.val(); + analyzeSentence(text, false); + suggestionChange = false; + } + }, 5); + } +}; +}); // define |
