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); } }); }