【发布时间】:2014-03-28 08:01:46
【问题描述】:
我有更新传感器的功能。想法很简单,我从传感器(1 个传感器 = 1 条线)添加新点,并在附加后更新图表。但是出了点问题,所有系列都等于自己
seriesArr - 只是传感器数组,例如 {"sensorId1", sensorId2 等}
chartObj - 图表对象,如图表 1:{ chart: highcharts, seriesArr: seriesArr }
简单解释:
chartObject.chart.series[0].points = chartObject.chart.series[1].points = chartObject.chart.series[2].points = etc
我的代码:
updateAllCharts: function() {
var allCharts = this.charts;
console.log('charts');
for (var chart in allCharts) {
var chartObject = allCharts[chart];
for (var i = 0; i < chartObject.seriesArr.length; i++) {
var elemId = chartObject.seriesArr[i][0];
var val = this.sensors[elemId].get('value');
console.log(val);
if (val === undefined) { // if sensor cant get data
continue;
}
var now = new Date;
var x = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),
now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
var y = parseFloat(val);
chartObject.chart.series[i].addPoint([x, y], false, false);
console.log(x, y);
console.log(chartObject.chart.series[i].data);
}
}
for (var chart in allCharts) {
var chartObject = allCharts[chart];
chartObject.chart.redraw();
}
}
屏幕:
更新:
ProcessedDataX 和 Y 数组正在改变,但是点数组有问题,我总是得到一些奇怪的(可能是缓存的)点。见鬼。
游乐场
如果你想玩,我在这里设置了 jsfiddle,但实际上它可能不起作用。无法使用 setInterval 向 highchart 对象添加点。
更新2:
实际上它在 jsfiddle 中运行良好,但我不知道 wtf 在我的项目中正在进行。
更新3:
发现,相同的最后一点添加到每个系列。例如, series[i].lastPoints = series[n] ,其中 n = 上次迭代。
【问题讨论】:
-
顺便说一句。系列的 DataMax 和 DataMin 属性不同。点数组完全相等
标签: javascript jquery highcharts