diff --git a/packages/app/i18n/en.pot b/packages/app/i18n/en.pot index 96f82e835..dd6731ca5 100644 --- a/packages/app/i18n/en.pot +++ b/packages/app/i18n/en.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2024-08-08T10:26:04.971Z\n" -"PO-Revision-Date: 2024-08-08T10:26:04.971Z\n" +"POT-Creation-Date: 2024-08-08T12:12:32.681Z\n" +"PO-Revision-Date: 2024-08-08T12:12:32.681Z\n" msgid "Welcome to Scorecard App!" msgstr "Welcome to Scorecard App!" @@ -330,12 +330,15 @@ msgstr "Migrating scorecards" msgid "of" msgstr "of" -msgid "Select period" -msgstr "Select period" +msgid "Getting your scorecard configuration..." +msgstr "Getting your scorecard configuration..." msgid "Select organisation unit" msgstr "Select organisation unit" +msgid "Select period" +msgstr "Select period" + msgid "and {{number}} more" msgstr "and {{number}} more" diff --git a/packages/app/src/locales/en/translations.json b/packages/app/src/locales/en/translations.json index 0efa525f1..294935abc 100644 --- a/packages/app/src/locales/en/translations.json +++ b/packages/app/src/locales/en/translations.json @@ -105,8 +105,9 @@ "Preparing migration...": "Preparing migration...", "Migrating scorecards": "Migrating scorecards", "of": "of", - "Select period": "Select period", + "Getting your scorecard configuration...": "Getting your scorecard configuration...", "Select organisation unit": "Select organisation unit", + "Select period": "Select period", "and {{number}} more": "and {{number}} more", "Create a new scorecard in the scorecard app to see it here.": "Create a new scorecard in the scorecard app to see it here.", "Confirm scorecard selection": "Confirm scorecard selection", diff --git a/packages/app/src/modules/Main/components/ScorecardViewPage/ScorecardViewPage.tsx b/packages/app/src/modules/Main/components/ScorecardViewPage/ScorecardViewPage.tsx index f954b2786..92de0a18e 100644 --- a/packages/app/src/modules/Main/components/ScorecardViewPage/ScorecardViewPage.tsx +++ b/packages/app/src/modules/Main/components/ScorecardViewPage/ScorecardViewPage.tsx @@ -1,6 +1,42 @@ import { DimensionFilterArea } from "./components/DimensionFilterArea"; +import { useScorecardConfig } from "./hooks/data"; +import { FullPageError, FullPageLoader } from "@scorecard/shared"; +import i18n from "@dhis2/d2-i18n"; +import { useEffect } from "react"; +import { useDimensions } from "./hooks/dimensions"; +import { OrgUnitSelection } from "@hisptz/dhis2-utils"; export function ScorecardViewPage() { + const { setDimensions } = useDimensions(); + const { config, loading, error, refetch } = useScorecardConfig(); + + useEffect(() => { + if (config) { + setDimensions({ + orgUnitSelection: config.orgUnitSelection as OrgUnitSelection, + periods: config.periodSelection.periods, + }); + } + }, [config]); + + if (loading) { + return ( + + ); + } + if (error) { + return ( + { + refetch(); + }} + /> + ); + } + return (
{loading ? null : ( id, diff --git a/packages/app/src/modules/Main/components/ScorecardViewPage/hooks/dimensions.ts b/packages/app/src/modules/Main/components/ScorecardViewPage/hooks/dimensions.ts index fdea65ed9..1797746b1 100644 --- a/packages/app/src/modules/Main/components/ScorecardViewPage/hooks/dimensions.ts +++ b/packages/app/src/modules/Main/components/ScorecardViewPage/hooks/dimensions.ts @@ -32,6 +32,25 @@ export function useDimensions() { [setParams], ); + const setDimensions = ({ + orgUnitSelection, + periods, + }: { + orgUnitSelection: OrgUnitSelection; + periods: { id: string }[]; + }) => { + const ous = getOrgUnitIdsFromOrgUnitSelection(orgUnitSelection); + setParams((prev) => { + if (!prev.get("ou") || !prev.get("pe")) { + const updatedParams = new URLSearchParams(prev); + updatedParams.set("ou", ous.join(";")); + updatedParams.set("pe", periods.map(({ id }) => id).join(";")); + return updatedParams; + } + return prev; + }); + }; + const setPeriod = useCallback( (periods: string[]) => { setParam("pe")(periods.join(";")); @@ -49,5 +68,6 @@ export function useDimensions() { orgUnit, setPeriod, setOrgUnit, + setDimensions, }; }