diff --git a/meshview/templates/nodelist.html b/meshview/templates/nodelist.html index 045b780..9522f77 100644 --- a/meshview/templates/nodelist.html +++ b/meshview/templates/nodelist.html @@ -333,33 +333,21 @@ document.addEventListener("DOMContentLoaded", async function() { const hwMatch = !hwFilter.value || node.hw_model === hwFilter.value; const firmwareMatch = !firmwareFilter.value || node.firmware === firmwareFilter.value; - // Improved search matching that handles null/undefined values properly let searchMatch = true; if (searchTerm) { - searchMatch = false; - // Check long_name - if (node.long_name && typeof node.long_name === 'string' && node.long_name.toLowerCase().includes(searchTerm)) { - searchMatch = true; - } - // Check short_name - if (!searchMatch && node.short_name && typeof node.short_name === 'string' && node.short_name.toLowerCase().includes(searchTerm)) { - searchMatch = true; - } - // Check node_id (case-insensitive) - if (!searchMatch && node.node_id != null && String(node.node_id).toLowerCase().includes(searchTerm)) { - searchMatch = true; - } - // Check id (case-insensitive) - if (!searchMatch && node.id != null && String(node.id).toLowerCase().includes(searchTerm)) { - searchMatch = true; - } + searchMatch = + (node.long_name && node.long_name.toLowerCase().includes(searchTerm)) || + (node.short_name && node.short_name.toLowerCase().includes(searchTerm)) || + (node.node_id != null && String(node.node_id).toLowerCase().includes(searchTerm)) || + (node.id != null && String(node.id).toLowerCase().includes(searchTerm)); } - const favMatch = !showOnlyFavorites || isFavorite(n.node_id); + const favMatch = !showOnlyFavorites || isFavorite(node.node_id); - return roleMatch && channelMatch && hwMatch && fwMatch && searchMatch && favMatch; + return roleMatch && channelMatch && hwMatch && firmwareMatch && searchMatch && favMatch; }); + filtered = sortNodes(filtered, sortColumn, sortAsc); renderTable(filtered);