我正在使用
dc.js来渲染数据集的漂亮气泡图.底层dc.js是
crossfilter.
我想用服务器上的新数据顺利刷新我的图表. This issue on Github明确表示可以通过以下方式执行此操作:
>删除crossfilter中的所有数据
>添加新数据
>调用dc.redrawAll().
我有这个工作,但为了删除所有数据,您首先必须清除所有过滤器(因为crossfilter.remove
只删除与当前过滤器匹配的记录).
我想“记住”之前我的数据是如何过滤的,所以一旦我替换了所有数据,我就可以重新构建过滤器.我愿意深入了解crossfilter代码,但任何指针都会有所帮助.
另外:如果有人知道基于唯一键更新crossfilter数据的方法,那就是金尘!
解决方法
感谢@ londonrob的回答现在所有数据都从索引中删除了.这是一种用于重置数据的更实用的方法.
// reset the filter for a dimension function resetDimensionFilter (dimension) { dimension.filter(null); } // reset filters for all given dimensions,// remove all data from index and // return empty index function resetData(ndx,dimensions) { // Clear all filters from dimensions,because `ndx.remove` // only removes records matching the current filters. dimensions.forEach(resetDimensionFilter); // Remove all data from the cross filter ndx.remove(); }