Browse Source

HUE-8155 [metastore] Show key columns in the top columns list

This also adds bootstrap tooltips for the popularity and key icons
Johan Ahlen 7 years ago
parent
commit
d97fbea396

+ 5 - 2
apps/metastore/src/metastore/static/metastore/js/metastore.model.js

@@ -465,8 +465,11 @@ var MetastoreTable = (function () {
 
           var favorites = [];
           var nonFavorites = [];
+          var keys = [];
           self.columns().forEach(function (column) {
-            if (topColIndex[column.catalogEntry.name]) {
+            if (column.catalogEntry.isPrimaryKey() || column.catalogEntry.isPartitionKey()) {
+              keys.push(column);
+            } else if (topColIndex[column.catalogEntry.name]) {
               favorites.push(column);
               column.popularity(topColIndex[column.catalogEntry.name].score);
             } else {
@@ -477,7 +480,7 @@ var MetastoreTable = (function () {
             return colB.popularity() - colA.popularity();
           });
 
-          self.favouriteColumns(favorites.concat(nonFavorites).slice(0, 5));
+          self.favouriteColumns(keys.concat(favorites).concat(nonFavorites).slice(0, 5));
         }).always(function () {
           self.loadingQueries(false);
         });

+ 7 - 7
apps/metastore/src/metastore/templates/metastore.mako

@@ -135,19 +135,19 @@ ${ components.menubar(is_embeddable) }
             <!-- ko if: $root.database() && $root.database().table() && $root.database().table().samples && $root.database().table().samples.loading() -->
             <span data-bind="text: catalogEntry.name"></span>
             <!-- ko if: $root.optimizerEnabled() && popularity()  -->
-            &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + popularity() + '%' }"></i>
+            &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + popularity() + '%' }, tooltip"></i>
             <!-- /ko -->
-            <i class="fa fa-key" title="${ _("Primary key") }" data-bind="visible: catalogEntry.isPrimaryKey()"></i>
-            <i class="fa fa-key" title="${ _("Partition key") }" data-bind="visible: catalogEntry.isPartitionKey()"></i>
+            <i class="fa fa-key" title="${ _("Primary key") }" data-bind="visible: catalogEntry.isPrimaryKey(), tooltip"></i>
+            <i class="fa fa-key" title="${ _("Partition key") }" data-bind="visible: catalogEntry.isPartitionKey(), tooltip"></i>
             <!-- /ko -->
             <!-- ko ifnot: $root.database() && $root.database().table() && $root.database().table().samples && $root.database().table().samples.loading() -->
             <a href="javascript:void(0)" class="column-selector" data-bind="click: $root.scrollToColumn">
               <span data-bind="text: catalogEntry.name"></span>
               <!-- ko if: $root.optimizerEnabled() && popularity()  -->
-              &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + popularity() + '%' }"></i>
+              &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + popularity() + '%' }, tooltip"></i>
               <!-- /ko -->
-              <i class="fa fa-key" title="${ _("Primary key") }" data-bind="visible: catalogEntry.isPrimaryKey()"></i>
-              <i class="fa fa-key" title="${ _("Partition key") }" data-bind="visible: catalogEntry.isPartitionKey()"></i>
+              <i class="fa fa-key" title="${ _("Primary key") }" data-bind="visible: catalogEntry.isPrimaryKey(), tooltip"></i>
+              <i class="fa fa-key" title="${ _("Partition key") }" data-bind="visible: catalogEntry.isPartitionKey(), tooltip"></i>
             </a>
             <!-- /ko -->
           </td>
@@ -633,7 +633,7 @@ ${ components.menubar(is_embeddable) }
                 <!-- /ko -->
                 <span data-bind="text: catalogEntry.name"></span>
                 <!-- ko if: $root.optimizerEnabled() && optimizerStats() && optimizerStats().popularity  -->
-              &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + optimizerStats().popularity + '%' }"></i>
+              &nbsp;<i class="fa fa-star-o" data-bind="attr: { 'title': '${_ko('Popularity')}' + ': ' + optimizerStats().popularity + '%' }, tooltip"></i>
                 <!-- /ko -->
               </a>
             </td>