瀏覽代碼

HUE-7933 [dashboard] Enable autocomplete of values after whitespace

Johan Ahlen 7 年之前
父節點
當前提交
bc92b80a6a

+ 1 - 1
desktop/core/src/desktop/static/desktop/js/autocomplete/jison/solrQueryParser.jison

@@ -165,7 +165,7 @@ KeywordMatch
 
 KeywordMatch_EDIT
  : 'TERM' ':' 'CURSOR'                                         --> { suggestValues: { field: $1 } }
- | 'TERM' ':' QuotedValue_EDIT                                 --> { suggestValues: { field: $1, quotePresent: true } }
+ | 'TERM' ':' QuotedValue_EDIT                                 --> { suggestValues: { field: $1, quotePresent: true, partial: $3 } }
  ;
 
 // ======= Common constructs =======

File diff suppressed because it is too large
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/autocomplete/solrQueryParser.js


+ 9 - 3
desktop/core/src/desktop/static/desktop/spec/autocomplete/solrQueryParserSpec.js

@@ -57,19 +57,25 @@
 
     it('should suggest values for "field:"some Val|"', function () {
       testAutocomplete('field:"some Val', '', {
-        suggestValues: { field: 'field', quotePresent: true }
+        suggestValues: { field: 'field', quotePresent: true, partial: 'some ' }
       });
     });
 
     it('should suggest values for "field:"a|"', function () {
       testAutocomplete('field:"a', '', {
-        suggestValues: { field: 'field', quotePresent: true }
+        suggestValues: { field: 'field', quotePresent: true, partial: '' }
+      });
+    });
+
+    it('should suggest values for "field:"Cabernet |"', function () {
+      testAutocomplete('field:"Cabernet ', '', {
+        suggestValues: { field: 'field', quotePresent: true, partial: 'Cabernet ' }
       });
     });
 
     it('should suggest values for "field:"some Val| foo"', function () {
       testAutocomplete('field:"some Val', ' foo"', {
-        suggestValues: { field: 'field', quotePresent: true }
+        suggestValues: { field: 'field', quotePresent: true, partial: 'some ' }
       });
     });
 

+ 10 - 1
desktop/core/src/desktop/templates/ko_components/ko_simple_ace_editor.mako

@@ -656,6 +656,9 @@ from desktop.views import _ko
             var aceUtil = ace.require('ace/autocomplete/util');
             var pos = self.editor.getCursorPosition();
             var partial = aceUtil.retrievePrecedingIdentifier(self.editor.session.getLine(pos.row), pos.column);
+            if (self.parseResult.suggestValues.partial) {
+              partial = self.parseResult.suggestValues.partial + partial;
+            }
 
             var valuesPromise = self.handleSampleSuggestions(partial);
             self.loading(true);
@@ -691,8 +694,14 @@ from desktop.views import _ko
                     if (maxCount < result.terms[i].count) {
                       maxCount = result.terms[i].count;
                     }
+                    var value = '';
+                    if (self.parseResult.suggestValues.partial && !shouldQuote && sampleValue.toLowerCase().indexOf(self.parseResult.suggestValues.partial.toLowerCase()) === 0) {
+                      value = sampleValue.substring(self.parseResult.suggestValues.partial.length);
+                    } else {
+                      value = shouldQuote ? '"' + sampleValue + '"' : sampleValue;
+                    }
                     sampleSuggestions.push({
-                      value: shouldQuote ? '"' + sampleValue + '"' : sampleValue,
+                      value: value,
                       meta: HUE_I18n.autocomplete.meta.sample,
                       category: CATEGORIES.SAMPLE,
                       popular: DEFAULT_POPULAR,

Some files were not shown because too many files changed in this diff