From 377a7eda985bdd19b4996e25ebd292cef7b7f595 Mon Sep 17 00:00:00 2001 From: rajchales-monito Date: Thu, 30 Jul 2026 13:57:13 +0200 Subject: [PATCH] Separate bot filter settings --- public/admin.html | 14 ++++++++++---- public/admin.js | 23 +++++++++++++++-------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/public/admin.html b/public/admin.html index 2738339..f6cb6a5 100644 --- a/public/admin.html +++ b/public/admin.html @@ -183,8 +183,6 @@
Signalizace navstevniku

Zelena znamena aktivni. Po necinosti se prepne na oranzovou a po dalsim limitu na sedou.

- -
+ Oranzova je cas mezi zelenou a sedou. + +
+
+ Bot filtr +

Filtr skryje roboticke navstevy jen v BO panelu. Web ani chat zakaznikum neblokuje.

+ +
- Oranzova je cas mezi zelenou a sedou. - + Hromadny filtr: stejna IP, zeme, zarizeni a direct vstup. +
BO zvuk diff --git a/public/admin.js b/public/admin.js index 02bc076..3fa4084 100644 --- a/public/admin.js +++ b/public/admin.js @@ -78,6 +78,7 @@ $("#clusterBotFilterEnabled").addEventListener("change", markPresenceSettingsDir $("#clusterBotCount").addEventListener("input", markPresenceSettingsDirty); $("#clusterBotWindowSeconds").addEventListener("input", markPresenceSettingsDirty); $("#savePresenceSettings").addEventListener("click", savePresenceSettings); +$("#saveBotFilterSettings").addEventListener("click", savePresenceSettings); $("#adminSoundToggle").addEventListener("click", () => { setAdminSoundMuted(!state.soundMuted); }); @@ -772,12 +773,14 @@ function renderPresenceSettings(settings) { $("#clusterBotFilterEnabled").checked = normalized.clusterBotFilterEnabled; $("#clusterBotCount").value = normalized.clusterBotCount; $("#clusterBotWindowSeconds").value = normalized.clusterBotWindowSeconds; - setPresenceStatus(presenceStatusText(normalized, "Oranzova")); + setPresenceStatus(`Oranzova: ${normalized.activeSeconds}-${normalized.offlineSeconds} s necinosti.`); + setBotFilterStatus(botFilterStatusText(normalized)); } function markPresenceSettingsDirty() { const normalized = currentPresenceSettingsFromForm(); - setPresenceStatus(presenceStatusText(normalized, "Neulozeno. Oranzova")); + setPresenceStatus(`Neulozeno. Oranzova bude ${normalized.activeSeconds}-${normalized.offlineSeconds} s.`); + setBotFilterStatus(`Neulozeno. ${botFilterStatusText(normalized)}`); } async function savePresenceSettings() { @@ -790,7 +793,8 @@ async function savePresenceSettings() { renderPresenceSettings(state.site.settings.adminPresence || normalized); state.visitorRenderKey = ""; await Promise.all([loadConversations(), loadVisitors()]); - setPresenceStatus(presenceStatusText(normalized, "Ulozeno. Oranzova")); + setPresenceStatus(`Ulozeno. Oranzova: ${normalized.activeSeconds}-${normalized.offlineSeconds} s necinosti.`); + setBotFilterStatus(`Ulozeno. ${botFilterStatusText(normalized)}`); } function normalizePresenceSettings(value = {}) { @@ -815,11 +819,10 @@ function currentPresenceSettingsFromForm() { }); } -function presenceStatusText(settings, prefix) { - const cluster = settings.clusterBotFilterEnabled - ? ` Hromadny filtr: ${settings.clusterBotCount} navstev / ${settings.clusterBotWindowSeconds} s.` - : " Hromadny filtr vypnuty."; - return `${prefix}: ${settings.activeSeconds}-${settings.offlineSeconds} s necinosti.${cluster}`; +function botFilterStatusText(settings) { + return settings.clusterBotFilterEnabled + ? `Hromadny filtr: ${settings.clusterBotCount} navstev / ${settings.clusterBotWindowSeconds} s.` + : "Hromadny filtr vypnuty."; } function clampNumber(value, min, max, fallback) { @@ -832,6 +835,10 @@ function setPresenceStatus(message) { $("#presenceStatus").textContent = message; } +function setBotFilterStatus(message) { + $("#botFilterStatus").textContent = message; +} + function renderTelegramSettings(settings) { $("#telegramEnabled").checked = Boolean(settings.enabled); $("#telegramOperatorName").value = settings.operatorName || "Alex";