From: Alexander Moisseev Date: Tue, 3 Jul 2018 09:20:51 +0000 (+0300) Subject: [Minor] JS: Use consistent indentation X-Git-Tag: 1.7.8~44^2~10 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=494f11642b80bca148c2fda8bac583664b9f415c;p=rspamd.git [Minor] JS: Use consistent indentation --- diff --git a/interface/js/app/config.js b/interface/js/app/config.js index e580b2497..cb8fb0c75 100644 --- a/interface/js/app/config.js +++ b/interface/js/app/config.js @@ -23,165 +23,165 @@ */ define(["jquery"], -function($) { - var interface = {} + function($) { + var interface = {} - function save_map_success(rspamd) { - rspamd.alertMessage("alert-modal alert-success", "Map data successfully saved"); - $("#modalDialog").modal("hide"); - } - function save_map_error(rspamd, serv, jqXHR, textStatus, errorThrown) { - rspamd.alertMessage("alert-modal alert-error", "Save map error on " + + function save_map_success(rspamd) { + rspamd.alertMessage("alert-modal alert-success", "Map data successfully saved"); + $("#modalDialog").modal("hide"); + } + function save_map_error(rspamd, serv, jqXHR, textStatus, errorThrown) { + rspamd.alertMessage("alert-modal alert-error", "Save map error on " + serv.name + ": " + errorThrown); - } - // @upload map from modal - function saveMap(rspamd, action, id) { - var data = $("#" + id).find("textarea").val(); - $.ajax({ - data: data, - dataType: "text", - type: "POST", - jsonp: false, - url: action, - beforeSend: function (xhr) { - xhr.setRequestHeader("Password", rspamd.getPassword()); - xhr.setRequestHeader("Map", id); - xhr.setRequestHeader("Debug", true); - }, - error: function (data) { - save_map_error(rspamd, "local", null, null, data.statusText); - }, - success: function() {save_map_success(rspamd)}, - }); - } + } + // @upload map from modal + function saveMap(rspamd, action, id) { + var data = $("#" + id).find("textarea").val(); + $.ajax({ + data: data, + dataType: "text", + type: "POST", + jsonp: false, + url: action, + beforeSend: function (xhr) { + xhr.setRequestHeader("Password", rspamd.getPassword()); + xhr.setRequestHeader("Map", id); + xhr.setRequestHeader("Debug", true); + }, + error: function (data) { + save_map_error(rspamd, "local", null, null, data.statusText); + }, + success: function() {save_map_success(rspamd)}, + }); + } - // @get maps id - function getMaps(rspamd) { - var items = []; - var $listmaps = $("#listMaps") - $listmaps.closest(".widget-box").hide(); - $.ajax({ - dataType: "json", - url: "maps", - jsonp: false, - beforeSend: function (xhr) { - xhr.setRequestHeader("Password", rspamd.getPassword()); - }, - error: function (data) { - rspamd.alertMessage("alert-modal alert-error", data.statusText); - }, - success: function (data) { - $listmaps.empty(); - $("#modalBody").empty(); - $tbody = $(""); + // @get maps id + function getMaps(rspamd) { + var items = []; + var $listmaps = $("#listMaps") + $listmaps.closest(".widget-box").hide(); + $.ajax({ + dataType: "json", + url: "maps", + jsonp: false, + beforeSend: function (xhr) { + xhr.setRequestHeader("Password", rspamd.getPassword()); + }, + error: function (data) { + rspamd.alertMessage("alert-modal alert-error", data.statusText); + }, + success: function (data) { + $listmaps.empty(); + $("#modalBody").empty(); + $tbody = $(""); - $.each(data, function (i, item) { + $.each(data, function (i, item) { + if ((item.editable === false || rspamd.read_only)) { + var label = "Read"; + } else { + var label = "Read Write"; + } + var $tr = $(""); + $("" + label + "").appendTo($tr); + $span = $("" + item.uri + "").data("item",item); + $span.wrap("").parent().appendTo($tr); + $("" + item.description + "").appendTo($tr); + $tr.appendTo($tbody); + }); + $tbody.appendTo($listmaps); + $listmaps.closest(".widget-box").show(); + } + }); + } + // @get map by id + function getMapById(rspamd, item) { + return $.ajax({ + dataType: "text", + url: "getmap", + jsonp: false, + beforeSend: function (xhr) { + xhr.setRequestHeader("Password", rspamd.getPassword()); + xhr.setRequestHeader("Map", item.map); + }, + error: function () { + rspamd.alertMessage("alert-error", "Cannot receive maps data"); + }, + success: function (text) { + var disabled = ""; if ((item.editable === false || rspamd.read_only)) { - var label = "Read"; - } else { - var label = "Read Write"; + disabled = "disabled=\"disabled\""; } - var $tr = $(""); - $("" + label + "").appendTo($tr); - $span = $("" + item.uri + "").data("item",item); - $span.wrap("").parent().appendTo($tr); - $("" + item.description + "").appendTo($tr); - $tr.appendTo($tbody); - }); - $tbody.appendTo($listmaps); - $listmaps.closest(".widget-box").show(); - } - }); - } - // @get map by id - function getMapById(rspamd, item) { - return $.ajax({ - dataType: "text", - url: "getmap", - jsonp: false, - beforeSend: function (xhr) { - xhr.setRequestHeader("Password", rspamd.getPassword()); - xhr.setRequestHeader("Map", item.map); - }, - error: function () { - rspamd.alertMessage("alert-error", "Cannot receive maps data"); - }, - success: function (text) { - var disabled = ""; - if ((item.editable === false || rspamd.read_only)) { - disabled = "disabled=\"disabled\""; - } - $("#"+item.map).remove(); - $("
" + "" + " probable spam -> rewrite subject -> spam - $("#actionsBody").empty(); - $("#actionsForm").empty(); - var items = []; - $.each(data, function (i, item) { - var idx = -1; - var label; - if (item.action === "add header") { - label = "Probably Spam"; - idx = 1; - } else if (item.action === "greylist") { - label = "Greylist"; - idx = 0; - } else if (item.action === "rewrite subject") { - label = "Rewrite subject"; - idx = 2; - } else if (item.action === "reject") { - label = "Spam"; - idx = 3; - } - if (idx >= 0) { - items.push({ - idx: idx, - html: "
" + + $("#actionsBody").empty(); + $("#actionsForm").empty(); + var items = []; + $.each(data, function (i, item) { + var idx = -1; + var label; + if (item.action === "add header") { + label = "Probably Spam"; + idx = 1; + } else if (item.action === "greylist") { + label = "Greylist"; + idx = 0; + } else if (item.action === "rewrite subject") { + label = "Rewrite subject"; + idx = 2; + } else if (item.action === "reject") { + label = "Spam"; + idx = 3; + } + if (idx >= 0) { + items.push({ + idx: idx, + html: "
" + "" + "
" + "" + "
" + "
" - }); - } - }); + }); + } + }); - items.sort(function (a, b) { - return a.idx - b.idx; - }); + items.sort(function (a, b) { + return a.idx - b.idx; + }); - $("#actionsBody").html("
" + + $("#actionsBody").html("
" + items.map(function (e) { return e.html; }).join("") + @@ -190,95 +190,95 @@ function($) { "" + "" + "
"); - if (rspamd.read_only) { - $("#saveActionsClusterBtn").attr("disabled", true); - $("#saveActionsBtn").attr("disabled", true); - $("#actionsFormField").attr("disabled", true); - } + if (rspamd.read_only) { + $("#saveActionsClusterBtn").attr("disabled", true); + $("#saveActionsBtn").attr("disabled", true); + $("#actionsFormField").attr("disabled", true); + } - function saveActions(callback) { - var elts = loadActionsFromForm(); - // String to array for comparison - var eltsArray = JSON.parse(loadActionsFromForm()); - if (eltsArray[0] < 0) { - rspamd.alertMessage("alert-modal alert-error", "Spam can not be negative"); - } else if (eltsArray[1] < 0) { - rspamd.alertMessage("alert-modal alert-error", "Rewrite subject can not be negative"); - } else if (eltsArray[2] < 0) { - rspamd.alertMessage("alert-modal alert-error", "Probable spam can not be negative"); - } else if (eltsArray[3] < 0) { - rspamd.alertMessage("alert-modal alert-error", "Greylist can not be negative"); - } else if ( - (eltsArray[2] === null || eltsArray[3] < eltsArray[2]) && + function saveActions(callback) { + var elts = loadActionsFromForm(); + // String to array for comparison + var eltsArray = JSON.parse(loadActionsFromForm()); + if (eltsArray[0] < 0) { + rspamd.alertMessage("alert-modal alert-error", "Spam can not be negative"); + } else if (eltsArray[1] < 0) { + rspamd.alertMessage("alert-modal alert-error", "Rewrite subject can not be negative"); + } else if (eltsArray[2] < 0) { + rspamd.alertMessage("alert-modal alert-error", "Probable spam can not be negative"); + } else if (eltsArray[3] < 0) { + rspamd.alertMessage("alert-modal alert-error", "Greylist can not be negative"); + } else if ( + (eltsArray[2] === null || eltsArray[3] < eltsArray[2]) && (eltsArray[1] === null || eltsArray[2] < eltsArray[1]) && (eltsArray[0] === null || eltsArray[1] < eltsArray[0]) - ) { - callback("saveactions", null, null, "POST", {}, { - data: elts, - dataType: "json" - }); - } else { - rspamd.alertMessage("alert-modal alert-error", "Incorrect order of metric actions threshold"); + ) { + callback("saveactions", null, null, "POST", {}, { + data: elts, + dataType: "json" + }); + } else { + rspamd.alertMessage("alert-modal alert-error", "Incorrect order of metric actions threshold"); + } } - } - $("#saveActionsBtn").on("click", function() { - saveActions(rspamd.queryLocal); - }); - $("#saveActionsClusterBtn").on("click", function() { - saveActions(rspamd.queryNeighbours); - }); - }, - }); - } + $("#saveActionsBtn").on("click", function() { + saveActions(rspamd.queryLocal); + }); + $("#saveActionsClusterBtn").on("click", function() { + saveActions(rspamd.queryNeighbours); + }); + }, + }); + } - // @upload edited actions - interface.setup = function(rspamd) { + // @upload edited actions + interface.setup = function(rspamd) { // Modal form for maps - $(document).on("click", "[data-toggle=\"modal\"]", function () { - var item = $(this).data("item"); - getMapById(rspamd, item).done(function() { - $("#modalTitle").html(item.uri); - $("#" + item.map).first().show(); - $("#modalDialog .progress").hide(); - $("#modalDialog").modal(show = true, backdrop = true, keyboard = show); - if (item.editable === false) { - $("#modalSave").hide(); - $("#modalSaveAll").hide(); - } else { - $("#modalSave").show(); - $("#modalSaveAll").show(); - } + $(document).on("click", "[data-toggle=\"modal\"]", function () { + var item = $(this).data("item"); + getMapById(rspamd, item).done(function() { + $("#modalTitle").html(item.uri); + $("#" + item.map).first().show(); + $("#modalDialog .progress").hide(); + $("#modalDialog").modal(show = true, backdrop = true, keyboard = show); + if (item.editable === false) { + $("#modalSave").hide(); + $("#modalSaveAll").hide(); + } else { + $("#modalSave").show(); + $("#modalSaveAll").show(); + } + }); + return false; }); - return false; - }); - // close modal without saving - $("[data-dismiss=\"modal\"]").on("click", function () { - $("#modalBody form").hide(); - }); - // @save forms from modal - $("#modalSave").on("click", function () { - var form = $("#modalBody").children().filter(":visible"); - var action = $(form).attr("action"); - var id = $(form).attr("id"); - saveMap(rspamd, action, id); - }); - $("#modalSaveAll").on("click", function () { - var form = $("#modalBody").children().filter(":visible"); - var action = $(form).attr("action"); - var id = $(form).attr("id"); - var data = $("#" + id).find("textarea").val(); - rspamd.queryNeighbours(action, save_map_success, save_map_error, "POST", { - "Map": id, - }, { - data: data, - dataType: "text", + // close modal without saving + $("[data-dismiss=\"modal\"]").on("click", function () { + $("#modalBody form").hide(); + }); + // @save forms from modal + $("#modalSave").on("click", function () { + var form = $("#modalBody").children().filter(":visible"); + var action = $(form).attr("action"); + var id = $(form).attr("id"); + saveMap(rspamd, action, id); + }); + $("#modalSaveAll").on("click", function () { + var form = $("#modalBody").children().filter(":visible"); + var action = $(form).attr("action"); + var id = $(form).attr("id"); + var data = $("#" + id).find("textarea").val(); + rspamd.queryNeighbours(action, save_map_success, save_map_error, "POST", { + "Map": id, + }, { + data: data, + dataType: "text", + }); }); - }); - } + } - interface.getActions = getActions; - interface.getMaps = getMaps; + interface.getActions = getActions; + interface.getMaps = getMaps; - return interface; -}); + return interface; + }); diff --git a/interface/js/app/graph.js b/interface/js/app/graph.js index da9f6068f..9bffd2dad 100644 --- a/interface/js/app/graph.js +++ b/interface/js/app/graph.js @@ -24,273 +24,273 @@ */ define(["jquery", "d3evolution", "footable"], -function($, D3Evolution, unused) { - var rrd_pie_config = { - header: {}, - size: { - canvasWidth: 400, - canvasHeight: 180, - pieInnerRadius: "20%", - pieOuterRadius: "80%" - }, - labels: { - outer: { - format: "none" + function($, D3Evolution, unused) { + var rrd_pie_config = { + header: {}, + size: { + canvasWidth: 400, + canvasHeight: 180, + pieInnerRadius: "20%", + pieOuterRadius: "80%" }, - inner: { - hideWhenLessThanPercentage: 8 - }, - }, - misc: { - pieCenterOffset: { - x: -120, - y: 10, + labels: { + outer: { + format: "none" + }, + inner: { + hideWhenLessThanPercentage: 8 + }, }, - gradient: { - enabled: true, + misc: { + pieCenterOffset: { + x: -120, + y: 10, + }, + gradient: { + enabled: true, + }, }, - }, - }; + }; - var graph_options = { - title: "Rspamd throughput", - width: 1060, - height: 370, - yAxisLabel: "Message rate, msg/s", + var graph_options = { + title: "Rspamd throughput", + width: 1060, + height: 370, + yAxisLabel: "Message rate, msg/s", - legend: { - space: 140, - entries: [{ - label: "Rejected", - color: "#FF0000" - }, { - label: "Temporarily rejected", - color: "#BF8040" - }, { - label: "Subject rewritten", - color: "#FF6600" - }, { - label: "Probable spam", - color: "#FFAD00" - }, { - label: "Greylisted", - color: "#436EEE" - }, { - label: "Clean", - color: "#66CC00" - }] - } - }; + legend: { + space: 140, + entries: [{ + label: "Rejected", + color: "#FF0000" + }, { + label: "Temporarily rejected", + color: "#BF8040" + }, { + label: "Subject rewritten", + color: "#FF6600" + }, { + label: "Probable spam", + color: "#FFAD00" + }, { + label: "Greylisted", + color: "#436EEE" + }, { + label: "Clean", + color: "#66CC00" + }] + } + }; - // Get selectors' current state - function getSelector(id) { - var e = document.getElementById(id); - return e.options[e.selectedIndex].value; - } + // Get selectors' current state + function getSelector(id) { + var e = document.getElementById(id); + return e.options[e.selectedIndex].value; + } - function initGraph() { - var graph = new D3Evolution("graph", $.extend({}, graph_options, { - yScale: getSelector("selYScale"), - type: getSelector("selType"), - interpolate: getSelector("selInterpolate"), - convert: getSelector("selConvert"), - })); - $("#selYScale").change(function() { - graph.yScale(this.value); - }); - $("#selConvert").change(function () { - graph.convert(this.value); - }); - $("#selType").change(function () { - graph.type(this.value); - }); - $("#selInterpolate").change(function () { - graph.interpolate(this.value); - }); + function initGraph() { + var graph = new D3Evolution("graph", $.extend({}, graph_options, { + yScale: getSelector("selYScale"), + type: getSelector("selType"), + interpolate: getSelector("selInterpolate"), + convert: getSelector("selConvert"), + })); + $("#selYScale").change(function() { + graph.yScale(this.value); + }); + $("#selConvert").change(function () { + graph.convert(this.value); + }); + $("#selType").change(function () { + graph.type(this.value); + }); + $("#selInterpolate").change(function () { + graph.interpolate(this.value); + }); - return graph; - } + return graph; + } - function getRrdSummary(json, scaleFactor) { - var xExtents = d3.extent(d3.merge(json), function (d) { return d.x; }); - var timeInterval = xExtents[1] - xExtents[0]; + function getRrdSummary(json, scaleFactor) { + var xExtents = d3.extent(d3.merge(json), function (d) { return d.x; }); + var timeInterval = xExtents[1] - xExtents[0]; - return json.map(function (curr, i) { + return json.map(function (curr, i) { // Time intervals that don't have data are excluded from average calculation as d3.mean()ignores nulls - var avg = d3.mean(curr, function (d) { return d.y; }); - // To find an integral on the whole time interval we need to convert nulls to zeroes - var value = d3.mean(curr, function (d) { return +d.y; }) * timeInterval / scaleFactor; - var yExtents = d3.extent(curr, function (d) { return d.y; }); + var avg = d3.mean(curr, function (d) { return d.y; }); + // To find an integral on the whole time interval we need to convert nulls to zeroes + var value = d3.mean(curr, function (d) { return +d.y; }) * timeInterval / scaleFactor; + var yExtents = d3.extent(curr, function (d) { return d.y; }); - return { - label: graph_options.legend.entries[i].label, - value: value ^ 0, - min: +yExtents[0].toFixed(6), - avg: +avg.toFixed(6), - max: +yExtents[1].toFixed(6), - last: +curr[curr.length - 1].y.toFixed(6), - color: graph_options.legend.entries[i].color, - }; - }, []); - } + return { + label: graph_options.legend.entries[i].label, + value: value ^ 0, + min: +yExtents[0].toFixed(6), + avg: +avg.toFixed(6), + max: +yExtents[1].toFixed(6), + last: +curr[curr.length - 1].y.toFixed(6), + color: graph_options.legend.entries[i].color, + }; + }, []); + } - function drawRrdTable(data, unit) { - var total_messages = 0; - var rows = data.map(function (curr, i) { - total_messages += curr.value; - return { - options: { - style: { - color: graph_options.legend.entries[i].color - } - }, - value: curr - }; - }, []); + function drawRrdTable(data, unit) { + var total_messages = 0; + var rows = data.map(function (curr, i) { + total_messages += curr.value; + return { + options: { + style: { + color: graph_options.legend.entries[i].color + } + }, + value: curr + }; + }, []); - document.getElementById("rrd-total-value").innerHTML = total_messages; + document.getElementById("rrd-total-value").innerHTML = total_messages; - $("#rrd-table").footable({ - 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: "last", title: "Last, " + unit }, - ], - rows: rows - }); - } + $("#rrd-table").footable({ + 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: "last", title: "Last, " + unit }, + ], + rows: rows + }); + } - var interface = {}; - var prevUnit = "msg/s"; + var interface = {}; + var prevUnit = "msg/s"; - interface.draw = function(rspamd, graphs, neighbours, checked_server, type) { + interface.draw = function(rspamd, graphs, neighbours, checked_server, type) { - function updateWidgets(data) { + function updateWidgets(data) { // Autoranging - var scaleFactor = 1; - 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; } + var scaleFactor = 1; + 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; } + }); }); - }); - } + } - graphs.graph.data(data); - if (unit != prevUnit) { - graphs.graph.yAxisLabel("Message rate, " + unit); - prevUnit = unit; - } + graphs.graph.data(data); + if (unit != prevUnit) { + graphs.graph.yAxisLabel("Message rate, " + unit); + prevUnit = unit; + } - if (!data) { - graphs.rrd_pie.destroy(); - drawRrdTable([]); - return; + 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); } - 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); - } - if (graphs.graph === undefined) { - graphs.graph = initGraph(); - } + if (graphs.graph === undefined) { + graphs.graph = initGraph(); + } - if (checked_server === "All SERVERS") { - rspamd.queryNeighbours("graph", function (req_data) { - var neighbours_data = req_data - .filter(function (d) { return d.status }) // filter out unavailable neighbours - .map(function (d){ return d.data; }); + if (checked_server === "All SERVERS") { + rspamd.queryNeighbours("graph", function (req_data) { + var neighbours_data = req_data + .filter(function (d) { return d.status }) // filter out unavailable neighbours + .map(function (d){ return d.data; }); - if (neighbours_data.length > 1) { - neighbours_data.reduce(function (res, curr) { - if ((curr[0][0].x !== res[0][0].x) || + if (neighbours_data.length > 1) { + neighbours_data.reduce(function (res, curr) { + if ((curr[0][0].x !== res[0][0].x) || (curr[0][curr[0].length - 1].x !== res[0][res[0].length - 1].x)) { - rspamd.alertMessage("alert-error", - "Neighbours time extents do not match. Check if time is synchronized on all servers."); - updateWidgets(); - return; - } + rspamd.alertMessage("alert-error", + "Neighbours time extents do not match. Check if time is synchronized on all servers."); + updateWidgets(); + return; + } - var data = []; - curr.forEach(function (action, j) { - data.push( - action.map(function (d, i) { - return { - x: d.x, - y: ((res[j][i].y === null) ? d.y : res[j][i].y + d.y) - }; - }) - ); + var data = []; + curr.forEach(function (action, j) { + data.push( + action.map(function (d, i) { + return { + x: d.x, + y: ((res[j][i].y === null) ? d.y : res[j][i].y + d.y) + }; + }) + ); + }); + updateWidgets(data); }); - updateWidgets(data); - }); - } - else { - updateWidgets(neighbours_data[0]); - } - }, - function (serv, jqXHR, textStatus, errorThrown) { - var alert_status = serv.name + "_alerted"; + } + else { + updateWidgets(neighbours_data[0]); + } + }, + function (serv, jqXHR, textStatus, errorThrown) { + var alert_status = serv.name + "_alerted"; - if (!(alert_status in sessionStorage)) { - sessionStorage.setItem(alert_status, true); - rspamd.alertMessage("alert-error", "Cannot receive RRD data from: " + + if (!(alert_status in sessionStorage)) { + sessionStorage.setItem(alert_status, true); + rspamd.alertMessage("alert-error", "Cannot receive RRD data from: " + serv.name + ", error: " + errorThrown); - } - }, "GET", {}, {}, { - type: type - }); - return; - } + } + }, "GET", {}, {}, { + type: type + }); + return; + } - $.ajax({ - dataType: "json", - type: "GET", - url: neighbours[checked_server].url + "graph", - jsonp: false, - data: { - "type": type - }, - beforeSend: function (xhr) { - xhr.setRequestHeader("Password", rspamd.getPassword()); - }, - success: function (data) { - updateWidgets(data); - }, - error: function (jqXHR, textStatus, errorThrown) { - rspamd.alertMessage("alert-error", "Cannot receive throughput data: " + + $.ajax({ + dataType: "json", + type: "GET", + url: neighbours[checked_server].url + "graph", + jsonp: false, + data: { + "type": type + }, + beforeSend: function (xhr) { + xhr.setRequestHeader("Password", rspamd.getPassword()); + }, + success: function (data) { + updateWidgets(data); + }, + error: function (jqXHR, textStatus, errorThrown) { + rspamd.alertMessage("alert-error", "Cannot receive throughput data: " + textStatus + " " + jqXHR.status + " " + errorThrown); - } - }); - }; + } + }); + }; - interface.setup = function() { + interface.setup = function() { // Handling mouse events on overlapping elements - $("#rrd-pie").mouseover(function () { - $("#rrd-pie").css("z-index", "200"); - $("#rrd-table_toggle").css("z-index", "300"); - }); - $("#rrd-table_toggle").mouseover(function () { - $("#rrd-pie").css("z-index", "0"); - $("#rrd-table_toggle").css("z-index", "0"); - }); + $("#rrd-pie").mouseover(function () { + $("#rrd-pie").css("z-index", "200"); + $("#rrd-table_toggle").css("z-index", "300"); + }); + $("#rrd-table_toggle").mouseover(function () { + $("#rrd-pie").css("z-index", "0"); + $("#rrd-table_toggle").css("z-index", "0"); + }); - return getSelector("selData"); - }; + return getSelector("selData"); + }; - return interface; -}); + return interface; + }); diff --git a/interface/js/app/history.js b/interface/js/app/history.js index 57c37a77c..8bef4d226 100644 --- a/interface/js/app/history.js +++ b/interface/js/app/history.js @@ -23,40 +23,40 @@ */ define(["jquery", "footable", "humanize"], -function($, _, Humanize) { - var interface = {}; - var ft = {}; - var htmlEscapes = { - "&": "&", - "<": "<", - ">": ">", - "\"": """, - "'": "'", - "/": "/", - "`": "`", - "=": "=" - }; - var htmlEscaper = /[&<>"'\/`=]/g; - var symbolDescriptions = {}; - - EscapeHTML = function(string) { - return ("" + string).replace(htmlEscaper, function(match) { - return htmlEscapes[match]; - }); - }; - - escape_HTML_array = function (arr) { - arr.forEach(function (d, i) { arr[i] = EscapeHTML(d) }); - }; - - function unix_time_format(tm) { - var date = new Date(tm ? tm * 1000 : 0); - return date.toLocaleString(); - } - - function preprocess_item(item) { - for (var prop in item) { - switch (prop) { + function($, _, Humanize) { + var interface = {}; + var ft = {}; + var htmlEscapes = { + "&": "&", + "<": "<", + ">": ">", + "\"": """, + "'": "'", + "/": "/", + "`": "`", + "=": "=" + }; + var htmlEscaper = /[&<>"'\/`=]/g; + var symbolDescriptions = {}; + + EscapeHTML = function(string) { + return ("" + string).replace(htmlEscaper, function(match) { + return htmlEscapes[match]; + }); + }; + + escape_HTML_array = function (arr) { + arr.forEach(function (d, i) { arr[i] = EscapeHTML(d) }); + }; + + function unix_time_format(tm) { + var date = new Date(tm ? tm * 1000 : 0); + return date.toLocaleString(); + } + + function preprocess_item(item) { + for (var prop in item) { + switch (prop) { case "rcpt_mime": case "rcpt_smtp": escape_HTML_array(item[prop]); @@ -81,166 +81,166 @@ function($, _, Humanize) { if (typeof (item[prop]) == "string") { item[prop] = EscapeHTML(item[prop]); } + } } - } - if (item.action === "clean" || item.action === "no action") { - item.action = "
" + item.action + "
"; - } else if (item.action === "rewrite subject" || item.action === "add header" || item.action === "probable spam") { - item.action = "
" + item.action + "
"; - } else if (item.action === "spam" || item.action === "reject") { - item.action = "
" + item.action + "
"; - } else { - item.action = "
" + item.action + "
"; - } + if (item.action === "clean" || item.action === "no action") { + item.action = "
" + item.action + "
"; + } else if (item.action === "rewrite subject" || item.action === "add header" || item.action === "probable spam") { + item.action = "
" + item.action + "
"; + } else if (item.action === "spam" || item.action === "reject") { + item.action = "
" + item.action + "
"; + } else { + item.action = "
" + item.action + "
"; + } - var score_content; - if (item.score < item.required_score) { - score_content = "" + item.score.toFixed(2) + " / " + item.required_score + ""; - } else { - score_content = "" + item.score.toFixed(2) + " / " + item.required_score + ""; - } + var score_content; + if (item.score < item.required_score) { + score_content = "" + item.score.toFixed(2) + " / " + item.required_score + ""; + } else { + score_content = "" + item.score.toFixed(2) + " / " + item.required_score + ""; + } - item.score = { - "options": { - "sortValue": item.score - }, - "value": score_content - }; + item.score = { + "options": { + "sortValue": item.score + }, + "value": score_content + }; - if (item.user == null) { - item.user = "none"; + if (item.user == null) { + item.user = "none"; + } } - } - function process_history_v2(data) { + function process_history_v2(data) { // Display no more than rcpt_lim recipients - var rcpt_lim = 3; - var items = []; + var rcpt_lim = 3; + var items = []; - function getSelector(id) { - var e = document.getElementById(id); - return e.options[e.selectedIndex].value; - } - var compare = (getSelector("selSymOrder") === "score") - ? function (e1, e2) { - return Math.abs(e1.score) < Math.abs(e2.score); - } - : function (e1, e2) { - return e1.name.localeCompare(e2.name); - }; - - $.each(data.rows, - function (i, item) { - function more(p) { - var l = item[p].length; - return (l > rcpt_lim) ? " … (" + l + ")" : ""; + function getSelector(id) { + var e = document.getElementById(id); + return e.options[e.selectedIndex].value; } - function format_rcpt(smtp, mime) { - var full = shrt = ""; - if (smtp) { - full = "[" + item.rcpt_smtp.join(", ") + "] "; - shrt = "[" + item.rcpt_smtp.slice(0,rcpt_lim).join(",​") + more("rcpt_smtp") + "]"; - if (mime) { - full += " "; - shrt += " "; - } - } - if (mime) { - full += item.rcpt_mime.join(", "); - shrt += item.rcpt_mime.slice(0,rcpt_lim).join(",​") + more("rcpt_mime"); + var compare = (getSelector("selSymOrder") === "score") + ? function (e1, e2) { + return Math.abs(e1.score) < Math.abs(e2.score); } - return {full: full, shrt: shrt}; - } + : function (e1, e2) { + return e1.name.localeCompare(e2.name); + }; + + $.each(data.rows, + function (i, item) { + function more(p) { + var l = item[p].length; + return (l > rcpt_lim) ? " … (" + l + ")" : ""; + } + function format_rcpt(smtp, mime) { + var full = shrt = ""; + if (smtp) { + full = "[" + item.rcpt_smtp.join(", ") + "] "; + shrt = "[" + item.rcpt_smtp.slice(0,rcpt_lim).join(",​") + more("rcpt_smtp") + "]"; + if (mime) { + full += " "; + shrt += " "; + } + } + if (mime) { + full += item.rcpt_mime.join(", "); + shrt += item.rcpt_mime.slice(0,rcpt_lim).join(",​") + more("rcpt_mime"); + } + return {full: full, shrt: shrt}; + } - preprocess_item(item); - Object.keys(item.symbols).map(function(key) { - var sym = item.symbols[key]; + preprocess_item(item); + Object.keys(item.symbols).map(function(key) { + var sym = item.symbols[key]; - if (sym.description) { + if (sym.description) { var str = "" + sym.name + "" + "(" + sym.score + ")"; // Store description for tooltip symbolDescriptions[key] = sym.description; - } else { + } else { var str = "" + sym.name + "" + "(" + sym.score + ")"; - } + } - if (sym.options) { - str += "[" + sym.options.join(",") + "]"; - } - item.symbols[key].str = str; - }); - item.symbols = Object.keys(item.symbols). - map(function(key) { - return item.symbols[key]; - }). - sort(compare). - map(function(e) { return e.str; }). - join("
\n"); - item.time = { - "value": unix_time_format(item.unix_time), - "options": { - "sortValue": item.unix_time - } - }; - var scan_time = item.time_real.toFixed(3) + " / " + + if (sym.options) { + str += "[" + sym.options.join(",") + "]"; + } + item.symbols[key].str = str; + }); + item.symbols = Object.keys(item.symbols). + map(function(key) { + return item.symbols[key]; + }). + sort(compare). + map(function(e) { return e.str; }). + join("
\n"); + item.time = { + "value": unix_time_format(item.unix_time), + "options": { + "sortValue": item.unix_time + } + }; + var scan_time = item.time_real.toFixed(3) + " / " + item.time_virtual.toFixed(3); - item.scan_time = { - "options": { - "sortValue": item.time_real - }, - "value": scan_time - }; - item.id = item["message-id"]; - - var rcpt = {}; - if (!item.rcpt_mime.length) { - rcpt = format_rcpt(true, false); - } else if ($(item.rcpt_mime).not(item.rcpt_smtp).length !== 0 || $(item.rcpt_smtp).not(item.rcpt_mime).length !== 0) { - rcpt = format_rcpt(true, true); - } else { - rcpt = format_rcpt(false, true); - } - item.rcpt_mime_short = rcpt.shrt; - item.rcpt_mime = rcpt.full; + item.scan_time = { + "options": { + "sortValue": item.time_real + }, + "value": scan_time + }; + item.id = item["message-id"]; + + var rcpt = {}; + if (!item.rcpt_mime.length) { + rcpt = format_rcpt(true, false); + } else if ($(item.rcpt_mime).not(item.rcpt_smtp).length !== 0 || $(item.rcpt_smtp).not(item.rcpt_mime).length !== 0) { + rcpt = format_rcpt(true, true); + } else { + rcpt = format_rcpt(false, true); + } + item.rcpt_mime_short = rcpt.shrt; + item.rcpt_mime = rcpt.full; - if (item.sender_mime !== item.sender_smtp) { - item.sender_mime = "[" + item.sender_smtp + "] " + item.sender_mime; - } - items.push(item); - }); + if (item.sender_mime !== item.sender_smtp) { + item.sender_mime = "[" + item.sender_smtp + "] " + item.sender_mime; + } + items.push(item); + }); - return items; - } + return items; + } - function process_history_legacy(data) { - var items = []; + function process_history_legacy(data) { + var items = []; - $.each(data, function (i, item) { - item.time = unix_time_format(item.unix_time); - preprocess_item(item); - item.scan_time = { - "options": { - "sortValue": item.scan_time - }, - "value": item.scan_time - }; - item.time = { - "value": unix_time_format(item.unix_time), - "options": { - "sortValue": item.unix_time - } - }; + $.each(data, function (i, item) { + item.time = unix_time_format(item.unix_time); + preprocess_item(item); + item.scan_time = { + "options": { + "sortValue": item.scan_time + }, + "value": item.scan_time + }; + item.time = { + "value": unix_time_format(item.unix_time), + "options": { + "sortValue": item.unix_time + } + }; - items.push(item) - }); + items.push(item) + }); - return items; - } + return items; + } - function columns_v2() { - return [{ + function columns_v2() { + return [{ "name": "id", "title": "ID", "style": { @@ -358,10 +358,10 @@ function($, _, Humanize) { "word-wrap": "break-word" } }]; - } + } - function columns_legacy() { - return [{ + function columns_legacy() { + return [{ "name": "id", "title": "ID", "style": { @@ -445,343 +445,343 @@ function($, _, Humanize) { "maxWidth": 200 } }]; - } - - var process_functions = { - "2": process_history_v2, - "legacy": process_history_legacy - }; - - var columns = { - "2": columns_v2, - "legacy": columns_legacy - }; - - function process_history_data(data) { - var pf = process_functions.legacy; - - if (data.version) { - var strkey = data.version.toString(); - if (process_functions[strkey]) { - pf = process_functions[strkey]; - } } - return pf(data); - } + var process_functions = { + "2": process_history_v2, + "legacy": process_history_legacy + }; + + var columns = { + "2": columns_v2, + "legacy": columns_legacy + }; - function get_history_columns(data) { - var func = columns.legacy; + function process_history_data(data) { + var pf = process_functions.legacy; - if (data.version) { - var strkey = data.version.toString(); - if (columns[strkey]) { - func = columns[strkey]; + if (data.version) { + var strkey = data.version.toString(); + if (process_functions[strkey]) { + pf = process_functions[strkey]; + } } + + return pf(data); } - return func(); - } - - interface.getHistory = function (rspamd, tables, neighbours, checked_server) { - FooTable.actionFilter = FooTable.Filtering.extend({ - construct : function(instance) { - this._super(instance); - this.actions = [ "reject", "add header", "greylist", - "no action", "soft reject", "rewrite subject" ]; - this.def = "Any action"; - this.$action = null; - }, - $create : function() { - this._super(); - var self = this, $form_grp = $("
", { - "class" : "form-group" - }).append($("