From 628ad17f253bfb8d10a4720d7670ebc91e6663d5 Mon Sep 17 00:00:00 2001 From: Emmanuel Evance Date: Wed, 3 Jun 2026 12:56:24 +0300 Subject: [PATCH] add dhis2 paging examples --- .../jobs/fetch-all-events-with-pagination.js | 22 +++++++++++++++++++ adaptors/library/jobs/fetch-all-events.js | 4 ++++ adaptors/library/jobs/fetch-default-events.js | 3 +++ adaptors/library/staticExamples.json | 20 ++++++++++++++++- 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 adaptors/library/jobs/fetch-all-events-with-pagination.js create mode 100644 adaptors/library/jobs/fetch-all-events.js create mode 100644 adaptors/library/jobs/fetch-default-events.js diff --git a/adaptors/library/jobs/fetch-all-events-with-pagination.js b/adaptors/library/jobs/fetch-all-events-with-pagination.js new file mode 100644 index 00000000000..8bbbd3ade41 --- /dev/null +++ b/adaptors/library/jobs/fetch-all-events-with-pagination.js @@ -0,0 +1,22 @@ +// Fetching all events with pagination +// Requires DHIS2 server v2.41+ +tracker.export('events', { totalPages: true, pageSize: 1e4 }); +fn(state => { + state.results = state.data.events; + const { page, pageSize, pageCount, total } = state.data.pager; + const remainingPages = pageCount - page; + + state.pages = Array.from({ length: remainingPages }, (_, i) => page + i + 1); + state.pageSize = pageSize; + return state; +}); + +each( + $.pages, + tracker + .export('events', { pageSize: $.pageSize, page: $.data }) + .then(state => { + state.results = state.results.concat(state.data.events); + return state; + }) +); diff --git a/adaptors/library/jobs/fetch-all-events.js b/adaptors/library/jobs/fetch-all-events.js new file mode 100644 index 00000000000..448c2cdeecb --- /dev/null +++ b/adaptors/library/jobs/fetch-all-events.js @@ -0,0 +1,4 @@ +// Fetching all events without pagination +// Be cautious: This can degrade performance if you have a lot of events, use with caution +// Requires DHIS2 server v2.41+, for older version `skipPaging: true` +tracker.export('events', { paging: false }); diff --git a/adaptors/library/jobs/fetch-default-events.js b/adaptors/library/jobs/fetch-default-events.js new file mode 100644 index 00000000000..19db18f4bfb --- /dev/null +++ b/adaptors/library/jobs/fetch-default-events.js @@ -0,0 +1,3 @@ +// DHIS2 Defaults: pageSize: 50 +// Requires DHIS2 server v2.41+, +tracker.export('events'); diff --git a/adaptors/library/staticExamples.json b/adaptors/library/staticExamples.json index cdd388fba8b..42ff78f9969 100644 --- a/adaptors/library/staticExamples.json +++ b/adaptors/library/staticExamples.json @@ -1,4 +1,22 @@ [ + { + "expressionPath": "jobs/fetch-all-events", + "adaptor": "dhis2", + "adaptor_version": "v8.1.1", + "name": "Fetch all events without pagination" + }, + { + "expressionPath": "jobs/fetch-default-events", + "adaptor": "dhis2", + "adaptor_version": "v8.1.1", + "name": "Fetch default events" + }, + { + "expressionPath": "jobs/fetch-all-events-with-pagination", + "adaptor": "dhis2", + "adaptor_version": "v8.1.1", + "name": "Fetch all events with pagination" + }, { "expressionPath": "jobs/commcare-asri-bulk-upload", "adaptor": "commcare", @@ -166,4 +184,4 @@ "adaptor": "kobotoolbox", "name": "Extract submissions from KoboToolbox" } -] \ No newline at end of file +]