]> source.dussan.org Git - rspamd.git/commitdiff
[WebUI] Fix history table vanishing 4661/head
authormoisseev <moiseev@mezonplus.ru>
Wed, 25 Oct 2023 10:14:38 +0000 (13:14 +0300)
committermoisseev <moiseev@mezonplus.ru>
Wed, 25 Oct 2023 10:14:38 +0000 (13:14 +0300)
on repeated rows per page input

.eslintrc.json
interface/js/app/rspamd.js

index f0856b782b45b47da98a01394ddf9feba35afd2d..a2d754d5d371b1e1c9c33e3aa8d673b20f993581 100644 (file)
@@ -28,7 +28,7 @@
         "line-comment-position": "off",
         "logical-assignment-operators": ["error", "never"],
         "max-params": ["warn", 6],
-        "max-statements": ["warn", 44],
+        "max-statements": ["warn", 50],
         "max-statements-per-line": ["error", { "max": 2 }],
         "multiline-comment-style": "off",
         "multiline-ternary": ["error", "always-multiline"],
index 59a4a4d1721027f1b33c190be31d43e71463cf6d..eca4a7dfeaa5cd0f7425c9632b5147a621881db3 100644 (file)
@@ -59,6 +59,8 @@ function ($, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_config,
     var neighbours = []; // list of clusters
     var checked_server = "All SERVERS";
     var timer_id = [];
+    let pageSizeTimerId = null;
+    let pageSizeInvocationCounter = 0;
     var locale = (localStorage.getItem("selected_locale") === "custom") ? localStorage.getItem("custom_locale") : null;
     var selData = null; // Graph's dataset selector state
 
@@ -261,15 +263,26 @@ function ($, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_config,
         sessionStorage.setItem("Password", password);
     }
 
-    function set_page_size(table, page_size, callback) {
+    function set_page_size(table, page_size, changeTablePageSize) {
         var n = parseInt(page_size, 10); // HTML Input elements return string representing a number
-        if (n !== ui.page_size[table] && n > 0) {
+        if (n > 0) {
             ui.page_size[table] = n;
-            if (callback) {
-                return callback(n);
+
+            if (changeTablePageSize &&
+                $("#historyTable_" + table + " tbody").is(":parent")) { // Table is not empty
+
+                clearTimeout(pageSizeTimerId);
+                const t = FooTable.get("#historyTable_" + table);
+                if (t) {
+                    pageSizeInvocationCounter = 0;
+                    // Wait for input finish
+                    pageSizeTimerId = setTimeout(() => t.pageSize(n), 1000);
+                } else if (++pageSizeInvocationCounter < 10) {
+                    // Wait for FooTable instance ready
+                    pageSizeTimerId = setTimeout(() => set_page_size(table, n, true), 1000);
+                }
             }
         }
-        return null;
     }
 
     function sort_symbols(o, compare_function) {
@@ -753,9 +766,7 @@ function ($, visibility, NProgress, stickyTabs, tab_stat, tab_graph, tab_config,
             var order = this.value;
             change_symbols_order(order);
         });
-        $("#" + table + "_page_size").change(function () {
-            set_page_size(table, this.value, function (n) { tables[table].pageSize(n); });
-        });
+        $("#" + table + "_page_size").change((e) => set_page_size(table, e.target.value, true));
         $(document).on("click", ".btn-sym-order-" + table + " input", function () {
             var order = this.value;
             $("#selSymOrder_" + table).val(order);