Эх сурвалжийг харах

HUE-5051 [metadata] Remove empty facet values

Note: if all are 0, we could remove them from the response in the backend
or frontend
Romain Rigaux 9 жил өмнө
parent
commit
f9e3524ce4

+ 1 - 1
desktop/core/src/desktop/templates/assist.mako

@@ -1466,7 +1466,7 @@ from metadata.conf import has_navigator
                 if (typeof data.results !== 'undefined') {
                   data.results.forEach(function (result) {
                     var icon = '';
-                    switch (result.type) {
+                    switch (result.type) { // TODO all types
                       case 'TABLE':
                         icon = 'fa-table';
                         break;

+ 6 - 2
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -92,7 +92,7 @@ def search_entities(request):
 def search_entities_interactive(request):
   """
   For search autocomplete.
-  """  
+  """
   api = NavigatorApi()
 
   query_s = request.POST.get('query_s', '')
@@ -103,7 +103,7 @@ def search_entities_interactive(request):
   sources = json.loads(request.POST.get('sources') or '[]')
 
   response = api.search_entities_interactive(
-      query=query_s,
+      query_s=query_s,
       limit=limit,
       offset=offset,
       facetFields=field_facets,
@@ -113,6 +113,10 @@ def search_entities_interactive(request):
       sources=sources
   )
 
+  if response.get('facets'):
+    for facet in response['facets']:
+      response['facets'][facet] = dict((k, v) for k, v in response['facets'][facet].items() if v > 0)
+
   response['status'] = 0
 
   return JsonResponse(response)

+ 7 - 7
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -73,7 +73,7 @@ class NavigatorApi(object):
     elif 'hdfs' in sources:
       entity_types = ('FILE', 'DIRECTORY')
       default_entity_types  = ('FILE', 'DIRECTORY')
-      
+
     return default_entity_types, entity_types
 
   def search_entities(self, query_s, limit=100, offset=0, **filters):
@@ -137,7 +137,7 @@ class NavigatorApi(object):
         'offset': offset,
         'limit': limit,
       }
-      
+
       entity_types = []
       if filterQueries is None:
         filterQueries = []
@@ -145,12 +145,12 @@ class NavigatorApi(object):
       if sources:
         default_entity_types, entity_types = self._get_types_from_sources(sources)
         fq_type = []
-      
+
         if 'hive' in sources or 'impala' in sources:
           fq_type = default_entity_types
         elif 'hdfs' in sources:
           fq_type = entity_types
-      
+
         filterQueries += ['{!tag=type} %s' % ' OR '.join(['type:%s' % fq for fq in fq_type])]
 
       search_terms = [term for term in query_s.strip().split()]
@@ -160,9 +160,9 @@ class NavigatorApi(object):
           query.append(term)
         else:
           name, val = term.split(':')
-          if val and (name != 'type' or val in entity_types):
-            filterQueries.append(term)      
-      body = {'query': query_s and query_s.strip() or '*'}
+          if val and val != '*' and (name != 'type' or val in entity_types):
+            filterQueries.append(term)
+      body = {'query': ' '.join(query) or '*'}
 
 
       body['facetFields'] = facetFields or [] # Currently mandatory in API