Эх сурвалжийг харах

HUE-1436 [hbase] Autocomplete rows

Kevin Wang 12 жил өмнө
parent
commit
18c437a58b

+ 9 - 0
apps/hbase/src/hbase/api.py

@@ -104,6 +104,15 @@ class HbaseApi(object):
     client.scannerClose(scanner)
     return data
 
+  def getAutocompleteRows(self, cluster, tableName, numRows, query):
+    try:
+      client = self.connectCluster(cluster)
+      scan = get_thrift_type('TScan')(startRow=query, stopRow=None, timestamp=None, columns=[], caching=None, filterString="PrefixFilter('" + query + "') AND ColumnPaginationFilter(1,0)", batchSize=None)
+      scanner = client.scannerOpenWithScan(tableName, scan, None)
+      return [result.row for result in client.scannerGetList(scanner, numRows)]
+    except:
+      return []
+
   def getRow(self, cluster, tableName, columns, startRowKey):
     row = self.getRows(cluster, tableName, columns, startRowKey, 1)
     if len(row) > 0:

+ 1 - 1
apps/hbase/static/js/app.js

@@ -63,7 +63,7 @@ var AppViewModel = function() {
               var self = this;
               options = (options == null) ? {} : options;
               options = ko.utils.extend({
-                callback:function(data){},
+                callback: function(data){},
                 columns: getColumnFamilies()
               }, options);
               API.queryTable("getRow", JSON.stringify(options.columns), self.row).done(function(data) {

+ 14 - 0
apps/hbase/static/js/controls.js

@@ -759,6 +759,20 @@ var tagsearch = function() {
           return a.replace(" ","").indexOf(focus) != -1;
         }));
         return;
+      case 'rowkey':
+        var validate = window.getSelection().getRangeAt(0).startContainer.nodeValue;
+        function cancel() {
+          return window.getSelection().getRangeAt(0).startContainer.nodeValue != validate;
+        }
+        function callback() {
+          if(cancel()) return false;
+          API.queryTable('getAutocompleteRows', 10, prepForTransport(validate.trim())).done(function(data) {
+            if(cancel()) return false;
+            self.activeSuggestions(data);
+          });
+        }
+        setTimeout(callback, 200);
+        return;
       default:
         self.activeSuggestions([]);
         return;