summaryrefslogtreecommitdiff
path: root/scripts/textanalysis.ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/textanalysis.ui.js')
-rw-r--r--scripts/textanalysis.ui.js147
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