Przeglądaj źródła

[core] Implemented getAfterCursor and handler for keydown on AceEditor

Enrico Berti 10 lat temu
rodzic
commit
ff64b1d

+ 5 - 1
desktop/core/src/desktop/static/desktop/ext/js/ace/snippets/pig.js

@@ -17,10 +17,14 @@
 ace.define("ace/snippets/pig",["require","exports","module"], function(require, exports, module) {
 "use strict";
 
-exports.snippetText = "snippet load\n\
+exports.snippetText = "snippet loadpigstorage\n\
 	A = LOAD '${1:what}' USING PigStorage() AS (\n\
 		${2:var_name}:${3:var_type}\n\
 	);\n\
+snippet loadhcat\n\
+	A = LOAD '${1:table}' USING org.apache.hcatalog.pig.HCatLoader();\n\
+snippet loadhbase\n\
+	A = LOAD 'hbase://${1:table}' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('${2:columnlist}');\n\
 ";
 exports.scope = "pig";
 

+ 6 - 1
desktop/core/src/desktop/static/desktop/js/ace.extended.js

@@ -30,7 +30,12 @@ try {
 
     editor.getTextBeforeCursor = function (separator) {
       var _r = new AceRange(0, 0, this.getCursorPosition().row, this.getCursorPosition().column);
-      return this.session.getTextRange(_r);
+      return separator ? this.session.getTextRange(_r).split(separator).pop() : this.session.getTextRange(_r);
+    }
+
+    editor.getTextAfterCursor = function (separator) {
+      var _r = new AceRange(this.getCursorPosition().row, this.getCursorPosition().column, this.session.getLength(), this.session.getRowLength(this.session.getLength()));
+      return separator ? this.session.getTextRange(_r).split(separator).shift() : this.session.getTextRange(_r);
     }
 
     editor.getCursorScreenPosition = function () {

+ 9 - 8
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -1515,17 +1515,16 @@ ko.bindingHandlers.aceEditor = {
         _onChange(e, editor, valueAccessor);
       });
 
-      editor.commands.on("afterExec", function(e) {
-
+      editor.container.addEventListener("keydown", function(e){
         // if it's pig and before it's LOAD ' we disable the autocomplete and show a filechooser btn
-        if (editor.session.getMode().$id = "ace/mode/pig" && e.args) {
+        if (editor.session.getMode().$id = "ace/mode/pig" && e.keyCode) {
           var _textBefore = editor.getTextBeforeCursor();
-          if ((e.args == "'" && _textBefore.toUpperCase().indexOf("LOAD ") > -1 && _textBefore.toUpperCase().indexOf("LOAD ") == _textBefore.toUpperCase().length - 5)
+          if ((e.keyCode == 222 && _textBefore.toUpperCase().indexOf("LOAD ") > -1 && _textBefore.toUpperCase().indexOf("LOAD ") == _textBefore.toUpperCase().length - 5)
               || _textBefore.toUpperCase().indexOf("LOAD '") > -1 && _textBefore.toUpperCase().indexOf("LOAD '") == _textBefore.toUpperCase().length - 6){
             editor.disableAutocomplete();
             var _btn = editor.showFileButton();
-            _btn.on("click", function(e){
-              e.preventDefault();
+            _btn.on("click", function(ie){
+              ie.preventDefault();
               if ($(".filechooser-content").data("spinner") == null){
                 $(".filechooser-content").data("spinner", $(".filechooser-content").html());
               }
@@ -1542,19 +1541,21 @@ ko.bindingHandlers.aceEditor = {
                 selectFolder: false,
                 createFolder: false
               });
-              $(".filechooser").css({ "top": $(e.currentTarget).position().top, "left": $(e.currentTarget).position().left}).show();
+              $(".filechooser").css({ "top": $(ie.currentTarget).position().top, "left": $(ie.currentTarget).position().left}).show();
             });
           }
           else {
             editor.hideFileButton();
             editor.enableAutocomplete();
           }
-          if (e.args != "'" && _textBefore.toUpperCase().indexOf("LOAD '") > -1 && _textBefore.toUpperCase().indexOf("LOAD '") == _textBefore.toUpperCase().length - 6) {
+          if (e.keyCode != 222 && _textBefore.toUpperCase().indexOf("LOAD '") > -1 && _textBefore.toUpperCase().indexOf("LOAD '") == _textBefore.toUpperCase().length - 6) {
             editor.hideFileButton();
             editor.enableAutocomplete();
           }
         }
+      }, true);
 
+      editor.commands.on("afterExec", function(e) {
         _onAfterExec(e, editor, valueAccessor);
       });