From b50a88db969e8f5aac69d764465099c3b7e5556c Mon Sep 17 00:00:00 2001 From: PabloLec Date: Thu, 9 May 2024 18:04:34 +0200 Subject: [PATCH] Add collection criterion value formatting --- test-frontend/src/lib/api/client.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/test-frontend/src/lib/api/client.ts b/test-frontend/src/lib/api/client.ts index ecc6083..cf2c9a8 100644 --- a/test-frontend/src/lib/api/client.ts +++ b/test-frontend/src/lib/api/client.ts @@ -82,8 +82,10 @@ const formatCriteria = (criteria: SearchCriterion[]): SearchCriterion[] => { criterion.value = criterion.value.toString(); } - if (criterion.op?.toLowerCase().includes('like')) { + if (["like", "notLike"].includes(criterion.op?.toLowerCase())) { formatLikeCriterion(criterion); + } else if (["in", "notIn"].includes(criterion.op?.toLowerCase())) { + formatCollectionCriterion(criterion); } if (criterion.subQuery) { @@ -99,4 +101,19 @@ const formatLikeCriterion = (criterion: SearchCriterion): SearchCriterion => { criterion.value = `%${criterion.value}%`; } return criterion; -} \ No newline at end of file +} + +const formatCollectionCriterion = (criterion: SearchCriterion): SearchCriterion => { + const regex = /[\p{L}\p{N}\-.]+/gu; + + if (criterion.value) { + const matches = criterion.value.match(regex); + if (matches && matches.length > 0) { + criterion.value = `[${matches.join(", ")}]`; + } else { + criterion.value = "[]"; + } + } + + return criterion; +}