Highchart mise à jour de série en javascript
Je suis en train de mettre à jour un Highchart de la série par la génération d'un nouveau tableau avec les données actuelles de la base de données. Mais pour une raison que je ne peux que trouver des infos au sujet d'aller à travers les données une à une. Une fois qu'un tableau est créé, son seul en ré-exécutant de nouveau le même code ainsi que les étiquettes etc ne change pas, seulement le [pointStart] et de la [données] changement.
Est-il un moyen de mettre à jour toutes les données dans leur ensemble? J'ai aussi n'a pas réussi à obtenir une boucle for pour fonctionner correctement.
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;
}
la sortie de la matrice ressemble à [0: ['name': 'la Californie', 'données': [0.002, 0.003 ...],1: ['name':'Oklahoma", "des données': [0.001, 0.002 ...], 'type': '' en ligne', '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);
}
});
Mise à jour: ce n'est la série mais pas le 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;
}
Voir ci-dessus mise à jour - ce qui va mettre à jour les données, mais pas le pointStart
OriginalL'auteur jbolanos | 2013-05-06
Vous devez vous connecter pour publier un commentaire.
Pour mettre à jour un tableau j'ai l'habitude de le faire:
Essayez d'appeler à redessiner après la mise à jour.
oups - a l'aide d'une vieille version de Highcharts - mis à jour 3.0.1 et maintenant les 2 derniers jours ont été une vraie perte de temps, merci 🙂
travaillé à la perfection, merci 🙂
merci homme. c'est un sauve-moi beaucoup de travail.
OriginalL'auteur StuR
Dans mon cas, je veux initialiser mon tableau avant que les données sont disponibles. J'ai donc initialiser mon tableau avec un vide de la série, et puis je le mettre à jour avec
addSeries
.Plein jsFiddle ici: https://jsfiddle.net/qyh81spb/
Mon tableau reçoit les données de 2 secondes après avoir été initialisé:
J'ai donc l'initialiser avec un vide de la série:
Et chaque fois que les données sont disponibles, je fais ceci:
Voir le jsfiddle ci-dessus pour le code complet de détails.
OriginalL'auteur Benjamin Crouzier