Compare commits

...

8 commits

Author SHA1 Message Date
Ionys
b64e546bc9
Merge 012256b297 into 7dc6191b0a 2025-01-24 17:49:47 +00:00
Ionys
012256b297
Merge branch 'master' into feat-search-with-url 2024-12-23 12:09:25 +01:00
Ionys
c0d7171dbf fix(monitors search): Make sure regex expressions are escaped.
This can be reverted if the search should be regex friendly, but for the moment, it's not the case.
Thanks @homelab-alpha!
2024-12-23 12:08:35 +01:00
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
Ionys
c486e5bff9
Merge branch 'master' into feat-search-with-url 2024-12-21 22:15:48 +01:00
Ionys
08a45637c8 feat(search): Enhance search by filtering with hostname and dns_resolve_server 2024-12-14 22:51:19 +01:00
Ionys
39da894598 feat(search): Enhance search by filtering by URLs 2024-12-14 22:43:16 +01:00

View file

@ -324,11 +324,25 @@ 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.tags.find(tag => tag.name.toLowerCase().includes(loweredSearchText)
|| tag.value?.toLowerCase().includes(loweredSearchText));
try {
// Escape special characters for use in the regular expression
const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const escapedSearchText = escapeRegExp(this.searchText);
const regex = new RegExp(escapedSearchText, "i");
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