works but only one series wtf

This commit is contained in:
Reed Allman
2017-05-22 11:11:20 -07:00
parent d8ada59911
commit 277b3a2ef9
2 changed files with 78 additions and 87 deletions

View File

@@ -1,96 +1,88 @@
jQuery.noConflict();
var example = 'dynamic-update',
theme = 'default';
(function($){ // encapsulate jQuery
Highcharts.setOptions({
global: {
useUTC: false
}
var chart; // global
function requestData() {
$.ajax({
url: '/1/lb/stats',
success: function(point) {
console.log(point)
var jason = JSON.parse(point);
console.log(jason)
var series = chart.series[0],
shift = series.data.length > 20;
if (!jason["stats"] || jason["stats"].length == 0) {
// XXX (reed): using server timestamps for real data this can drift easily
// XXX (reed): uh how to insert empty data point w/o node data? enum all series names?
//series.addPoint([(new Date()).getTime(), 0], true, shift);
//series: [{
//name: 'Random data',
//data: []
//}]
return
}
for (var i = 0; i < jason["stats"].length; i++) {
// set up the updating of the chart each second
//var node = jason["stats"]
//var series = chart.get(node)
//if (!series) {
//chart.addSeries({name: node, data: []})
//series = chart.get(node) // XXX (reed): meh
//}
//shift = series.data.length > 20;
stat = jason["stats"][i];
timestamp = Date.parse(stat["timestamp"]);
series.addPoint([timestamp, stat["tp"]], true, shift);
//series.addPoint({
//name: stat["node"],
//data: {x: timestamp, y: stat["tp"]}
//}, true, shift);
}
// call it again after one second
// XXX (reed): this won't work cuz if the endpoint fails then we won't ask for more datas
setTimeout(requestData, 1000);
},
cache: false
});
}
// Create the chart
Highcharts.stockChart('container', {
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'spline',
events: {
load: function () {
setInterval(function () {
var xmlhttp = new XMLHttpRequest();
var url = "/1/lb/stats";
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var jason = JSON.parse(this.responseText);
if (!jason["stats"] || jason["stats"].length == 0) {
// XXX (reed): using server timestamps for real data this can drift easily
// XXX (reed): uh how to insert empty data point w/o node data? enum all series names?
//series.addPoint([(new Date()).getTime(), 0], true, shift);
//series: [{
//name: 'Random data',
//data: []
//}]
return
}
for (var i = 0; i < jason["stats"].length; i++) {
// set up the updating of the chart each second
var node = jason["stats"]
var series = chart.get(node)
if (!series) {
this.addSeries({name: node, data: []})
series = chart.get(node) // XXX (reed): meh
}
shift = series.data.length > 20;
stat = jason["stats"][i];
timestamp = Date.parse(stat["timestamp"]);
// series.addPoint([timestamp, stat["tp"]], true, shift);
console.log(stat["node"]);
series.addPoint({
name: stat["node"],
data: {x: timestamp, y: stat["tp"]}
}, true, shift);
}
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
}, 1000);
}
load: requestData
}
},
rangeSelector: {
buttons: [{
count: 1,
type: 'minute',
text: '1M'
}, {
count: 5,
type: 'minute',
text: '5M'
}, {
type: 'all',
text: 'All'
}],
inputEnabled: false,
selected: 0
},
title: {
text: 'lb data'
text: 'Live random data'
},
exporting: {
enabled: false
xAxis: {
type: 'datetime',
tickPixelInterval: 150,
maxZoom: 20 * 1000
},
series: []
yAxis: {
minPadding: 0.2,
maxPadding: 0.2,
title: {
text: 'Value',
margin: 80
}
},
series: [{
name: 'Random data',
data: []
}]
});
})(jQuery);
});