diff options
author | moisseev <moiseev@mezonplus.ru> | 2023-12-29 13:32:37 +0300 |
---|---|---|
committer | moisseev <moiseev@mezonplus.ru> | 2023-12-29 13:32:37 +0300 |
commit | 9f5b7b4264eed536c127633b42a30cbe30cc2859 (patch) | |
tree | 153f6b23518a911b6d043740b5407cbd7e41744f /interface/js | |
parent | 001a14d89343d99a7cc6524b1eb2be00c177e93b (diff) | |
download | rspamd-9f5b7b4264eed536c127633b42a30cbe30cc2859.tar.gz rspamd-9f5b7b4264eed536c127633b42a30cbe30cc2859.zip |
[Minor] Combine history table column definitions
Diffstat (limited to 'interface/js')
-rw-r--r-- | interface/js/app/history.js | 118 | ||||
-rw-r--r-- | interface/js/app/libft.js | 130 | ||||
-rw-r--r-- | interface/js/app/upload.js | 58 |
3 files changed, 132 insertions, 174 deletions
diff --git a/interface/js/app/history.js b/interface/js/app/history.js index 58d835fba..f2b8b8e46 100644 --- a/interface/js/app/history.js +++ b/interface/js/app/history.js @@ -58,118 +58,6 @@ define(["jquery", "app/common", "app/libft", "d3", "footable"], return {items: items}; } - function columns_v2() { - return [{ - name: "id", - title: "ID", - style: { - minWidth: 130, - overflow: "hidden", - textOverflow: "ellipsis", - wordBreak: "break-all", - whiteSpace: "normal" - } - }, { - name: "ip", - title: "IP address", - breakpoints: "xs sm md", - style: { - "minWidth": "calc(7.6em + 8px)", - "word-break": "break-all" - } - }, { - name: "sender_mime", - title: "[Envelope From] From", - breakpoints: "xs sm md", - style: { - "minWidth": 100, - "maxWidth": 200, - "word-wrap": "break-word" - } - }, { - name: "rcpt_mime_short", - title: "[Envelope To] To/Cc/Bcc", - breakpoints: "xs sm md", - filterable: false, - classes: "d-none d-xl-table-cell", - style: { - "minWidth": 100, - "maxWidth": 200, - "word-wrap": "break-word" - } - }, { - name: "rcpt_mime", - title: "[Envelope To] To/Cc/Bcc", - breakpoints: "all", - style: {"word-wrap": "break-word"} - }, { - name: "subject", - title: "Subject", - breakpoints: "xs sm md", - style: { - "word-break": "break-all", - "minWidth": 150 - } - }, { - name: "action", - title: "Action", - style: {minwidth: 82} - }, { - name: "score", - title: "Score", - style: { - "maxWidth": 110, - "text-align": "right", - "white-space": "nowrap" - }, - sortValue: function (val) { return Number(val.options.sortValue); } - }, { - name: "symbols", - title: "Symbols" + - '<div class="sym-order-toggle">' + - '<br><span style="font-weight:normal;">Sort by:</span><br>' + - '<div class="btn-group btn-group-xs btn-sym-order-history">' + - '<label type="button" class="btn btn-outline-secondary btn-sym-history-magnitude">' + - '<input type="radio" class="btn-check" value="magnitude">Magnitude</label>' + - '<label type="button" class="btn btn-outline-secondary btn-sym-history-score">' + - '<input type="radio" class="btn-check" value="score">Value</label>' + - '<label type="button" class="btn btn-outline-secondary btn-sym-history-name">' + - '<input type="radio" class="btn-check" value="name">Name</label>' + - "</div>" + - "</div>", - breakpoints: "all", - style: {width: 550, maxWidth: 550} - }, { - name: "size", - title: "Msg size", - breakpoints: "xs sm md", - style: {minwidth: 50}, - formatter: d3.format(".3~s") - }, { - name: "time_real", - title: "Scan time", - breakpoints: "xs sm md", - style: {maxWidth: 72}, - sortValue: function (val) { return Number(val); } - }, { - classes: "history-col-time", - sorted: true, - direction: "DESC", - name: "time", - title: "Time", - sortValue: function (val) { return Number(val.options.sortValue); } - }, { - name: "user", - title: "Authenticated user", - breakpoints: "xs sm md", - style: { - "minWidth": 100, - "maxWidth": 130, - "word-wrap": "break-word" - } - }]; - } - function columns_legacy() { return [{ name: "id", @@ -228,8 +116,8 @@ define(["jquery", "app/common", "app/libft", "d3", "footable"], } const columns = { - 2: columns_v2, - legacy: columns_legacy + 2: libft.columns_v2("history"), + legacy: columns_legacy() }; function process_history_data(data) { @@ -259,7 +147,7 @@ define(["jquery", "app/common", "app/libft", "d3", "footable"], } } - return func(); + return func; } ui.getHistory = function () { diff --git a/interface/js/app/libft.js b/interface/js/app/libft.js index 58262d22f..eab3b6d3a 100644 --- a/interface/js/app/libft.js +++ b/interface/js/app/libft.js @@ -1,7 +1,7 @@ /* global FooTable */ -define(["jquery", "app/common", "footable"], - ($, common) => { +define(["jquery", "app/common", "d3", "footable"], + ($, common, d3) => { "use strict"; const ui = {}; @@ -35,6 +35,132 @@ define(["jquery", "app/common", "footable"], // Public functions + ui.columns_v2 = function (table) { + return [{ + name: "id", + title: "ID", + style: { + minWidth: 130, + overflow: "hidden", + textOverflow: "ellipsis", + wordBreak: "break-all", + whiteSpace: "normal" + } + }, { + name: "ip", + title: "IP address", + breakpoints: "xs sm md", + style: { + "minWidth": "calc(7.6em + 8px)", + "word-break": "break-all" + } + }, { + name: "sender_mime", + title: "[Envelope From] From", + breakpoints: "xs sm md", + style: { + "minWidth": 100, + "maxWidth": 200, + "word-wrap": "break-word" + } + }, { + name: "rcpt_mime_short", + title: "[Envelope To] To/Cc/Bcc", + breakpoints: "xs sm md", + filterable: false, + classes: "d-none d-xl-table-cell", + style: { + "minWidth": 100, + "maxWidth": 200, + "word-wrap": "break-word" + } + }, { + name: "rcpt_mime", + title: "[Envelope To] To/Cc/Bcc", + breakpoints: "all", + style: {"word-wrap": "break-word"} + }, { + name: "subject", + title: "Subject", + breakpoints: "xs sm md", + style: { + "word-break": "break-all", + "minWidth": 150 + } + }, { + name: "action", + title: "Action", + style: {minwidth: 82} + }, { + name: "passthrough_module", + title: '<div title="The module that has set the pre-result">Pass-through module</div>', + breakpoints: "xs sm md" + }, { + name: "score", + title: "Score", + style: { + "maxWidth": 110, + "text-align": "right", + "white-space": "nowrap" + }, + sortValue: function (val) { return Number(val.options.sortValue); } + }, { + name: "symbols", + title: "Symbols" + + '<div class="sym-order-toggle">' + + '<br><span style="font-weight:normal;">Sort by:</span><br>' + + '<div class="btn-group btn-group-xs btn-sym-order-' + table + '">' + + '<label type="button" class="btn btn-outline-secondary btn-sym-' + table + '-magnitude">' + + '<input type="radio" class="btn-check" value="magnitude">Magnitude</label>' + + '<label type="button" class="btn btn-outline-secondary btn-sym-' + table + '-score">' + + '<input type="radio" class="btn-check" value="score">Value</label>' + + '<label type="button" class="btn btn-outline-secondary btn-sym-' + table + '-name">' + + '<input type="radio" class="btn-check" value="name">Name</label>' + + "</div>" + + "</div>", + breakpoints: "all", + style: {width: 550, maxWidth: 550} + }, { + name: "size", + title: "Msg size", + breakpoints: "xs sm md", + style: {minwidth: 50}, + formatter: d3.format(".3~s") + }, { + name: "time_real", + title: "Scan time", + breakpoints: "xs sm md", + style: {maxWidth: 72}, + sortValue: function (val) { return Number(val); } + }, { + classes: "history-col-time", + sorted: true, + direction: "DESC", + name: "time", + title: "Time", + sortValue: function (val) { return Number(val.options.sortValue); } + }, { + name: "user", + title: "Authenticated user", + breakpoints: "xs sm md", + style: { + "minWidth": 100, + "maxWidth": 130, + "word-wrap": "break-word" + } + }].filter((col) => { + switch (table) { + case "history": + return (col.name !== "passthrough_module"); + case "scan": + return ["ip", "sender_mime", "rcpt_mime_short", "rcpt_mime", "subject", "size", "user"] + .every((name) => col.name !== name); + default: + return null; + } + }); + }; + ui.set_page_size = function (table, page_size, changeTablePageSize) { const n = parseInt(page_size, 10); // HTML Input elements return string representing a number if (n > 0) { diff --git a/interface/js/app/upload.js b/interface/js/app/upload.js index e5ddb1c84..546f5cc84 100644 --- a/interface/js/app/upload.js +++ b/interface/js/app/upload.js @@ -73,62 +73,6 @@ define(["jquery", "app/common", "app/libft"], }); } - function columns_v2() { - return [{ - name: "id", - title: "ID", - style: { - minWidth: 130, - overflow: "hidden", - textOverflow: "ellipsis", - wordBreak: "break-all", - whiteSpace: "normal" - } - }, { - name: "action", - title: "Action", - style: {minwidth: 82} - }, { - name: "passthrough_module", - title: '<div title="The module that has set the pre-result">Pass-through module</div>', - breakpoints: "xs sm md" - }, { - name: "score", - title: "Score", - style: {maxWidth: 110}, - sortValue: function (val) { return Number(val.options.sortValue); } - }, { - name: "symbols", - title: "Symbols" + - '<div class="sym-order-toggle">' + - '<br><span style="font-weight:normal;">Sort by:</span><br>' + - '<div class="btn-group btn-group-xs btn-sym-order-scan">' + - '<label type="button" class="btn btn-outline-secondary btn-sym-scan-magnitude">' + - '<input type="radio" class="btn-check" value="magnitude">Magnitude</label>' + - '<label type="button" class="btn btn-outline-secondary btn-sym-scan-score">' + - '<input type="radio" class="btn-check" value="score">Value</label>' + - '<label type="button" class="btn btn-outline-secondary btn-sym-scan-name">' + - '<input type="radio" class="btn-check" value="name">Name</label>' + - "</div>" + - "</div>", - breakpoints: "all", - style: {width: 550, maxWidth: 550} - }, { - name: "time_real", - title: "Scan time", - breakpoints: "xs sm md", - style: {maxWidth: 72}, - sortValue: function (val) { return Number(val); } - }, { - classes: "history-col-time", - sorted: true, - direction: "DESC", - name: "time", - title: "Time", - sortValue: function (val) { return Number(val.options.sortValue); } - }]; - } - function get_server() { const checked_server = common.getSelector("selSrv"); return (checked_server === "All SERVERS") ? "local" : checked_server; @@ -171,7 +115,7 @@ define(["jquery", "app/common", "app/libft"], require(["footable"], () => { // Is there a way to get an event when the table is destroyed? setTimeout(() => { - libft.initHistoryTable(data, items, "scan", columns_v2(), true); + libft.initHistoryTable(data, items, "scan", libft.columns_v2("scan"), true); scrollTop(rows_total); }, 200); }); |