Browse Source

[core] Add prefix search to column statistics in the assist component

This adds prefix search to the terms tab of the assist.
Johan Ahlen 10 năm trước cách đây
mục cha
commit
db768210de
1 tập tin đã thay đổi với 16 bổ sung5 xóa
  1. 16 5
      desktop/core/src/desktop/templates/ko_components.mako

+ 16 - 5
desktop/core/src/desktop/templates/ko_components.mako

@@ -91,12 +91,12 @@ from django.utils.translation import ugettext as _
   </script>
 
   <script type="text/html" id="assist-panel-column-stats">
-    <div class="pull-right hide filter">
-      <input id="columnAnalysisTermsFilter" type="text" placeholder="${ _('Prefix filter...') }"/>
+    <div class="pull-right filter" data-bind="visible: termsTabActive" style="display:none;">
+      <input type="text" data-bind="textInput: prefixFilter" placeholder="${ _('Prefix filter...') }"/>
     </div>
     <ul class="nav nav-tabs" role="tablist">
-      <li class="active"><a href="#columnAnalysisStats" role="tab" data-toggle="tab">${ _('Stats') }</a></li>
-      <li><a href="#columnAnalysisTerms" role="tab" data-toggle="tab">${ _('Terms') }</a></li>
+      <li data-bind="click: function() { termsTabActive(false) }"class="active"><a href="#columnAnalysisStats" role="tab" data-toggle="tab">${ _('Stats') }</a></li>
+      <li data-bind="click: function() { termsTabActive(true) }"><a href="#columnAnalysisTerms" role="tab" data-toggle="tab">${ _('Terms') }</a></li>
     </ul>
     <div class="tab-content">
       <div class="tab-pane active" id="columnAnalysisStats" style="text-align: left">
@@ -356,6 +356,12 @@ from django.utils.translation import ugettext as _
           self.inaccurate = ko.observable(false);
           self.statRows = ko.observableArray();
           self.terms = ko.observableArray();
+          self.termsTabActive = ko.observable(false);
+          self.prefixFilter = ko.observable().extend({'throttle': 500});
+
+          self.prefixFilter.subscribe(function(newValue) {
+            self.fetchTerms();
+          });
 
           self.refresh = function () {
             if (self.refreshing()) {
@@ -397,8 +403,13 @@ from django.utils.translation import ugettext as _
               return;
             }
             self.loadingTerms(true);
+            var url = "/" + assistAppName + "/api/table/" + database + "/" + table + "/terms/" + column + "/";
+
+            if (self.prefixFilter()) {
+              url += self.prefixFilter();
+            }
             $.ajax({
-              url: "/" + assistAppName + "/api/table/" + database + "/" + table + "/terms/" + column + "/",
+              url: url,
               data: {},
               beforeSend: function (xhr) {
                 xhr.setRequestHeader("X-Requested-With", "Hue");