LSP: stats for individual streams - still WIP

This commit is contained in:
cat 2014-06-19 14:01:46 +02:00 committed by Thulinma
parent f7cc5c03ec
commit e4f86236e8

View file

@ -1293,13 +1293,19 @@ function showTab(tabName,streamName) {
).append(
$('<option>').text('Memory load').val('memload').addClass('axis_time')
).append(
$('<option>').text('Viewer location').val('coords').addClass('axis_coords')
$('<option>').text('Viewer location (LTS only)').val('coords').addClass('axis_coords')
).change(function(){
switch ($(this).val()) {
case 'clients':
$('#dataset-details .replace-dataset').text('amount of viewers');
$('#dataset-details').show();
break;
case 'upbps':
$('#dataset-details .replace-dataset').text('bandwidth (up)');
$('#dataset-details').show();
break;
case 'downbps':
$('#dataset-details .replace-dataset').text('amount of viewers')
$('#dataset-details .replace-dataset').text('bandwidth (down)');
$('#dataset-details').show();
break;
default:
@ -1400,18 +1406,28 @@ function showTab(tabName,streamName) {
}
switch (d.type) {
case 'clients':
d.label = 'Viewers ('+d.stream+')';
d.label = 'Viewers ('+which+')';
d.yaxistype = 'amount';
break;
case 'upbps':
d.label = 'Bandwidth (up) ('+d.stream+')';
d.label = 'Bandwidth (up) ('+which+')';
break;
case 'downbps':
d.label = 'Bandwidth (down) ('+d.stream+')';
d.label = 'Bandwidth (down) ('+which+')';
break;
}
}
break;
case 'coords':
d.cumutype = $('#dataset-details input[name=cumutype]:checked').val();
if (d.cumutype == 'all') {
var which = 'all';
}
else {
var which = $('#dataset-details .cumuval.'+d.cumutype).val();
}
d.label = 'Viewer location ('+which+')';
break;
}
graph.datasets.push(d);
getPlotData();
@ -1506,6 +1522,30 @@ function showTab(tabName,streamName) {
},10000);
function getPlotData() {
var reqobj = {
totals: []
};
for (var g in graphs) {
for (var d in graphs[g].datasets) {
var set = graphs[g].datasets[d];
switch (set.type) {
case 'clients':
case 'upbps':
case 'downbps':
switch (set.cumutype) {
case 'all': reqobj['totals'].push({fields: [set.type]}); break;
case 'stream': reqobj['totals'].push({fields: [set.type], streams: [set.stream]}); break;
case 'protocol': reqobj['totals'].push({fields: [set.type], protocols: [set.protocol]}); break;
}
set.sourceid = reqobj['totals'].length-1;
break;
case 'cpuload':
case 'memload':
reqobj['capabilities'] = {};
break;
}
}
}
getData(function(data){
for (var j in graphs) {
for (var i in graphs[j].datasets) {
@ -1513,7 +1553,7 @@ function showTab(tabName,streamName) {
}
drawGraph(graphs[j]);
}
},{capabilities:true,totals:{}});
},reqobj);
}
function findDataset(dataobj,sourcedata) {
@ -1549,16 +1589,16 @@ function showTab(tabName,streamName) {
case 'downbps':
case 'clients':
//todo: depending on the stream..
if (!sourcedata.totals || !sourcedata.totals.data) {
if (!sourcedata.totals || !sourcedata.totals[dataobj.sourceid] || !sourcedata.totals[dataobj.sourceid].data) {
dataobj.data.push([(now-600)*1000,0]);
dataobj.data.push([now*1000,0]);
}
else {
var fields = {};
for (var index in sourcedata.totals.fields) {
fields[sourcedata.totals.fields[index]] = index;
for (var index in sourcedata.totals[dataobj.sourceid].fields) {
fields[sourcedata.totals[dataobj.sourceid].fields[index]] = index;
}
var time = sourcedata.totals.start;
var time = sourcedata.totals[dataobj.sourceid].start;
dataobj.data = [];
if (time > now-590) {
//prepend data with 0
@ -1566,20 +1606,20 @@ function showTab(tabName,streamName) {
dataobj.data.push([time*1000-1,0]);
}
var index = 0;
dataobj.data.push([[time*1000,sourcedata.totals.data[index][fields[dataobj.type]]]]);
for (var i in sourcedata.totals.interval) {
dataobj.data.push([[time*1000,sourcedata.totals[dataobj.sourceid].data[index][fields[dataobj.type]]]]);
for (var i in sourcedata.totals[dataobj.sourceid].interval) {
if ((i % 2) == 1) {
//fill gaps with 0
time += sourcedata.totals.interval[i][1];
time += sourcedata.totals[dataobj.sourceid].interval[i][1];
dataobj.data.push([time*1000,0]);
}
else {
for (var j = 0; j < sourcedata.totals.interval[i][0]; j++) {
time += sourcedata.totals.interval[i][1];
for (var j = 0; j < sourcedata.totals[dataobj.sourceid].interval[i][0]; j++) {
time += sourcedata.totals[dataobj.sourceid].interval[i][1];
index++;
dataobj.data.push([time*1000,sourcedata.totals.data[index][fields[dataobj.type]]]);
dataobj.data.push([time*1000,sourcedata.totals[dataobj.sourceid].data[index][fields[dataobj.type]]]);
}
if (i < sourcedata.totals.interval.length-1) {
if (i < sourcedata.totals[dataobj.sourceid].interval.length-1) {
dataobj.data.push([time*1000+1,0]);
}
}
@ -1591,6 +1631,13 @@ function showTab(tabName,streamName) {
}
}
break;
case 'coords':
//retrieve data
//format [lat,long]
//testing data
dataobj.data = [[-54.657438,-65.11675],[49.725719,-1.941553],[-34.425464,172.677617],[76.958669,68.494178],[0,0]];
break;
}
@ -1605,8 +1652,10 @@ function showTab(tabName,streamName) {
}
switch (graph.type) {
case 'coords':
//format [lat,long]
var data = [[-54.657438,-65.11675],[49.725719,-1.941553],[-34.425464,172.677617],[76.958669,68.494178],[0,0]];
plotsets = [];
for (var d in datasets) {
//put backend data into the correct projection
data = datasets[d].data;
//correct latitude according to the Miller cylindrical projection
for (var i in data) {
var lat = data[i][0];
@ -1616,9 +1665,8 @@ function showTab(tabName,streamName) {
var y = 1.25 * Math.log(Math.tan(0.25 * Math.PI + 0.4 * lat));
data[i] = [lon,y];
}
console.log(data);
plotsets = [{data:data}];
plotsets.push({data:data});
}
//make sure the plot area has the correct height/width ratio
if ($('#'+graph.id+' .graphbackground').length == 0) {
var parent = $('#'+graph.id+' .graph');