是否可以修改已插入到crossfilter的数据?

时间:2014-02-04 17:16:07

标签: javascript crossfilter dc.js

查看Crossfilter API,我没有看到如何修改已添加到Crossfilter的行。

是否绝对禁止/无法修改现有行?比方说,通过添加更多字段或修改行的字段值?似乎删除所有数据并将其读取为交叉过滤是唯一的方法,但这将意味着丢失所有当前的过滤器,尺寸等。

1 个答案:

答案 0 :(得分:2)

如果您创建一个“唯一维度”,为数据集中的每个条目(如ID列)返回唯一值,您可以使用这样的函数对单个条目进行更改而不会丢弃所有内容:

function editEntry(id, changes) {
    uniqueDimension.filter(id); // filter to the item you want to change
    var selectedEntry = uniqueDimension.top(1)[0]; // get the item
    _.extend(selectedEntry, changes); // apply changes to it
    ndx.remove(); // remove all items that pass the current filter (which will just be the item we are changing
    ndx.add([selectedEntry]); // re-add the item
    uniqueDimension.filter(null); // clear the filter
    dc.redrawAll(); // redraw the UI
}