&contentdata
section_name = 'graphs'
page_name = 'bandwidth'
author = 'mrmt32'
type = 'page'
>
Bandwidth Usage
<$$graph_menu_block:{pagename: "bandwidth"}>
<$$loading_text_block:{}>
<&javascript delayed='true'>
var startTime;
var endTime;
var timeFormat;
var times = pHMb.Graphing.ChangeTimeSpan(parameters.type, "Bandwidth Usage");
SendCommandToServer({action:'get_value', type:'log', name:'Bandwidth Usage', startTime:times.startTime, endTime:times.endTime}, function(jsonResponse)
{
if (jsonResponse.isError)
{
$("#bandwidth_usage_graph").html(jsonResponse.ErrorString);
}
else
{
// Lets process the rediculous amount of data!
// Note that the returned data is sorted descending by date (so newest is first)
var downloadCurve = {label: "Download", data: new Array()};
var uploadCurve = {label: "Upload", data: new Array()};
var errorCurve = {label: "Downtime", data: new Array()};
var i = 0;
var errCount = 0;
var lastStartTime;
for (logItemId in jsonResponse.ReturnData)
{
var logItem = jsonResponse.ReturnData[logItemId];
var startTime = logItem.startTime.getTime() - logItem.startTime.getTimezoneOffset() * 60 * 1000;
var endTime = logItem.endTime.getTime() - logItem.endTime.getTimezoneOffset() * 60 * 1000;
// Check to see if there was any down time inbetween the last entry and this one:
if (isset(lastStartTime) && lastStartTime - endTime > 1000 * 60)
{
errorCurve.data[errCount] = [lastStartTime, 100];
downloadCurve.data[i] = [lastStartTime, null];
uploadCurve.data[i] = [lastStartTime, null];
i++;
errCount++;
errorCurve.data[errCount] = [endTime, 100];
downloadCurve.data[i] = [endTime, null];
uploadCurve.data[i] = [endTime, null];
i++;
errCount++;
}
lastStartTime = startTime;
// Calculate speed
var downloadSpeed = (logItem.usageDown / 1024) / ((endTime - startTime) / 1000)
var uploadSpeed = (logItem.usageUp / 1024) / ((endTime - startTime) / 1000)
downloadCurve.data[i] = [endTime, downloadSpeed];
uploadCurve.data[i] = [endTime, uploadSpeed];
i++;
downloadCurve.data[i] = [startTime, downloadSpeed];
uploadCurve.data[i] = [startTime, uploadSpeed];
i++;
/*
$("#bandwidth_usage_year_table").append("
| " + logItem.startTime + "-" + logItem.endTime + " | "
+ "" + logItem.usageUp + " | "
+ "" + logItem.usageDown + " |
");*/
if ( !isset(logItem.usageDown) )
{
errorCurve.data[errCount] = [endTime, 100];
errCount++;
errorCurve.data[errCount] = [startTime, 100];
errCount++;
}
else
{
errorCurve.data[errCount] = [endTime, 0];
errCount++;
errorCurve.data[errCount] = [startTime, 0];
errCount++;
}
}
$.plot($("#bandwidth_usage_graph"), [downloadCurve, uploadCurve, errorCurve], {
xaxis: { mode: "time", timeformat: timeFormat },
yaxis: { min: 0 },
points: { show: false },
lines: { show: true },
pan: { interactive: true },
zoom: { interactive: true }
});
}
});
// Get totals and averages
SendCommandToServer({action:'get_value', type:'totals', name:'Bandwidth Usage', startTime:times.startTime, endTime:times.endTime}, function(jsonResponse)
{
if (jsonResponse.isError)
{
$("#bandwidth_usage_totals").html(jsonResponse.ErrorString);
}
else
{
parameters =
{
totalUsageDown: Math.round(jsonResponse.ReturnData[0].totalUsageDown / 1024 / 1024 *100) / 100,
totalUsageUp: Math.round(jsonResponse.ReturnData[0].totalUsageUp / 1024 / 1024 *100) / 100,
avgSpeedDown: Math.round(jsonResponse.ReturnData[0].avgDownSpeed / 1024 *100) / 100,
avgSpeedUp: Math.round(jsonResponse.ReturnData[0].avgUpSpeed / 1024 *100) / 100
};
ParseContentData(window.ContentData.blocks.bandwitdth_usage_totals_block, parameters, function(output)
{
$("#bandwidthUsageTotals").html(output);
})
}
});
<&/javascript>
<&/contentdata>
<&contentdata
block_name = 'bandwitdth_usage_totals_block'
author = 'mrmt32'
type = 'block'
>
| Download | Upload |
| Total Usage: | {$totalUsageDown} MB | {$totalUsageUp} MB |
| Average Speed: | {$avgSpeedDown} KB/sec | {$avgSpeedUp} KB/sec |
<&/contentdata>