From 9f5b7b4264eed536c127633b42a30cbe30cc2859 Mon Sep 17 00:00:00 2001 From: moisseev Date: Fri, 29 Dec 2023 13:32:37 +0300 Subject: [PATCH] [Minor] Combine history table column definitions --- interface/js/app/history.js | 118 +------------------------------- interface/js/app/libft.js | 130 +++++++++++++++++++++++++++++++++++- 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" + - '
' + - '
Sort by:
' + - '
' + - '' + - '' + - '' + - "
" + - "
", - 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: '
Pass-through module
', + 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" + + '
' + + '
Sort by:
' + + '
' + + '' + + '' + + '' + + "
" + + "
", + 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: '
Pass-through module
', - breakpoints: "xs sm md" - }, { - name: "score", - title: "Score", - style: {maxWidth: 110}, - sortValue: function (val) { return Number(val.options.sortValue); } - }, { - name: "symbols", - title: "Symbols" + - '
' + - '
Sort by:
' + - '
' + - '' + - '' + - '' + - "
" + - "
", - 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); }); -- 2.39.5