From 1e78ea2c52df74736b3bcee32eab7ac5ec4881ed Mon Sep 17 00:00:00 2001 From: Aaron Axvig Date: Mon, 16 Mar 2026 13:11:59 -0500 Subject: [PATCH] Search improvement --- web/index.html | 2 +- web/js/ui.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/index.html b/web/index.html index 17229ca..ff5c299 100644 --- a/web/index.html +++ b/web/index.html @@ -21,7 +21,7 @@ type="text" id="issue-search" class="issue-search" - placeholder="Filter displayed issues..." + placeholder="Filter issues (all words, any order)..." autocomplete="off" >

Type

diff --git a/web/js/ui.js b/web/js/ui.js index 983eb64..63906bc 100644 --- a/web/js/ui.js +++ b/web/js/ui.js @@ -1,6 +1,6 @@ const TYPE_FILTER_KEY = 'bugmedley.ui.typeFilters.v1'; -let issueSearchTerm = ''; +let issueSearchTerms = []; let issueTypeFilters = loadTypeFilters(); function loadTypeFilters() { @@ -38,7 +38,7 @@ export function applyIssueSearchFilter() { issueItems.forEach(item => { const itemText = item.textContent.toLowerCase(); - const matches = issueSearchTerm === '' || itemText.includes(issueSearchTerm); + const matches = issueSearchTerms.length === 0 || issueSearchTerms.every(term => itemText.includes(term)); if (item.tagName === 'TR') { item.style.display = matches ? 'table-row' : 'none'; } else { @@ -52,7 +52,7 @@ export function applyIssueSearchFilter() { function initializeIssueSearch() { const searchInput = document.getElementById('issue-search'); searchInput.addEventListener('input', () => { - issueSearchTerm = searchInput.value.trim().toLowerCase(); + issueSearchTerms = searchInput.value.trim().toLowerCase().split(/\s+/).filter(Boolean); applyIssueSearchFilter(); }); }