如何计算dc.js中应用过滤器的数量?
我找不到一个简单的方法,比如
dc.countAllAppliedFilters()
答案 0 :(得分:1)
好问题。 dc.js没有内置任何内容来确定这一点,而且crossfilter也没有提供任何getter。
然而,交叉过滤器实例通常对应于"图表组"在dc.js.如果您想要的过滤器数量是一组彼此相互作用的图表,则它们可能位于同一图表组中。
您可以使用(newly documented) dc.js图表注册表计算图表组的过滤器数量:
//Example of json string:
String jsonString = "{\"array\":[{\"id\":1}, {\"id\":2}, {\"id\":3}]}";
//Item class
public class Item
{
public int id;
}
//class with Array
public class ItemArray
{
public Array<Job> array;
}
//and deserialization:
... //getting JSON
Json json = new Json();
ItemArray itemArray = json.fromJson(ItemArray.class, jsonString);
如果您的图表位于默认图表组(仅使用一个参数构建),则可以省略function chart_group_filter_count(chartgroup) {
return dc.chartRegistry.list(chartgroup)
.filter(function(chart) {
// exclude focus charts because they will be counted twice
return chart.filters().length && !(chart.rangeChart && chart.rangeChart());
}).length;
}
参数。
这里唯一棘手的事情是我们明确地从计数中排除焦点图表,因为范围图表和焦点图表将始终具有相同的过滤器,因此它将被计算两次。