Преглед на файлове

HUE-5077 [metadata] Prefix filter and keep the potential facets

Romain Rigaux преди 9 години
родител
ревизия
09c22b754c

+ 3 - 2
desktop/core/src/desktop/templates/assist.mako

@@ -1579,9 +1579,8 @@ from metadata.conf import has_navigator
             query:  request.term + '*',
             successCallback: function (data) {
               var values = [];
-              if (isFacet && typeof data.facets !== 'undefined') {
+              if (isFacet && typeof data.facets !== 'undefined') { // Is typed facet, e.g. type: type:bla
                 var facetInQuery = facetMatch[1];
-
                 if (typeof data.facets[facetInQuery] !== 'undefined') {
                   Object.keys(data.facets[facetInQuery]).forEach(function (facetValue) {
                     if (partial === '' || facetValue.indexOf(partial) !== -1) {
@@ -1595,6 +1594,8 @@ from metadata.conf import has_navigator
                     if (partial.length === 0 || facet.indexOf(partial) !== -1) {
                       if (Object.keys(data.facets[facet]).length > 0) {
                         values.push({ data: { label: facet + ':', icon: NAV_FACET_ICON, description: Object.keys(data.facets[facet]).join(', ') }, value: beforePartial + facet + ':'});
+                      } else { // Potential facet from the list
+                        values.push({ data: { label: facet + ':', icon: NAV_FACET_ICON, description: '' }, value: beforePartial + facet + ':'});
                       }
                     } else if (partial.length > 0) {
                       Object.keys(data.facets[facet]).forEach(function (facetValue) {

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

@@ -186,7 +186,7 @@ def search_entities_interactive(request):
   last_query_term = [term for term in query_s.strip().split()][-1]
 
   if last_query_term and last_query_term != '*':
-    last_query_term = last_query_term.rstrip('*')
+    last_query_term = last_query_term.rstrip('*').rstrip(':')
     field_facets = [f for f in field_facets if f.startswith(last_query_term)]
   field_facets = field_facets[:10]
 
@@ -204,7 +204,7 @@ def search_entities_interactive(request):
   if response.get('facets'): # Remove empty facets
     for fname, fvalues in response['facets'].items():
       response['facets'][fname] = dict((k, v) for k, v in fvalues.items() if v > 0)
-      if not response['facets'][fname]:
+      if ':' in last_query_term and not response['facets'][fname]:
         del response['facets'][fname]
 
   response['status'] = 0

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

@@ -103,7 +103,7 @@ class NavigatorApi(object):
         else:
           name, val = term.split(':')
           if val and (name != 'type' or val in entity_types): # Manual filter allowed
-            user_filters.append(term) # e.g. type:VIEW ca
+            user_filters.append(term + '*') # e.g. type:VIEW ca
 
       filter_query = '*'
 
@@ -162,6 +162,7 @@ class NavigatorApi(object):
           name, val = term.split(':')
           if val and val != '*' and (name != 'type' or val in entity_types):
             filterQueries.append(term)
+
       body = {'query': ' '.join(query) or '*'}
 
 
@@ -253,7 +254,6 @@ class NavigatorApi(object):
     http://cloudera.github.io/navigator/apidocs/v3/path__v3_entities_-id-.html
     """
     try:
-      # TODO: Check permissions of entity
       data = json.dumps(metadata)
       return self._root.put('entities/%s' % entity_id, params=self.__params, data=data, allow_redirects=True, clear_cookies=True)
     except RestException, e: