我有一个“图”,它是一个输入字段,用于过滤其他图形(筛选器只考虑包含输入到字段中的文本的数据)。
它很好,但是当你想过滤一个单词(例如“测试”,它会过滤t,然后te,然后tes,然后测试)和重新绘制图表4次,它感觉有点迟钝,特别是在智能手机上。
有没有办法推迟几毫秒来绘制图表,以确保没有打印额外的字母?
理想情况下,我希望过滤每一个字母,绘制快速图表(如显示dataCount),并在绘制其他字母之前稍等片刻(例如。气泡图或线图,似乎是更多的cpu限制)。
有什么简单的方法吗?
相关问题:将输入字段“筛选图”作为一种新的图形类型添加到dc中是否有意义?
发布于 2015-05-17 01:27:44
对于问题的第一部分,您正在寻找的功能称为“节流”。有一个在下划线上执行和房客,以及其他地方。
(不要使用dc.events.trigger,因为这是一次决斗。)
至于只绘制一些图表,您可以让您的“筛选图”设置交叉过滤器维度过滤器,然后重新绘制一些图表,然后等待节流事件重新绘制其余的图表,因为redrawAll实际上只是对所有图表进行迭代。
但是,没有任何内置的方法来管理这类子组,所以您必须保留自己的图表列表。
例如,类似于(这里可能讨论d3和jquery语法,但您有了这样的想法):
function fast_redraws() {
[chart1,chart2,chart3].forEach(function(c) { c.redraw(); });
}
function slow_redraws() {
[chart4,chart5,chart6].forEach(function(c) { c.redraw(); });
}
var throttle_slow_redraws = _.throttle(slow_redraws, 100, {leading: false});
input.on('change', function() {
dimension.filter(input.val());
fast_redraws();
throttle_slow_redraws(); // throttling makes this okay
})是的,在dc.js中有这样一个简单的输入小部件是很好的--不过,我不知道如何处理快速/缓慢的重绘。它可以包含一些智慧,进入答案就像对这个问题的回应。
https://stackoverflow.com/questions/30234405
复制相似问题