Ver código fonte

HUE-3450 [metastore] Merge optimizer stats with the tables and show progress bar + count

Johan Ahlen 9 anos atrás
pai
commit
b0c120536f

+ 24 - 12
apps/metastore/src/metastore/static/metastore/js/metastore.ko.js

@@ -93,7 +93,28 @@
         }));
         self.loaded(true);
         self.loading(false);
-        if (callback) {
+        if (optimizerEnabled) {
+          $.post('/metadata/api/optimizer_api/top_tables', function(data){
+            if (data && data.status == 0) {
+              var tableIndex = {};
+              data.top_tables.forEach(function (topTable) {
+                tableIndex[topTable.name] = topTable;
+              });
+              self.tables().forEach(function (table) {
+                table.optimizerStats(tableIndex[table.name]);
+              });
+              self.optimizerStats(ko.mapping.fromJS(data.top_tables));
+            } else {
+              $(document).trigger("error", data.message);
+            }
+          }).fail(function (xhr, textStatus, errorThrown) {
+            $(document).trigger("error", xhr.responseText);
+          }).always(function () {
+            if (callback) {
+              callback();
+            }
+          });
+        } else if (callback) {
           callback();
         }
       },
@@ -111,17 +132,6 @@
       }
     });
 
-    if (optimizerEnabled) {
-      $.post('/metadata/api/optimizer_api/top_tables', function(data){
-        if (data && data.status == 0) {
-          self.optimizerStats(ko.mapping.fromJS(data.top_tables));
-        } else {
-          $(document).trigger("error", data.message);
-        }
-      }).fail(function (xhr, textStatus, errorThrown) {
-        $(document).trigger("error", xhr.responseText);
-      });
-    }
 
     $.totalStorage('hue.metastore.lastdb', self.name);
   };
@@ -268,6 +278,8 @@
     self.name = options.name;
     self.type = options.type;
 
+    self.optimizerStats = ko.observable();
+
     self.loaded = ko.observable(false);
     self.loading = ko.observable(false);
 

+ 11 - 3
apps/metastore/src/metastore/templates/metastore.mako

@@ -456,9 +456,17 @@ ${ assist.assistPanel() }
                 <a class="tableLink" href="javascript:void(0);" data-bind="text: name, click: function() { $parent.setTable($data, function(){ huePubSub.publish('metastore.url.change'); }) }"></a>
               </td>
               <td data-bind="text: comment"></td>
-              <!-- ko if: $root.optimizerEnabled  -->
-                <td data-bind="text: Math.floor(Math.random() * 100) + 1"></td>
-                <td data-bind="text: Math.floor(Math.random() * 50) + 1"></td>
+              <!-- ko if: optimizerStats -->
+                <td>
+                  <div class="progress" style="height: 10px; width: 70px; margin-top:5px;">
+                    <div class="bar" style="background-color: #338bb8" data-bind="style: { 'width' : optimizerStats().popularity + '%' }"></div>
+                  </div>
+                </td>
+                <td data-bind="text: optimizerStats().column_count"></td>
+              <!-- /ko -->
+              <!-- ko ifnot: optimizerStats -->
+                <td>&nbsp;</td>
+                <td>&nbsp;</td>
               <!-- /ko -->
               <td class="center">
                 <!-- ko if: type == 'Table' -->

+ 1 - 1
desktop/libs/metadata/src/metadata/optimizer_api.py

@@ -61,7 +61,7 @@ def top_tables(request):
   api = OptimizerApi()
 
   response['top_tables'] = api.top_tables() if not OPTIMIZER.MOCKING.get() else [
-      {'name': 'a', 'popularity': random.randint(1, 100) , 'column_count': random.randint(1, 100), 'is_fact': bool(random.getrandbits(1))}
+      {'name': 'customers', 'popularity': random.randint(1, 100) , 'column_count': random.randint(1, 100), 'is_fact': bool(random.getrandbits(1))}
     for i in xrange(0, len)
   ]
   response['status'] = 0