我有一个图表组,该组通过具有两个维度year
和product
的交叉过滤器链接到数据(sales
,product
,year
)。
初始状态应为product
='A'和year
= 2019。
当用户通过过滤图表更改此状态时,星号(*)应该出现在表示图表已更改的位置。
如何捕获交叉过滤器状态的变化?
答案 0 :(得分:1)
如上所述,我认为在dc.js级别比在交叉过滤器级别更好地解决此问题。我知道没有任何方法可以跟踪对交叉过滤器的更改,而且无论如何,您都想与某个状态进行比较,而不仅仅是查看是否进行了任何更改。
我会这样处理:对于每个要显示更改的图表,在更改指示器的某个位置创建一个div。然后查看该图表上的过滤器,看看它们是否与您的默认设置不同:
chart.on('filtered', function() {
var changed = chart.filters().length !== 1 || chart.filters()[0] !== 'A';
d3.select('#product-chart-changed').text(changed ? '*' : '');
});
这可以通过将其放入函数中来概括,例如:
function show_changes(chart, indicator_sel, initial) {
chart.on('filtered', function() {
var changed = chart.filters().length !== 1 || chart.filters()[0] !== initial;
d3.select(indicator_sel).text(changed ? '*' : '');
});
}
show_changes(chart, '#product-chart-changed', 'A');
我想进一步,如果初始过滤器不止一项,则可以引入数组比较。