替换crossfilter数据,还原维度和组

Lon*_*Rob 7 javascript crossfilter dc.js

我正在使用dc.js渲染数据集的漂亮气泡图.底层dc.js是crossfilter.

我想用服务器上的新数据顺利刷新我的图表.Github上的这个问题清楚地表明可以通过以下方式实现:

  1. 从crossfilter中删除所有数据
  2. 添加新数据
  3. 打电话dc.redrawAll().

我有这个工作,但为了删除所有数据,您首先必须清除所有过滤器(因为crossfilter.remove只删除与当前过滤器匹配的记录).

我想"记住"之前我的数据是如何过滤的,所以一旦我替换了所有数据,我就可以重新构建过滤器.我愿意深入了解crossfilter代码的内容,但任何指针都会有所帮助.

另外:如果有人知道基于唯一键更新crossfilter数据的方法,那就是金尘!

lin*_*e-o 1

感谢@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();
}
Run Code Online (Sandbox Code Playgroud)