Pārlūkot izejas kodu

HUE-5526 [editor] Use the use_new_autocompleter config flag to enable the new dropdown

Johan Ahlen 9 gadi atpakaļ
vecāks
revīzija
94ec5da51e

+ 3 - 3
desktop/core/src/desktop/conf.py

@@ -1199,11 +1199,11 @@ DJANGO_EMAIL_BACKEND = Config(
   default="django.core.mail.backends.smtp.EmailBackend"
   default="django.core.mail.backends.smtp.EmailBackend"
 )
 )
 
 
-USE_NEW_AUTOCOMPLETER = Config( # To remove when it's working properly, not supported by old editor
+USE_NEW_AUTOCOMPLETER = Config( # This now refers to the new autocomplete dropdown
   key='use_new_autocompleter',
   key='use_new_autocompleter',
-  default=True,
+  default=False,
   type=coerce_bool,
   type=coerce_bool,
-  help=_('Enable the new editor SQL autocompleter')
+  help=_('Enable the improved editor autocomplete dropdown')
 )
 )
 
 
 EDITOR_AUTOCOMPLETE_TIMEOUT = Config(
 EDITOR_AUTOCOMPLETE_TIMEOUT = Config(

+ 1 - 2
desktop/core/src/desktop/static/desktop/js/autocompleter.js

@@ -22,7 +22,6 @@ var Autocompleter = (function () {
    * @param options.user
    * @param options.user
    * @param options.optEnabled
    * @param options.optEnabled
    * @param {Number} options.timeout
    * @param {Number} options.timeout
-   * @param options.useNewSqlAutocompleter {boolean}
    * @constructor
    * @constructor
    */
    */
   function Autocompleter(options) {
   function Autocompleter(options) {
@@ -33,7 +32,7 @@ var Autocompleter = (function () {
     self.topTables = {};
     self.topTables = {};
 
 
     var initializeAutocompleter = function () {
     var initializeAutocompleter = function () {
-      if (self.snippet.isSqlDialect() && options.useNewAutocompleter) {
+      if (self.snippet.isSqlDialect()) {
         self.autocompleter = new SqlAutocompleter2({
         self.autocompleter = new SqlAutocompleter2({
           snippet: self.snippet,
           snippet: self.snippet,
           timeout: self.timeout
           timeout: self.timeout

+ 7 - 5
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -3321,15 +3321,17 @@
       var initAutocompleters = function () {
       var initAutocompleters = function () {
         if (editor.completers) {
         if (editor.completers) {
           editor.completers.length = 0;
           editor.completers.length = 0;
-          if(! options.useNewAutocompleter) {
+          if (snippet.type() === 'hive' || snippet.type() === 'impala') {
+            if (options.useNewAutocompleter) {
+              editor.useHueAutocompleter = true;
+            } else {
+              editor.completers.push(snippet.autocompleter);
+            }
+          } else {
             editor.completers.push(langTools.snippetCompleter);
             editor.completers.push(langTools.snippetCompleter);
             editor.completers.push(langTools.textCompleter);
             editor.completers.push(langTools.textCompleter);
             editor.completers.push(langTools.keyWordCompleter);
             editor.completers.push(langTools.keyWordCompleter);
             editor.completers.push(snippet.autocompleter);
             editor.completers.push(snippet.autocompleter);
-          } else if (snippet.type() === 'hive' || snippet.type() === 'impala') {
-            editor.useHueAutocompleter = true;
-          } else {
-            editor.completers.push(snippet.autocompleter);
           }
           }
         }
         }
       };
       };

+ 17 - 17
desktop/core/src/desktop/static/desktop/js/sqlAutocompleter3.js

@@ -245,7 +245,7 @@ var SqlAutocompleter3 = (function () {
         if (expression.prependFrom) {
         if (expression.prependFrom) {
           prefix += self.parseResult.lowerCase ? 'from ' : 'FROM ';
           prefix += self.parseResult.lowerCase ? 'from ' : 'FROM ';
         }
         }
-        commonTableExpressionSuggestions.push({value: prefix + expression.name, meta: AutocompleterGlobals.i18n.meta.commonTableExpression, weight: DEFAULT_WEIGHTS.CTE });
+        commonTableExpressionSuggestions.push({ value: prefix + expression.name, meta: AutocompleterGlobals.i18n.meta.commonTableExpression, weight: DEFAULT_WEIGHTS.CTE });
       });
       });
       self.commonTableExpressions(commonTableExpressionSuggestions);
       self.commonTableExpressions(commonTableExpressionSuggestions);
     }
     }
@@ -393,40 +393,40 @@ var SqlAutocompleter3 = (function () {
         if (data.extended_columns) {
         if (data.extended_columns) {
           data.extended_columns.forEach(function (column) {
           data.extended_columns.forEach(function (column) {
             if (column.type.indexOf('map') === 0 && self.snippet.type() === 'hive') {
             if (column.type.indexOf('map') === 0 && self.snippet.type() === 'hive') {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name) + '[]', meta: 'map', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name) + '[]', meta: 'map', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             } else if (column.type.indexOf('map') === 0) {
             } else if (column.type.indexOf('map') === 0) {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name), meta: 'map', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name), meta: 'map', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             } else if (column.type.indexOf('struct') === 0) {
             } else if (column.type.indexOf('struct') === 0) {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name), meta: 'struct', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name), meta: 'struct', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             } else if (column.type.indexOf('array') === 0 && self.snippet.type() === 'hive') {
             } else if (column.type.indexOf('array') === 0 && self.snippet.type() === 'hive') {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name) + '[]', meta: 'array', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name) + '[]', meta: 'array', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             } else if (column.type.indexOf('array') === 0) {
             } else if (column.type.indexOf('array') === 0) {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name), meta: 'array', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name), meta: 'array', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             } else if (types[0].toUpperCase() !== 'T' && types.filter(function (type) { return type.toUpperCase() === column.type.toUpperCase() }).length > 0) {
             } else if (types[0].toUpperCase() !== 'T' && types.filter(function (type) { return type.toUpperCase() === column.type.toUpperCase() }).length > 0) {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name), meta: column.type, weight: DEFAULT_WEIGHTS.COLUMN + 1, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name), meta: column.type, weight: DEFAULT_WEIGHTS.COLUMN + 1, table: table })
             } else if (SqlFunctions.matchesType(self.snippet.type(), types, [column.type.toUpperCase()]) ||
             } else if (SqlFunctions.matchesType(self.snippet.type(), types, [column.type.toUpperCase()]) ||
                 SqlFunctions.matchesType(self.snippet.type(), [column.type.toUpperCase()], types)) {
                 SqlFunctions.matchesType(self.snippet.type(), [column.type.toUpperCase()], types)) {
-              columnSuggestions.push({value: self.backTickIfNeeded(column.name), meta: column.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+              columnSuggestions.push({ value: self.backTickIfNeeded(column.name), meta: column.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table })
             }
             }
           });
           });
         } else if (data.columns) {
         } else if (data.columns) {
           data.columns.forEach(function (column) {
           data.columns.forEach(function (column) {
-            columnSuggestions.push({value: self.backTickIfNeeded(column), meta: 'column', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+            columnSuggestions.push({ value: self.backTickIfNeeded(column), meta: 'column', weight: DEFAULT_WEIGHTS.COLUMN, table: table })
           });
           });
         }
         }
         if (data.type === 'map' && self.snippet.type() === 'impala') {
         if (data.type === 'map' && self.snippet.type() === 'impala') {
-          columnSuggestions.push({value: 'key', meta: 'key', weight: DEFAULT_WEIGHTS.COLUMN, table: table });
-          columnSuggestions.push({value: 'value', meta: 'value', weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+          columnSuggestions.push({ value: 'key', meta: 'key', weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+          columnSuggestions.push({ value: 'value', meta: 'value', weight: DEFAULT_WEIGHTS.COLUMN, table: table });
         }
         }
         if (data.type === 'struct') {
         if (data.type === 'struct') {
           data.fields.forEach(function (field) {
           data.fields.forEach(function (field) {
-            columnSuggestions.push({value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table })
+            columnSuggestions.push({ value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table })
           });
           });
         } else if (data.type === 'map' && (data.value && data.value.fields)) {
         } else if (data.type === 'map' && (data.value && data.value.fields)) {
           data.value.fields.forEach(function (field) {
           data.value.fields.forEach(function (field) {
             if (SqlFunctions.matchesType(self.snippet.type(), types, [field.type.toUpperCase()]) ||
             if (SqlFunctions.matchesType(self.snippet.type(), types, [field.type.toUpperCase()]) ||
                 SqlFunctions.matchesType(self.snippet.type(), [field.type.toUpperCase()], types)) {
                 SqlFunctions.matchesType(self.snippet.type(), [field.type.toUpperCase()], types)) {
-              columnSuggestions.push({value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+              columnSuggestions.push({ value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
             }
             }
           });
           });
         } else if (data.type === 'array' && data.item) {
         } else if (data.type === 'array' && data.item) {
@@ -434,18 +434,18 @@ var SqlAutocompleter3 = (function () {
             data.item.fields.forEach(function (field) {
             data.item.fields.forEach(function (field) {
               if ((field.type === 'array' || field.type === 'map')) {
               if ((field.type === 'array' || field.type === 'map')) {
                 if (self.snippet.type() === 'hive') {
                 if (self.snippet.type() === 'hive') {
-                  columnSuggestions.push({value: self.backTickIfNeeded(field.name) + '[]', meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+                  columnSuggestions.push({ value: self.backTickIfNeeded(field.name) + '[]', meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
                 } else {
                 } else {
-                  columnSuggestions.push({value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+                  columnSuggestions.push({ value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
                 }
                 }
               } else if (SqlFunctions.matchesType(self.snippet.type(), types, [field.type.toUpperCase()]) ||
               } else if (SqlFunctions.matchesType(self.snippet.type(), types, [field.type.toUpperCase()]) ||
                   SqlFunctions.matchesType(self.snippet.type(), [field.type.toUpperCase()], types)) {
                   SqlFunctions.matchesType(self.snippet.type(), [field.type.toUpperCase()], types)) {
-                columnSuggestions.push({value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+                columnSuggestions.push({ value: self.backTickIfNeeded(field.name), meta: field.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
               }
               }
             });
             });
           } else if (typeof data.item.type !== 'undefined') {
           } else if (typeof data.item.type !== 'undefined') {
             if (SqlFunctions.matchesType(self.snippet.type(), types, [data.item.type.toUpperCase()])) {
             if (SqlFunctions.matchesType(self.snippet.type(), types, [data.item.type.toUpperCase()])) {
-              columnSuggestions.push({value: 'item', meta: data.item.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
+              columnSuggestions.push({ value: 'item', meta: data.item.type, weight: DEFAULT_WEIGHTS.COLUMN, table: table });
             }
             }
           }
           }
         }
         }

+ 3 - 0
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -1656,7 +1656,10 @@ from notebook.conf import ENABLE_QUERY_BUILDER, ENABLE_QUERY_SCHEDULING, ENABLE_
           minLines: $root.editorMode() ? null : 3
           minLines: $root.editorMode() ? null : 3
         }
         }
       }, style: {opacity: statementType() !== 'text' ? '0.75' : '1', 'top': $root.editorMode() && statementType() !== 'text' ? '60px' : '0'}"></div>
       }, style: {opacity: statementType() !== 'text' ? '0.75' : '1', 'top': $root.editorMode() && statementType() !== 'text' ? '60px' : '0'}"></div>
+      % if conf.USE_NEW_AUTOCOMPLETER.get():
       <!-- ko component: { name: 'hueAceAutocompleter', params: { editor: ace, snippet: $data } } --><!-- /ko -->
       <!-- ko component: { name: 'hueAceAutocompleter', params: { editor: ace, snippet: $data } } --><!-- /ko -->
+      % endif
+
 
 
       <ul class="table-drop-menu hue-context-menu">
       <ul class="table-drop-menu hue-context-menu">
         <li class="editor-drop-value"><a href="javascript:void(0);">"<span class="editor-drop-identifier"></span>"</a></li>
         <li class="editor-drop-value"><a href="javascript:void(0);">"<span class="editor-drop-identifier"></span>"</a></li>