dc.js模拟点击图表并触发过滤器

时间:2015-01-15 10:18:01

标签: javascript d3.js dc.js crossfilter

我想做什么:

我有一个barChart,其中x轴代表时间。可以通过鼠标选择一段时间来选择一段时间,并且所有图表都可以正确调整到选择范围。

但是,有时候从确切的日期到确切的日期很难,我想添加一个日历,用户可以选择这些日期。

理想情况下,选择日历上的日期应与使用barChart上的鼠标选择时间段具有相同的效果。

尝试但不喜欢:

我尝试创建第二个时间维度并在其上选择日历。但是,这会使barChart最小值和最大值调整为该选择barChart不会覆盖时间维度的完整维度,而只会覆盖日历上的选定期间。这就是我想避免的。

如何准确模拟图表本身的选择?

非常感谢。

编辑:

我试图了解对评论提出的建议。让我给你看一些代码。

我有一个barChart:

var moveChart    = dc.barChart("#move-chart","chart2"); 

是用于执行时间过滤器的人。

moveChart
.width(700)
...
.dimension(timeDim)
.group(foo) 

现在,让我说我在控制台上做:

timeDim.filterRange([minTime,maxTime]);
dc.renderAll("chart2");

这使得其他图表反映了选择,但不反映moveChart。

我也试图实施戈登的评论,但我不理解。在控制台中我可以看到moveChart.filters。没有实现任何像RangedFilter或TwoDimensionalFilter这样的过滤器,所以我不确定如何在画笔上执行过滤功能。

感谢。

1 个答案:

答案 0 :(得分:4)

A chart will not observe filters on its own dimension,所以我认为你真的想要刷选项。

filter = dc.filters.RangedFilter(filter[0], filter[1]);
moveChart.filter(filter);

Ranged filter doc

您只需在图表上设置过滤器;图表将在维度上设置过滤器。