Skip to content

Commit 9011291

Browse files
committed
refactor: enhance scorecard dimensions and actions
- Refactored `useDimensions` and related hooks for improved parameter handling. - Integrated `ScorecardSharing` into `ScorecardActions`. - Updated `ScorecardResetButton` to fix resetting logic and improve button state handling.
1 parent 1886368 commit 9011291

File tree

4 files changed

+45
-28
lines changed

4 files changed

+45
-28
lines changed

src/modules/ScorecardManagement/components/General/components/ScorecardSharing.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export function ScorecardSharing() {
6262
onClick={onOpen}
6363
disabled={!data}
6464
>
65-
{i18n.t("Sharing settings")}
65+
{i18n.t("Sharing")}
6666
</Button>
6767
{!hide && (
6868
<SharingDialog

src/modules/ScorecardViewPage/components/ScorecardActions/ScorecardActions.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ScorecardOptionsControlButton } from "./components/ScorecardOptionsCont
33
import { ScorecardEditButton } from "./components/ScorecardEditButton";
44
import { ScorecardPrint } from "@hisptz/dhis2-scorecard";
55
import { ScorecardResetButton } from "./components/ScorecardResetButton";
6+
import { ScorecardSharing } from "../../../ScorecardManagement/components/General/components/ScorecardSharing";
67

78
export function ScorecardActions() {
89
return (
@@ -13,6 +14,7 @@ export function ScorecardActions() {
1314
<div id="download-button">
1415
<ScorecardPrint />
1516
</div>
17+
<ScorecardSharing />
1618
<ScorecardResetButton />
1719
</ButtonStrip>
1820
</div>
Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,39 @@
11
import { Button } from "@dhis2/ui";
22
import i18n from "@dhis2/d2-i18n";
3-
import { useOrgUnitSelectionValue, usePeriodSelectionValue, useScorecardConfig, useUpdateDimensionState } from "@hisptz/dhis2-scorecard";
3+
import {
4+
useOrgUnitSelectionValue,
5+
usePeriodSelectionValue,
6+
useScorecardConfig,
7+
} from "@hisptz/dhis2-scorecard";
48
import { isEqual } from "lodash";
59
import { useCallback } from "react";
10+
import { useDimensions } from "../../../hooks/dimensions";
611

712
export function ScorecardResetButton() {
813
const config = useScorecardConfig();
9-
const updateDimensionState = useUpdateDimensionState("all");
14+
const { setDimensions } = useDimensions();
1015
const periodSelection = usePeriodSelectionValue();
1116
const orgUnitSelection = useOrgUnitSelectionValue();
1217
const resetScorecardState = useCallback(() => {
13-
updateDimensionState({
18+
setDimensions({
19+
// @ts-expect-error Org unit select type issues
1420
orgUnitSelection: config.orgUnitSelection,
15-
periodSelection: config.periodSelection
21+
periods: config.periodSelection.periods,
1622
});
23+
}, [config.orgUnitSelection, config.periodSelection]);
1724

18-
}, [updateDimensionState, config.orgUnitSelection, config.periodSelection]);
25+
//TODO: Not working, improve by checking specifics
26+
const disable =
27+
isEqual(config.orgUnitSelection, orgUnitSelection) &&
28+
isEqual(config.periodSelection.periods, periodSelection.periods);
1929

20-
const disable = isEqual({ orgUnitSelection: config.orgUnitSelection, periodSelection: config.periodSelection }, { orgUnitSelection, periodSelection });
21-
22-
return <Button disabled={disable} onClick={resetScorecardState} className="reset-button">{i18n.t("Reset")}</Button>;
30+
return (
31+
<Button
32+
disabled={disable}
33+
onClick={resetScorecardState}
34+
className="reset-button"
35+
>
36+
{i18n.t("Reset")}
37+
</Button>
38+
);
2339
}

src/modules/ScorecardViewPage/hooks/dimensions.ts

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import { useSearchParams } from "react-router-dom";
22
import { useCallback, useMemo } from "react";
33
import { OrgUnitSelection } from "@hisptz/dhis2-utils";
44
import { useUpdateDimensionState } from "@hisptz/dhis2-scorecard";
5-
import { getOrgUnitIdsFromOrgUnitSelection, getOrgUnitSelectionFromIds } from "../../../shared";
6-
5+
import {
6+
getOrgUnitIdsFromOrgUnitSelection,
7+
getOrgUnitSelectionFromIds,
8+
} from "../../../shared";
79

810
export function useRawDimensions() {
911
const [params] = useSearchParams();
@@ -19,16 +21,13 @@ export function useRawDimensions() {
1921
return params.get("ou")?.split(";") ?? [];
2022
}, [params.get("ou")]);
2123

22-
2324
return {
2425
periods,
2526
orgUnits,
26-
noDimensionsSelected
27+
noDimensionsSelected,
2728
};
28-
2929
}
3030

31-
3231
export function useDimensions() {
3332
const [params, setParams] = useSearchParams();
3433
const setOrgUnitSelection = useUpdateDimensionState("orgUnit");
@@ -55,31 +54,31 @@ export function useDimensions() {
5554
);
5655

5756
const setDimensions = ({
58-
orgUnitSelection,
59-
periods
60-
}: {
57+
orgUnitSelection,
58+
periods,
59+
}: {
6160
orgUnitSelection: OrgUnitSelection;
6261
periods: { id: string }[];
6362
}) => {
63+
console.log({
64+
orgUnitSelection,
65+
periods,
66+
});
6467
const ous = getOrgUnitIdsFromOrgUnitSelection(orgUnitSelection);
6568
setParams((prev) => {
66-
if (!prev.get("ou") || !prev.get("pe")) {
67-
const updatedParams = new URLSearchParams(prev);
68-
updatedParams.set("ou", ous.join(";"));
69-
updatedParams.set("pe", periods.map(({ id }) => id).join(";"));
70-
return updatedParams;
71-
}
72-
return prev;
69+
const updatedParams = new URLSearchParams(prev);
70+
updatedParams.set("ou", ous.join(";"));
71+
updatedParams.set("pe", periods.map(({ id }) => id).join(";"));
72+
return updatedParams;
7373
});
7474
};
7575

7676
const setPeriod = useCallback(
7777
(periods: string[]) => {
7878
setPeriodSelection({
79-
periods: periods.map((periodId) => ({ id: periodId }))
79+
periods: periods.map((periodId) => ({ id: periodId })),
8080
});
8181
setParam("pe")(periods.join(";"));
82-
8382
},
8483
[setParam]
8584
);
@@ -100,6 +99,6 @@ export function useDimensions() {
10099
noDimensionsSelected,
101100
setPeriod,
102101
setOrgUnit,
103-
setDimensions
102+
setDimensions,
104103
};
105104
}

0 commit comments

Comments
 (0)