File tree Expand file tree Collapse file tree 5 files changed +71
-6
lines changed Expand file tree Collapse file tree 5 files changed +71
-6
lines changed Original file line number Diff line number Diff line change @@ -1413,6 +1413,10 @@ dc.colorChart = function(_chart) {
1413
1413
} ;
1414
1414
dc . singleSelectionChart = function ( _chart ) {
1415
1415
var _filter ;
1416
+ var _filterHandler = function ( dimension , filter ) {
1417
+ dimension . filter ( filter ) ;
1418
+ return filter ;
1419
+ } ;
1416
1420
1417
1421
_chart . hasFilter = function ( ) {
1418
1422
return _filter != null ;
@@ -1423,8 +1427,10 @@ dc.singleSelectionChart = function(_chart) {
1423
1427
1424
1428
_filter = _ ;
1425
1429
1426
- if ( _chart . dataSet ( ) && _chart . dimension ( ) . filter != undefined )
1427
- _chart . dimension ( ) . filter ( _filter ) ;
1430
+ if ( _chart . dataSet ( ) && _chart . dimension ( ) . filter != undefined ) {
1431
+ var f = _filterHandler ( _chart . dimension ( ) , _filter ) ;
1432
+ _filter = f ?f :_filter ;
1433
+ }
1428
1434
1429
1435
if ( _ ) {
1430
1436
_chart . turnOnControls ( ) ;
@@ -1464,6 +1470,12 @@ dc.singleSelectionChart = function(_chart) {
1464
1470
dc . redrawAll ( _chart . chartGroup ( ) ) ;
1465
1471
} ;
1466
1472
1473
+ _chart . filterHandler = function ( _ ) {
1474
+ if ( ! arguments . length ) return _filterHandler ;
1475
+ _filterHandler = _ ;
1476
+ return _chart ;
1477
+ } ;
1478
+
1467
1479
return _chart ;
1468
1480
} ;
1469
1481
dc . stackableChart = function ( _chart ) {
Original file line number Diff line number Diff line change 1
1
dc . singleSelectionChart = function ( _chart ) {
2
2
var _filter ;
3
+ var _filterHandler = function ( dimension , filter ) {
4
+ dimension . filter ( filter ) ;
5
+ return filter ;
6
+ } ;
3
7
4
8
_chart . hasFilter = function ( ) {
5
9
return _filter != null ;
@@ -10,8 +14,10 @@ dc.singleSelectionChart = function(_chart) {
10
14
11
15
_filter = _ ;
12
16
13
- if ( _chart . dataSet ( ) && _chart . dimension ( ) . filter != undefined )
14
- _chart . dimension ( ) . filter ( _filter ) ;
17
+ if ( _chart . dataSet ( ) && _chart . dimension ( ) . filter != undefined ) {
18
+ var f = _filterHandler ( _chart . dimension ( ) , _filter ) ;
19
+ _filter = f ?f :_filter ;
20
+ }
15
21
16
22
if ( _ ) {
17
23
_chart . turnOnControls ( ) ;
@@ -51,5 +57,11 @@ dc.singleSelectionChart = function(_chart) {
51
57
dc . redrawAll ( _chart . chartGroup ( ) ) ;
52
58
} ;
53
59
60
+ _chart . filterHandler = function ( _ ) {
61
+ if ( ! arguments . length ) return _filterHandler ;
62
+ _filterHandler = _ ;
63
+ return _chart ;
64
+ } ;
65
+
54
66
return _chart ;
55
67
} ;
Original file line number Diff line number Diff line change @@ -377,6 +377,28 @@ suite.addBatch({
377
377
}
378
378
} ) ;
379
379
380
+ suite . addBatch ( {
381
+ 'custom filter handler' : {
382
+ topic : function ( ) {
383
+ var chart = buildChart ( "pie-chart-filter-handler" ) ;
384
+ chart . filterHandler ( function ( dimension , filter ) {
385
+ var newFilter = filter + 6 ;
386
+ dimension . filter ( newFilter ) ;
387
+ return newFilter ;
388
+ } ) ;
389
+ return chart ;
390
+ } ,
391
+ 'default function should be used to dynamically generate label' : function ( chart ) {
392
+ chart . filter ( 60 ) ;
393
+ assert . equal ( chart . filter ( ) , 66 ) ;
394
+ } ,
395
+ teardown : function ( chart ) {
396
+ resetAllFilters ( ) ;
397
+ resetBody ( ) ;
398
+ }
399
+ }
400
+ } ) ;
401
+
380
402
381
403
suite . export ( module ) ;
382
404
Original file line number Diff line number Diff line change @@ -235,6 +235,25 @@ chart.filter(18);
235
235
#### .hasFilter()
236
236
Check whether is an active filter associated with particular chart instance. This function is ** not chainable** .
237
237
238
+ #### .filterHandler([ function] )
239
+ Set or get filter handler. Filter handler is a function that performs the filter action on a specific dimension. Using
240
+ custom filter handler give you the flexibility to perform additional logic before or after filtering.
241
+
242
+ ``` js
243
+ // default filter handler
244
+ function (dimension , filter ){
245
+ dimension .filter (filter); // perform filtering
246
+ return filter; // return the actual filter value
247
+ }
248
+
249
+ // custom filter handler
250
+ chart .filterHandler (function (dimension , filter ){
251
+ var newFilter = filter + 10 ;
252
+ dimension .filter (newFilter);
253
+ return newFilter; // set the actual filter value to the new value
254
+ });
255
+ ```
256
+
238
257
## <a name =" stackable-chart " href =" #stackable-chart " >#</a > Stackable Chart [ Abstract]
239
258
Stackable chart is an abstract chart introduced to provide cross-chart support of stackability. Concrete implementation of
240
259
charts can then selectively mix-in this capability.
You can’t perform that action at this time.
0 commit comments