Browse Source

[WebUI] Avoid throughput summary table reinitialization

on data update
tags/1.8.0
Alexander Moisseev 5 years ago
parent
commit
4a13700cc5
1 changed files with 48 additions and 29 deletions
  1. 48
    29
      interface/js/app/graph.js

+ 48
- 29
interface/js/app/graph.js View File

@@ -23,11 +23,13 @@
THE SOFTWARE.
*/

/* global d3:false */
/* global d3:false, FooTable:false */

define(["jquery", "d3evolution", "footable"],
function ($, D3Evolution) {
"use strict";
var ft;

var rrd_pie_config = {
header: {},
size: {
@@ -137,7 +139,7 @@ define(["jquery", "d3evolution", "footable"],
}, []);
}

function drawRrdTable(data, unit) {
function updateSummaryTable(data) {
var total_messages = 0;
var rows = data.map(function (curr, i) {
total_messages += curr.value;
@@ -153,58 +155,75 @@ define(["jquery", "d3evolution", "footable"],

document.getElementById("rrd-total-value").innerHTML = total_messages;

$("#rrd-table").footable({
ft.rows.load(rows);
}

function initSummaryTable(data, unit) {
return FooTable.init("#rrd-table", {
sorting: {
enabled: true
},
columns: [
{name: "label", title: "Action"},
{name: "value", title: "Messages", defaultContent: ""},
{name: "min", title: "Minimum, " + unit, defaultContent: ""},
{name: "avg", title: "Average, " + unit, defaultContent: ""},
{name: "max", title: "Maximum, " + unit, defaultContent: ""},
{name: "min", title: "Minimum, <span class=\"unit\">" + unit + "</span>", defaultContent: ""},
{name: "avg", title: "Average, <span class=\"unit\">" + unit + "</span>", defaultContent: ""},
{name: "max", title: "Maximum, <span class=\"unit\">" + unit + "</span>", defaultContent: ""},
{name: "last", title: "Last, " + unit},
],
rows: rows
on: {
"ready.ft.table": function () {
updateSummaryTable(data);
}
}
});
}

function drawRrdTable(data, unit) {
if (ft) {
updateSummaryTable(data);
} else {
ft = initSummaryTable(data, unit);
}
}

var ui = {};
var prevUnit = "msg/s";

ui.draw = function (rspamd, graphs, neighbours, checked_server, type) {

function updateWidgets(data) {
// Autoranging
var scaleFactor = 1;
var rrd_summary = [];
var unit = "msg/s";
var yMax = d3.max(d3.merge(data), function (d) { return d.y; });
if (yMax < 1) {
scaleFactor = 60;
unit = "msg/min";
data.forEach(function (s) {
s.forEach(function (d) {
if (d.y !== null) { d.y *= scaleFactor; }

if (data) {
// Autoranging
var scaleFactor = 1;
var yMax = d3.max(d3.merge(data), function (d) { return d.y; });
if (yMax < 1) {
scaleFactor = 60;
unit = "msg/min";
data.forEach(function (s) {
s.forEach(function (d) {
if (d.y !== null) { d.y *= scaleFactor; }
});
});
});
}

rrd_summary = getRrdSummary(data, scaleFactor);
graphs.rrd_pie = rspamd.drawPie(graphs.rrd_pie,
"rrd-pie",
rrd_summary,
rrd_pie_config);
} else if (graphs.rrd_pie) {
graphs.rrd_pie.destroy();
}

graphs.graph.data(data);
if (unit !== prevUnit) {
graphs.graph.yAxisLabel("Message rate, " + unit);
$(".unit").text(unit);
prevUnit = unit;
}

if (!data) {
graphs.rrd_pie.destroy();
drawRrdTable([]);
return;
}
var rrd_summary = getRrdSummary(data, scaleFactor);
graphs.rrd_pie = rspamd.drawPie(graphs.rrd_pie,
"rrd-pie",
rrd_summary,
rrd_pie_config);
drawRrdTable(rrd_summary, unit);
}


Loading…
Cancel
Save