是否可以在特定维度上应用过滤器?

时间:2013-05-21 12:51:11

标签: javascript d3.js crossfilter dc.js

是否可以在特定维度上应用过滤器?我需要通过点击按钮获取在一组dc.js图表​​上应用的所有过滤器。

2 个答案:

答案 0 :(得分:10)

我做了类似的事情。 但是,不是使用按钮单击,而是每次通过附加renderlet过滤图表时获取值。

您要查找的功能是 filters()

  yourChart.renderlet(function(chart) {
            dc.events.trigger(function() {
                console.log(yourChart.filters())
            });
        })

这将记录应用于给予图表的维度的过滤器。

答案 1 :(得分:0)

您可以使用chart.filterPrinter()函数获取所选过滤器的值,该函数返回一个函数,该函数返回所选过滤器的字符串版本。以下代码段将返回图表当前所选过滤器的字符串版本。

chart.filterPrinter()(chart.filters()) 

您甚至可以提供自己的filterPrinter函数进行自定义。

你可以定义on('过滤''函数,每当过滤器值在图表上发生变化时触发。此函数接收图表作为第一个参数,当前过滤器选择/取消选择作为第二个参数。但是,您可以使用chart.filters()函数获取当前所选过滤器的完整列表。

myChart.on('filtered', function(chart, filter) {
    var sel = chart.filterPrinter()(chart.filters());
    console.log('Selected Filters are: ' + sel);
});