禁止在dc.js条形图上过滤,直到鼠标悬停事件为

时间:2015-10-23 09:12:57

标签: javascript dc.js crossfilter

我正在使用带有相当大数据集的dc.js,并且发现使用条形图进行过滤非常慢并且在拖动画笔时经常会“粘住”。

我们还使用“过滤”事件的回调触发了一些额外的处理,这部分归咎于减慢它的速度。

chart.on("filtered", function() {
    //additional data processing functions called here
});

我们已经能够使用“postRender”事件稍微改善性能并将回调移动到mouseup事件。所以我们现在只调用一次后处理函数,而不是在拖动画笔时重复调用。 (感谢这个答案:How to handle mouseout event on DC range graph

chart.on('postRender', function() {
    chart.select('.brush').on("mouseup", function() {
        //additional data processing functions called here
    });
});

但是,使用画笔进行过滤仍然非常“粘”并且速度很慢。性能降低的原因是dc.js会在用户拖动画笔时立即重新过滤交叉滤波器数据。因此,如果用户按住鼠标按钮并进行多次拖动操作,则会反复重新过滤。

有没有办法告诉dc.js只能在mouseup之后重新过滤?我会认为这是使用较大数据集时的常见问题,但我在文档中找不到任何内容。

显而易见的替代方法是禁用图表上的画笔,但我宁愿不这样做。

1 个答案:

答案 0 :(得分:1)

您是否已更新至2.0.0-beta.19?这包含一个很大的过滤修复功能,可以消除拖动时维度过滤器完全重置的旧行为。它现在应该逐步过滤。