Forráskód Böngészése

[search] Propagate state change

Enrico Berti 11 éve
szülő
commit
4e373067dc

+ 2 - 1
apps/search/src/search/templates/search2.mako

@@ -417,6 +417,7 @@ ${ commonheader(_('Search'), "search", user, "60px") | n,unicode }
 
     <div data-bind="timelineChart: {datum: {counts: counts, extraSeries: extraSeries, widget_id: $parent.id(), label: label}, stacked: false, field: field, label: label, transformer: timelineChartDataTransformer,
       onSelectRange: function(from, to){ viewModel.collection.selectTimelineFacet({from: from, to: to, cat: field, widget_id: $parent.id()}) },
+      onStateChange: function(state){ console.log(state); },
       onComplete: function(){ viewModel.getWidgetById(id).isLoading(false) }}" />
   </div>
   <!-- /ko -->
@@ -443,7 +444,7 @@ ${ commonheader(_('Search'), "search", user, "60px") | n,unicode }
     </div> 
 
     <div data-bind="barChart: {datum: {counts: counts, widget_id: $parent.id(), label: label}, stacked: false, field: field, label: label,
-      transformer: barChartDataTransformer,
+      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}) }, 
       onComplete: function(){ viewModel.getWidgetById(id).isLoading(false) } }"
     />

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

@@ -239,6 +239,7 @@ function barChart(element, options, isTimeline) {
           .tickFormat(d3.time.format("%Y-%m-%d %H:%M:%S"));
       _chart.multibar.hideable(true);
       _chart.multibar.stacked(typeof options.stacked != "undefined" ? options.stacked : false);
+      _chart.onStateChange(options.onStateChange);
     }
     else {
       var _isDiscrete = false;
@@ -263,6 +264,7 @@ function barChart(element, options, isTimeline) {
           .tickFormat(d3.format(',0f'));
         _chart.multibar.hideable(true);
         _chart.multibar.stacked(typeof options.stacked != "undefined" ? options.stacked : false);
+        _chart.onStateChange(options.onStateChange);
       }
     }
     _chart.margin({bottom: 100})

+ 10 - 0
apps/search/static/js/nv.d3.growingMultiBarChart.js

@@ -54,6 +54,7 @@ nv.models.growingMultiBarChart = function() {
     , controlWidth = function() { return showControls ? 180 : 0 }
     , transitionDuration = 250
     , selectBars = null
+    , onStateChange = null
     ;
 
   multibar
@@ -346,6 +347,9 @@ nv.models.growingMultiBarChart = function() {
 
         state.stacked = multibar.stacked();
         dispatch.stateChange(state);
+        if (onStateChange != null) {
+          onStateChange(state);
+        }
 
         chart.update();
       });
@@ -542,6 +546,12 @@ nv.models.growingMultiBarChart = function() {
     return chart;
   };
 
+  chart.onStateChange = function(_) {
+    if (!arguments.length) return onStateChange;
+    onStateChange = _;
+    return chart;
+  };
+
   //============================================================
 
 

+ 7 - 0
apps/search/static/js/nv.d3.lineWithBrushChart.js

@@ -54,6 +54,7 @@ nv.models.lineWithBrushChart = function() {
     , brushExtent = null
     , selectionEnabled = false
     , onSelectRange = null
+    , onStateChange = null
     ;
 
   xAxis
@@ -553,6 +554,12 @@ nv.models.lineWithBrushChart = function() {
     return chart;
   };
 
+  chart.onStateChange = function(_) {
+    if (!arguments.length) return onStateChange;
+    onStateChange = _;
+    return chart;
+  };
+
   //============================================================
 
 

+ 10 - 0
apps/search/static/js/nv.d3.multiBarWithBrushChart.js

@@ -58,6 +58,7 @@ nv.models.multiBarWithBrushChart = function() {
     , brushExtent = null
     , selectionEnabled = false
     , onSelectRange = null
+    , onStateChange = null
     ;
 
   multibar
@@ -386,6 +387,9 @@ nv.models.multiBarWithBrushChart = function() {
         }
 
         state.stacked = multibar.stacked();
+        if (onStateChange != null) {
+          onStateChange(state);
+        }
         dispatch.stateChange(state);
 
         chart.update();
@@ -612,6 +616,12 @@ nv.models.multiBarWithBrushChart = function() {
     return chart;
   };
 
+  chart.onStateChange = function(_) {
+    if (!arguments.length) return onStateChange;
+    onStateChange = _;
+    return chart;
+  };
+
 
   //============================================================