소스 검색

HUE-9143 [frontend] Improve autocomplete logic in the simple ace editor

Johan Ahlen 5 년 전
부모
커밋
daf62425b2

+ 9 - 7
desktop/core/src/desktop/js/ko/components/simpleAceEditor/ko.simpleAceEditor.js

@@ -95,12 +95,14 @@ class SimpleAceEditor {
         id: ko.observable($element.attr('id')),
         namespace: params.namespace,
         compute: params.compute,
-        database: ko.observable(
-          params.database && params.database() ? params.database() : 'default'
-        ),
-        availableDatabases: ko.observableArray([
-          params.database && params.database() ? params.database() : 'default'
-        ]),
+        database: ko.isObservable(params.database)
+          ? params.database
+          : ko.observable(params.database || 'default'),
+        availableDatabases: params.availableDatabases
+          ? params.availableDatabases
+          : ko.observableArray([
+              params.database && params.database() ? params.database() : 'default'
+            ]),
         positionStatement: ko.observable({
           location: {
             first_line: 1,
@@ -121,7 +123,7 @@ class SimpleAceEditor {
         inFocus: ko.observable()
       };
 
-      if (sourceType === 'hive' || sourceType === 'impala') {
+      if (ko.unwrap(sourceType) === 'hive' || ko.unwrap(sourceType) === 'impala') {
         sqlWorkerHandler.registerWorkers();
         const aceLocationHandler = new AceLocationHandler({
           editor: editor,

+ 4 - 5
desktop/core/src/desktop/js/sql/sqlAutocompleter.js

@@ -131,11 +131,6 @@ class SqlAutocompleter {
       );
 
       parseResult = await this.parseActiveStatement();
-
-      if (typeof hueDebug !== 'undefined' && hueDebug.showParseResult) {
-        // eslint-disable-next-line no-restricted-syntax
-        console.log(parseResult);
-      }
     } catch (e) {
       if (typeof console.warn !== 'undefined') {
         console.warn(e);
@@ -157,6 +152,10 @@ class SqlAutocompleter {
       // This prevents Ace from inserting garbled text in case of exception
       huePubSub.publish('hue.ace.autocompleter.done');
     } else {
+      if (typeof hueDebug !== 'undefined' && hueDebug.showParseResult) {
+        // eslint-disable-next-line no-restricted-syntax
+        console.log(parseResult);
+      }
       try {
         if (this.lastContextRequest) {
           this.lastContextRequest.dispose();