Explorar el Código

HUE-8150 [core] Add static list of facets to the catalog page

Romain Rigaux hace 7 años
padre
commit
136e053469

+ 3 - 2
desktop/core/src/desktop/static/desktop/js/apiHelper.js

@@ -1893,10 +1893,11 @@ var ApiHelper = (function () {
     return new CancellablePromise(deferred, request);
   };
 
-  ApiHelper.prototype.fetchNavEntitiesInteractive = function (query) {
+  ApiHelper.prototype.fetchNavEntitiesInteractive = function (options) {
     var deferred = $.Deferred();
     var request = $.post(INTERACTIVE_SEARCH_API, {
-      query_s: ko.mapping.toJSON(query),
+      query_s: ko.mapping.toJSON(options.query),
+      field_facets: ko.mapping.toJSON(options.facets || []),
       limit: 50,
       sources: '["sql", "hdfs", "s3"]'
     }).done(function (data) {

+ 8 - 6
desktop/core/src/desktop/templates/catalog.mako

@@ -244,10 +244,10 @@ ${ common_home.navbar() }
 
 <div id="catalogComponents">
 
-<input data-bind="value: query"/>
-<a class="btn" data-bind="click: search">
-  Search
-</a>
+  <input data-bind="value: query"/>
+  <a class="btn" data-bind="click: search">
+    Search
+  </a>
 
 </id>
 
@@ -261,9 +261,11 @@ ${ common_home.navbar() }
 
       self.apiHelper = ApiHelper.getInstance();
 
-      self.query = ko.observable("cust type:");
+      self.query = ko.observable("cust");
       self.search = function() {
-        self.apiHelper.fetchNavEntitiesInteractive(self.query()).done(function (data) {
+        self.apiHelper.fetchNavEntitiesInteractive({query: self.query(), facets: [
+            'type', 'owner', 'tags', 'lastModified'
+          ]}).done(function (data) {
           console.log(data);
         });
       }

+ 1 - 1
desktop/core/src/desktop/templates/ko_components/ko_global_search.mako

@@ -470,7 +470,7 @@ from desktop.views import _ko
           });
 
           self.loadingNav(true);
-          self.cancellablePromises.push(self.apiHelper.fetchNavEntitiesInteractive(navQuery).always(function () {
+          self.cancellablePromises.push(self.apiHelper.fetchNavEntitiesInteractive({query: navQuery}).always(function () {
             self.loadingNav(false);
             window.clearTimeout(clearNavTimeout);
           }).done(function (data) {

+ 3 - 4
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -207,7 +207,7 @@ def search_entities_interactive(request):
       }
     }
 
-  field_facets = ["tags", "type"] + f.keys()
+  auto_field_facets = ["tags", "type"] + f.keys()
   query_s = query_s.strip() + '*'
 
   last_query_term = [term for term in query_s.split()][-1]
@@ -215,14 +215,13 @@ def search_entities_interactive(request):
   if last_query_term and last_query_term != '*':
     last_query_term = last_query_term.rstrip('*')
     (fname, fval) = last_query_term.split(':') if ':' in last_query_term else (last_query_term, '')
-    field_facets = [f for f in field_facets if f.startswith(fname)]
-  field_facets = field_facets[:5]
+    auto_field_facets = [f for f in auto_field_facets if f.startswith(fname)]
 
   response = api.search_entities_interactive(
       query_s=query_s,
       limit=limit,
       offset=offset,
-      facetFields=field_facets,
+      facetFields=field_facets or auto_field_facets[:5],
       facetPrefix=prefix,
       facetRanges=None,
       firstClassEntitiesOnly=None,