我正在使用高库存图表组件来显示实时信号。它需要在运行时添加和删除信号,但仅限于总共7个信号。我正在为每个信号创建一个序列。我每隔一秒获得一次信号数据WebApi采用以下格式
[{"键":"信号1""值":2150,"时间戳":" 2014-09 -29T18:20:23.0008365 + 05:30"},{"键":"信号2""值" 197"时间戳& #34;:" 2014-09-29T18:20:23.0008365 + 05:30"}, {"键":"第三信号""值":200,"时间戳":" 2014-09-29T18:20 :23.0008365 + 05:30"}]
0 - 信号1
1 - 信号2
2 - Signal3
3 - Navigaotr
默认情况下,Navigator始终引用系列0。 但是当删除系列0时,导航器停止工作。 我对此进行了很多调查,并找到了解决方法,如下所示。
var nav = chart.get('Navigator');
nav.setData(chart.series[1].options.data, true, true, true);
但是如果遵循上述程序,Navigator只复制已经存在于系列1和图表中的数据以及Navigator停止动画。但是,当每秒通过新的点添加到系列1时,预期的行为是Navigator以及图表应该是动画的。 ajax调用WebApi。对WebApi的ajax调用如下。
function requestData() {
$.ajax({
type: 'GET',
url: requestUrlString,
success: function(point) {
if (point.length > 0 && point.length < 8) {
if (chart.series.length > 0) {
var series = chart.series[0],
shift = series.options.data.length > 20 * 60 ; // shift if the series is longer than 20
var dateTime = new Date(point[0].TimeStamp);
for (i = 0; i < point.length; i++) {
if (chart.get(point[i].Key) != null) {
chart.get(point[i].Key).addPoint([dateTime.getTime(), point[i].Value], false, shift);
}
}
chart.redraw();
}
}
},
error: function(err) {
alert(err);
},
cache:false
});
}
用于更改baseSeries的方法如下所示。
function changeBaseSeries() {
chart.series[0].update({
data: [],
showInLegend: false
});
var nav = chart.get('Navigator');
nav.setData(chart.series[1].options.data, true, true, true);
nav.update({ baseSeries: 1 });
}
请您就此提供任何意见?
我试过了chart.xAxis [0] .setExtremes();以及在changeBaseSeries()中,但Navigator仍然没有动画。
答案 0 :(得分:0)
一些线索: