From e64001cddc1ae4552b0276cc4c5aa483f207debd Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Mon, 16 Nov 2020 15:20:48 -0800 Subject: [PATCH] Accept primitive expressions in filter component --- lib/ui/db.ts | 4 ++-- ui/filter-component.ts | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/ui/db.ts b/lib/ui/db.ts index 187e637..e32525e 100644 --- a/lib/ui/db.ts +++ b/lib/ui/db.ts @@ -123,7 +123,7 @@ export function query( } q = mongodbFunctions.filterToMongoQuery(filter); - } else if (filter != null && !filter) { + } else if (!filter) { return Promise.resolve([]); } @@ -218,7 +218,7 @@ export function count(resource: string, filter: Expression): Promise { else if (resource === "faults") filter = mongodbFunctions.processFaultsFilter(filter); q = mongodbFunctions.filterToMongoQuery(filter); - } else if (filter != null && !filter) { + } else if (!filter) { return Promise.resolve(0); } diff --git a/ui/filter-component.ts b/ui/filter-component.ts index 769b6f9..d375bd6 100644 --- a/ui/filter-component.ts +++ b/ui/filter-component.ts @@ -44,8 +44,12 @@ const getAutocomplete = memoize((resource) => { function validateQuery(q: Expression): void { q = normalize(q); - if (Array.isArray(q) && q[0] === "CASE") q = ["AND", ...q.slice(1)]; - filterToMongoQuery(q); + if (Array.isArray(q) && q[0] === "CASE") { + q = q.slice(1).filter((a) => Array.isArray(a)); + if (q.length > 1) q = ["AND", ...q]; + else q = q[0]; + } + if (Array.isArray(q)) filterToMongoQuery(q); } function parseFilter(resource, f): Expression {