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

How do you count the number of appllied filters globally?

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

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

dc.countAllAppliedFilters()

好问题。 dc.js 没有内置任何东西来确定这一点,crossfilter 也不提供任何吸气剂。

然而,一个crossfilter实例通常对应dc.js中的一个"chart group"。如果您想要的过滤器计数是一组相互交互的图表,则它们可能位于同一图表组中。

您可以使用 (newly documented) dc.js 图表注册表计算图表组的过滤器计数:

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;
}

如果您的图表在默认图表组中(仅使用一个参数构建),那么您可以省略 chartgroup 参数。

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