var qintv_ms = 5000;
var uripart = "/updates?";
var lastfrom = "";
var stuff_to_display = {"clients":"none","*":showvalue,"client-count":showvalue, "bytes-sent":showgauge, "fuckups-per-second":showasgraph};
var sidseen = [];
$(document).ready(function()
{
updateS5Stats();
setInterval("updateS5Stats()", qintv_ms);
});
function getstreamdiv(sid) {
var elem = $("#"+sid);
if (elem.length<1) {
$("#content").append('
');
$("#menu").append(''+sid+' ');
elem = $("#"+sid);
}
return elem;
}
function killvalue(name) {
stuff_to_display[name]="none";
$.each(sidseen,function(index,sid){ $("#li-"+sid+"_"+name).remove() });
}
function showvalue(sid, name, value, jsdate) {
var divid = sid+"_"+name;
var elem = $("#"+divid);
if (elem.length<1) {
getstreamdiv(sid).append('');
elem = $("#"+divid);
}
elem.html(""+value+"
@"+jsdate.toLocaleDateString()+" "+jsdate.toLocaleTimeString()+"");
}
var gauges = {};
function showgauge(sid, name, value) {
var divid = sid+"_"+name;
var elem = document.getElementById(divid);
if (!elem) {
getstreamdiv(sid).append('');
elem = document.getElementById(divid);
gauges[divid] = new google.visualization.Gauge(elem);
}
var data = google.visualization.arrayToDataTable([["Label", "Value"],[name,value]]);
gauges[divid].draw(data, {});
}
var graphs = {}
var graphdata = {}
function showasgraph(sid, name, value, jsdate) {
var divid = sid+"_"+name;
var elem = document.getElementById(divid);
if (!elem) {
getstreamdiv(sid).append('');
elem = document.getElementById(divid);
graphdata[divid]=[];
graphs[divid] = new Dygraph(elem,graphdata[divid],{legend:'none',title:sid+"-"+name,labels:["Date/Time",name]});
}
graphdata[divid].push([jsdate,value]);
graphs[divid].updateOptions({'file':graphdata[divid]});
}
function graphS5Status(data) {
sidseen=[];
$.each(data, function(index, stream) {
var sid = stream["streamer-id"].format + '-' + stream["streamer-id"].quality;
sidseen.push(sid);
lastfrom = "from="+stream["start-time"];
var jsdate = new Date(stream["start-time"]);
qintv_ms = stream["duration-ms"]; //doesnt really change anything yet
var data = stream.data;
console.log(data);
for (var key in data) {
if (typeof(stuff_to_display[key]) == 'function') {
stuff_to_display[key](sid, key, data[key], jsdate);
} else if (! stuff_to_display[key]) {
stuff_to_display['*'](sid, key, data[key], jsdate);
}
}
});
}
function updateS5Stats() {
var uri = uripart + lastfrom;
//$.getJSON(uri, "", function(data){alert(data);});
$.ajax({
dataType: "json",
url: uri,
data: undefined,
success: graphS5Status, //function(data){alert(data);},
error: function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );}
});
}