Преглед изворни кода

HUE-7503 [dashboard] Step 1 of sorting on aggregates of any dimension

Romain Rigaux пре 8 година
родитељ
комит
1ea1796

+ 1 - 1
desktop/libs/dashboard/src/dashboard/static/dashboard/js/search.ko.js

@@ -977,7 +977,7 @@ var Collection = function (vm, collection) {
       'limit': ko.mapping.toJS(facet.properties.facets_form.limit),
       'mincount': ko.mapping.toJS(facet.properties.facets_form.mincount),
       'aggregate': ko.mapping.toJS(facet.properties.facets_form.aggregate),
-      'sort': ko.mapping.toJS(facet.properties.facets_form.sort)
+      'sort': ko.mapping.toJS(facet.properties.facets_form.aggregate.function == 'count' ? 'desc' : 'default')
     });
     pivot.aggregate.metrics = ko.computed(function() {
       var _field = self.getTemplateField(pivot.field(), self.template.fieldsAttributes());

+ 3 - 2
desktop/libs/dashboard/src/dashboard/templates/common_search.mako

@@ -2100,13 +2100,14 @@ ${ dashboard.layout_skeleton(suffix='search') }
       <div class="facet-field-cnt">
         <span class="facet-field-label facet-field-label-fixed-width">${ _('Sorting') }</span>
         <a href="javascript: void(0)" title="${ _('Toggle sort order') }" data-bind="click: function() { $root.collection.toggleSortFacet2($parent); }">
-          <i class="fa" data-bind="css: { 'fa-caret-down': $parent.sort() == 'desc', 'fa-caret-up': $parent.sort() == 'asc' }"></i>
+          <i class="fa" data-bind="css: { 'fa-caret-down': $parent.sort() == 'desc', 'fa-caret-up': $parent.sort() == 'asc', 'fa-sort': $parent.sort() == 'default' }"></i>
           <span data-bind="visible: $parent.sort() == 'desc'">${_('descending')}</span>
           <span data-bind="visible: $parent.sort() == 'asc'">${_('ascending')}</span>
+          <span data-bind="visible: $parent.sort() == 'default'"></span>
         </a>
       </div>
 
-        <div class="facet-field-cnt">
+        <div class="facet-field-cnt" data-bind="visible: $data.function() == 'count'">
           <span class="spinedit-cnt">
             <span class="facet-field-label">
               ${ _('Limit') }

+ 8 - 2
desktop/libs/libsolr/src/libsolr/api.py

@@ -260,6 +260,13 @@ class SolrApi(object):
         _f['facet'][f_name] = {}
       _f = _f['facet']
 
+      n2 = {'count': facet['sort']}
+      # TODO: stay within same dim
+      for agg in facets[0:]:
+        if agg['aggregate']['function'] != 'count' and agg['sort'] != 'default':
+          agg_function = self._get_aggregate_function(agg)
+          n2 = {'agg_%02d_00:%s' % (dim, agg_function): agg['sort']}
+
       _f[f_name] = {
           'type': 'terms',
           'field': '%(field)s' % facet,
@@ -267,7 +274,7 @@ class SolrApi(object):
           'mincount': int(facet['mincount']),
           'numBuckets': True,
           'allBuckets': True,
-          'sort': {'count': facet['sort']}
+          'sort': n2
           #'prefix': '' # Forbidden on numeric fields
       }
       if widget['widgetType'] == 'tree2-widget' and facets[-1]['aggregate']['function'] != 'count':
@@ -807,7 +814,6 @@ class SolrApi(object):
 
   @classmethod
   def __get_aggregate_function(cls, f):
-    print f
     if f['function'] == 'field':
       return f['value']
     else: