Skip to content

Commit 843c5c0

Browse files
committed
feat: use context filter in ref data aggregation
1 parent 19b21bd commit 843c5c0

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

src/schema/query/referenceDataAggregation.query.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,16 @@ const applyFilters = (data: any, filter: any): boolean => {
5353

5454
if (filter.field && filter.operator) {
5555
const value = get(data, filter.field);
56+
let intValue: number;
57+
try {
58+
intValue = Number(filter.value);
59+
} catch {}
5660
switch (filter.operator) {
5761
case 'eq':
58-
return eq(value, filter.value);
62+
return eq(value, String(filter.value)) || eq(value, intValue);
5963
case 'ne':
6064
case 'neq':
61-
return !eq(value, filter.value);
65+
return !(eq(value, String(filter.value)) || eq(value, intValue));
6266
case 'gt':
6367
return !isNil(value) && value > filter.value;
6468
case 'gte':
@@ -270,7 +274,7 @@ export default {
270274
// sourceFields and pipeline from args have priority over current aggregation ones
271275
// for the aggregation preview feature on aggregation builder
272276
const sourceFields = args.sourceFields ?? aggregation.sourceFields;
273-
const pipeline = args.pipeline ?? aggregation.pipeline;
277+
const pipeline = args.pipeline ?? aggregation.pipeline ?? [];
274278
// Build the source fields step
275279
if (sourceFields && sourceFields.length && pipeline) {
276280
try {
@@ -302,6 +306,12 @@ export default {
302306
}
303307
}
304308
}
309+
if (args.contextFilters) {
310+
pipeline.unshift({
311+
type: 'filter',
312+
form: args.contextFilters,
313+
});
314+
}
305315
// Build the pipeline
306316
if (args.sortField && args.sortOrder) {
307317
pipeline.push({

0 commit comments

Comments
 (0)