向crossfilter添加记录不会更新dc.js lineChart组

时间:2013-11-27 19:06:46

标签: javascript crossfilter dc.js

我在我的应用程序中使用dc.js和crossfilter。 在我的代码中,我在数据来临时监听事件(例如来自websocket)并将数据添加到我的crossfilter实例,然后我调用dc.redrawAll();

我已经看到dc lineChart不会更新它的分组值。

var instance = crossfilter();

function onData(data) {
  instance.add(data);

  // -- code to update the x/y axis domains

  dc.redrawAll();
}

function drawLineChart() {
  var dimension = instance.dimension(function(){ .. });

  // => WHEN DATA IS ADDED (onData)
  // THE GROUPING DOSEN'T UPDATE
  var grouping = dimension.group().reduceCount();

  // initializing the line chart
  var lineChart = dc.lineChart() ....;

  lineChart.dimension(dimension).group(grouping);
}

如何更新分组?

2 个答案:

答案 0 :(得分:5)

尺寸和组应自动更新。请参阅此示例:http://jsfiddle.net/yHmkc/1/

添加数据并在1秒后更新图表

setTimeout(function () {
    cf.add([{
        "key": "KEY-6",
        "state": "MD",
        "topics": ["Science"],
        "date": new Date("10/09/2012")
    }]);
    dc.redrawAll();
}, 1000);

答案 1 :(得分:0)

你没有提到data是什么,但我认为它是一个单一的对象,而不是一组数据对象。你需要传递一个数组。如果你只传递一个数据对象,它就会像你观察到的那样无声地失败。

instance.add([data]); // `[data]` instead of `data`