From cd5114677dc97ba30a4a79fe13904ce20a47a8ba Mon Sep 17 00:00:00 2001 From: Alexis Rico Date: Tue, 15 Feb 2022 20:30:36 +0100 Subject: [PATCH 1/2] Fix 414 with TEIs Signed-off-by: Alexis Rico --- src/data/Dhis2RelationshipTypes.ts | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/data/Dhis2RelationshipTypes.ts b/src/data/Dhis2RelationshipTypes.ts index e075559f..47decebe 100644 --- a/src/data/Dhis2RelationshipTypes.ts +++ b/src/data/Dhis2RelationshipTypes.ts @@ -253,17 +253,28 @@ async function getConstraintForTypeTei( fields: "trackedEntityInstance", } as const; - const { trackedEntityInstances: firstPage, pager } = await api.trackedEntityInstances.get(query).getData(); - const pages = _.range(2, pager.pageCount + 1); + const results = await promiseMap(_.chunk(query.ou, 250), async ouChunk => { + const { trackedEntityInstances: firstPage, pager } = await api.trackedEntityInstances + .get( + query.ouMode === "SELECTED" || query.ouMode === "CHILDREN" || query.ouMode === "DESCENDANTS" + ? { ...query, ou: ouChunk } + : query + ) + .getData(); + + const pages = _.range(2, pager.pageCount + 1); + const otherPages = await promiseMap(pages, async page => { + const { trackedEntityInstances } = await api.trackedEntityInstances.get({ ...query, page }).getData(); + return trackedEntityInstances; + }); - const otherPages = await promiseMap(pages, async page => { - const { trackedEntityInstances } = await api.trackedEntityInstances.get({ ...query, page }).getData(); - return trackedEntityInstances; + return [...firstPage, ..._.flatten(otherPages)]; }); - const trackedEntityInstances = [...firstPage, ..._.flatten(otherPages)].map( - ({ trackedEntityInstance, ...rest }) => ({ ...rest, id: trackedEntityInstance }) - ); + const trackedEntityInstances = _.flatten(results).map(({ trackedEntityInstance, ...rest }) => ({ + ...rest, + id: trackedEntityInstance, + })); const teis = _.sortBy(trackedEntityInstances, tei => tei.id.toLowerCase()); const name = trackedEntityTypesById[constraint.trackedEntityType.id]?.name ?? "Unknown"; From 1fc0ba9578395958765e8df4794450f99d280cd8 Mon Sep 17 00:00:00 2001 From: Alexis Rico Date: Wed, 16 Feb 2022 12:43:24 +0100 Subject: [PATCH 2/2] Update filter query on all pages Signed-off-by: Alexis Rico --- src/data/Dhis2RelationshipTypes.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/data/Dhis2RelationshipTypes.ts b/src/data/Dhis2RelationshipTypes.ts index 47decebe..ae22afdb 100644 --- a/src/data/Dhis2RelationshipTypes.ts +++ b/src/data/Dhis2RelationshipTypes.ts @@ -254,17 +254,18 @@ async function getConstraintForTypeTei( } as const; const results = await promiseMap(_.chunk(query.ou, 250), async ouChunk => { + const filterQuery = + query.ouMode === "SELECTED" || query.ouMode === "CHILDREN" || query.ouMode === "DESCENDANTS" + ? { ...query, ou: ouChunk } + : query; + const { trackedEntityInstances: firstPage, pager } = await api.trackedEntityInstances - .get( - query.ouMode === "SELECTED" || query.ouMode === "CHILDREN" || query.ouMode === "DESCENDANTS" - ? { ...query, ou: ouChunk } - : query - ) + .get(filterQuery) .getData(); const pages = _.range(2, pager.pageCount + 1); const otherPages = await promiseMap(pages, async page => { - const { trackedEntityInstances } = await api.trackedEntityInstances.get({ ...query, page }).getData(); + const { trackedEntityInstances } = await api.trackedEntityInstances.get({ ...filterQuery, page }).getData(); return trackedEntityInstances; });