Skip to content

Commit

Permalink
Merge pull request #4705 from moisseev/dynload
Browse files Browse the repository at this point in the history
[WebUI] Load modules dynamically
  • Loading branch information
vstakhov committed Nov 16, 2023
2 parents ab21a6f + b48b703 commit 34843a2
Show file tree
Hide file tree
Showing 10 changed files with 513 additions and 515 deletions.
2 changes: 1 addition & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"line-comment-position": "off",
"logical-assignment-operators": ["error", "never"],
"max-params": ["warn", 6],
"max-statements": ["warn", 50],
"max-statements": ["warn", 55],
"max-statements-per-line": ["error", { "max": 2 }],
"multiline-comment-style": "off",
"multiline-ternary": ["error", "always-multiline"],
Expand Down
189 changes: 96 additions & 93 deletions interface/js/app/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,14 @@
THE SOFTWARE.
*/

define(["jquery", "codejar", "linenumbers", "prism"],
function ($, CodeJar, withLineNumbers, Prism) {
/* global require */

define(["jquery", "app/rspamd"],
function ($, rspamd) {
"use strict";
var ui = {};

ui.getActions = function getActions(rspamd, checked_server) {
ui.getActions = function getActions(checked_server) {
rspamd.query("actions", {
success: function (data) {
$("#actionsFormField").empty();
Expand Down Expand Up @@ -63,7 +65,7 @@ define(["jquery", "codejar", "linenumbers", "prism"],
});
};

ui.saveActions = function (rspamd, server) {
ui.saveActions = function (server) {
function descending(arr) {
var desc = true;
var filtered = arr.filter(function (el) {
Expand Down Expand Up @@ -113,7 +115,7 @@ define(["jquery", "codejar", "linenumbers", "prism"],
}
};

ui.getMaps = function (rspamd, checked_server) {
ui.getMaps = function (checked_server) {
var $listmaps = $("#listMaps");
$listmaps.closest(".card").hide();
rspamd.query("maps", {
Expand Down Expand Up @@ -142,107 +144,108 @@ define(["jquery", "codejar", "linenumbers", "prism"],
});
};

ui.setup = function (rspamd) {
var jar = {};
const editor = {
advanced: {
codejar: true,
elt: "div",
class: "editor language-clike",
readonly_attr: {contenteditable: false},

var jar = {};
const editor = {
advanced: {
codejar: true,
elt: "div",
class: "editor language-clike",
readonly_attr: {contenteditable: false},
},
basic: {
elt: "textarea",
class: "form-control map-textarea",
readonly_attr: {readonly: true},
}
};
let mode = "advanced";

// Modal form for maps
$(document).on("click", "[data-bs-toggle=\"modal\"]", function () {
var checked_server = rspamd.getSelector("selSrv");
var item = $(this).data("item");
rspamd.query("getmap", {
headers: {
Map: item.map
},
basic: {
elt: "textarea",
class: "form-control map-textarea",
readonly_attr: {readonly: true},
}
};
let mode = "advanced";

// Modal form for maps
$(document).on("click", "[data-bs-toggle=\"modal\"]", function () {
var checked_server = rspamd.getSelector("selSrv");
var item = $(this).data("item");
rspamd.query("getmap", {
headers: {
Map: item.map
},
success: function (data) {
// Highlighting a large amount of text is unresponsive
mode = (new Blob([data[0].data]).size > 5120) ? "basic" : $("input[name=editorMode]:checked").val();
success: function (data) {
// Highlighting a large amount of text is unresponsive
mode = (new Blob([data[0].data]).size > 5120) ? "basic" : $("input[name=editorMode]:checked").val();

$("<" + editor[mode].elt + ' id="editor" class="' + editor[mode].class + '" data-id="' + item.map + '">' +
"</" + editor[mode].elt + ">").appendTo("#modalBody");
$("<" + editor[mode].elt + ' id="editor" class="' + editor[mode].class + '" data-id="' + item.map + '">' +
"</" + editor[mode].elt + ">").appendTo("#modalBody");

if (editor[mode].codejar) {
if (editor[mode].codejar) {
require(["codejar", "linenumbers", "prism"], function (CodeJar, withLineNumbers, Prism) {
jar = new CodeJar(
document.querySelector("#editor"),
withLineNumbers((el) => Prism.highlightElement(el))
);
jar.updateCode(data[0].data);
} else {
document.querySelector("#editor").innerHTML = rspamd.escapeHTML(data[0].data);
}

var icon = "fa-edit";
if (item.editable === false || rspamd.read_only) {
$("#editor").attr(editor[mode].readonly_attr);
icon = "fa-eye";
$("#modalSaveGroup").hide();
} else {
$("#modalSaveGroup").show();
}
$("#modalDialog .modal-header").find("[data-fa-i2svg]").addClass(icon);
$("#modalTitle").html(item.uri);
});
} else {
document.querySelector("#editor").innerHTML = rspamd.escapeHTML(data[0].data);
}

$("#modalDialog").modal("show");
},
errorMessage: "Cannot receive maps data",
server: (checked_server === "All SERVERS") ? "local" : checked_server
});
return false;
});
$("#modalDialog").on("hidden.bs.modal", function () {
if (editor[mode].codejar) {
jar.destroy();
$(".codejar-wrap").remove();
} else {
$("#editor").remove();
}
});
var icon = "fa-edit";
if (item.editable === false || rspamd.read_only) {
$("#editor").attr(editor[mode].readonly_attr);
icon = "fa-eye";
$("#modalSaveGroup").hide();
} else {
$("#modalSaveGroup").show();
}
$("#modalDialog .modal-header").find("[data-fa-i2svg]").addClass(icon);
$("#modalTitle").html(item.uri);

$("#saveActionsBtn").on("click", function () {
ui.saveActions(rspamd);
});
$("#saveActionsClusterBtn").on("click", function () {
ui.saveActions(rspamd, "All SERVERS");
$("#modalDialog").modal("show");
},
errorMessage: "Cannot receive maps data",
server: (checked_server === "All SERVERS") ? "local" : checked_server
});

function saveMap(server) {
rspamd.query("savemap", {
success: function () {
rspamd.alertMessage("alert-success", "Map data successfully saved");
$("#modalDialog").modal("hide");
},
errorMessage: "Save map error",
method: "POST",
headers: {
Map: $("#editor").data("id"),
},
params: {
data: editor[mode].codejar ? jar.toString() : $("#editor").val(),
dataType: "text",
},
server: server
});
return false;
});
$("#modalDialog").on("hidden.bs.modal", function () {
if (editor[mode].codejar) {
jar.destroy();
$(".codejar-wrap").remove();
} else {
$("#editor").remove();
}
$("#modalSave").on("click", function () {
saveMap();
});
$("#modalSaveAll").on("click", function () {
saveMap("All SERVERS");
});

$("#saveActionsBtn").on("click", function () {
ui.saveActions();
});
$("#saveActionsClusterBtn").on("click", function () {
ui.saveActions("All SERVERS");
});

function saveMap(server) {
rspamd.query("savemap", {
success: function () {
rspamd.alertMessage("alert-success", "Map data successfully saved");
$("#modalDialog").modal("hide");
},
errorMessage: "Save map error",
method: "POST",
headers: {
Map: $("#editor").data("id"),
},
params: {
data: editor[mode].codejar ? jar.toString() : $("#editor").val(),
dataType: "text",
},
server: server
});
};
}
$("#modalSave").on("click", function () {
saveMap();
});
$("#modalSaveAll").on("click", function () {
saveMap("All SERVERS");
});

return ui;
});
36 changes: 17 additions & 19 deletions interface/js/app/graph.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@
THE SOFTWARE.
*/

/* global d3, FooTable */
/* global FooTable */

define(["jquery", "d3evolution", "d3pie", "footable"],
function ($, D3Evolution, D3Pie) {
define(["jquery", "app/rspamd", "d3evolution", "d3pie", "d3", "footable"],
function ($, rspamd, D3Evolution, D3Pie, d3) {
"use strict";

var rrd_pie_config = {
Expand Down Expand Up @@ -59,7 +59,7 @@ define(["jquery", "d3evolution", "d3pie", "footable"],
var ui = {};
var prevUnit = "msg/s";

ui.draw = function (rspamd, graphs, tables, neighbours, checked_server, type) {
ui.draw = function (graphs, neighbours, checked_server, type) {
var graph_options = {
title: "Rspamd throughput",
width: 1060,
Expand Down Expand Up @@ -126,7 +126,7 @@ define(["jquery", "d3evolution", "d3pie", "footable"],
}

function initSummaryTable(rows, unit) {
tables.rrd_summary = FooTable.init("#rrd-table", {
rspamd.tables.rrd_summary = FooTable.init("#rrd-table", {
sorting: {
enabled: true
},
Expand All @@ -152,8 +152,8 @@ define(["jquery", "d3evolution", "d3pie", "footable"],
}

function drawRrdTable(rows, unit) {
if (Object.prototype.hasOwnProperty.call(tables, "rrd_summary")) {
$.each(tables.rrd_summary.rows.all, function (i, row) {
if (Object.prototype.hasOwnProperty.call(rspamd.tables, "rrd_summary")) {
$.each(rspamd.tables.rrd_summary.rows.all, function (i, row) {
row.val(rows[i], false, true);
});
} else {
Expand Down Expand Up @@ -199,6 +199,7 @@ define(["jquery", "d3evolution", "d3pie", "footable"],
graphs.graph = initGraph();
}


rspamd.query("graph", {
success: function (req_data) {
var data = null;
Expand Down Expand Up @@ -243,19 +244,16 @@ define(["jquery", "d3evolution", "d3pie", "footable"],
});
};

ui.setup = function (rspamd) {
// Handling mouse events on overlapping elements
$("#rrd-pie").mouseover(function () {
$("#rrd-pie,#rrd-pie-tooltip").css("z-index", "200");
$("#rrd-table_toggle").css("z-index", "300");
});
$("#rrd-table_toggle").mouseover(function () {
$("#rrd-pie,#rrd-pie-tooltip").css("z-index", "0");
$("#rrd-table_toggle").css("z-index", "0");
});

return rspamd.getSelector("selData");
};
// Handling mouse events on overlapping elements
$("#rrd-pie").mouseover(function () {
$("#rrd-pie,#rrd-pie-tooltip").css("z-index", "200");
$("#rrd-table_toggle").css("z-index", "300");
});
$("#rrd-table_toggle").mouseover(function () {
$("#rrd-pie,#rrd-pie-tooltip").css("z-index", "0");
$("#rrd-table_toggle").css("z-index", "0");
});

return ui;
});

0 comments on commit 34843a2

Please sign in to comment.