Ver Fonte

HUE-1432 [hbase] Move lazy-loading to backend

Kevin Wang há 12 anos atrás
pai
commit
895f30d
2 ficheiros alterados com 29 adições e 3 exclusões
  1. 6 0
      apps/hbase/src/hbase/api.py
  2. 23 3
      apps/hbase/static/js/controls.js

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

@@ -129,6 +129,12 @@ class HbaseApi(object):
       return row[0]
     return None
 
+  def getRowPartial(self, cluster, tableName, rowKey, offset, number):
+    client = self.connectCluster(cluster)
+    scan = get_thrift_type('TScan')(startRow=rowKey, stopRow=None, timestamp=None, columns=[], caching=None, filterString="ColumnPaginationFilter(%i, %i)" % (number, offset), batchSize=None)
+    scanner = client.scannerOpenWithScan(tableName, scan, None)
+    return client.scannerGetList(scanner, 1)
+
   def deleteColumns(self, cluster, tableName, row, columns):
     client = self.connectCluster(cluster)
     Mutation = get_thrift_type('Mutation')

+ 23 - 3
apps/hbase/static/js/controls.js

@@ -380,9 +380,29 @@ var SmartViewDataRow = function(options) {
   };
 
   self.onScroll = function(target, ev) {
-    if($(ev.target).scrollLeft() == ev.target.scrollWidth - ev.target.clientWidth && self.displayedItems().length < self.scrollLoadSource().length) {
-      self.displayRangeLength += 15;
-      self.updateDisplayedItems();
+    var displayRangeDelta = 15;
+    if($(ev.target).scrollLeft() == ev.target.scrollWidth - ev.target.clientWidth) {
+      if(self.displayedItems().length < self.scrollLoadSource().length) {
+        self.displayRangeLength += displayRangeDelta;
+        self.updateDisplayedItems();
+      } else {
+        self.displayRangeLength = self.items().length + displayRangeDelta;
+        var validate = self.items().length;
+        API.queryTable('getRowPartial' , self.row, self.items().length, 50).done(function(data) {
+          if(self.items().length != validate) return false;
+          var cols = data[0].columns;
+          var keys = Object.keys(cols);
+          var temp = [];
+          for(var i=0; i<keys.length; i++) {
+            var col = cols[keys[i]];
+            temp.push(new ColumnRow({name: keys[i],
+             timestamp: col.timestamp,
+             value: col.value,
+             parent: self}));
+          }
+          self.items(self.items().concat(temp));
+        });
+      }
     }
   };