Browse Source

HUE-4764 [metastore] Show an indication when the partition limit is reached

It will now add a '+' to the partition count when the limit is reached.
Johan Ahlen 9 years ago
parent
commit
6aa2c00

+ 13 - 2
apps/metastore/src/metastore/static/metastore/js/metastore.ko.js

@@ -29,6 +29,7 @@
    * @param {Object} options
    * @param {string} options.name
    * @param {ApiHelper} options.apiHelper
+   * @param {MetastoreViewModel} options.metastore
    * @param {string} [options.tableName]
    * @param {string} [options.tableComment]
    * @param {Object} options.i18n
@@ -43,6 +44,7 @@
     self.apiHelper = options.apiHelper;
     self.i18n = options.i18n;
     self.name = options.name;
+    self.metastore = options.metastore;
 
     self.loaded = ko.observable(false);
     self.loading = ko.observable(false);
@@ -382,6 +384,13 @@
       apiHelper: self.apiHelper,
       metastoreTable: self
     });
+
+    self.partitionsCountLabel = ko.pureComputed(function () {
+      if (self.partitions.values().length === self.database.metastore.partitionsLimit) {
+        return self.partitions.values().length + '+'
+      }
+      return self.partitions.values().length;
+    });
     self.tableDetails = ko.observable();
     self.tableStats = ko.observable();
     self.refreshingTableStats = ko.observable(false);
@@ -506,7 +515,7 @@
                   $.each(self.optimizerDetails().sortedTotal(), function(index, optimizerCol) {
                     var metastoreCol = $.grep(self.columns(), function(col) {
                       return col.name() == optimizerCol.columnName();
-                    })
+                    });
                     if (metastoreCol.length > 0) {
                       metastoreCol[0].popularity(optimizerCol.totalCount())
                     }
@@ -530,7 +539,7 @@
           self.loading(false);
         }
       })
-    }
+    };
 
     self.addTags = function () {
       $.post('/metadata/api/navigator/add_tags', {
@@ -643,6 +652,7 @@
    */
   function MetastoreViewModel(options) {
     var self = this;
+    self.partitionsLimit = options.partitionsLimit;
     self.assistAvailable = ko.observable(true);
     self.apiHelper = ApiHelper.getInstance(options);
     self.isLeftPanelVisible = ko.observable();
@@ -698,6 +708,7 @@
               name: name,
               apiHelper: self.apiHelper,
               i18n: self.i18n,
+              metastore: self,
               optimizerEnabled: self.optimizerEnabled,
               navigatorEnabled: self.navigatorEnabled
             })

+ 4 - 2
apps/metastore/src/metastore/templates/metastore.mako

@@ -19,6 +19,7 @@ from django.utils.translation import ugettext as _
 
 from desktop import conf
 from desktop.conf import USE_NEW_EDITOR
+from beeswax.conf import LIST_PARTITIONS_LIMIT
 from desktop.lib.i18n import smart_unicode
 from desktop.views import commonheader, commonfooter, _ko
 %>
@@ -794,7 +795,7 @@ ${ assist.assistPanel() }
     <li><a href="#overview" data-toggle="tab" data-bind="click: function(){ $root.currentTab('table-overview'); }">${_('Overview')}</a></li>
     <li><a href="#columns" data-toggle="tab" data-bind="click: function(){ $root.currentTab('table-columns'); }">${_('Columns')} (<span data-bind="text: columns().length"></span>)</a></li>
     <!-- ko if: tableDetails() && tableDetails().partition_keys.length -->
-      <li><a href="#partitions" data-toggle="tab" data-bind="click: function(){ $root.currentTab('table-partitions'); }">${_('Partitions')} <span data-bind="text: '(' + partitions.values().length + ')'"></span></a></li>
+      <li><a href="#partitions" data-toggle="tab" data-bind="click: function(){ $root.currentTab('table-partitions'); }">${_('Partitions')} (<span data-bind="text: partitionsCountLabel"></span>)</a></li>
     <!-- /ko -->
     <li><a href="#sample" data-toggle="tab" data-bind="click: function(){ $root.currentTab('table-sample'); }">${_('Sample')}</a></li>
     <!-- ko if: $root.optimizerEnabled() -->
@@ -1241,7 +1242,8 @@ ${ assist.assistPanel() }
         optimizerEnabled: '${ is_optimizer_enabled }' === 'True',
         navigatorEnabled: '${ is_navigator_enabled }' === 'True',
         optimizerUrl: '${ optimizer_url }',
-        navigatorUrl: '${ navigator_url }'
+        navigatorUrl: '${ navigator_url }',
+        partitionsLimit: ${ LIST_PARTITIONS_LIMIT.get() }
       };
 
       var viewModel = new MetastoreViewModel(options);