@hisptz/dhis2-analytics 2.0.18 → 2.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Scorecard/Scorecard.js +2 -10
- package/dist/components/Scorecard/Scorecard.js.map +1 -1
- package/dist/components/Scorecard/Scorecard.stories.js +3 -2
- package/dist/components/Scorecard/Scorecard.stories.js.map +1 -1
- package/dist/components/Scorecard/components/ConfigProvider.js +14 -1
- package/dist/components/Scorecard/components/ConfigProvider.js.map +1 -1
- package/dist/components/Scorecard/components/MetaProvider.js.map +1 -1
- package/dist/components/Scorecard/components/ScorecardContext.js +18 -0
- package/dist/components/Scorecard/components/ScorecardContext.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js +4 -4
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +25 -10
- package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/components/Scorecard/components/StateProvider.js +37 -5
- package/dist/components/Scorecard/components/StateProvider.js.map +1 -1
- package/dist/components/Scorecard/components/index.js +35 -0
- package/dist/components/Scorecard/components/index.js.map +1 -0
- package/dist/components/Scorecard/hooks/columns.js +10 -8
- package/dist/components/Scorecard/hooks/columns.js.map +1 -1
- package/dist/components/Scorecard/hooks/data.js +6 -9
- package/dist/components/Scorecard/hooks/data.js.map +1 -1
- package/dist/components/Scorecard/hooks/dataItem.js +20 -0
- package/dist/components/Scorecard/hooks/dataItem.js.map +1 -0
- package/dist/components/Scorecard/hooks/index.js +14 -0
- package/dist/components/Scorecard/hooks/index.js.map +1 -0
- package/dist/components/Scorecard/hooks/metadata.js +20 -15
- package/dist/components/Scorecard/hooks/metadata.js.map +1 -1
- package/dist/components/Scorecard/hooks/table.js +2 -2
- package/dist/components/Scorecard/hooks/table.js.map +1 -1
- package/dist/components/Scorecard/index.js +14 -0
- package/dist/components/Scorecard/index.js.map +1 -1
- package/dist/components/Scorecard/schemas/config.js +1 -0
- package/dist/components/Scorecard/schemas/config.js.map +1 -1
- package/dist/components/Scorecard/utils/analytics.js +12 -1
- package/dist/components/Scorecard/utils/analytics.js.map +1 -1
- package/dist/components/Scorecard/utils/columns.js +18 -6
- package/dist/components/Scorecard/utils/columns.js.map +1 -1
- package/dist/components/Scorecard/utils/state.js +15 -0
- package/dist/components/Scorecard/utils/state.js.map +1 -0
- package/dist/esm/components/Scorecard/Scorecard.js +2 -10
- package/dist/esm/components/Scorecard/Scorecard.js.map +1 -1
- package/dist/esm/components/Scorecard/Scorecard.stories.js +3 -2
- package/dist/esm/components/Scorecard/Scorecard.stories.js.map +1 -1
- package/dist/esm/components/Scorecard/components/ConfigProvider.js +10 -1
- package/dist/esm/components/Scorecard/components/ConfigProvider.js.map +1 -1
- package/dist/esm/components/Scorecard/components/MetaProvider.js.map +1 -1
- package/dist/esm/components/Scorecard/components/ScorecardContext.js +16 -0
- package/dist/esm/components/Scorecard/components/ScorecardContext.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js +3 -3
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +26 -11
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/esm/components/Scorecard/components/StateProvider.js +34 -7
- package/dist/esm/components/Scorecard/components/StateProvider.js.map +1 -1
- package/dist/esm/components/Scorecard/components/index.js +6 -0
- package/dist/esm/components/Scorecard/components/index.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/columns.js +6 -4
- package/dist/esm/components/Scorecard/hooks/columns.js.map +1 -1
- package/dist/esm/components/Scorecard/hooks/data.js +4 -7
- package/dist/esm/components/Scorecard/hooks/data.js.map +1 -1
- package/dist/esm/components/Scorecard/hooks/dataItem.js +18 -0
- package/dist/esm/components/Scorecard/hooks/dataItem.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/index.js +3 -0
- package/dist/esm/components/Scorecard/hooks/index.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/metadata.js +19 -14
- package/dist/esm/components/Scorecard/hooks/metadata.js.map +1 -1
- package/dist/esm/components/Scorecard/hooks/table.js +1 -1
- package/dist/esm/components/Scorecard/hooks/table.js.map +1 -1
- package/dist/esm/components/Scorecard/index.js +2 -0
- package/dist/esm/components/Scorecard/index.js.map +1 -1
- package/dist/esm/components/Scorecard/schemas/config.js +1 -0
- package/dist/esm/components/Scorecard/schemas/config.js.map +1 -1
- package/dist/esm/components/Scorecard/utils/analytics.js +12 -2
- package/dist/esm/components/Scorecard/utils/analytics.js.map +1 -1
- package/dist/esm/components/Scorecard/utils/columns.js +18 -6
- package/dist/esm/components/Scorecard/utils/columns.js.map +1 -1
- package/dist/esm/components/Scorecard/utils/state.js +13 -0
- package/dist/esm/components/Scorecard/utils/state.js.map +1 -0
- package/dist/types/components/Scorecard/Scorecard.d.ts +3 -6
- package/dist/types/components/Scorecard/Scorecard.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/ConfigProvider.d.ts +3 -1
- package/dist/types/components/Scorecard/components/ConfigProvider.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/MetaProvider.d.ts +1 -0
- package/dist/types/components/Scorecard/components/MetaProvider.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/ScorecardContext.d.ts +10 -0
- package/dist/types/components/Scorecard/components/ScorecardContext.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts +4 -1
- package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts +1 -1
- package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/StateProvider.d.ts +5 -3
- package/dist/types/components/Scorecard/components/StateProvider.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/TableStateProvider.d.ts +1 -0
- package/dist/types/components/Scorecard/components/TableStateProvider.d.ts.map +1 -1
- package/dist/types/components/Scorecard/components/index.d.ts +5 -0
- package/dist/types/components/Scorecard/components/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/columns.d.ts +1 -0
- package/dist/types/components/Scorecard/hooks/columns.d.ts.map +1 -1
- package/dist/types/components/Scorecard/hooks/data.d.ts +1 -0
- package/dist/types/components/Scorecard/hooks/data.d.ts.map +1 -1
- package/dist/types/components/Scorecard/hooks/dataItem.d.ts +3 -0
- package/dist/types/components/Scorecard/hooks/dataItem.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/index.d.ts +2 -0
- package/dist/types/components/Scorecard/hooks/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/metadata.d.ts +1 -3
- package/dist/types/components/Scorecard/hooks/metadata.d.ts.map +1 -1
- package/dist/types/components/Scorecard/hooks/orgUnit.d.ts +1 -0
- package/dist/types/components/Scorecard/hooks/orgUnit.d.ts.map +1 -1
- package/dist/types/components/Scorecard/hooks/table.d.ts.map +1 -1
- package/dist/types/components/Scorecard/index.d.ts +2 -0
- package/dist/types/components/Scorecard/index.d.ts.map +1 -1
- package/dist/types/components/Scorecard/schemas/config.d.ts +43 -0
- package/dist/types/components/Scorecard/schemas/config.d.ts.map +1 -1
- package/dist/types/components/Scorecard/utils/analytics.d.ts +8 -0
- package/dist/types/components/Scorecard/utils/analytics.d.ts.map +1 -1
- package/dist/types/components/Scorecard/utils/columns.d.ts +1 -0
- package/dist/types/components/Scorecard/utils/columns.d.ts.map +1 -1
- package/dist/types/components/Scorecard/utils/dataSources.d.ts +1 -0
- package/dist/types/components/Scorecard/utils/dataSources.d.ts.map +1 -1
- package/dist/types/components/Scorecard/utils/state.d.ts +5 -0
- package/dist/types/components/Scorecard/utils/state.d.ts.map +1 -0
- package/package.json +12 -5
- package/dist/components/Scorecard/components/StateSetProvider.js +0 -17
- package/dist/components/Scorecard/components/StateSetProvider.js.map +0 -1
- package/dist/esm/components/Scorecard/components/StateSetProvider.js +0 -14
- package/dist/esm/components/Scorecard/components/StateSetProvider.js.map +0 -1
- package/dist/types/components/Scorecard/components/StateSetProvider.d.ts +0 -9
- package/dist/types/components/Scorecard/components/StateSetProvider.d.ts.map +0 -1
|
@@ -1,23 +1,50 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { createContext, useContext } from 'react';
|
|
2
|
+
import { createContext, useContext, useState } from 'react';
|
|
3
|
+
import i18n from '@dhis2/d2-i18n';
|
|
4
|
+
import { useScorecardConfig } from './ConfigProvider';
|
|
5
|
+
import { getInitialStateFromConfig } from '../utils/state';
|
|
3
6
|
|
|
4
7
|
const ScorecardStateContext = createContext(null);
|
|
8
|
+
const ScorecardSetStateContext = createContext(null);
|
|
5
9
|
function useScorecardState() {
|
|
6
|
-
|
|
10
|
+
const state = useContext(ScorecardStateContext);
|
|
11
|
+
if (!state) {
|
|
12
|
+
throw Error(
|
|
13
|
+
i18n.t(
|
|
14
|
+
"useScorecardState should be used inside a Scorecard Context"
|
|
15
|
+
)
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return state;
|
|
7
19
|
}
|
|
8
|
-
|
|
20
|
+
function useScorecardSetState() {
|
|
21
|
+
const setState = useContext(ScorecardSetStateContext);
|
|
22
|
+
if (!setState) {
|
|
23
|
+
throw Error(
|
|
24
|
+
i18n.t(
|
|
25
|
+
"useScorecardSetState should be used inside a Scorecard Context"
|
|
26
|
+
)
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
return setState;
|
|
30
|
+
}
|
|
31
|
+
const ScorecardStateProvider = ({ children, initialState }) => {
|
|
32
|
+
const config = useScorecardConfig();
|
|
33
|
+
const [state, setState] = useState(
|
|
34
|
+
initialState ?? getInitialStateFromConfig(config)
|
|
35
|
+
);
|
|
9
36
|
return /* @__PURE__ */ jsx(
|
|
10
37
|
ScorecardStateContext.Provider,
|
|
11
38
|
{
|
|
12
39
|
value: {
|
|
13
|
-
...
|
|
14
|
-
hasOnePeriod:
|
|
40
|
+
...state,
|
|
41
|
+
hasOnePeriod: state.periodSelection.periods?.length === 1
|
|
15
42
|
},
|
|
16
|
-
children
|
|
43
|
+
children: /* @__PURE__ */ jsx(ScorecardSetStateContext.Provider, { value: setState, children })
|
|
17
44
|
}
|
|
18
45
|
);
|
|
19
46
|
};
|
|
20
47
|
|
|
21
|
-
export { ScorecardStateProvider, useScorecardState };
|
|
48
|
+
export { ScorecardStateProvider, useScorecardSetState, useScorecardState };
|
|
22
49
|
//# sourceMappingURL=out.js.map
|
|
23
50
|
//# sourceMappingURL=StateProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/components/StateProvider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/components/StateProvider.tsx"],"names":[],"mappings":"AAwDG;AAxDH;AAAA,EACC;AAAA,EAGA;AAAA,EACA;AAAA,OACM;AAEP,OAAO,UAAU;AACjB,SAAS,0BAA0B;AACnC,SAAS,iCAAiC;AAG1C,MAAM,wBAAwB,cAAqC,IAAI;AACvE,MAAM,2BAA2B,cAAwC,IAAI;AAEtE,SAAS,oBAAoB;AACnC,QAAM,QAAQ,WAAW,qBAAqB;AAC9C,MAAI,CAAC,OAAO;AACX,UAAM;AAAA,MACL,KAAK;AAAA,QACJ;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAEO,SAAS,uBAAuB;AACtC,QAAM,WAAW,WAAW,wBAAwB;AACpD,MAAI,CAAC,UAAU;AACd,UAAM;AAAA,MACL,KAAK;AAAA,QACJ;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAEO,MAAM,yBAGR,CAAC,EAAE,UAAU,aAAa,MAAM;AACpC,QAAM,SAAS,mBAAmB;AAClC,QAAM,CAAC,OAAO,QAAQ,IAAI;AAAA,IACzB,gBAAgB,0BAA0B,MAAM;AAAA,EACjD;AAEA,SACC;AAAA,IAAC,sBAAsB;AAAA,IAAtB;AAAA,MACA,OAAO;AAAA,QACN,GAAG;AAAA,QACH,cAAc,MAAM,gBAAgB,SAAS,WAAW;AAAA,MACzD;AAAA,MAEA,8BAAC,yBAAyB,UAAzB,EAAkC,OAAO,UACxC,UACF;AAAA;AAAA,EACD;AAEF","sourcesContent":["import React, {\n\tcreateContext,\n\ttype Dispatch,\n\ttype SetStateAction,\n\tuseContext,\n\tuseState,\n} from \"react\";\nimport type { ScorecardState } from \"../schemas/config\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useScorecardConfig } from \"./ConfigProvider\";\nimport { getInitialStateFromConfig } from \"../utils/state\";\n\nexport type ScorecardSetState = Dispatch<SetStateAction<ScorecardState>>;\nconst ScorecardStateContext = createContext<ScorecardState | null>(null);\nconst ScorecardSetStateContext = createContext<ScorecardSetState | null>(null);\n\nexport function useScorecardState() {\n\tconst state = useContext(ScorecardStateContext);\n\tif (!state) {\n\t\tthrow Error(\n\t\t\ti18n.t(\n\t\t\t\t\"useScorecardState should be used inside a Scorecard Context\",\n\t\t\t),\n\t\t);\n\t}\n\treturn state;\n}\n\nexport function useScorecardSetState() {\n\tconst setState = useContext(ScorecardSetStateContext);\n\tif (!setState) {\n\t\tthrow Error(\n\t\t\ti18n.t(\n\t\t\t\t\"useScorecardSetState should be used inside a Scorecard Context\",\n\t\t\t),\n\t\t);\n\t}\n\treturn setState;\n}\n\nexport const ScorecardStateProvider: React.FC<{\n\tchildren: React.ReactNode;\n\tinitialState?: ScorecardState;\n}> = ({ children, initialState }) => {\n\tconst config = useScorecardConfig();\n\tconst [state, setState] = useState<ScorecardState>(\n\t\tinitialState ?? getInitialStateFromConfig(config),\n\t);\n\n\treturn (\n\t\t<ScorecardStateContext.Provider\n\t\t\tvalue={{\n\t\t\t\t...state,\n\t\t\t\thasOnePeriod: state.periodSelection.periods?.length === 1,\n\t\t\t}}\n\t\t>\n\t\t\t<ScorecardSetStateContext.Provider value={setState}>\n\t\t\t\t{children}\n\t\t\t</ScorecardSetStateContext.Provider>\n\t\t</ScorecardStateContext.Provider>\n\t);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/components/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","sourcesContent":["export * from \"./ScorecardContext\";\nexport * from \"./StateProvider\";\nexport * from \"./ConfigProvider\";\nexport * from \"./MetaProvider\";\n"]}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { createColumnHelper } from '@tanstack/react-table';
|
|
2
|
-
import { useScorecardConfig } from '../components
|
|
3
|
-
import { useScorecardMeta } from '../components/MetaProvider';
|
|
4
|
-
import { useScorecardState } from '../components/StateProvider';
|
|
2
|
+
import { useScorecardState, useScorecardConfig, useScorecardMeta } from '../components';
|
|
5
3
|
import { useMemo } from 'react';
|
|
6
4
|
import { getOrgUnitColumnHeaders, getDataColumnHeaders, getAverageColumn } from '../utils/columns';
|
|
7
5
|
import { LabelCell } from '../components/ScorecardTable/components/TableHeader/components/LabelCell';
|
|
@@ -139,7 +137,11 @@ function useTableColumns() {
|
|
|
139
137
|
})
|
|
140
138
|
);
|
|
141
139
|
return columns;
|
|
142
|
-
}, [
|
|
140
|
+
}, [
|
|
141
|
+
state.options.showDataInRows,
|
|
142
|
+
state.periodSelection,
|
|
143
|
+
state.orgUnitSelection
|
|
144
|
+
]);
|
|
143
145
|
}
|
|
144
146
|
|
|
145
147
|
export { useMetaColumns, useTableColumns };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/columns.ts"],"names":[],"mappings":"AAAA,SAAyB,0BAA0B;AACnD,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/columns.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ColumnDef, createColumnHelper } from \"@tanstack/react-table\";\nimport {\n\tuseScorecardConfig,\n\tuseScorecardMeta,\n\tuseScorecardState,\n} from \"../components\";\nimport { useMemo } from \"react\";\nimport {\n\ttype ScorecardTableCellData,\n\ttype ScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\tgetAverageColumn,\n\tgetDataColumnHeaders,\n\tgetOrgUnitColumnHeaders,\n} from \"../utils/columns\";\nimport { LabelCell } from \"../components/ScorecardTable/components/TableHeader/components/LabelCell\";\nimport { ExpandCell } from \"../components/ScorecardTable/components/TableHeader/components/ExpandCell\";\nimport { NumberCell } from \"../components/ScorecardTable/components/TableHeader/components/NumberCell\";\nimport { MetaHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/MetaHeaderCell\";\nimport { useCalendar } from \"./metadata\";\nimport { MetaFooterCell } from \"../components/ScorecardTable/components/MetaFooterCell\";\nimport { getOrgUnitLevel } from \"../utils/orgUnits\";\nimport { useLowestOrgUnitLevel } from \"./orgUnit\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nexport function useMetaColumns() {\n\tconst state = useScorecardState();\n\n\tconst lowestLevel = useLowestOrgUnitLevel();\n\n\tconst metaColumns: ColumnDef<ScorecardTableData, any>[] = [\n\t\tcolumnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tif (state?.options?.disableExpanding) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst dataInRows = state?.options?.showDataInRows;\n\t\t\t\tif (dataInRows) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!lowestLevel) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tconst orgUnit = rowData.orgUnit;\n\t\t\t\tif (!orgUnit) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst ouLevel = getOrgUnitLevel(orgUnit);\n\n\t\t\t\treturn ouLevel !== lowestLevel.level;\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"expand\",\n\t\t\t\theader: () => null,\n\t\t\t\tmeta: {\n\t\t\t\t\tisMeta: true,\n\t\t\t\t\tfixed: true,\n\t\t\t\t\tlabel: \"\",\n\t\t\t\t},\n\t\t\t\tenableColumnFilter: false,\n\t\t\t\tcell: ExpandCell,\n\t\t\t\tfooter: () => null,\n\t\t\t},\n\t\t),\n\t\tcolumnHelper.accessor(\n\t\t\t(_, index) => {\n\t\t\t\treturn index + 1;\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"count\",\n\t\t\t\theader: () => null,\n\t\t\t\tmeta: {\n\t\t\t\t\tisMeta: true,\n\t\t\t\t\tfixed: true,\n\t\t\t\t\tlabel: \"\",\n\t\t\t\t},\n\t\t\t\tenableColumnFilter: false,\n\t\t\t\tcell: NumberCell,\n\t\t\t\tfooter: () => null,\n\t\t\t},\n\t\t),\n\t];\n\n\tif (state?.options?.showDataInRows) {\n\t\tmetaColumns.push(\n\t\t\tcolumnHelper.accessor(\"label\", {\n\t\t\t\theader: () => null,\n\t\t\t\tid: \"dataItems\",\n\t\t\t\tmeta: {\n\t\t\t\t\tfilterable: true,\n\t\t\t\t},\n\t\t\t\tenableColumnFilter: true,\n\t\t\t\tcell: LabelCell,\n\t\t\t\tfooter: MetaFooterCell,\n\t\t\t}),\n\t\t);\n\t} else {\n\t\tmetaColumns.push(\n\t\t\tcolumnHelper.accessor(\"label\", {\n\t\t\t\theader: () => null,\n\t\t\t\tid: \"orgUnits\",\n\t\t\t\tenableColumnFilter: true,\n\t\t\t\tmeta: {\n\t\t\t\t\tisMeta: true,\n\t\t\t\t\tfixed: true,\n\t\t\t\t},\n\t\t\t\tcell: LabelCell,\n\t\t\t\tfooter: MetaFooterCell,\n\t\t\t}),\n\t\t);\n\t}\n\n\treturn metaColumns;\n}\n\nexport function useTableColumns(): ColumnDef<\n\tScorecardTableData,\n\tScorecardTableCellData\n>[] {\n\tconst config = useScorecardConfig();\n\tconst meta = useScorecardMeta();\n\tconst state = useScorecardState();\n\tconst metaColumns = useMetaColumns();\n\tconst calendar = useCalendar();\n\n\tif (!config || !meta || !state) {\n\t\treturn [];\n\t}\n\treturn useMemo(() => {\n\t\tconst columns: ColumnDef<ScorecardTableData, any>[] = [\n\t\t\tcolumnHelper.group({\n\t\t\t\tid: \"metaHeader\",\n\t\t\t\tcolumns: metaColumns,\n\t\t\t\theader: MetaHeaderCell,\n\t\t\t\tfooter: () => null,\n\t\t\t}),\n\t\t];\n\n\t\tif (state.options.showDataInRows) {\n\t\t\tcolumns.push(\n\t\t\t\t...getOrgUnitColumnHeaders({\n\t\t\t\t\tmeta,\n\t\t\t\t\tcalendar,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tcolumns.push(\n\t\t\t\t...getDataColumnHeaders({\n\t\t\t\t\tmeta,\n\t\t\t\t\tconfig,\n\t\t\t\t\tcalendar,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tcolumns.push(\n\t\t\tgetAverageColumn({\n\t\t\t\tmeta,\n\t\t\t\tconfig,\n\t\t\t}),\n\t\t);\n\n\t\treturn columns;\n\t}, [\n\t\tstate.options.showDataInRows,\n\t\tstate.periodSelection,\n\t\tstate.orgUnitSelection,\n\t]);\n}\n"]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { useScorecardState } from '../components
|
|
1
|
+
import { useScorecardConfig, useScorecardMeta, useScorecardState } from '../components';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { useScorecardConfig } from '../components/ConfigProvider';
|
|
3
|
+
import { getDimensionsFromMeta } from '../utils/analytics';
|
|
5
4
|
import { useDataQuery } from '@dhis2/app-runtime';
|
|
6
5
|
import { getAdjacentFixedPeriods, createFixedPeriodFromPeriodId } from '@dhis2/multi-calendar-dates';
|
|
7
6
|
import { uniq, isEmpty } from 'lodash';
|
|
8
|
-
import { useScorecardMeta } from '../components/MetaProvider';
|
|
9
7
|
import { sanitizeAnalyticsData, getTableDataFromAnalytics } from '../utils/data';
|
|
10
8
|
import { useCalendar } from './metadata';
|
|
11
9
|
|
|
@@ -38,9 +36,8 @@ function useGetScorecardData() {
|
|
|
38
36
|
"Invalid scorecard setup. Make sure the valid config and state props are passed."
|
|
39
37
|
);
|
|
40
38
|
}
|
|
41
|
-
const { dataItemsIds, orgUnitsIds, periodsIds } =
|
|
42
|
-
|
|
43
|
-
state
|
|
39
|
+
const { dataItemsIds, orgUnitsIds, periodsIds } = getDimensionsFromMeta({
|
|
40
|
+
meta
|
|
44
41
|
});
|
|
45
42
|
const analyticsPeriod = useMemo(() => {
|
|
46
43
|
const pastPeriods = periodsIds.map((periodId) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/data.ts"],"names":["data"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/data.ts"],"names":["data"],"mappings":"AAAA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,eAAe;AACxB,SAAS,6BAA6B;AACtC,SAAS,oBAAoB;AAC7B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,SAAS,YAAY;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AACP,SAAS,mBAAmB;AAE5B,MAAM,QAAa;AAAA,EAClB,MAAM;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,CAAC;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACD,MAIM;AACL,aAAO;AAAA,QACN,UAAU;AAAA,QACV,WAAW;AAAA,UACV,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,UACvB,MAAM,UAAU,KAAK,GAAG,CAAC;AAAA,UACzB,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAkBO,SAAS,sBAAsB;AACrC,QAAM,SAAS,mBAAmB;AAClC,QAAM,OAAO,iBAAiB;AAC9B,QAAM,QAAQ,kBAAkB;AAChC,QAAM,WAAW,YAAY;AAC7B,MAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;AAC/B,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,QAAM,EAAE,cAAc,aAAa,WAAW,IAAI,sBAAsB;AAAA,IACvE;AAAA,EACD,CAAC;AAGD,QAAM,kBAAkB,QAAQ,MAAM;AACrC,UAAM,cAAc,WAClB,IAAI,CAAC,aAAa;AAClB,YAAM,KAAK,wBAAwB;AAAA,QAClC;AAAA,QACA,OAAO;AAAA,QACP,QAAQ,8BAA8B;AAAA,UACrC;AAAA,UACA;AAAA,QACD,CAAC;AAAA,MACF,CAAC;AACD,aAAO,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;AAAA,IAC7B,CAAC,EACA,KAAK;AAEP,WAAO,KAAK,CAAC,GAAG,YAAY,GAAG,WAAW,CAAC;AAAA,EAC5C,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,EAAE,SAAS,MAAM,iBAAiB,IACvC,aAAyC,OAAO;AAAA,IAC/C,WAAW;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,IACX;AAAA,EACD,CAAC;AAEF,QAAM,UAAU,QAAQ,MAAM;AAC7B,QAAI,CAAC;AAAkB,aAAO,CAAC;AAC/B,WAAO,sBAAsB,gBAAgB;AAAA,EAC9C,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,OAAO,QAAQ,MAAM;AAC1B,QAAI,kBAAkB;AACrB,YAAMA,QAAO,0BAA0B,kBAAkB;AAAA,QACxD;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AACD,UAAI,CAAC,CAAC,MAAM,QAAQ,WAAW;AAC9B,eAAOA;AAAA,MACR,OAAO;AACN,eAAOA,MAAK,OAAO,CAAC,EAAE,WAAW,MAAM,CAAC,QAAQ,UAAU,CAAC;AAAA,MAC5D;AAAA,IACD;AACA,WAAO,CAAC;AAAA,EACT,GAAG,CAAC,kBAAkB,IAAI,CAAC;AAE3B,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD","sourcesContent":["import {\n\tuseScorecardConfig,\n\tuseScorecardMeta,\n\tuseScorecardState,\n} from \"../components\";\nimport { useMemo } from \"react\";\nimport { getDimensionsFromMeta } from \"../utils/analytics\";\nimport { useDataQuery } from \"@dhis2/app-runtime\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport { isEmpty, uniq } from \"lodash\";\nimport {\n\tgetTableDataFromAnalytics,\n\tsanitizeAnalyticsData,\n} from \"../utils/data\";\nimport { useCalendar } from \"./metadata\";\n\nconst query: any = {\n\tdata: {\n\t\tresource: \"analytics\",\n\t\tparams: ({\n\t\t\tperiods,\n\t\t\torgUnits,\n\t\t\tdataItems,\n\t\t}: {\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}) => {\n\t\t\treturn {\n\t\t\t\tskipMeta: true,\n\t\t\t\tdimension: [\n\t\t\t\t\t`pe:${periods.join(\";\")}`,\n\t\t\t\t\t`dx:${dataItems.join(\";\")}`,\n\t\t\t\t\t`ou:${orgUnits.join(\";\")}`,\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t},\n};\n\nexport interface ScorecardDataQueryResponse {\n\tdata: {\n\t\theaderWidth: number;\n\t\theaders: Array<{\n\t\t\tname: string;\n\t\t\thidden: boolean;\n\t\t\tmeta: boolean;\n\t\t\tcolumn: string;\n\t\t\tvalueType: string;\n\t\t}>;\n\t\trows: Array<Array<string>>;\n\t\theight: number;\n\t\twidth: number;\n\t};\n}\n\nexport function useGetScorecardData() {\n\tconst config = useScorecardConfig();\n\tconst meta = useScorecardMeta();\n\tconst state = useScorecardState();\n\tconst calendar = useCalendar();\n\tif (!config || !state || !meta) {\n\t\tthrow new Error(\n\t\t\t\"Invalid scorecard setup. Make sure the valid config and state props are passed.\",\n\t\t);\n\t}\n\tconst { dataItemsIds, orgUnitsIds, periodsIds } = getDimensionsFromMeta({\n\t\tmeta,\n\t});\n\n\t//We need to make sure each period has a past period\n\tconst analyticsPeriod = useMemo(() => {\n\t\tconst pastPeriods = periodsIds\n\t\t\t.map((periodId) => {\n\t\t\t\tconst pe = getAdjacentFixedPeriods({\n\t\t\t\t\tcalendar,\n\t\t\t\t\tsteps: -1,\n\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiodId,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\treturn pe.map(({ id }) => id);\n\t\t\t})\n\t\t\t.flat();\n\n\t\treturn uniq([...periodsIds, ...pastPeriods]);\n\t}, [periodsIds]);\n\n\tconst { loading, data: rawAnalyticsData } =\n\t\tuseDataQuery<ScorecardDataQueryResponse>(query, {\n\t\t\tvariables: {\n\t\t\t\tperiods: analyticsPeriod,\n\t\t\t\tdataItems: dataItemsIds,\n\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t},\n\t\t});\n\n\tconst rawData = useMemo(() => {\n\t\tif (!rawAnalyticsData) return [];\n\t\treturn sanitizeAnalyticsData(rawAnalyticsData);\n\t}, [rawAnalyticsData]);\n\n\tconst data = useMemo(() => {\n\t\tif (rawAnalyticsData) {\n\t\t\tconst data = getTableDataFromAnalytics(rawAnalyticsData, {\n\t\t\t\tmeta,\n\t\t\t\tstate,\n\t\t\t\tconfig,\n\t\t\t});\n\t\t\tif (!!state.options.emptyRows) {\n\t\t\t\treturn data;\n\t\t\t} else {\n\t\t\t\treturn data.filter(({ dataValues }) => !isEmpty(dataValues));\n\t\t\t}\n\t\t}\n\t\treturn [];\n\t}, [rawAnalyticsData, meta]);\n\n\treturn {\n\t\tloading,\n\t\tdata,\n\t\trawData,\n\t};\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useScorecardMeta } from '../components';
|
|
2
|
+
|
|
3
|
+
function useGetDataSourceLabel() {
|
|
4
|
+
const meta = useScorecardMeta();
|
|
5
|
+
return (dataSource) => {
|
|
6
|
+
if (dataSource.label) {
|
|
7
|
+
return dataSource.label;
|
|
8
|
+
}
|
|
9
|
+
const itemMeta = meta?.dataItems.find(
|
|
10
|
+
(item) => item.uid === dataSource.id
|
|
11
|
+
);
|
|
12
|
+
return itemMeta?.name ?? "";
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { useGetDataSourceLabel };
|
|
17
|
+
//# sourceMappingURL=out.js.map
|
|
18
|
+
//# sourceMappingURL=dataItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/dataItem.ts"],"names":[],"mappings":"AAAA,SAAS,wBAAwB;AAI1B,SAAS,wBAAwB;AACvC,QAAM,OAAO,iBAAiB;AAC9B,SAAO,CAAC,eAAoC;AAC3C,QAAI,WAAW,OAAO;AACrB,aAAO,WAAW;AAAA,IACnB;AACA,UAAM,WAAiC,MAAM,UAAU;AAAA,MACtD,CAAC,SAAS,KAAK,QAAQ,WAAW;AAAA,IACnC;AAEA,WAAO,UAAU,QAAQ;AAAA,EAC1B;AACD","sourcesContent":["import { useScorecardMeta } from \"../components\";\nimport type { ScorecardDataSource } from \"../schemas/config\";\nimport type { ItemMeta } from \"./metadata\";\n\nexport function useGetDataSourceLabel() {\n\tconst meta = useScorecardMeta();\n\treturn (dataSource: ScorecardDataSource) => {\n\t\tif (dataSource.label) {\n\t\t\treturn dataSource.label;\n\t\t}\n\t\tconst itemMeta: ItemMeta | undefined = meta?.dataItems.find(\n\t\t\t(item) => item.uid === dataSource.id,\n\t\t);\n\n\t\treturn itemMeta?.name ?? \"\";\n\t};\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc","sourcesContent":["export * from \"./dataItem\";\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { useScorecardConfig } from '../components
|
|
2
|
-
import { useScorecardState } from '../components/StateProvider';
|
|
1
|
+
import { useScorecardConfig, useScorecardState } from '../components';
|
|
3
2
|
import { useDataQuery, useConfig } from '@dhis2/app-runtime';
|
|
4
|
-
import { useMemo } from 'react';
|
|
3
|
+
import { useMemo, useEffect } from 'react';
|
|
5
4
|
import { getDimensions } from '../utils/analytics';
|
|
6
5
|
|
|
7
6
|
const query = {
|
|
@@ -36,21 +35,20 @@ const query = {
|
|
|
36
35
|
function useGetScorecardMeta() {
|
|
37
36
|
const config = useScorecardConfig();
|
|
38
37
|
const state = useScorecardState();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
});
|
|
48
|
-
const { loading, data } = useDataQuery(query, {
|
|
38
|
+
const { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(
|
|
39
|
+
() => getDimensions({
|
|
40
|
+
config,
|
|
41
|
+
state
|
|
42
|
+
}),
|
|
43
|
+
[state, config]
|
|
44
|
+
);
|
|
45
|
+
const { loading, data, refetch } = useDataQuery(query, {
|
|
49
46
|
variables: {
|
|
50
47
|
periods: periodsIds,
|
|
51
48
|
orgUnits: orgUnitsIds,
|
|
52
49
|
dataItems: dataItemsIds
|
|
53
|
-
}
|
|
50
|
+
},
|
|
51
|
+
lazy: true
|
|
54
52
|
});
|
|
55
53
|
const orgUnits = useMemo(() => {
|
|
56
54
|
return data?.meta?.metaData.dimensions["ou"].map((ou) => {
|
|
@@ -74,6 +72,13 @@ function useGetScorecardMeta() {
|
|
|
74
72
|
() => data?.ouLevel?.organisationUnitLevels ?? [],
|
|
75
73
|
[data?.ouLevel?.organisationUnitLevels]
|
|
76
74
|
);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
refetch({
|
|
77
|
+
periods: periodsIds,
|
|
78
|
+
orgUnits: orgUnitsIds,
|
|
79
|
+
dataItems: dataItemsIds
|
|
80
|
+
});
|
|
81
|
+
}, [state.periodSelection, state.orgUnitSelection]);
|
|
77
82
|
return {
|
|
78
83
|
loading,
|
|
79
84
|
orgUnits,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/metadata.ts"],"names":[],"mappings":"AAAA,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/metadata.ts"],"names":[],"mappings":"AAAA,SAAS,oBAAoB,yBAAyB;AACtD,SAAS,WAAW,oBAAoB;AACxC,SAAS,WAAW,eAAe;AACnC,SAAS,qBAAqB;AAG9B,MAAM,QAAa;AAAA,EAClB,MAAM;AAAA,IACL,UAAU;AAAA,IACV,QAAQ,CAAC;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACD,MAIM;AACL,aAAO;AAAA,QACN,UAAU;AAAA,QACV,eAAe;AAAA,QACf,eAAe;AAAA,QACf,oBAAoB;AAAA,QACpB,wBAAwB;AAAA,QACxB,WAAW;AAAA,UACV,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,UACvB,MAAM,UAAU,KAAK,GAAG,CAAC;AAAA,UACzB,MAAM,SAAS,KAAK,GAAG,CAAC;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,MACP,QAAQ,CAAC,MAAM,eAAe,OAAO;AAAA,IACtC;AAAA,EACD;AACD;AA2CO,SAAS,sBAAsB;AACrC,QAAM,SAAS,mBAAmB;AAClC,QAAM,QAAQ,kBAAkB;AAEhC,QAAM,EAAE,cAAc,aAAa,WAAW,IAAI;AAAA,IACjD,MACC,cAAc;AAAA,MACb;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACF,CAAC,OAAO,MAAM;AAAA,EACf;AAEA,QAAM,EAAE,SAAS,MAAM,QAAQ,IAAI,aAA2B,OAAO;AAAA,IACpE,WAAW;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,EACP,CAAC;AAED,QAAM,WAAW,QAAQ,MAAM;AAC9B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO;AAAA,QACN,GAAG,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,QAChC,WAAW,MAAM,MAAM,UAAU,gBAAgB,EAAE;AAAA,MACpD;AAAA,IACD,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,UAAU,QAAQ,MAAM;AAC7B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,IACrC,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,YAAY,QAAQ,MAAM;AAC/B,WACC,MAAM,MAAM,SAAS,WAAW,IAAI,EAClC,IAAI,CAAC,OAAO;AACZ,aAAO,MAAM,MAAM,SAAS,MAAM,EAAE;AAAA,IACrC,CAAC,EACA,OAAO,OAAO,KAAK,CAAC;AAAA,EAExB,GAAG,CAAC,MAAM,IAAI,CAAC;AACf,QAAM,gBAAgB;AAAA,IACrB,MAAM,MAAM,SAAS,0BAA0B,CAAC;AAAA,IAChD,CAAC,MAAM,SAAS,sBAAsB;AAAA,EACvC;AAEA,YAAU,MAAM;AACf,YAAQ;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,IACZ,CAAC;AAAA,EACF,GAAG,CAAC,MAAM,iBAAiB,MAAM,gBAAgB,CAAC;AAElD,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,cAAc;AAC7B,QAAM,EAAE,WAAW,IAAI,UAAU;AACjC,SACE,YAA4D,YAC7D;AAEF","sourcesContent":["import { useScorecardConfig, useScorecardState } from \"../components\";\nimport { useConfig, useDataQuery } from \"@dhis2/app-runtime\";\nimport { useEffect, useMemo } from \"react\";\nimport { getDimensions } from \"../utils/analytics\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\n\nconst query: any = {\n\tmeta: {\n\t\tresource: \"analytics\",\n\t\tparams: ({\n\t\t\tperiods,\n\t\t\torgUnits,\n\t\t\tdataItems,\n\t\t}: {\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}) => {\n\t\t\treturn {\n\t\t\t\tskipData: true,\n\t\t\t\thierarchyData: true,\n\t\t\t\tshowHierarchy: true,\n\t\t\t\tenhancedConditions: true,\n\t\t\t\tincludeMetadataDetails: true,\n\t\t\t\tdimension: [\n\t\t\t\t\t`pe:${periods.join(\";\")}`,\n\t\t\t\t\t`dx:${dataItems.join(\";\")}`,\n\t\t\t\t\t`ou:${orgUnits.join(\";\")}`,\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t},\n\touLevel: {\n\t\tresource: \"organisationUnitLevels\",\n\t\tparams: {\n\t\t\tfields: [\"id\", \"displayName\", \"level\"],\n\t\t},\n\t},\n};\n\nexport type ItemMeta = {\n\tuid: string;\n\tname: string;\n\tcode?: string;\n\tdescription?: string;\n\tvalueType?: string;\n\ttotalAggregationType?: string;\n\taggregationType?: string;\n\t[key: string]: string | number | undefined;\n};\n\ntype MetaResponse = {\n\tmeta: {\n\t\tcolumns: any[];\n\t\trows: [];\n\t\theaders: [];\n\t\tmetaData: {\n\t\t\tdimensions: {\n\t\t\t\tdx: string[];\n\t\t\t\tou: string[];\n\t\t\t\tpe: string[];\n\t\t\t\tco: string[];\n\t\t\t\t[key: string]: string[];\n\t\t\t};\n\t\t\titems: {\n\t\t\t\t[key: string]: ItemMeta;\n\t\t\t};\n\t\t\touNameHierarchy: {\n\t\t\t\t[key: string]: string;\n\t\t\t};\n\t\t};\n\t};\n\touLevel: {\n\t\torganisationUnitLevels: Array<{\n\t\t\tid: string;\n\t\t\tlevel: number;\n\t\t\tdisplayName: string;\n\t\t}>;\n\t};\n};\n\nexport function useGetScorecardMeta() {\n\tconst config = useScorecardConfig();\n\tconst state = useScorecardState();\n\n\tconst { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(\n\t\t() =>\n\t\t\tgetDimensions({\n\t\t\t\tconfig,\n\t\t\t\tstate,\n\t\t\t}),\n\t\t[state, config],\n\t);\n\n\tconst { loading, data, refetch } = useDataQuery<MetaResponse>(query, {\n\t\tvariables: {\n\t\t\tperiods: periodsIds,\n\t\t\torgUnits: orgUnitsIds,\n\t\t\tdataItems: dataItemsIds,\n\t\t},\n\t\tlazy: true,\n\t});\n\n\tconst orgUnits = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"ou\"]\n\t\t\t\t.map((ou) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...data?.meta?.metaData.items[ou],\n\t\t\t\t\t\thierarchy: data?.meta?.metaData?.ouNameHierarchy[ou],\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst periods = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"pe\"]\n\t\t\t\t.map((pe) => {\n\t\t\t\t\treturn data?.meta?.metaData.items[pe];\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst dataItems = useMemo(() => {\n\t\treturn (\n\t\t\tdata?.meta?.metaData.dimensions[\"dx\"]\n\t\t\t\t.map((dx) => {\n\t\t\t\t\treturn data?.meta?.metaData.items[dx];\n\t\t\t\t})\n\t\t\t\t.filter(Boolean) ?? []\n\t\t);\n\t}, [data?.meta]);\n\tconst orgUnitLevels = useMemo(\n\t\t() => data?.ouLevel?.organisationUnitLevels ?? [],\n\t\t[data?.ouLevel?.organisationUnitLevels],\n\t);\n\n\tuseEffect(() => {\n\t\trefetch({\n\t\t\tperiods: periodsIds,\n\t\t\torgUnits: orgUnitsIds,\n\t\t\tdataItems: dataItemsIds,\n\t\t});\n\t}, [state.periodSelection, state.orgUnitSelection]);\n\n\treturn {\n\t\tloading,\n\t\torgUnits,\n\t\tperiods,\n\t\tdataItems,\n\t\torgUnitLevels,\n\t};\n}\n\nexport function useCalendar() {\n\tconst { systemInfo } = useConfig();\n\treturn (\n\t\t(systemInfo as unknown as { calendar?: SupportedCalendar })?.calendar ??\n\t\t\"iso8601\"\n\t);\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { getCoreRowModel, getFilteredRowModel, getSortedRowModel } from '@tansta
|
|
|
2
2
|
import { useTableColumns } from './columns';
|
|
3
3
|
import { useScorecardData } from '../components/DataProvider';
|
|
4
4
|
import { useState } from 'react';
|
|
5
|
-
import { useScorecardState } from '../components
|
|
5
|
+
import { useScorecardState } from '../components';
|
|
6
6
|
|
|
7
7
|
function useTableSetup() {
|
|
8
8
|
const state = useScorecardState();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/table.ts"],"names":[],"mappings":"AAAA;AAAA,EAEC;AAAA,EACA;AAAA,EACA;AAAA,OAIM;AACP,SAAS,uBAAuB;AAEhC,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAE3B,SAAS,gBAAkD;AACjE,QAAM,QAAQ,kBAAkB;AAEhC,QAAM,oBAAoB,OAAO,SAAS,iBAAiB;AAC3D,QAAM,iBAAiB,OAAO,SAAS,cAAc;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/hooks/table.ts"],"names":[],"mappings":"AAAA;AAAA,EAEC;AAAA,EACA;AAAA,EACA;AAAA,OAIM;AACP,SAAS,uBAAuB;AAEhC,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAE3B,SAAS,gBAAkD;AACjE,QAAM,QAAQ,kBAAkB;AAEhC,QAAM,oBAAoB,OAAO,SAAS,iBAAiB;AAC3D,QAAM,iBAAiB,OAAO,SAAS,cAAc;AACrD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA6B,CAAC,CAAC;AACzE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAA0B;AAAA,IACzE,SAAS;AAAA,IACT,OAAO;AAAA,EACR,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,CAAC,CAAC;AACvD,QAAM,UAAU,gBAAgB;AAChC,QAAM,EAAE,KAAK,IAAI,iBAAiB;AAElC,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,uBAAuB;AAAA,IACvB,iBAAiB;AAAA,IACjB,iBAAiB,gBAAgB;AAAA,IACjC,qBAAqB,oBAAoB;AAAA,IACzC,mBAAmB,kBAAkB;AAAA,IACrC,0BAA0B;AAAA,EAC3B;AACD","sourcesContent":["import {\n\ttype ColumnFiltersState,\n\tgetCoreRowModel,\n\tgetFilteredRowModel,\n\tgetSortedRowModel,\n\ttype SortingState,\n\ttype TableOptions,\n\ttype VisibilityState,\n} from \"@tanstack/react-table\";\nimport { useTableColumns } from \"./columns\";\nimport type { ScorecardTableData } from \"../schemas/config\";\nimport { useScorecardData } from \"../components/DataProvider\";\nimport { useState } from \"react\";\nimport { useScorecardState } from \"../components\";\n\nexport function useTableSetup(): TableOptions<ScorecardTableData> {\n\tconst state = useScorecardState();\n\n\tconst showAverageColumn = state?.options?.averageColumn ?? false;\n\tconst showItemNumber = state?.options?.itemNumber ?? false;\n\tconst [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\tconst [columnVisibility, setColumnVisibility] = useState<VisibilityState>({\n\t\taverage: showAverageColumn,\n\t\tcount: showItemNumber,\n\t});\n\n\tconst [sorting, setSorting] = useState<SortingState>([]);\n\tconst columns = useTableColumns();\n\tconst { data } = useScorecardData();\n\n\treturn {\n\t\tcolumns,\n\t\tdata,\n\t\tstate: {\n\t\t\tcolumnFilters,\n\t\t\tsorting,\n\t\t\tcolumnVisibility,\n\t\t},\n\t\tonColumnFiltersChange: setColumnFilters,\n\t\tonSortingChange: setSorting,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\tgetFilteredRowModel: getFilteredRowModel(),\n\t\tgetSortedRowModel: getSortedRowModel(),\n\t\tonColumnVisibilityChange: setColumnVisibility,\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Scorecard/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc","sourcesContent":["export * from \"./Scorecard\";\nexport * from \"./schemas/config\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Scorecard/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","sourcesContent":["export * from \"./Scorecard\";\nexport * from \"./schemas/config\";\nexport * from \"./components\";\nexport * from \"./hooks\";\n"]}
|
|
@@ -72,6 +72,7 @@ const dataSourceSchema = z.object({
|
|
|
72
72
|
weight: z.number(),
|
|
73
73
|
legends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),
|
|
74
74
|
specificTargets: z.array(specificTargetSchema),
|
|
75
|
+
specificTargetsSet: z.boolean().optional(),
|
|
75
76
|
description: z.string().optional()
|
|
76
77
|
});
|
|
77
78
|
const dataHolderSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/schemas/config.ts"],"names":["ScorecardTableOrientation","ScorecardTableDimension","ScorecardDraggableItems"],"mappings":"AAAA,SAAS,SAAS;AAGX,MAAM,uBAAuB,EAAE,KAAK;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAIM,MAAM,yBAAyB,EAAE,OAAO;AAAA,EAC9C,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAAA,EAChB,MAAM,EAAE,OAAO;AAAA,EACf,WAAW,EAAE,QAAQ,EAAE,SAAS;AACjC,CAAC;AAIM,MAAM,6BAA6B,EAAE,OAAO;AAAA,EAClD,eAAe,EAAE,QAAQ;AAAA,EACzB,oBAAoB,EAAE,KAAK,CAAC,OAAO,iBAAiB,eAAe,CAAC;AAAA,EACpE,YAAY,EAAE,QAAQ;AAAA,EACtB,WAAW,EAAE,QAAQ;AAAA,EACrB,uBAAuB,EAAE,QAAQ;AAAA,EACjC,YAAY,EAAE,QAAQ;AAAA,EACtB,QAAQ,EAAE,QAAQ;AAAA,EAClB,eAAe,EAAE,QAAQ;AAAA,EACzB,OAAO,EAAE,QAAQ;AAAA,EACjB,QAAQ,EAAE,QAAQ;AAAA,EAClB,gBAAgB,EAAE,QAAQ;AAAA,EAC1B,kBAAkB,EAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAIM,MAAM,kCAAkC,EAAE,OAAO;AAAA,EACvD,aAAa,EAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,aAAa,EAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE;AAAA,IACX,EAAE,OAAO;AAAA,MACR,IAAI,EAAE,OAAO;AAAA,IACd,CAAC;AAAA,EACF;AAAA,EACA,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EAC1B,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;AAC3B,CAAC;AAIM,MAAM,wBAAwB,EAAE,OAAO;AAAA,EAC7C,SAAS,EAAE;AAAA,IACV,EAAE,OAAO;AAAA,MACR,IAAI,EAAE,OAAO;AAAA,IACd,CAAC;AAAA,EACF;AAAA,EACA,MAAM,EAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAIM,MAAM,eAAe,EAAE,OAAO;AAAA,EACpC,oBAAoB,EAAE,OAAO;AAAA,EAC7B,IAAI,EAAE,OAAO;AAAA,EACb,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,EAC5C,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAIM,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC5C,MAAM,EAAE,KAAK,CAAC,UAAU,SAAS,CAAC;AAAA,EAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EACzB,SAAS,EAAE,MAAM,YAAY;AAC9B,CAAC;AAIM,MAAM,2BAA2B,EAAE;AAAA,EACzC,EAAE,OAAO;AAAA,EACT,EAAE,MAAM,YAAY;AACrB;AAIO,MAAM,mBAAmB,EAAE,OAAO;AAAA,EACxC,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,MAAM;AAAA,EACN,eAAe,EAAE,QAAQ;AAAA,EACzB,YAAY,EAAE,QAAQ;AAAA,EACtB,cAAc,EAAE,OAAO;AAAA,EACvB,YAAY,EAAE,QAAQ;AAAA,EACtB,QAAQ,EAAE,OAAO;AAAA,EACjB,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAAA,EAClE,iBAAiB,EAAE,MAAM,oBAAoB;AAAA,EAC7C,aAAa,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,MAAM,mBAAmB,EAAE,OAAO;AAAA,EACxC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,EACpC,aAAa,EAAE,MAAM,gBAAgB;AACtC,CAAC;AAIM,MAAM,kBAAkB,EAAE,OAAO;AAAA,EACvC,IAAI,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;AAAA,EACpC,aAAa,EAAE,MAAM,gBAAgB;AAAA,EACrC,OAAO,EAAE,OAAO,CAAC,CAAC;AAAA,EAClB,OAAO,EAAE,OAAO;AACjB,CAAC;AAID,MAAM,kBAAkB,EAAE,OAAO;AAAA,EAChC,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAAA,EAChB,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,EAAE,OAAO;AAAA,EACvB,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,mBAAmB,EAAE,MAAM,sBAAsB;AAAA,EACjD,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,eAAe,EAAE,OAAO;AAAA,IACvB,YAAY,EAAE,MAAM,eAAe;AAAA,EACpC,CAAC;AAAA,EACD,uBAAuB,EAAE,MAAM,gBAAgB;AAAA,EAC/C,kBAAkB,EAAE,MAAM,EAAE,OAAO,CAAC;AACrC,CAAC;AAID,MAAM,uBAAuB,EAAE,OAAO;AAAA,EACrC,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,cAAc,EAAE,QAAQ,EAAE,SAAS;AACpC,CAAC;AAIM,MAAM,yBAAyB,EAAE,OAAO;AAAA,EAC9C,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAO,EAAE,OAAO,EAAE,SAAS;AAC5B,CAAC;AAIM,MAAM,qBAAqB,EAAE,OAAO;AAAA,EAC1C,OAAO,EAAE,OAAO;AAAA,EAChB,YAAY,EAAE,MAAM,sBAAsB;AAAA,EAC1C,YAAY,iBAAiB,SAAS;AAAA,EACtC,SAAS,EACP,OAAO;AAAA,IACP,KAAK,EAAE,OAAO;AAAA,IACd,MAAM,EAAE,OAAO;AAAA,IACf,WAAW,EAAE,OAAO;AAAA,EACrB,CAAC,EACA,SAAS;AAAA,EACX,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAIM,MAAM,yBAAyB,EAAE,OAAO;AAAA,EAC9C,aAAa,EAAE;AAAA,IACd,iBAAiB,OAAO;AAAA,MACvB,MAAM,EAAE,OAAO;AAAA,QACd,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,QAC9B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AAAA,EACA,SAAS,EAAE,OAAO;AAAA,IACjB,KAAK,EAAE,OAAO;AAAA,IACd,MAAM,EAAE,OAAO;AAAA,IACf,WAAW,EAAE,OAAO;AAAA,EACrB,CAAC;AAAA,EACD,QAAQ,EAAE,OAAO;AAClB,CAAC;AAMM,IAAK,4BAAL,kBAAKA,+BAAL;AACN,EAAAA,2BAAA,sBAAmB;AACnB,EAAAA,2BAAA,sBAAmB;AAFR,SAAAA;AAAA,GAAA;AAKL,IAAK,0BAAL,kBAAKC,6BAAL;AACN,EAAAA,yBAAA,WAAQ;AACR,EAAAA,yBAAA,eAAY;AACZ,EAAAA,yBAAA,aAAU;AACV,EAAAA,yBAAA,UAAO;AAJI,SAAAA;AAAA,GAAA;AAOL,IAAK,0BAAL,kBAAKC,6BAAL;AACN,EAAAA,yBAAA,QAAK;AACL,EAAAA,yBAAA,UAAO;AAFI,SAAAA;AAAA,GAAA","sourcesContent":["import { z } from \"zod\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport const supportedDataSources = z.enum([\n\t\"indicator\",\n\t\"dataElement\",\n\t\"dataSet\",\n\t\"\",\n]);\n\nexport type SupportedDataSources = z.infer<typeof supportedDataSources>;\n\nexport const legendDefinitionSchema = z.object({\n\tid: z.string(),\n\tcolor: z.string(),\n\tname: z.string(),\n\tisDefault: z.boolean().optional(),\n});\n\nexport type LegendDefinition = z.infer<typeof legendDefinitionSchema>;\n\nexport const scorecardViewOptionsSchema = z.object({\n\taverageColumn: z.boolean(),\n\taverageDisplayType: z.enum([\"ALL\", \"ABOVE_AVERAGE\", \"BELOW_AVERAGE\"]),\n\taverageRow: z.boolean(),\n\temptyRows: z.boolean(),\n\thighlightedIndicators: z.boolean(),\n\titemNumber: z.boolean(),\n\tlegend: z.boolean(),\n\tshowHierarchy: z.boolean(),\n\ttitle: z.boolean(),\n\tarrows: z.boolean(),\n\tshowDataInRows: z.boolean(),\n\tdisableExpanding: z.boolean().optional(),\n});\n\nexport type ScorecardViewOptions = z.infer<typeof scorecardViewOptionsSchema>;\n\nexport const organisationUnitSelectionSchema = z.object({\n\tuserOrgUnit: z.boolean().optional(),\n\tuserSubUnit: z.boolean().optional(),\n\tuserSubX2Unit: z.boolean().optional(),\n\torgUnits: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\tgroups: z.array(z.string()),\n\tlevels: z.array(z.string()),\n});\n\nexport type OrgUnitSelection = z.infer<typeof organisationUnitSelectionSchema>;\n\nexport const periodSelectionSchema = z.object({\n\tperiods: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\ttype: z.string().optional(),\n});\n\nexport type PeriodSelection = z.infer<typeof periodSelectionSchema>;\n\nexport const legendSchema = z.object({\n\tlegendDefinitionId: z.string(),\n\tid: z.string(),\n\tstartValue: z.union([z.string(), z.number()]),\n\tendValue: z.union([z.string(), z.number()]),\n});\n\nexport type ScorecardLegend = z.infer<typeof legendSchema>;\n\nexport const specificTargetSchema = z.object({\n\ttype: z.enum([\"period\", \"orgUnit\"]),\n\titems: z.array(z.string()),\n\tlegends: z.array(legendSchema),\n});\n\nexport type SpecificTarget = z.infer<typeof specificTargetSchema>;\n\nexport const orgUnitLevelLegendSchema = z.record(\n\tz.string(),\n\tz.array(legendSchema),\n);\n\nexport type OrgUnitLevelLegend = z.infer<typeof orgUnitLevelLegendSchema>;\n\nexport const dataSourceSchema = z.object({\n\tid: z.string(),\n\tlabel: z.string().optional(),\n\ttype: supportedDataSources,\n\tdisplayArrows: z.boolean(),\n\thighIsGood: z.boolean(),\n\teffectiveGap: z.number(),\n\tshowColors: z.boolean(),\n\tweight: z.number(),\n\tlegends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),\n\tspecificTargets: z.array(specificTargetSchema),\n\tdescription: z.string().optional(),\n});\n\nexport type ScorecardDataSource = z.infer<typeof dataSourceSchema>;\n\nexport const dataHolderSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataSources: z.array(dataSourceSchema),\n});\n\nexport type ScorecardDataHolder = z.infer<typeof dataHolderSchema>;\n\nexport const dataGroupSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataHolders: z.array(dataHolderSchema),\n\tstyle: z.object({}),\n\ttitle: z.string(),\n});\n\nexport type ScorecardDataGroup = z.infer<typeof dataGroupSchema>;\n\nconst scorecardConfig = z.object({\n\tid: z.string(),\n\ttitle: z.string(),\n\tsubtitle: z.string(),\n\tcustomHeader: z.string(),\n\tdescription: z.string().optional(),\n\tlegendDefinitions: z.array(legendDefinitionSchema),\n\toptions: scorecardViewOptionsSchema,\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\tdataSelection: z.object({\n\t\tdataGroups: z.array(dataGroupSchema),\n\t}),\n\thighlightedIndicators: z.array(dataSourceSchema),\n\tadditionalLabels: z.array(z.string()),\n});\n\nexport type ScorecardConfig = z.infer<typeof scorecardConfig>;\n\nconst scorecardStateSchema = z.object({\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\toptions: scorecardViewOptionsSchema,\n\tnested: z.boolean().optional(),\n\thasOnePeriod: z.boolean().optional(),\n});\n\nexport type ScorecardState = z.infer<typeof scorecardStateSchema>;\n\nexport const scorecardAnalyticsData = z.object({\n\tdx: z.string().optional(),\n\tpe: z.string().optional(),\n\tou: z.string().optional(),\n\tvalue: z.string().optional(),\n});\n\nexport type ScorecardAnalyticsData = z.infer<typeof scorecardAnalyticsData>;\n\nexport const scorecardTableData = z.object({\n\tlabel: z.string(),\n\tdataValues: z.array(scorecardAnalyticsData),\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n\texpand: z.boolean().optional(),\n});\n\nexport type ScorecardTableData = z.infer<typeof scorecardTableData> & RowData;\n\nexport const scorecardTableCellData = z.object({\n\tdataSources: z.array(\n\t\tdataSourceSchema.extend({\n\t\t\tdata: z.object({\n\t\t\t\tprevious: z.number().optional(),\n\t\t\t\tcurrent: z.number().optional(),\n\t\t\t}),\n\t\t}),\n\t),\n\torgUnit: z.object({\n\t\tuid: z.string(),\n\t\tname: z.string(),\n\t\thierarchy: z.string(),\n\t}),\n\tperiod: z.string(),\n});\n\nexport type ScorecardTableCellData = z.infer<typeof scorecardTableCellData>;\n\nexport type SanitizedScorecardTableData = z.infer<typeof scorecardTableData>;\n\nexport enum ScorecardTableOrientation {\n\tORG_UNIT_VS_DATA = \"orgUnitsVsData\",\n\tDATA_VS_ORG_UNIT = \"dataVsOrgUnits\",\n}\n\nexport enum ScorecardTableDimension {\n\tGROUP = \"group\",\n\tORG_UNITS = \"orgUnits\",\n\tPERIODS = \"periods\",\n\tDATA = \"data\",\n}\n\nexport enum ScorecardDraggableItems {\n\tou = \"ou\",\n\tdata = \"data\",\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/schemas/config.ts"],"names":["ScorecardTableOrientation","ScorecardTableDimension","ScorecardDraggableItems"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport const supportedDataSources = z.enum([\n\t\"indicator\",\n\t\"dataElement\",\n\t\"dataSet\",\n\t\"\",\n]);\n\nexport type SupportedDataSources = z.infer<typeof supportedDataSources>;\n\nexport const legendDefinitionSchema = z.object({\n\tid: z.string(),\n\tcolor: z.string(),\n\tname: z.string(),\n\tisDefault: z.boolean().optional(),\n});\n\nexport type LegendDefinition = z.infer<typeof legendDefinitionSchema>;\n\nexport const scorecardViewOptionsSchema = z.object({\n\taverageColumn: z.boolean(),\n\taverageDisplayType: z.enum([\"ALL\", \"ABOVE_AVERAGE\", \"BELOW_AVERAGE\"]),\n\taverageRow: z.boolean(),\n\temptyRows: z.boolean(),\n\thighlightedIndicators: z.boolean(),\n\titemNumber: z.boolean(),\n\tlegend: z.boolean(),\n\tshowHierarchy: z.boolean(),\n\ttitle: z.boolean(),\n\tarrows: z.boolean(),\n\tshowDataInRows: z.boolean(),\n\tdisableExpanding: z.boolean().optional(),\n});\n\nexport type ScorecardViewOptions = z.infer<typeof scorecardViewOptionsSchema>;\n\nexport const organisationUnitSelectionSchema = z.object({\n\tuserOrgUnit: z.boolean().optional(),\n\tuserSubUnit: z.boolean().optional(),\n\tuserSubX2Unit: z.boolean().optional(),\n\torgUnits: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\tgroups: z.array(z.string()),\n\tlevels: z.array(z.string()),\n});\n\nexport type OrgUnitSelection = z.infer<typeof organisationUnitSelectionSchema>;\n\nexport const periodSelectionSchema = z.object({\n\tperiods: z.array(\n\t\tz.object({\n\t\t\tid: z.string(),\n\t\t}),\n\t),\n\ttype: z.string().optional(),\n});\n\nexport type PeriodSelection = z.infer<typeof periodSelectionSchema>;\n\nexport const legendSchema = z.object({\n\tlegendDefinitionId: z.string(),\n\tid: z.string(),\n\tstartValue: z.union([z.string(), z.number()]),\n\tendValue: z.union([z.string(), z.number()]),\n});\n\nexport type ScorecardLegend = z.infer<typeof legendSchema>;\n\nexport const specificTargetSchema = z.object({\n\ttype: z.enum([\"period\", \"orgUnit\"]),\n\titems: z.array(z.string()),\n\tlegends: z.array(legendSchema),\n});\n\nexport type SpecificTarget = z.infer<typeof specificTargetSchema>;\n\nexport const orgUnitLevelLegendSchema = z.record(\n\tz.string(),\n\tz.array(legendSchema),\n);\n\nexport type OrgUnitLevelLegend = z.infer<typeof orgUnitLevelLegendSchema>;\n\nexport const dataSourceSchema = z.object({\n\tid: z.string(),\n\tlabel: z.string().optional(),\n\ttype: supportedDataSources,\n\tdisplayArrows: z.boolean(),\n\thighIsGood: z.boolean(),\n\teffectiveGap: z.number(),\n\tshowColors: z.boolean(),\n\tweight: z.number(),\n\tlegends: z.union([z.array(legendSchema), orgUnitLevelLegendSchema]),\n\tspecificTargets: z.array(specificTargetSchema),\n\tspecificTargetsSet: z.boolean().optional(),\n\tdescription: z.string().optional(),\n});\n\nexport type ScorecardDataSource = z.infer<typeof dataSourceSchema>;\n\nexport const dataHolderSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataSources: z.array(dataSourceSchema),\n});\n\nexport type ScorecardDataHolder = z.infer<typeof dataHolderSchema>;\n\nexport const dataGroupSchema = z.object({\n\tid: z.union([z.number(), z.string()]),\n\tdataHolders: z.array(dataHolderSchema),\n\tstyle: z.object({}),\n\ttitle: z.string(),\n});\n\nexport type ScorecardDataGroup = z.infer<typeof dataGroupSchema>;\n\nconst scorecardConfig = z.object({\n\tid: z.string(),\n\ttitle: z.string(),\n\tsubtitle: z.string(),\n\tcustomHeader: z.string(),\n\tdescription: z.string().optional(),\n\tlegendDefinitions: z.array(legendDefinitionSchema),\n\toptions: scorecardViewOptionsSchema,\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\tdataSelection: z.object({\n\t\tdataGroups: z.array(dataGroupSchema),\n\t}),\n\thighlightedIndicators: z.array(dataSourceSchema),\n\tadditionalLabels: z.array(z.string()),\n});\n\nexport type ScorecardConfig = z.infer<typeof scorecardConfig>;\n\nconst scorecardStateSchema = z.object({\n\torgUnitSelection: organisationUnitSelectionSchema,\n\tperiodSelection: periodSelectionSchema,\n\toptions: scorecardViewOptionsSchema,\n\tnested: z.boolean().optional(),\n\thasOnePeriod: z.boolean().optional(),\n});\n\nexport type ScorecardState = z.infer<typeof scorecardStateSchema>;\n\nexport const scorecardAnalyticsData = z.object({\n\tdx: z.string().optional(),\n\tpe: z.string().optional(),\n\tou: z.string().optional(),\n\tvalue: z.string().optional(),\n});\n\nexport type ScorecardAnalyticsData = z.infer<typeof scorecardAnalyticsData>;\n\nexport const scorecardTableData = z.object({\n\tlabel: z.string(),\n\tdataValues: z.array(scorecardAnalyticsData),\n\tdataHolder: dataHolderSchema.optional(),\n\torgUnit: z\n\t\t.object({\n\t\t\tuid: z.string(),\n\t\t\tname: z.string(),\n\t\t\thierarchy: z.string(),\n\t\t})\n\t\t.optional(),\n\texpand: z.boolean().optional(),\n});\n\nexport type ScorecardTableData = z.infer<typeof scorecardTableData> & RowData;\n\nexport const scorecardTableCellData = z.object({\n\tdataSources: z.array(\n\t\tdataSourceSchema.extend({\n\t\t\tdata: z.object({\n\t\t\t\tprevious: z.number().optional(),\n\t\t\t\tcurrent: z.number().optional(),\n\t\t\t}),\n\t\t}),\n\t),\n\torgUnit: z.object({\n\t\tuid: z.string(),\n\t\tname: z.string(),\n\t\thierarchy: z.string(),\n\t}),\n\tperiod: z.string(),\n});\n\nexport type ScorecardTableCellData = z.infer<typeof scorecardTableCellData>;\n\nexport type SanitizedScorecardTableData = z.infer<typeof scorecardTableData>;\n\nexport enum ScorecardTableOrientation {\n\tORG_UNIT_VS_DATA = \"orgUnitsVsData\",\n\tDATA_VS_ORG_UNIT = \"dataVsOrgUnits\",\n}\n\nexport enum ScorecardTableDimension {\n\tGROUP = \"group\",\n\tORG_UNITS = \"orgUnits\",\n\tPERIODS = \"periods\",\n\tDATA = \"data\",\n}\n\nexport enum ScorecardDraggableItems {\n\tou = \"ou\",\n\tdata = \"data\",\n}\n"]}
|
|
@@ -12,7 +12,17 @@ function getDimensions({
|
|
|
12
12
|
const orgUnitsIds = getOrgUnitsForAnalytics(
|
|
13
13
|
state?.orgUnitSelection ?? config?.orgUnitSelection
|
|
14
14
|
);
|
|
15
|
-
const periodsIds = state.periodSelection.periods.map((
|
|
15
|
+
const periodsIds = state.periodSelection.periods.map((period) => period.id);
|
|
16
|
+
return {
|
|
17
|
+
dataItemsIds,
|
|
18
|
+
orgUnitsIds,
|
|
19
|
+
periodsIds
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function getDimensionsFromMeta({ meta }) {
|
|
23
|
+
const dataItemsIds = meta.dataItems.map((item) => item.uid);
|
|
24
|
+
const orgUnitsIds = meta.orgUnits.map((orgUnit) => orgUnit.uid);
|
|
25
|
+
const periodsIds = meta.periods.map((period) => period.uid);
|
|
16
26
|
return {
|
|
17
27
|
dataItemsIds,
|
|
18
28
|
orgUnitsIds,
|
|
@@ -20,6 +30,6 @@ function getDimensions({
|
|
|
20
30
|
};
|
|
21
31
|
}
|
|
22
32
|
|
|
23
|
-
export { getDimensions };
|
|
33
|
+
export { getDimensions, getDimensionsFromMeta };
|
|
24
34
|
//# sourceMappingURL=out.js.map
|
|
25
35
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/analytics.ts"],"names":[],"mappings":"AACA,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/analytics.ts"],"names":[],"mappings":"AACA,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAGjC,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AACD,GAGG;AACF,QAAM,kBAAkB;AAAA,IACvB,QAAQ,eAAe,cAAc,CAAC;AAAA,EACvC;AAEA,QAAM,eAAe,iBAAiB,IAAI,CAAC,SAAS,MAAM,EAAE;AAC5D,QAAM,cAAc;AAAA,IACnB,OAAO,oBAAoB,QAAQ;AAAA,EACpC;AACA,QAAM,aAAa,MAAM,gBAAgB,QAAQ,IAAI,CAAC,WAAW,OAAO,EAAE;AAE1E,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,sBAAsB,EAAE,KAAK,GAA4B;AACxE,QAAM,eAAe,KAAK,UAAU,IAAI,CAAC,SAAS,KAAK,GAAG;AAC1D,QAAM,cAAc,KAAK,SAAS,IAAI,CAAC,YAAY,QAAQ,GAAG;AAC9D,QAAM,aAAa,KAAK,QAAQ,IAAI,CAAC,WAAW,OAAO,GAAG;AAE1D,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\nimport { getDataSourcesFromGroups } from \"./dataSources\";\nimport { getOrgUnitsForAnalytics } from \"./orgUnits\";\nimport type { ScorecardMeta } from \"../components\";\n\nexport function getDimensions({\n\tconfig,\n\tstate,\n}: {\n\tconfig: ScorecardConfig;\n\tstate: ScorecardState;\n}) {\n\tconst dataItemObjects = getDataSourcesFromGroups(\n\t\tconfig?.dataSelection?.dataGroups ?? [],\n\t);\n\n\tconst dataItemsIds = dataItemObjects?.map((item) => item?.id);\n\tconst orgUnitsIds = getOrgUnitsForAnalytics(\n\t\tstate?.orgUnitSelection ?? config?.orgUnitSelection,\n\t);\n\tconst periodsIds = state.periodSelection.periods.map((period) => period.id);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n\nexport function getDimensionsFromMeta({ meta }: { meta: ScorecardMeta }) {\n\tconst dataItemsIds = meta.dataItems.map((item) => item.uid);\n\tconst orgUnitsIds = meta.orgUnits.map((orgUnit) => orgUnit.uid);\n\tconst periodsIds = meta.periods.map((period) => period.uid);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n"]}
|
|
@@ -289,12 +289,24 @@ function getDataColumnHeaders({
|
|
|
289
289
|
const periods = meta.periods ?? [];
|
|
290
290
|
const hasOnePeriod = periods.length === 1;
|
|
291
291
|
if (hasOneGroup) {
|
|
292
|
-
return
|
|
293
|
-
return
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
292
|
+
return dataGroups.map(({ title, dataHolders, id }) => {
|
|
293
|
+
return columnHelper.group({
|
|
294
|
+
id: id.toString(),
|
|
295
|
+
header: DataHeaderCell,
|
|
296
|
+
meta: {
|
|
297
|
+
label: title,
|
|
298
|
+
bold: true
|
|
299
|
+
},
|
|
300
|
+
columns: dataHolders.map((dataHolder) => {
|
|
301
|
+
return getDataHolderColumn({
|
|
302
|
+
hasOnePeriod,
|
|
303
|
+
dataHolder,
|
|
304
|
+
periods,
|
|
305
|
+
calendar
|
|
306
|
+
});
|
|
307
|
+
}),
|
|
308
|
+
enableSorting: false,
|
|
309
|
+
footer: () => null
|
|
298
310
|
});
|
|
299
311
|
});
|
|
300
312
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/columns.ts"],"names":["id"],"mappings":"AAQA;AAAA,EAEC;AAAA,OAEM;AACP,SAAS,MAAM,WAAW;AAE1B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AAEP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAElC,MAAM,eAAe,mBAAuC;AAE5D,SAAS,gBACR,MACA,MACA,UACC;AACD,QAAM,QAAQ,KAAK,SAAS,QAAQ;AACpC,QAAM,QAAQ,KAAK,SAAS,QAAQ;AAEpC,QAAM,SAAS,KAAK,MAAM,WAAW,GAAG,KAAK,WAAW;AACxD,QAAM,SAAS,KAAK,MAAM,WAAW,GAAG,KAAK,WAAW;AAExD,MAAI,WAAW,QAAQ;AACtB,WAAO;AAAA,EACR;AAEA,SAAO,SAAS,SAAS,IAAI;AAC9B;AAEO,SAAS,gBAAgB;AAAA,EAC/B;AAAA,EACA;AACD,GAGG;AACF,QAAM,sBAAsB,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACzD,WAAO,CAAC,CAAC,KAAK,QAAQ,KAAK,CAAC,EAAE,IAAI,MAAM,QAAQ,EAAE;AAAA,EACnD,CAAC;AACD,QAAM,SAAS,oBAAoB,IAAI,CAAC,EAAE,MAAM,MAAO,QAAQ,CAAC,QAAQ,CAAE;AAE1E,SAAO,KAAK,MAAO,IAAI,MAAM,IAAI,OAAO,SAAU,GAAG,IAAI;AAC1D;AAEA,SAAS,UAAU;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,mBAAmB,OAAO,KAAK,CAAC,EAAE,GAAG,MAAM;AAChD,WAAO,OAAO;AAAA,EACf,CAAC;AAED,QAAM,oBAAoB,OAAO,KAAK,CAAC,EAAE,GAAG,MAAM;AACjD,WAAO,OAAO;AAAA,EACf,CAAC;AAED,QAAM,gBAAgB,WAAW,mBAAmB,SAAS,EAAE;AAC/D,QAAM,eAAe,WAAW,kBAAkB,SAAS,EAAE;AAE7D,SAAO;AAAA,IACN,UAAU,MAAM,aAAa,IAAI,SAAY;AAAA,IAC7C,SAAS,MAAM,YAAY,IAAI,SAAY;AAAA,EAC5C;AACD;AAEO,SAAS,wBAAwB;AAAA,EACvC;AAAA,EACA;AACD,GAG4D;AAC3D,QAAM,WAAW,KAAK,YAAY,CAAC;AACnC,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,SAAO,SAAS,IAAI,CAAC,YAAY;AAChC,WAAO,aAAa,MAAM;AAAA,MACzB,IAAI,QAAQ;AAAA,MACZ,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,OAAO,QAAQ;AAAA,MAChB;AAAA,MACA,SAAS,QAAQ;AAAA,QAAI,CAAC,EAAE,MAAM,IAAI,MACjC,aAAa;AAAA,UACZ,CAAC,YAAY;AACZ,kBAAM,gBAAgB;AACtB,kBAAM,iBAAiB;AAAA,cACtB,wBAAwB;AAAA,gBACvB;AAAA,gBACA,QAAQ,8BAA8B;AAAA,kBACrC;AAAA,kBACA,UAAU;AAAA,gBACX,CAAC;AAAA,gBACD,OAAO;AAAA,cACR,CAAC;AAAA,YACF,GAAG;AAEH,kBAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACpD,qBAAO,OAAO,QAAQ;AAAA,YACvB,CAAC;AAED,kBAAM,cACL,QAAQ,YAAY,aAAa;AAAA,cAChC,CAAC,eAAe;AACf,sBAAM,mBAAmB,OAAO;AAAA,kBAC/B,CAAC,UAAU;AACV,2BAAO,MAAM,OAAO,WAAW;AAAA,kBAChC;AAAA,gBACD;AAEA,sBAAM,OAAO,UAAU;AAAA,kBACtB;AAAA,kBACA;AAAA,kBACA,QAAQ;AAAA,gBACT,CAAC;AAED,uBAAO;AAAA,kBACN,GAAG;AAAA,kBACH;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAED,mBAAO;AAAA,cACN,GAAG;AAAA,cACH,QAAQ;AAAA,cACR;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,QAAQ;AAAA,YACR,MAAM;AAAA,cACL,OAAO;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,YACzB,eAAe;AAAA,YACf,WAAW;AAAA,YACX,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF,CAAC;AACF;AAEO,SAAS,iBAAiB;AAAA,EAChC;AACD,GAGG;AACF,SAAO,aAAa,MAAM;AAAA,IACzB,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,CAAC,YAAY;AACZ,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,aAAa,QAAQ,YAAY,aAAa;AAAA,cAC7C,CAAC,eAAe;AACf,sBAAM,aAAa,QAAQ,WAAW;AAAA,kBACrC,CAAC,EAAE,GAAG,MAAM,OAAO,WAAW;AAAA,gBAC/B;AACA,uBAAO;AAAA,kBACN,GAAG;AAAA,kBACH,SAAS,gBAAgB;AAAA,oBACxB;AAAA,oBACA;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,YACA,SAAS,gBAAgB;AAAA,cACxB,YAAY,QAAQ;AAAA,cACpB;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,QACA;AAAA,UACC,IAAI;AAAA,UACJ,QAAQ,MAAM;AAAA,UACd,MAAM;AAAA,UACN,cAAc;AAAA,UACd,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AACF;AAEA,SAAS,oBAAoB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKG;AACF,QAAM,EAAE,IAAI,YAAY,IAAI;AAE5B,QAAM,SACL,YAAY,WAAW,IACpB,KAAK,WAAW,GAAG,QACnB,YAAY;AAAA,IACZ,CAAC,KAAK,EAAE,OAAO,IAAAA,IAAG,MAAM,GAAG,GAAG,MAAM,KAAK;AAAA,IACzC;AAAA,EACD;AAEH,MAAI,cAAc;AACjB,WAAO,aAAa;AAAA,MACnB,CAAC,YAAY;AACZ,cAAM,gBAAgB,KAAK,OAAO,EAAG;AACrC,cAAM,iBAAiB;AAAA,UACtB,wBAAwB;AAAA,YACvB;AAAA,YACA,QAAQ,8BAA8B;AAAA,cACrC;AAAA,cACA,UAAU;AAAA,YACX,CAAC;AAAA,YACD,OAAO;AAAA,UACR,CAAC;AAAA,QACF,GAAG;AAEH,cAAM,uBAAuB,YAAY,IAAI,CAAC,eAAe;AAC5D,gBAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACpD,mBAAO,OAAO,WAAW;AAAA,UAC1B,CAAC;AAED,gBAAM,OAAO,UAAU;AAAA,YACtB;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,YACN,GAAG;AAAA,YACH;AAAA,UACD;AAAA,QACD,CAAC;AACD,eAAO;AAAA,UACN,GAAG;AAAA,UACH,aAAa;AAAA,UACb,QAAQ,KAAK,OAAO,GAAG;AAAA,QACxB;AAAA,MACD;AAAA,MACA;AAAA,QACC,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,OAAO;AAAA,QACR;AAAA,QACA,IAAI,GAAG,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO,aAAa,MAAM;AAAA,IACzB,IAAI,GAAG,SAAS;AAAA,IAChB,SAAS,QAAQ;AAAA,MAAI,CAAC,EAAE,MAAM,IAAI,MACjC,aAAa;AAAA,QACZ,CAAC,YAAY;AACZ,gBAAM,gBAAgB;AACtB,gBAAM,iBAAiB;AAAA,YACtB,wBAAwB;AAAA,cACvB;AAAA,cACA,QAAQ,8BAA8B;AAAA,gBACrC;AAAA,gBACA,UAAU;AAAA,cACX,CAAC;AAAA,cACD,OAAO;AAAA,YACR,CAAC;AAAA,UACF,GAAG;AACH,gBAAM,uBAAuB,YAAY;AAAA,YACxC,CAAC,eAAe;AACf,oBAAM,SAAS,QAAQ,WAAW;AAAA,gBACjC,CAAC,EAAE,GAAG,MAAM;AACX,yBAAO,OAAO,WAAW;AAAA,gBAC1B;AAAA,cACD;AAEA,oBAAM,OAAO,UAAU;AAAA,gBACtB;AAAA,gBACA;AAAA,gBACA;AAAA,cACD,CAAC;AAED,qBAAO;AAAA,gBACN,GAAG;AAAA,gBACH;AAAA,cACD;AAAA,YACD;AAAA,UACD;AACA,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,aAAa;AAAA,YACb,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,QACA;AAAA,UACC,QAAQ;AAAA,UACR,MAAM;AAAA,YACL,OAAO;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG;AAAA,UAC3B,eAAe;AAAA,UACf,WAAW;AAAA,UACX,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,WAAW;AAAA,EACZ,CAAC;AACF;AAEO,SAAS,qBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACD,GAI4D;AAC3D,QAAM,aAAa,OAAO,cAAc,cAAc,CAAC;AACvD,QAAM,cAAc,WAAW,WAAW;AAC1C,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,QAAM,eAAe,QAAQ,WAAW;AAExC,MAAI,aAAa;AAChB,WAAO,KAAK,UAAU,EAAG,YAAY,IAAI,CAAC,eAAe;AACxD,aAAO,oBAAoB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAAA,EACF,OAAO;AACN,WAAO,WAAW,IAAI,CAAC,EAAE,OAAO,aAAa,GAAG,MAAM;AACrD,aAAO,aAAa,MAAM;AAAA,QACzB,IAAI,GAAG,SAAS;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,OAAO;AAAA,UACP,MAAM;AAAA,QACP;AAAA,QACA,SAAS,YAAY,IAAI,CAAC,eAAe;AACxC,iBAAO,oBAAoB;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,QACF,CAAC;AAAA,QACD,eAAe;AAAA,QACf,QAAQ,MAAM;AAAA,MACf,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AACD","sourcesContent":["import type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableCellData,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport { DataHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction sortingFunction(\n\trowA: Row<ScorecardTableData>,\n\trowB: Row<ScorecardTableData>,\n\tcolumnId: string,\n) {\n\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellData;\n\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellData;\n\n\tconst valueA = head(dataA.dataSources)?.data.current ?? 0;\n\tconst valueB = head(dataB.dataSources)?.data.current ?? 0;\n\n\tif (valueA === valueB) {\n\t\treturn 0;\n\t}\n\n\treturn valueA > valueB ? 1 : -1;\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nfunction getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\n\t\t\t\t\t\tconst values = rowData.dataValues.filter(({ ou }) => {\n\t\t\t\t\t\t\treturn ou === orgUnit.uid;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst dataSources =\n\t\t\t\t\t\t\trowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\t\tconst dataSourceValues = values.filter(\n\t\t\t\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\t\t\t\treturn value.dx === dataSource.id;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\t\t\tvalues: dataSourceValues,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({\n\tmeta,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}) {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: rowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\tconst dataValues = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t\t({ dx }) => dx === dataSource.id,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\tdataValues: rowData.dataValues,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label, id }) => `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\tconst dataSourceWithValues = dataSources.map((dataSource) => {\n\t\t\t\t\tconst values = rowData.dataValues.filter(({ dx }) => {\n\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\tvalues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\tperiod: head(periods)?.uid,\n\t\t\t\t} as ScorecardTableCellData;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\tconst dataSourceWithValues = dataSources.map(\n\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\tconst values = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t({ dx }) => {\n\t\t\t\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: sortingFunction,\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn head(dataGroups)!.dataHolders.map((dataHolder) => {\n\t\t\treturn getDataHolderColumn({\n\t\t\t\thasOnePeriod,\n\t\t\t\tdataHolder,\n\t\t\t\tperiods,\n\t\t\t\tcalendar,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/columns.ts"],"names":["id"],"mappings":"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","sourcesContent":["import type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableCellData,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport { DataHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction sortingFunction(\n\trowA: Row<ScorecardTableData>,\n\trowB: Row<ScorecardTableData>,\n\tcolumnId: string,\n) {\n\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellData;\n\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellData;\n\n\tconst valueA = head(dataA.dataSources)?.data.current ?? 0;\n\tconst valueB = head(dataB.dataSources)?.data.current ?? 0;\n\n\tif (valueA === valueB) {\n\t\treturn 0;\n\t}\n\n\treturn valueA > valueB ? 1 : -1;\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nfunction getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\n\t\t\t\t\t\tconst values = rowData.dataValues.filter(({ ou }) => {\n\t\t\t\t\t\t\treturn ou === orgUnit.uid;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst dataSources =\n\t\t\t\t\t\t\trowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\t\tconst dataSourceValues = values.filter(\n\t\t\t\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\t\t\t\treturn value.dx === dataSource.id;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\t\t\tvalues: dataSourceValues,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({\n\tmeta,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}) {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: rowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\tconst dataValues = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t\t({ dx }) => dx === dataSource.id,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\tdataValues: rowData.dataValues,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label, id }) => `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\tconst dataSourceWithValues = dataSources.map((dataSource) => {\n\t\t\t\t\tconst values = rowData.dataValues.filter(({ dx }) => {\n\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\tvalues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\tperiod: head(periods)?.uid,\n\t\t\t\t} as ScorecardTableCellData;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\tconst dataSourceWithValues = dataSources.map(\n\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\tconst values = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t({ dx }) => {\n\t\t\t\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: sortingFunction,\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function getInitialStateFromConfig(config, options) {
|
|
2
|
+
return {
|
|
3
|
+
periodSelection: config.periodSelection,
|
|
4
|
+
orgUnitSelection: config.orgUnitSelection,
|
|
5
|
+
options: config.options,
|
|
6
|
+
nested: options?.nested ?? false,
|
|
7
|
+
hasOnePeriod: config.periodSelection.periods.length === 1
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { getInitialStateFromConfig };
|
|
12
|
+
//# sourceMappingURL=out.js.map
|
|
13
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/state.ts"],"names":[],"mappings":"AAEO,SAAS,0BACf,QACA,SACiB;AACjB,SAAO;AAAA,IACN,iBAAiB,OAAO;AAAA,IACxB,kBAAkB,OAAO;AAAA,IACzB,SAAS,OAAO;AAAA,IAChB,QAAQ,SAAS,UAAU;AAAA,IAC3B,cAAc,OAAO,gBAAgB,QAAQ,WAAW;AAAA,EACzD;AACD","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\n\nexport function getInitialStateFromConfig(\n\tconfig: ScorecardConfig,\n\toptions?: { nested: boolean },\n): ScorecardState {\n\treturn {\n\t\tperiodSelection: config.periodSelection,\n\t\torgUnitSelection: config.orgUnitSelection,\n\t\toptions: config.options,\n\t\tnested: options?.nested ?? false,\n\t\thasOnePeriod: config.periodSelection.periods.length === 1,\n\t};\n}\n"]}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import type { ScorecardConfig, ScorecardState } from "./schemas/config";
|
|
2
1
|
import React from "react";
|
|
3
|
-
import { type
|
|
2
|
+
import { type ScorecardTableProps } from "./components/ScorecardTable";
|
|
4
3
|
export interface ScorecardProps {
|
|
5
|
-
|
|
6
|
-
state: ScorecardState;
|
|
7
|
-
setState: ScorecardSetState;
|
|
4
|
+
tableProps?: ScorecardTableProps;
|
|
8
5
|
}
|
|
9
|
-
export declare function Scorecard({
|
|
6
|
+
export declare function Scorecard({ tableProps }: ScorecardProps): React.ReactElement;
|
|
10
7
|
//# sourceMappingURL=Scorecard.d.ts.map
|