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