added simple loose wildcard search term support in the Admin UI

This commit is contained in:
Gani Georgiev
2023-04-14 14:37:51 +03:00
parent 25769e971a
commit 53c735d00b
36 changed files with 182 additions and 130 deletions
+33 -1
View File
@@ -1424,7 +1424,7 @@ export default class CommonHelper {
*/
static getAllCollectionIdentifiers(collection, prefix = "") {
if (!collection) {
return;
return [];
}
let result = [prefix + "id"];
@@ -1655,4 +1655,36 @@ export default class CommonHelper {
return hasChange ? CommonHelper.buildIndex(parsed) : idx;
}
/**
* Normalizes the search filter by converting a simple search term into
* a wildcard filter expression using the provided fallback search fields.
*
* If searchTerm is already an expression it is returned without changes.
*
* @param {String} searchTerm
* @param {Array} fallbackFields
* @return {String}
*/
static normalizeSearchFilter(searchTerm, fallbackFields) {
searchTerm = (searchTerm || "").trim();
if (!searchTerm || !fallbackFields.length) {
return searchTerm;
}
const opChars = ["=", "!=", "~", "!~", ">", ">=", "<", "<="];
// loosely check if it is already a filter expression
for (const op of opChars) {
if (searchTerm.includes(op)) {
return searchTerm;
}
}
searchTerm = isNaN(searchTerm) && searchTerm != "true" && searchTerm != "false"
? `"${searchTerm.replace(/^[\"\'\`]|[\"\'\`]$/gm, "")}"`
: searchTerm;
return fallbackFields.map((f) => `${f}~${searchTerm}`).join("||");
}
}