javascript - 防止在 dc.js 条形图上进行过滤,直到发生鼠标弹起事件

标签 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 在用户拖动画笔后立即重新过滤 crossfilter 数据。因此,如果用户按住鼠标按钮并进行多次拖动操作,则会重复重新过滤。

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

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

最佳答案

你更新到 2.0.0-beta.19 了吗?其中包含对过滤的重大修复,消除了在拖动时维度过滤器将被完全重置的旧行为。它现在应该逐步过滤。

关于javascript - 防止在 dc.js 条形图上进行过滤,直到发生鼠标弹起事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33298742/

相关文章:

javascript - 使用内部有 php 变量的 php 创建 javascript 警报?

javascript - dc.js 图表使用带有单击事件的新组函数重绘

javascript - 有没有办法告诉 crossfilter 将数组元素视为单独的记录,而不是将整个数组视为单个键?

java - ExtJS 使用哪种服务器端 Java 技术

javascript - 无法使用 Angular UI Grid 获取选定的行

javascript - 语义 UI 下拉多选会删除刷新时的值

javascript - 我可以让 elasticX()、elasticY() 仅适用于上限、dc.js 吗?

javascript - 是否可以修改已插入交叉过滤器的数据?

javascript - 使用 dc.js 进行简单列表过滤器和搜索过滤器?

javascript - dc.js x 轴勾选意外行为