var points_per_px = 0.3;
var controls_container = "
";
var reset_button = "Reset
";
function labelFormatter(label, series) {
var append_dots = (label.length > 18);
label = label.substr(0, 17);
if (append_dots) {
label += "…";
}
return "" + label + "
" + Math.round(series.percent) + "%
";
}
function legendFormatter(label, series) {
var append_dots = (label.length > 28);
label = label.substr(0, 27);
if (append_dots) {
label += "…";
}
return label;
}
function setup_plot_zoom(plot, pdata, num_data_points) {
plot.getPlaceholder().bind("plotselected", function (event, ranges) {
$.each(plot.getXAxes(), function(_, axis) {
var zoom_correction_factor = (1000*300*num_data_points)/(ranges.xaxis.to - ranges.xaxis.from);
plot.getOptions().series.downsample.threshold =
Math.floor(plot.getPlaceholder().width()
* points_per_px
* zoom_correction_factor);
axis.options.min = ranges.xaxis.from;
axis.options.max = ranges.xaxis.to;
});
plot.setData(pdata);
plot.setupGrid();
plot.draw();
plot.clearSelection();
plot.getPlaceholder().children("#controls")
.css("top", (plot.getPlotOffset().top+5) + "px")
.css("left", (plot.getPlotOffset().left+5) + "px")
.css("display", "block");
});
var plot_controls = $(controls_container).appendTo(plot.getPlaceholder());
$(reset_button)
.appendTo(plot_controls)
.click(function (event) {
event.preventDefault();
$.each(plot.getXAxes(), function(_, axis) {
axis.options.min = null;
axis.options.max = null;
});
plot.getOptions().series.downsample.threshold = Math.floor(plot.getPlaceholder().width() * points_per_px);
plot.setData(pdata);
plot.setupGrid();
plot.draw();
plot.getPlaceholder().children("#controls")
.css("top", (plot.getPlotOffset().top+5) + "px")
.css("left", (plot.getPlotOffset().left+5) + "px")
.css("display", "none");
});
plot.getPlaceholder().children("#controls")
.css("top", (plot.getPlotOffset().top+5) + "px")
.css("left", (plot.getPlotOffset().left+5) + "px");
}
// Per router statistics
function network_graph(netif) {
var netstat = $("#netstat");
var tx = [], rx = [];
var len, i;
for (len=netif_stats.length, i=0; i%s: %p.0%", shifts: {x: 15, y: 5}, defaultTheme: true},
series: {pie: {
show: true, radius: 99/100, label: {show: true, formatter: labelFormatter, radius: 0.5, threshold: 0.10},
combine: {threshold: 0.009}
}}
});
placeholder.bind("plotclick", function(event, pos, obj) {
if (obj && obj.series.label != "Other") {
window.location.href = routers_page_url + encodeURI("?q=firmware:^" + obj.series.label + "$ " + hoodstr);
}
});
}
function global_router_models_graph() {
var placeholder = $("#globroutermodelsstat");
var pdata = [];
for (var mdname in router_models) {
pdata.push({
"label": mdname,
"data": [router_models[mdname]]
});
}
var plot = $.plot(placeholder, pdata, {
legend: {noColumns: 1, show: true, "labelFormatter": legendFormatter},
grid: {hoverable: true, clickable: true},
tooltip: {show: true, content: "%s: %p.0%", shifts: {x: 15, y: 5}, defaultTheme: true},
series: {pie: {
show: true, radius: 99/100, label: {show: true, formatter: labelFormatter, radius: 0.5, threshold: 0.2},
combine: {threshold: 0.009}
}}
});
placeholder.bind("plotclick", function(event, pos, obj) {
if (obj && obj.series.label != "Other") {
window.location.href = routers_page_url + encodeURI("?q=hardware:^" + obj.series.label.replace(/ /g, '_') + "$ " + hoodstr);
}
});
}