Compare commits

...

2 commits

Author SHA1 Message Date
Ionys
d0d03c05d6 fix(monitors search): Correctly handle null/undefined/empty values. Also optimize a bit search tags by replacing .find with .some.
Thanks @homelab-alpha
2024-12-22 11:24:36 +01:00
Ionys
1e0342949f feat(monitors search): Use regex instead of LowerCase
Except with less than 20 monitors, regex seems faster.
2024-12-22 10:40:33 +01:00

View file

@ -324,14 +324,21 @@ export default {
// finds monitor name, tag name or tag value // finds monitor name, tag name or tag value
let searchTextMatch = true; let searchTextMatch = true;
if (this.searchText !== "") { if (this.searchText !== "") {
const loweredSearchText = this.searchText.toLowerCase(); try {
const regex = new RegExp(this.searchText, "i"); // "i" for case-insensitive matching
const safeRegexTest = (str) => str && regex.test(str);
searchTextMatch = searchTextMatch =
monitor.name.toLowerCase().includes(loweredSearchText) regex.test(monitor.name) ||
|| monitor.url?.toLowerCase().includes(loweredSearchText) safeRegexTest(monitor.url) ||
|| monitor.hostname?.toLowerCase().includes(loweredSearchText) safeRegexTest(monitor.hostname) ||
|| monitor.dns_resolve_server?.toLowerCase().includes(loweredSearchText) safeRegexTest(monitor.dns_resolve_server) ||
|| monitor.tags.find(tag => tag.name.toLowerCase().includes(loweredSearchText) monitor.tags.some(tag => regex.test(tag.name) || safeRegexTest(tag.value));
|| tag.value?.toLowerCase().includes(loweredSearchText)); } catch (e) {
console.error("Invalid regex pattern:", e);
searchTextMatch = false;
}
} }
// filter by status // filter by status