Ich versuche, fließendes gestapeltes Flächendiagramm mit d3.js zu erstellen. Ich habe das Diagramm mit einem bestimmten Bereich arbeiten. Ich treffe den Service alle 10ms und erhalte alle Daten und trigse dann ein Ereignis aus, um das Diagramm zu starten. Wie auch immer, meine Grafik funktioniert nur 30 Minuten später. Ich versuche das Intervall neu einzustellen. Wenn ich versuche, das zu tun, gibt es einen Ruck in der Grafik und irgendwie bricht es. Ich bin mir nicht sicher, ob ich es richtig mache. Hier ist Code zum Anschauen.Reset-Intervall unterbricht meinen kontinuierlichen Fluss des Diagramms
var numbers = [];
var values = [];
var flag = false;
var fd;
var td;
//Calling the dates service
d3.json('/api/dates', function(error,data) {
var dates = data;
if(data != null){
fd = new Date(data.start);
td = new Date(data.end);
var cnt = 0;
var startGraph = function(){
if (fd > td) {
console.log(" start Date is greater than end Date");
clearInterval(interval);
flag = true;
$('.wrapper').trigger('newPoint');
return;
}
var fdt = fd.toISOString();
var tdt = new Date(fd.setMinutes(fd.getMinutes() + 30)).toISOString();
//Calling service to get the values for stacked area chart
d3.json("/api/service?start=" +fdt+ "&end=" +tdt, function(error,result) {
if(result != null){
numbers = numbers.concat(flightInfo.numbers);
values[values.length] = flightInfo.values;
}
});
cnt++;
}
function pushPoint(){
var cnt=0;
var interval = setInterval(function(){
if(cnt!=values.length)
{
tick(values[cnt]);
cnt++;}
else
clearInterval(interval);
},400);
}
//Calling the Processing Dates API to pull the data for area chart
var interval = setInterval(startGraph,10);
}
});
$(document).ready(function() {
stackGraph(); // this is another js file
var cnt=0;
//Pushing new point
$('.wrapper').on('newPoint', function(){
if(flag){
if(cnt!=values.length){
tick(values[cnt]);
cnt++;
}
}
});
});
Ich würde eine websocket implementieren, um die Daten gegeben werden, wenn es eine Änderung ist nicht anfordert (Polling) für die Daten, sind Sie sowohl eine Menge Last setzen auf dem Server und dem Client .. – Pogrindis