データベースからの現在のデータを使用して新しい配列を生成することにより、Highchart シリーズを更新しようとしています。しかし、何らかの理由で、一度に 1 つずつデータを調べることに関する情報しか見つかりません。チャートが作成されると、同じコードを再度実行するだけで、ラベルなどは変更されず、[pointStart] と [data] のみが変更されます。
すべてのデータをまとめて更新する方法はありますか? また、for ループを正しく動作させることもできませんでした。
function generateSeries(data){
var cData = [];
var rollup = data.rollupData;
cData['type'] = 'line';
cData['pointStart'] = convertDateTime(data.lastMinute);
cData['pointInterval'] = 60 * 1000;
for(var i in rollup){
var x = new Array();
var v = rollup[i].rttSystem;
switch(v){
case('line'): var vn = ' (L)'; break;
case('node'): var vn = ' (N)'; break;
case('module'): var vn = ' (M)'; break;
default: var vn = '';
}
x['name'] = rollup[i].rollupName + vn;
x['data'] = rollup[i].kpiData;
cData.push(x);
}
return cData;
}
配列の出力は [0: ['name': 'California', 'data': [0.002, 0.003 ...],1: ['name':'Oklahoma', 'data': [0.001, 0.002 ...], 'type': 'line', 'pointStart':'','pointInterval':60 * 1000]
var chart = new Highcharts.Chart({
chart: {
...
},
series: generateSeries(data)
}, function(chart){
setInterval(function(){
var newSeries = generateSeries(data);
// Udate the series again with the current data
},60000);
}
});
更新:これはシリーズを行いますが、pointStartは行いません。
if(chart.series.length > 1){
var s = 0;
for(var i in newSeries){
chart.series[s].setData(newSeries[i].data);
chart.series[s].pointStart = newSeries[i].pointStart;
s++;
}
}else{
chart.series[0].setData(newSeries[0].data);
chart.series[0].pointStart = newSeries[0].pointStart;
}