From 6b13367e1629451576e2f4df8f0bb78bb4d3962e Mon Sep 17 00:00:00 2001 From: limad <35463455+limad@users.noreply.github.com> Date: Sat, 18 Apr 2026 23:56:22 +0200 Subject: [PATCH] Improve log search with multi-term and exclusion support Refactor search functionality to handle multiple terms and 'not' conditions. --- desktop/js/log.js | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/desktop/js/log.js b/desktop/js/log.js index bd7e191a60..c57d1dcb7f 100644 --- a/desktop/js/log.js +++ b/desktop/js/log.js @@ -37,28 +37,23 @@ if (!jeeFrontEnd.log) { //searching document.getElementById('in_searchLogFilter')?.addEventListener('keyup', function(event) { - var search = event.target.value - if (search == '') { + var raw = event.target.value + if (raw == '') { jeeP.logListButtons.seen() return } - var not = search.startsWith(":not(") - if (not) { - search = search.replace(':not(', '') - } - search = jeedomUtils.normTextLower(search) + + var terms = raw.split(',').map(t => t.trim()).filter(t => t.length > 0) + jeeP.logListButtons.unseen() - var match, text jeeP.logListButtons.forEach(_bt => { - match = false - text = jeedomUtils.normTextLower(_bt.textContent) - if (text.includes(search)) { - match = true - } - if (not) match = !match - if (match) { - _bt.seen() - } + var text = jeedomUtils.normTextLower(_bt.textContent) + var match = terms.some(term => { + var not = term.startsWith(':not(') + var search = jeedomUtils.normTextLower(not ? term.slice(5, -1) : term) + return not ? !text.includes(search) : text.includes(search) + }) + if (match) _bt.seen() }) })