你如何计算全球应用过滤器的数量?

时间:2016-02-18 08:21:23

标签: dc.js

如何计算dc.js中应用过滤器的数量?

我找不到一个简单的方法,比如

dc.countAllAppliedFilters()

1 个答案:

答案 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; } 参数。

这里唯一棘手的事情是我们明确地从计数中排除焦点图表,因为范围图表和焦点图表将始终具有相同的过滤器,因此它将被计算两次。