From 32c4bd51747de281957d7bbcd3f90879270ad6fa Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Fri, 31 Jan 2020 15:38:36 -0300 Subject: [PATCH] 15781: Uses 'contains' filter operator to search for properties. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- src/services/api/filter-builder.test.ts | 6 ++++++ src/services/api/filter-builder.ts | 4 ++++ src/store/search-bar/search-bar-actions.ts | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/services/api/filter-builder.test.ts b/src/services/api/filter-builder.test.ts index d9656934..a4e2b229 100644 --- a/src/services/api/filter-builder.test.ts +++ b/src/services/api/filter-builder.test.ts @@ -36,6 +36,12 @@ describe("FilterBuilder", () => { ).toEqual(`["etag","ilike","%etagValue%"]`); }); + it("should add 'contains' rule", () => { + expect( + filters.addContains("properties.someProp", "someValue").getFilters() + ).toEqual(`["properties.someProp","contains","someValue"]`); + }); + it("should add 'is_a' rule", () => { expect( filters.addIsA("etag", "etagValue").getFilters() diff --git a/src/services/api/filter-builder.ts b/src/services/api/filter-builder.ts index 102ff62c..489f7b89 100644 --- a/src/services/api/filter-builder.ts +++ b/src/services/api/filter-builder.ts @@ -25,6 +25,10 @@ export class FilterBuilder { return this.addCondition(field, "ilike", value, "%", "%", resourcePrefix); } + public addContains(field: string, value?: string, resourcePrefix?: string) { + return this.addCondition(field, "contains", value, "", "", resourcePrefix); + } + public addIsA(field: string, value?: string | string[], resourcePrefix?: string) { return this.addCondition(field, "is_a", value, "", "", resourcePrefix); } diff --git a/src/store/search-bar/search-bar-actions.ts b/src/store/search-bar/search-bar-actions.ts index b91dc9d1..c12fcbe4 100644 --- a/src/store/search-bar/search-bar-actions.ts +++ b/src/store/search-bar/search-bar-actions.ts @@ -353,8 +353,8 @@ export const queryToFilters = (query: string) => { data.properties.forEach(p => { if (p.value) { filter - .addILike(`properties.${p.key}`, p.value, GroupContentsResourcePrefix.PROJECT) - .addILike(`properties.${p.key}`, p.value, GroupContentsResourcePrefix.COLLECTION); + .addContains(`properties.${p.key}`, p.value, GroupContentsResourcePrefix.PROJECT) + .addContains(`properties.${p.key}`, p.value, GroupContentsResourcePrefix.COLLECTION); } filter.addExists(p.key); }); -- 2.30.2