mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
117 lines
2.7 KiB
JavaScript
117 lines
2.7 KiB
JavaScript
|
|
var example = 'dynamic-update',
|
|
theme = 'default';
|
|
|
|
var chart; // global
|
|
var seriesMapper = {};
|
|
|
|
Highcharts.setOptions({
|
|
global: {
|
|
useUTC: false
|
|
}
|
|
});
|
|
|
|
function requestData() {
|
|
$.ajax({
|
|
url: '/1/lb/stats',
|
|
success: function(point) {
|
|
console.log(point)
|
|
var jason = JSON.parse(point);
|
|
|
|
//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++) {
|
|
stat = jason["stats"][i];
|
|
var node = stat["node"];
|
|
|
|
console.log("before", seriesMapper[node])
|
|
if (seriesMapper[node] == null) {
|
|
console.log("yodawg")
|
|
chart.addSeries({name: node, data: []})
|
|
seriesMapper[node] = chart.series.length - 1
|
|
chart.redraw();
|
|
}
|
|
|
|
console.log("done", seriesMapper[node])
|
|
series = chart.series[seriesMapper[node]]
|
|
//series = chart.series[0]
|
|
// XXX (reed): hack
|
|
shift = series.data.length > 20 && i == jason["stats"].length + 1;
|
|
|
|
|
|
timestamp = Date.parse(stat["timestamp"]);
|
|
console.log(series.data.length, timestamp, stat["tp"])
|
|
series.addPoint([timestamp, stat["tp"]], true, shift);
|
|
//series.addPoint({
|
|
//name: 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
|
|
});
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
chart = new Highcharts.Chart({
|
|
chart: {
|
|
renderTo: 'container',
|
|
events: {
|
|
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'
|
|
},
|
|
exporting: {
|
|
enabled: false
|
|
},
|
|
xAxis: {
|
|
type: 'datetime',
|
|
tickPixelInterval: 150,
|
|
maxZoom: 20 * 1000
|
|
},
|
|
yAxis: {
|
|
minPadding: 0.2,
|
|
maxPadding: 0.2,
|
|
title: {
|
|
text: 'Value',
|
|
margin: 80
|
|
}
|
|
},
|
|
series: []
|
|
});
|
|
});
|