فهرست منبع

HUE-5135 [metadata] Autocomplete highlighting on matching terms

Romain Rigaux 9 سال پیش
والد
کامیت
2199bcd8eb
1فایلهای تغییر یافته به همراه13 افزوده شده و 6 حذف شده
  1. 13 6
      desktop/libs/metadata/src/metadata/navigator_api.py

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

@@ -227,22 +227,29 @@ def search_entities_interactive(request):
         fs[fname] = fval.strip('*')
     else:
       if term.strip('*'):
-        ts.append(term.strip())
+        ts.append(term.strip('*'))
 
-  # facets:aa
-  # originalName', 'name', tags 'description', 'originalDescription'
   for record in response.get('results'):
     record['hue_description'] = ''
-    record['hue_name'] = record.get('parentPath', '').replace('/', '') + record.get('originalName', '')
-    for fname, fval in fs.iteritems():
+    record['hue_name'] = (record.get('parentPath', '').replace('/', '.') + '.' + record.get('originalName', '')).lstrip('.')
+    for term in ts:
+      record['hue_name'] = _highlight(term, record['hue_name'])
+      for tag in record.get('tags', []):
+        if re.match(term, tag):
+          record['hue_description'] += ' tags:%s' % _highlight(term, tag)
+    for fname, fval in fs.iteritems(): # e.g. owner:<em>hu</em>e
       if record.get(fname, ''):
-        record['hue_description'] += re.sub('(%s)' % fval, '<em>\\1</em>', record[fname], count=1)
+        record['hue_description'] += ' %s:%s' % (fname, _highlight(fval, record[fname]))
 
   response['status'] = 0
 
   return JsonResponse(response)
 
 
+def _highlight(pattern, string):
+  return re.sub('(%s)' % pattern, '<em>\\1</em>', string, count=1)
+
+
 @error_handler
 def list_tags(request):
   api = NavigatorApi()