浏览代码

[search] Range and field support for bar chart

Romain Rigaux 11 年之前
父节点
当前提交
8e627dd
共有 3 个文件被更改,包括 12 次插入5 次删除
  1. 2 1
      apps/search/src/search/api.py
  2. 8 2
      apps/search/src/search/templates/search.mako
  3. 2 2
      apps/search/static/js/search.ko.js

+ 2 - 1
apps/search/src/search/api.py

@@ -231,12 +231,13 @@ class SolrApi(BaseSolrApi):
           )
 
     for fq in query['fqs']:
+      print fq
       if fq['type'] == 'field':
         # This does not work if spaces in Solr: 
         # params += (('fq', ' '.join([urllib.unquote(utf_quoter('{!tag=%s}{!field f=%s}%s' % (fq['field'], fq['field'], _filter))) for _filter in fq['filter']])),)
         f = []
         for _filter in fq['filter']:          
-          if ' ' in _filter:
+          if _filter is not None and ' ' in _filter:
             f.append('%s:"%s"' % (fq['field'], _filter))
           else:
             f.append('{!field f=%s}%s' % (fq['field'], _filter))

+ 8 - 2
apps/search/src/search/templates/search.mako

@@ -724,7 +724,13 @@ ${ commonheader(_('Search'), "search", user, "80px") | n,unicode }
     <div data-bind="barChart: {datum: {counts: counts, widget_id: $parent.id(), label: label}, stacked: false, field: field, label: label,
       transformer: barChartDataTransformer,
       onStateChange: function(state){ console.log(state); },
-      onClick: function(d){ viewModel.query.selectRangeFacet({count: d.obj.value, widget_id: d.obj.widget_id, from: d.obj.from, to: d.obj.to, cat: d.obj.field}) },
+      onClick: function(d) {alert(type);
+        if (type == 'range') { 
+          viewModel.query.selectRangeFacet({count: d.obj.value, widget_id: $parent.id(), from: d.obj.from, to: d.obj.to, cat: d.obj.field});
+        } else {
+          viewModel.query.toggleFacet({facet: d.obj, widget_id: $parent.id()});
+        } 
+      },
       onSelectRange: function(from, to){ viewModel.collection.selectTimelineFacet({from: from, to: to, cat: field, widget_id: $parent.id()}) },
       onComplete: function(){ viewModel.getWidgetById(id).isLoading(false) } }"
     />
@@ -1407,8 +1413,8 @@ function rangePieChartDataTransformer(data) {
 function barChartDataTransformer(rawDatum) {
   var _datum = [];
   var _data = [];
+
   $(rawDatum.counts).each(function (cnt, item) {
-    item.widget_id = rawDatum.widget_id;
     if (typeof item.from != "undefined"){
       _data.push({
         series: 0,

+ 2 - 2
apps/search/static/js/search.ko.js

@@ -647,14 +647,14 @@ var Collection = function (vm, collection) {
     if (facet_field.type() == 'field') {
        facet_field.type('range');
      } else if (facet_field.type() == 'range') {
-        facet_field.type('field')
+       facet_field.type('field')
      }
    
     $(event.target).button('loading');
     vm.search();
   };  
 
-  self.selectTimelineFacet = function (data) { // alert(ko.mapping.toJSON(facet)); 
+  self.selectTimelineFacet = function (data) { // alert(ko.mapping.toJSON(data)); 
     var facet = self.getFacetById(data.widget_id);
   
     facet.properties.start(data.from);