diff --git a/spec/core-spec.js b/spec/core-spec.js index 94ede1334..9610f2a34 100644 --- a/spec/core-spec.js +++ b/spec/core-spec.js @@ -38,9 +38,9 @@ describe('dc.core', function () { expect(dc.hasChart(chart)).toBeTruthy(); }); - it('filterAll should invoke filter on each chart', function () { + it('filterAll should not invoke filter on each unfiltered chart', function () { dc.filterAll(); - expect(chart.filterAll).toHaveBeenCalled(); + expect(chart.filterAll).not.toHaveBeenCalled(); }); it('renderAll should invoke filter on each chart', function () { @@ -54,6 +54,24 @@ describe('dc.core', function () { }); }); + describe('chart w/ filter', function () { + var chart; + beforeEach(function () { + chart = dc.pieChart('#id') + .dimension(valueDimension) + .group(valueGroup) + .filter(0); + spyOn(chart, 'filterAll'); + return chart; + }); + + it('filterAll should invoke filter on each filtered chart', function () { + dc.filterAll(); + expect(chart.filterAll).toHaveBeenCalled(); + }); + + }); + describe('chartsRegistry', function () { var chart; var chartGrouped; @@ -249,15 +267,15 @@ describe('dc.core', function () { var chart; beforeEach(function () { - chart = dc.pieChart('#a', 'groupA').dimension(valueDimension).group(valueGroup); + chart = dc.pieChart('#a', 'groupA').dimension(valueDimension).group(valueGroup).filter(0); spyOn(chart, 'filterAll'); spyOn(chart, 'render'); - dc.pieChart('#b', 'groupA').dimension(valueDimension).group(valueGroup); - dc.bubbleChart('#c', 'groupB').dimension(valueDimension).group(valueGroup); - dc.barChart('#b1', 'groupB').dimension(valueDimension).group(valueGroup); - dc.lineChart('#b2', 'groupB').dimension(valueDimension).group(valueGroup); - dc.dataCount('#b3', 'groupB').dimension(valueDimension).group(valueGroup); - dc.dataTable('#b4', 'groupB').dimension(valueDimension).group(valueGroup); + dc.pieChart('#b', 'groupA').dimension(valueDimension).group(valueGroup).filter(0); + dc.bubbleChart('#c', 'groupB').dimension(valueDimension).group(valueGroup).filter(0); + dc.barChart('#b1', 'groupB').dimension(valueDimension).group(valueGroup).filter(0); + dc.lineChart('#b2', 'groupB').dimension(valueDimension).group(valueGroup).filter(0); + dc.dataCount('#b3', 'groupB').dimension(valueDimension).group(valueGroup).filter(0); + dc.dataTable('#b4', 'groupB').dimension(valueDimension).group(valueGroup).filter(0); return chart; }); diff --git a/src/core.js b/src/core.js index 6a911e032..961ff2b6f 100644 --- a/src/core.js +++ b/src/core.js @@ -197,7 +197,9 @@ dc.deregisterAllCharts = function (group) { dc.filterAll = function (group) { var charts = dc.chartRegistry.list(group); for (var i = 0; i < charts.length; ++i) { - charts[i].filterAll(); + if (charts[i].hasFilter()) { + charts[i].filterAll(); + } } };