Skip to content

Commit 95d108e

Browse files
Merge pull request #1002 from ReliefApplications/2.x.x
2.x.x
2 parents 05609e5 + 31a8544 commit 95d108e

File tree

5 files changed

+28
-19
lines changed

5 files changed

+28
-19
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
## [2.7.1](https://github.com/ReliefApplications/ems-backend/compare/v2.7.0...v2.7.1) (2024-03-04)
2+
3+
4+
### Bug Fixes
5+
6+
* now working nested fields in reference data aggregation ([#993](https://github.com/ReliefApplications/ems-backend/issues/993)) ([0603afc](https://github.com/ReliefApplications/ems-backend/commit/0603afcf16f370fc29405622afbf1bd081aee10d))
7+
18
# [2.7.0](https://github.com/ReliefApplications/ems-backend/compare/v2.6.5...v2.7.0) (2024-02-23)
29

310

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ems-backend",
3-
"version": "2.7.0",
3+
"version": "2.7.1",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

src/routes/gis/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import i18next from 'i18next';
1111
import mongoose from 'mongoose';
1212
import { logger } from '@services/logger.service';
1313
import axios from 'axios';
14-
import { isEqual, get, omit } from 'lodash';
14+
import { isEqual, get, omit, isEmpty } from 'lodash';
1515
import turf, { Feature, booleanPointInPolygon } from '@turf/turf';
1616
import dataSources, { CustomAPI } from '@server/apollo/dataSources';
1717
import { getAdmin0Polygons } from '@utils/gis/getCountryPolygons';
@@ -392,7 +392,7 @@ router.get('/feature', async (req, res) => {
392392
});
393393
} else if (referenceData.type === 'static') {
394394
let data = referenceData.data || [];
395-
if (contextFilters) {
395+
if (contextFilters && !isEmpty(contextFilters)) {
396396
data = data.filter((x) => filterReferenceData(x, contextFilters));
397397
}
398398
await getFeatures(
@@ -421,7 +421,7 @@ router.get('/feature', async (req, res) => {
421421
apiConfiguration,
422422
graphQLVariables
423423
)) || [];
424-
if (contextFilters) {
424+
if (contextFilters && !isEmpty(contextFilters)) {
425425
data = data.filter((x) => filterReferenceData(x, contextFilters));
426426
}
427427
await getFeatures(

src/schema/query/referenceDataAggregation.query.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -179,21 +179,21 @@ const procOperator = (data: any, operator) => {
179179
switch (operator.operator) {
180180
case 'sum':
181181
return {
182-
sum: sum(data.map((element) => Number(element[operator.field]))),
182+
sum: sum(data.map((element) => Number(get(element, operator.field)))),
183183
};
184184
case 'avg':
185185
return {
186-
avg: mean(data.map((element) => Number(element[operator.field]))),
186+
avg: mean(data.map((element) => Number(get(element, operator.field)))),
187187
};
188188
case 'count':
189189
return { count: size(data) };
190190
case 'max':
191191
return {
192-
max: max(data.map((element) => Number(element[operator.field]))),
192+
max: max(data.map((element) => Number(get(element, operator.field)))),
193193
};
194194
case 'min':
195195
return {
196-
min: min(data.map((element) => Number(element[operator.field]))),
196+
min: min(data.map((element) => Number(get(element, operator.field)))),
197197
};
198198
case 'last':
199199
return {
@@ -223,8 +223,8 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
223223
(operator) => operator.expression
224224
);
225225
const keysToGroupBy = pipelineStep.form.groupBy.map((key) => key.field);
226-
data = groupBy(data, (dataKey) =>
227-
keysToGroupBy.map((key) => dataKey[key])
226+
data = groupBy(data, (item) =>
227+
keysToGroupBy.map((key) => get(item, key))
228228
);
229229
for (const key in data) {
230230
let supplementaryFields: any;
@@ -276,18 +276,18 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
276276
switch (elt.expression.operator) {
277277
case 'add':
278278
data.map((obj: any) => {
279-
obj[elt.name] = obj[elt.expression.field];
279+
obj[elt.name] = get(obj, elt.expression.field);
280280
});
281281
break;
282282
case 'month':
283283
data.map((obj: any) => {
284284
try {
285285
const month =
286-
new Date(obj[elt.expression.field]).getMonth() + 1;
286+
new Date(get(obj, elt.expression.field)).getMonth() + 1;
287287
const monthAsString =
288288
month < 10 ? '0' + month : month.toString();
289289
const dateWithMonth =
290-
new Date(obj[elt.expression.field]).getFullYear() +
290+
new Date(get(obj, elt.expression.field)).getFullYear() +
291291
'-' +
292292
monthAsString;
293293
obj[elt.name] = dateWithMonth;
@@ -299,7 +299,9 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
299299
case 'year':
300300
data.map((obj: any) => {
301301
try {
302-
const year = new Date(obj[elt.expression.field]).getFullYear();
302+
const year = new Date(
303+
get(obj, elt.expression.field)
304+
).getFullYear();
303305
const yearAsString = year.toString();
304306
obj[elt.name] = yearAsString;
305307
} catch {
@@ -310,7 +312,7 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
310312
case 'day':
311313
data.map((obj: any) => {
312314
try {
313-
const date = new Date(obj[elt.expression.field]);
315+
const date = new Date(get(obj, elt.expression.field));
314316
const dayAsString =
315317
date.getFullYear() +
316318
'-' +
@@ -326,7 +328,7 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
326328
case 'week':
327329
data.map((obj: any) => {
328330
try {
329-
const date = new Date(obj[elt.expression.field]);
331+
const date = new Date(get(obj, elt.expression.field));
330332
const firstDayOfYear = new Date(date.getFullYear(), 0, 1);
331333
const pastDaysOfYear =
332334
(date.valueOf() - firstDayOfYear.valueOf()) / 86400000;
@@ -342,7 +344,7 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
342344
break;
343345
case 'multiply':
344346
data.map((obj: any) => {
345-
obj[elt.name] = obj[elt.expression.field];
347+
obj[elt.name] = get(obj, elt.expression.field);
346348
});
347349
break;
348350
}

0 commit comments

Comments
 (0)