@hisptz/dhis2-scorecard 1.1.9 → 1.2.0
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/Scorecard.js +2 -2
- package/dist/Scorecard.js.map +1 -1
- package/dist/components/ColGroup.js +3 -9
- package/dist/components/ColGroup.js.map +1 -1
- package/dist/components/ScorecardHeader.js +8 -7
- package/dist/components/ScorecardHeader.js.map +1 -1
- package/dist/components/ScorecardLegendsView/ScorecardLegendsView.js +2 -2
- package/dist/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
- package/dist/components/ScorecardLegendsView/components/ArrowLegendView.js +3 -3
- package/dist/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
- package/dist/components/ScorecardPrint/components/ScorecardPreviewArea.js +32 -37
- package/dist/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
- package/dist/components/ScorecardTable/ScorecardTable.js +6 -8
- package/dist/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/components/ScorecardTable/components/AverageCell.js +2 -5
- package/dist/components/ScorecardTable/components/AverageCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataFooterCell.js +2 -5
- package/dist/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/DataValue.js +5 -8
- package/dist/components/ScorecardTable/components/DataValue.js.map +1 -1
- package/dist/components/ScorecardTable/components/ExpandedScorecardTable.js +6 -4
- package/dist/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/components/ScorecardTable/components/LinkedCell.js +2 -2
- package/dist/components/ScorecardTable/components/LinkedCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableFoot.js +2 -5
- package/dist/components/ScorecardTable/components/TableFoot.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +4 -8
- package/dist/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +2 -5
- package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/FilterArea.js +2 -5
- package/dist/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/LabelCell.js +4 -13
- package/dist/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
- package/dist/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +4 -6
- package/dist/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
- package/dist/components/StateProvider.js +40 -27
- package/dist/components/StateProvider.js.map +1 -1
- package/dist/esm/Scorecard.js +1 -1
- package/dist/esm/Scorecard.js.map +1 -1
- package/dist/esm/components/ColGroup.js +3 -9
- package/dist/esm/components/ColGroup.js.map +1 -1
- package/dist/esm/components/ScorecardHeader.js +8 -7
- package/dist/esm/components/ScorecardHeader.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/ScorecardLegendsView.js +2 -2
- package/dist/esm/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
- package/dist/esm/components/ScorecardLegendsView/components/ArrowLegendView.js +3 -3
- package/dist/esm/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
- package/dist/esm/components/ScorecardPrint/components/ScorecardPreviewArea.js +32 -37
- package/dist/esm/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
- package/dist/esm/components/ScorecardTable/ScorecardTable.js +6 -8
- package/dist/esm/components/ScorecardTable/ScorecardTable.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/AverageCell.js +2 -5
- package/dist/esm/components/ScorecardTable/components/AverageCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataFooterCell.js +2 -5
- package/dist/esm/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/DataValue.js +5 -8
- package/dist/esm/components/ScorecardTable/components/DataValue.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/ExpandedScorecardTable.js +6 -4
- package/dist/esm/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/LinkedCell.js +2 -2
- package/dist/esm/components/ScorecardTable/components/LinkedCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableFoot.js +2 -5
- package/dist/esm/components/ScorecardTable/components/TableFoot.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +4 -8
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +2 -5
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js +2 -5
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js +4 -13
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +4 -6
- package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
- package/dist/esm/components/StateProvider.js +40 -29
- package/dist/esm/components/StateProvider.js.map +1 -1
- package/dist/esm/hooks/columns.js +8 -21
- package/dist/esm/hooks/columns.js.map +1 -1
- package/dist/esm/hooks/data.js +1 -1
- package/dist/esm/hooks/data.js.map +1 -1
- package/dist/esm/hooks/metadata.js +3 -7
- package/dist/esm/hooks/metadata.js.map +1 -1
- package/dist/esm/hooks/table.js +12 -34
- package/dist/esm/hooks/table.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/utils/dimensionState.js +133 -0
- package/dist/esm/utils/dimensionState.js.map +1 -0
- package/dist/esm/utils/viewState.js +85 -0
- package/dist/esm/utils/viewState.js.map +1 -0
- package/dist/hooks/columns.js +8 -21
- package/dist/hooks/columns.js.map +1 -1
- package/dist/hooks/data.js +1 -1
- package/dist/hooks/data.js.map +1 -1
- package/dist/hooks/metadata.js +3 -7
- package/dist/hooks/metadata.js.map +1 -1
- package/dist/hooks/table.js +12 -34
- package/dist/hooks/table.js.map +1 -1
- package/dist/index.js +0 -7
- package/dist/types/components/ColGroup.d.ts.map +1 -1
- package/dist/types/components/ScorecardHeader.d.ts.map +1 -1
- package/dist/types/components/ScorecardLegendsView/components/ArrowLegendView.d.ts +1 -1
- package/dist/types/components/ScorecardLegendsView/components/ArrowLegendView.d.ts.map +1 -1
- package/dist/types/components/ScorecardPrint/components/ScorecardPreviewArea.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/ScorecardTable.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/AverageCell.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/DataFooterCell.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/DataValue.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableFoot.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts.map +1 -1
- package/dist/types/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts.map +1 -1
- package/dist/types/components/StateProvider.d.ts +34 -2
- package/dist/types/components/StateProvider.d.ts.map +1 -1
- package/dist/types/hooks/columns.d.ts.map +1 -1
- package/dist/types/hooks/metadata.d.ts.map +1 -1
- package/dist/types/hooks/table.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/dimensionState.d.ts +62 -0
- package/dist/types/utils/dimensionState.d.ts.map +1 -0
- package/dist/types/utils/viewState.d.ts +34 -0
- package/dist/types/utils/viewState.d.ts.map +1 -0
- package/dist/utils/dimensionState.js +139 -0
- package/dist/utils/dimensionState.js.map +1 -0
- package/dist/utils/viewState.js +90 -0
- package/dist/utils/viewState.js.map +1 -0
- package/package.json +7 -8
- package/dist/esm/hooks/period.js +0 -13
- package/dist/esm/hooks/period.js.map +0 -1
- package/dist/esm/state/index.js +0 -53
- package/dist/esm/state/index.js.map +0 -1
- package/dist/esm/utils/engine.js +0 -18
- package/dist/esm/utils/engine.js.map +0 -1
- package/dist/hooks/period.js +0 -15
- package/dist/hooks/period.js.map +0 -1
- package/dist/state/index.js +0 -63
- package/dist/state/index.js.map +0 -1
- package/dist/types/hooks/period.d.ts +0 -2
- package/dist/types/hooks/period.d.ts.map +0 -1
- package/dist/types/state/index.d.ts +0 -109
- package/dist/types/state/index.d.ts.map +0 -1
- package/dist/types/utils/engine.d.ts +0 -14
- package/dist/types/utils/engine.d.ts.map +0 -1
- package/dist/utils/engine.js +0 -20
- package/dist/utils/engine.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.tsx"],"names":[],"mappings":";;;;;;;AAQO,SAAS,iBAAkB,CAAA;AAAA,EACjC;AACD,CAA2C,EAAA;AAC1C,EAAM,MAAA,UAAA,GAAa,2BAAoC,gBAAgB,CAAA;AACvE,EAAA,MAAM,eAAe,eAAgB,EAAA;AACrC,EAAA,MAAM,UAAU,UACb,GAAA,YAAA,GACC,GACA,GAAA,GAAA,GACD,eACC,GACA,GAAA,GAAA;AAEJ,EACC,uBAAA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MAEA,KAAM,EAAA,OAAA;AAAA,MACN,OAAA,EAAS,MAAO,CAAA,OAAA,CAAQ,QAAS,EAAA;AAAA,MACjC,OAAA;AAAA,MACA,WAAW,MAAO,CAAA,UAAA;AAAA,MAElB,QAAC,kBAAA,GAAA,CAAA,GAAA,EAAA,EAAG,QAAK,EAAA,IAAA,CAAA,CAAA,CAAE,SAAS,CAAE,EAAA;AAAA,KAAA;AAAA,IANjB,MAAO,CAAA;AAAA,GAOb;AAEF","file":"AverageHeaderCell.js","sourcesContent":["import type { HeaderContext } from \"@tanstack/react-table\";\nimport type { ScorecardTableData } from \"../../../../../schemas/config\";\nimport { DataTableColumnHeader } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport styles from \"../TableHeader.module.css\";\nimport { useScorecardViewStateValue } from \"../../../../../utils/viewState\";\nimport { useHasOnePeriod } from \"../../../../../utils/dimensionState\";\n\nexport function AverageHeaderCell({\n\theader,\n}: HeaderContext<ScorecardTableData, any>) {\n\tconst dataInRows = useScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst hasOnePeriod = useHasOnePeriod();\n\tconst rowSpan = dataInRows\n\t\t? hasOnePeriod\n\t\t\t? \"2\"\n\t\t\t: \"2\"\n\t\t: hasOnePeriod\n\t\t\t? \"2\"\n\t\t\t: \"3\";\n\n\treturn (\n\t\t<DataTableColumnHeader\n\t\t\tkey={header.id}\n\t\t\talign=\"right\"\n\t\t\tcolSpan={header.colSpan.toString()}\n\t\t\trowSpan={rowSpan}\n\t\t\tclassName={styles.metaHeader}\n\t\t>\n\t\t\t<b>{i18n.t(\"Average\")}</b>\n\t\t</DataTableColumnHeader>\n\t);\n}\n"]}
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DataTableColumnHeader } from '@dhis2/ui';
|
|
|
4
4
|
import i18n from '@dhis2/d2-i18n';
|
|
5
5
|
import { DraggableCell } from '../../DraggableCell';
|
|
6
6
|
import DroppableCell from '../../DroppableCell';
|
|
7
|
-
import {
|
|
7
|
+
import { useScorecardViewStateValue } from '../../../../../utils/viewState';
|
|
8
8
|
|
|
9
9
|
function EmptyDataHeaderCell({
|
|
10
10
|
header
|
|
@@ -16,10 +16,7 @@ function DataHeaderCellComponent({
|
|
|
16
16
|
column,
|
|
17
17
|
header
|
|
18
18
|
}) {
|
|
19
|
-
const dataInRows =
|
|
20
|
-
"options",
|
|
21
|
-
"showDataInRows"
|
|
22
|
-
]);
|
|
19
|
+
const dataInRows = useScorecardViewStateValue("showDataInRows");
|
|
23
20
|
const label = header.column.columnDef.meta.label ?? column.columnDef.meta.label;
|
|
24
21
|
const bold = header.column.columnDef.meta.bold ?? column.columnDef.meta.bold;
|
|
25
22
|
const colSpan = header.colSpan.toString();
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.tsx"],"names":[],"mappings":";;;;;;;;AAWO,SAAS,mBAAoB,CAAA;AAAA,EACnC;AACD,CAA2C,EAAA;AAC1C,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,QAAS,EAAA;AACxC,EAAO,uBAAA,GAAA,CAAC,yBAAsB,OAAkB,EAAA,CAAA;AACjD;AAEO,SAAS,uBAAwB,CAAA;AAAA,EACvC,MAAA;AAAA,EACA;AACD,CAA2C,EAAA;AAC1C,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.tsx"],"names":[],"mappings":";;;;;;;;AAWO,SAAS,mBAAoB,CAAA;AAAA,EACnC;AACD,CAA2C,EAAA;AAC1C,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,QAAS,EAAA;AACxC,EAAO,uBAAA,GAAA,CAAC,yBAAsB,OAAkB,EAAA,CAAA;AACjD;AAEO,SAAS,uBAAwB,CAAA;AAAA,EACvC,MAAA;AAAA,EACA;AACD,CAA2C,EAAA;AAC1C,EAAM,MAAA,UAAA,GAAa,2BAAoC,gBAAgB,CAAA;AACvE,EAAM,MAAA,KAAA,GACJ,OAAO,MAAO,CAAA,SAAA,CAAU,KAA2B,KACnD,IAAA,MAAA,CAAO,UAAU,IAA2B,CAAA,KAAA;AAE9C,EAAM,MAAA,IAAA,GACJ,OAAO,MAAO,CAAA,SAAA,CAAU,KAA4B,IACpD,IAAA,MAAA,CAAO,UAAU,IAA4B,CAAA,IAAA;AAE/C,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,QAAS,EAAA;AAExC,EAAA,MAAM,gBAAgB,CAAC,MAAA,EAAQ,aAC5B,GAAA,SAAA,GACC,OAAQ,WAAY,EAAA;AACxB,EAAA,MAAM,eACL,MAAQ,EAAA,mBAAA,OAA0B,KAC/B,GAAA,IAAA,CAAK,EAAE,oBAAoB,CAAA,GAC3B,QAAQ,mBAAoB,EAAA,KAAM,SACjC,IAAK,CAAA,CAAA,CAAE,qBAAqB,CAC5B,GAAA,IAAA,CAAK,EAAE,SAAS,CAAA;AAErB,EACC,uBAAA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MAEA,eAAe,IAAK,CAAA,CAAA,CAAE,uBAAyB,EAAA,EAAE,cAAc,CAAA;AAAA,MAC/D,eAAA,EACC,MAAO,CAAA,MAAA,EAAQ,UAAW,EAAA,IAAK,OAAO,UAAW,EAAA,GAC9C,CAAC,CAAA,EAAG,CAAM,KAAA;AACV,QAAM,MAAA,IAAA,GAAO,OAAQ,uBAAwB,EAAA;AAC7C,QAAA,IAAI,IAAM,EAAA;AACT,UAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACP,OAEA,GAAA,MAAA;AAAA,MAEJ,aAAA,EACC,OAAO,MAAQ,EAAA,UAAA,MAAgB,MAAO,CAAA,UAAA,KACnC,aACA,GAAA,MAAA;AAAA,MAEJ,KAAM,EAAA,QAAA;AAAA,MACN,OAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACA,MAAA,EACC,aACG,CAAC,uBAAA,CAAwB,IAAI,CAC7B,GAAA,CAAC,wBAAwB,EAAE,CAAA;AAAA,UAG/B,QAAA,kBAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACA,EAAI,EAAA,KAAA;AAAA,cACJ,IACC,EAAA,UAAA,GACG,uBAAwB,CAAA,EAAA,GACxB,uBAAwB,CAAA,IAAA;AAAA,cAG3B,QAAO,EAAA,IAAA,mBAAA,GAAA,CAAC,GAAG,EAAA,EAAA,QAAA,EAAA,KAAA,EAAM,CAAO,GAAA;AAAA;AAAA;AAC1B;AAAA;AACD,KAAA;AAAA,IArCK,GAAG,KAAK,CAAA;AAAA,GAsCd;AAEF;AAEO,MAAM,cAAiB,GAAA","file":"DataHeaderCell.js","sourcesContent":["import type { HeaderContext } from \"@tanstack/react-table\";\nimport {\n\tScorecardDraggableItems,\n\ttype ScorecardTableData,\n} from \"../../../../../schemas/config\";\nimport { DataTableColumnHeader, type DataTableSortDirection } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { DraggableCell } from \"../../DraggableCell\";\nimport DroppableCell from \"../../DroppableCell\";\nimport { useScorecardViewStateValue } from \"../../../../../utils/viewState\";\n\nexport function EmptyDataHeaderCell({\n\theader,\n}: HeaderContext<ScorecardTableData, any>) {\n\tconst colSpan = header.colSpan.toString();\n\treturn <DataTableColumnHeader colSpan={colSpan} />;\n}\n\nexport function DataHeaderCellComponent({\n\tcolumn,\n\theader,\n}: HeaderContext<ScorecardTableData, any>) {\n\tconst dataInRows = useScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst label =\n\t\t(header.column.columnDef.meta as { label: string }).label ??\n\t\t(column.columnDef.meta as { label: string }).label;\n\n\tconst bold =\n\t\t(header.column.columnDef.meta as { bold?: boolean }).bold ??\n\t\t(column.columnDef.meta as { bold?: boolean }).bold;\n\n\tconst colSpan = header.colSpan.toString();\n\n\tconst sortDirection = !column?.getIsSorted()\n\t\t? \"default\"\n\t\t: (column!.getIsSorted() as DataTableSortDirection);\n\tconst nextSortType =\n\t\tcolumn?.getNextSortingOrder() === \"asc\"\n\t\t\t? i18n.t(\"in ascending order\")\n\t\t\t: column?.getNextSortingOrder() === \"desc\"\n\t\t\t\t? i18n.t(\"in descending order\")\n\t\t\t\t: i18n.t(\"disable\");\n\n\treturn (\n\t\t<DataTableColumnHeader\n\t\t\tkey={`${label}`}\n\t\t\tsortIconTitle={i18n.t(\"Sort {{nextSortType}}\", { nextSortType })}\n\t\t\tonSortIconClick={\n\t\t\t\theader.column?.getCanSort() || column.getCanSort()\n\t\t\t\t\t? (_, e) => {\n\t\t\t\t\t\t\tconst sort = column!.getToggleSortingHandler();\n\t\t\t\t\t\t\tif (sort) {\n\t\t\t\t\t\t\t\tsort(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tsortDirection={\n\t\t\t\theader.column?.getCanSort() || column.getCanSort()\n\t\t\t\t\t? sortDirection\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\talign=\"center\"\n\t\t\tcolSpan={colSpan}\n\t\t>\n\t\t\t<DroppableCell\n\t\t\t\taccept={\n\t\t\t\t\tdataInRows\n\t\t\t\t\t\t? [ScorecardDraggableItems.data]\n\t\t\t\t\t\t: [ScorecardDraggableItems.ou]\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<DraggableCell\n\t\t\t\t\tid={label}\n\t\t\t\t\ttype={\n\t\t\t\t\t\tdataInRows\n\t\t\t\t\t\t\t? ScorecardDraggableItems.ou\n\t\t\t\t\t\t\t: ScorecardDraggableItems.data\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{bold ? <b>{label}</b> : label}\n\t\t\t\t</DraggableCell>\n\t\t\t</DroppableCell>\n\t\t</DataTableColumnHeader>\n\t);\n}\n\nexport const DataHeaderCell = DataHeaderCellComponent;\n"]}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import i18n from '@dhis2/d2-i18n';
|
|
3
|
-
import { useScorecardStateSelectorValue } from '../../../../../state';
|
|
4
3
|
import { InputField } from '@dhis2/ui';
|
|
5
4
|
import styles from '../TableHeader.module.css';
|
|
6
5
|
import { useState, useEffect } from 'react';
|
|
6
|
+
import { useScorecardViewStateValue } from '../../../../../utils/viewState';
|
|
7
7
|
|
|
8
8
|
function FilterArea({ column }) {
|
|
9
9
|
const defaultValue = column.getFilterValue();
|
|
10
10
|
const [text, setText] = useState(defaultValue);
|
|
11
|
-
const dataInRows =
|
|
12
|
-
"options",
|
|
13
|
-
"showDataInRows"
|
|
14
|
-
]);
|
|
11
|
+
const dataInRows = useScorecardViewStateValue("showDataInRows");
|
|
15
12
|
const searchPlaceholder = dataInRows ? i18n.t("Search data items") : i18n.t("Search organisation units");
|
|
16
13
|
useEffect(() => {
|
|
17
14
|
const timeout = setTimeout(() => {
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/FilterArea.tsx"],"names":[],"mappings":";;;;;;;AAYO,SAAS,UAAA,CAAW,EAAE,MAAA,EAA2B,EAAA;AACvD,EAAM,MAAA,YAAA,GAAe,OAAO,cAAe,EAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA6B,YAAY,CAAA;AACjE,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/FilterArea.tsx"],"names":[],"mappings":";;;;;;;AAYO,SAAS,UAAA,CAAW,EAAE,MAAA,EAA2B,EAAA;AACvD,EAAM,MAAA,YAAA,GAAe,OAAO,cAAe,EAAA;AAC3C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAA6B,YAAY,CAAA;AACjE,EAAM,MAAA,UAAA,GAAa,2BAAoC,gBAAgB,CAAA;AACvE,EAAM,MAAA,iBAAA,GAAoB,aACvB,IAAK,CAAA,CAAA,CAAE,mBAAmB,CAC1B,GAAA,IAAA,CAAK,EAAE,2BAA2B,CAAA;AAErC,EAAA,SAAA,CAAU,MAAM;AACf,IAAM,MAAA,OAAA,GAAU,WAAW,MAAM;AAChC,MAAA,MAAA,CAAO,eAAe,IAAI,CAAA;AAAA,OACxB,GAAG,CAAA;AAEN,IAAO,OAAA,MAAM,aAAa,OAAO,CAAA;AAAA,GAClC,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EACC,uBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACA,SAAA,EAAW,OAAO,cAAc,CAAA;AAAA,MAChC,KAAO,EAAA,IAAA;AAAA,MACP,UAAU,CAAC,EAAE,KAAM,EAAA,KAAM,QAAQ,KAAK,CAAA;AAAA,MACtC,WAAa,EAAA;AAAA;AAAA,GACd;AAEF","file":"FilterArea.js","sourcesContent":["import type { ScorecardTableData } from \"../../../../../schemas/config\";\nimport type { Column } from \"@tanstack/react-table\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { InputField } from \"@dhis2/ui\";\nimport styles from \"../TableHeader.module.css\";\nimport { useEffect, useState } from \"react\";\nimport { useScorecardViewStateValue } from \"../../../../../utils/viewState\";\n\nexport interface FilterAreaProps {\n\tcolumn: Column<ScorecardTableData, any>;\n}\n\nexport function FilterArea({ column }: FilterAreaProps) {\n\tconst defaultValue = column.getFilterValue() as string | undefined;\n\tconst [text, setText] = useState<string | undefined>(defaultValue);\n\tconst dataInRows = useScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst searchPlaceholder = dataInRows\n\t\t? i18n.t(\"Search data items\")\n\t\t: i18n.t(\"Search organisation units\");\n\n\tuseEffect(() => {\n\t\tconst timeout = setTimeout(() => {\n\t\t\tcolumn.setFilterValue(text);\n\t\t}, 700);\n\n\t\treturn () => clearTimeout(timeout);\n\t}, [text]);\n\n\treturn (\n\t\t<InputField\n\t\t\tclassName={styles[\"filter-input\"]}\n\t\t\tvalue={text}\n\t\t\tonChange={({ value }) => setText(value)}\n\t\t\tplaceholder={searchPlaceholder}\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -3,25 +3,16 @@ import { ScorecardDraggableItems } from '../../../../../schemas/config';
|
|
|
3
3
|
import { DataTableCell } from '@dhis2/ui';
|
|
4
4
|
import DroppableCell from '../../DroppableCell';
|
|
5
5
|
import { DraggableCell } from '../../DraggableCell';
|
|
6
|
-
import { useScorecardStateSelectorValue } from '../../../../../state';
|
|
7
6
|
import { useMemo } from 'react';
|
|
8
7
|
import { isEmpty } from 'lodash';
|
|
8
|
+
import { useScorecardViewStateValue } from '../../../../../utils/viewState';
|
|
9
9
|
|
|
10
10
|
function LabelCellComponent(props) {
|
|
11
11
|
const data = props.getValue();
|
|
12
12
|
const size = props.cell.column.getSize();
|
|
13
|
-
const dataInRows =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
]);
|
|
17
|
-
const showHierarchy = useScorecardStateSelectorValue([
|
|
18
|
-
"options",
|
|
19
|
-
"showHierarchy"
|
|
20
|
-
]);
|
|
21
|
-
const inPrintMode = useScorecardStateSelectorValue([
|
|
22
|
-
"options",
|
|
23
|
-
"printMode"
|
|
24
|
-
]);
|
|
13
|
+
const dataInRows = useScorecardViewStateValue("showDataInRows");
|
|
14
|
+
const showHierarchy = useScorecardViewStateValue("showHierarchy");
|
|
15
|
+
const inPrintMode = useScorecardViewStateValue("printMode");
|
|
25
16
|
const left = useMemo(() => {
|
|
26
17
|
const index = props.row.getVisibleCells().findIndex(({ id }) => props.cell.id === id);
|
|
27
18
|
return index * 48;
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/LabelCell.tsx"],"names":[],"mappings":";;;;;;;;;AAYO,SAAS,mBACf,KAOC,EAAA;AACD,EAAM,MAAA,IAAA,GAAO,MAAM,QAAS,EAAA;AAC5B,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAK,CAAA,MAAA,CAAO,OAAQ,EAAA;AACvC,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/LabelCell.tsx"],"names":[],"mappings":";;;;;;;;;AAYO,SAAS,mBACf,KAOC,EAAA;AACD,EAAM,MAAA,IAAA,GAAO,MAAM,QAAS,EAAA;AAC5B,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAK,CAAA,MAAA,CAAO,OAAQ,EAAA;AACvC,EAAM,MAAA,UAAA,GAAa,2BAAoC,gBAAgB,CAAA;AACvE,EAAM,MAAA,aAAA,GAAgB,2BAAoC,eAAe,CAAA;AAEzE,EAAM,MAAA,WAAA,GAAc,2BAAoC,WAAW,CAAA;AAEnE,EAAM,MAAA,IAAA,GAAO,QAAQ,MAAM;AAC1B,IAAA,MAAM,KAAQ,GAAA,KAAA,CAAM,GAClB,CAAA,eAAA,EACA,CAAA,SAAA,CAAU,CAAC,EAAE,EAAG,EAAA,KAAM,KAAM,CAAA,IAAA,CAAK,OAAO,EAAE,CAAA;AAC5C,IAAA,OAAO,KAAQ,GAAA,EAAA;AAAA,GAChB,EAAG,CAAC,KAAM,CAAA,GAAA,CAAI,iBAAmB,EAAA,KAAA,CAAM,IAAK,CAAA,EAAE,CAAC,CAAA;AAE/C,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC3B,IAAA,IAAI,UAAY,EAAA;AACf,MAAA,OAAO,KAAK,KAAS,IAAA,EAAA;AAAA;AAEtB,IAAA,IAAI,aAAe,EAAA;AAClB,MAAA,OACC,KAAK,OAAS,EAAA,SAAA,CACZ,KAAM,CAAA,GAAG,EACT,MAAO,CAAA,CAAC,GAAQ,KAAA,CAAC,QAAQ,GAAG,CAAC,CAC7B,CAAA,IAAA,CAAK,KAAK,CAAK,IAAA,EAAA;AAAA;AAGnB,IAAA,OAAO,KAAK,KAAS,IAAA,EAAA;AAAA,GACnB,EAAA,CAAC,IAAM,EAAA,aAAA,EAAe,UAAU,CAAC,CAAA;AAEpC,EACC,uBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACA,SAAU,EAAA,YAAA;AAAA,MACV,KAAK,EAAA,IAAA;AAAA,MACL,KAAA,EAAO,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,MACd,KAAO,EAAA;AAAA,QACN,KAAA,EAAO,cAAc,MAAS,GAAA,IAAA;AAAA,QAC9B,QAAA,EAAU,cAAc,MAAY,GAAA;AAAA,OACrC;AAAA,MAGA,IAAA,EAAM,GAAG,IAAI,CAAA,EAAA,CAAA;AAAA,MACb,QAAQ,EAAA,IAAA;AAAA,MACR,KAAM,EAAA,MAAA;AAAA,MAEN,QAAA,kBAAA,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACA,MAAA,EACC,aACG,CAAC,uBAAA,CAAwB,EAAE,CAC3B,GAAA,CAAC,wBAAwB,IAAI,CAAA;AAAA,UAGjC,QAAA,kBAAA,GAAA;AAAA,YAAC,aAAA;AAAA,YAAA;AAAA,cACA,EAAI,EAAA,KAAA;AAAA,cACJ,IACC,EAAA,UAAA,GACG,uBAAwB,CAAA,IAAA,GACxB,uBAAwB,CAAA,EAAA;AAAA,cAG3B,QAAA,EAAA;AAAA;AAAA;AACF;AAAA;AACD;AAAA,GACD;AAEF;AAEO,MAAM,SAAY,GAAA","file":"LabelCell.js","sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\nimport {\n\tScorecardDraggableItems,\n\ttype ScorecardTableData,\n} from \"../../../../../schemas/config\";\nimport { DataTableCell } from \"@dhis2/ui\";\nimport DroppableCell from \"../../DroppableCell\";\nimport { DraggableCell } from \"../../DraggableCell\";\nimport { useMemo } from \"react\";\nimport { isEmpty } from \"lodash\";\nimport { useScorecardViewStateValue } from \"../../../../../utils/viewState\";\n\nexport function LabelCellComponent(\n\tprops: CellContext<\n\t\tScorecardTableData,\n\t\t{\n\t\t\tlabel: string;\n\t\t\torgUnit?: { uid: string; hierarchy: string; name: string };\n\t\t}\n\t>,\n) {\n\tconst data = props.getValue();\n\tconst size = props.cell.column.getSize();\n\tconst dataInRows = useScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst showHierarchy = useScorecardViewStateValue<boolean>(\"showHierarchy\");\n\n\tconst inPrintMode = useScorecardViewStateValue<boolean>(\"printMode\");\n\n\tconst left = useMemo(() => {\n\t\tconst index = props.row\n\t\t\t.getVisibleCells()\n\t\t\t.findIndex(({ id }) => props.cell.id === id);\n\t\treturn index * 48;\n\t}, [props.row.getVisibleCells(), props.cell.id]);\n\n\tconst label = useMemo(() => {\n\t\tif (dataInRows) {\n\t\t\treturn data.label ?? \"\";\n\t\t}\n\t\tif (showHierarchy) {\n\t\t\treturn (\n\t\t\t\tdata.orgUnit?.hierarchy\n\t\t\t\t\t.split(\"/\")\n\t\t\t\t\t.filter((val) => !isEmpty(val))\n\t\t\t\t\t.join(\" / \") ?? \"\"\n\t\t\t);\n\t\t}\n\t\treturn data.label ?? \"\";\n\t}, [data, showHierarchy, dataInRows]);\n\n\treturn (\n\t\t<DataTableCell\n\t\t\tclassName=\"label-cell\"\n\t\t\tfixed\n\t\t\twidth={`${size}px`}\n\t\t\tstyle={{\n\t\t\t\twidth: inPrintMode ? \"auto\" : size,\n\t\t\t\tminWidth: inPrintMode ? undefined : size,\n\t\t\t}}\n\t\t\t/*\n // @ts-ignore */\n\t\t\tleft={`${left}px`}\n\t\t\tbordered\n\t\t\talign=\"left\"\n\t\t>\n\t\t\t<DroppableCell\n\t\t\t\taccept={\n\t\t\t\t\tdataInRows\n\t\t\t\t\t\t? [ScorecardDraggableItems.ou]\n\t\t\t\t\t\t: [ScorecardDraggableItems.data]\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<DraggableCell\n\t\t\t\t\tid={label}\n\t\t\t\t\ttype={\n\t\t\t\t\t\tdataInRows\n\t\t\t\t\t\t\t? ScorecardDraggableItems.data\n\t\t\t\t\t\t\t: ScorecardDraggableItems.ou\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</DraggableCell>\n\t\t\t</DroppableCell>\n\t\t</DataTableCell>\n\t);\n}\n\nexport const LabelCell = LabelCellComponent;\n"]}
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js
CHANGED
|
@@ -5,17 +5,15 @@ import styles from '../TableHeader.module.css';
|
|
|
5
5
|
import { FilterArea } from './FilterArea';
|
|
6
6
|
import { uid } from '@hisptz/dhis2-utils';
|
|
7
7
|
import { memo, useRef } from 'react';
|
|
8
|
-
import {
|
|
8
|
+
import { useScorecardViewStateValue } from '../../../../../utils/viewState';
|
|
9
|
+
import { useHasOnePeriod } from '../../../../../utils/dimensionState';
|
|
9
10
|
|
|
10
11
|
function MetaHeaderCellComponent({
|
|
11
12
|
header
|
|
12
13
|
}) {
|
|
13
14
|
const randomId = useRef(uid());
|
|
14
|
-
const hasOnePeriod =
|
|
15
|
-
const dataInRows =
|
|
16
|
-
"options",
|
|
17
|
-
"showDataInRows"
|
|
18
|
-
]);
|
|
15
|
+
const hasOnePeriod = useHasOnePeriod();
|
|
16
|
+
const dataInRows = useScorecardViewStateValue("showDataInRows");
|
|
19
17
|
const rowSpan = dataInRows ? hasOnePeriod ? "2" : "2" : hasOnePeriod ? "2" : "3";
|
|
20
18
|
const filterColumn = header.subHeaders.find(
|
|
21
19
|
(header2) => header2.column.getCanFilter()
|
package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.tsx"],"names":["header"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.tsx"],"names":["header"],"mappings":";;;;;;;;;;AAWA,SAAS,uBAAwB,CAAA;AAAA,EAChC;AACD,CAA2C,EAAA;AAC1C,EAAM,MAAA,QAAA,GAAW,MAAe,CAAA,GAAA,EAAK,CAAA;AAErC,EAAA,MAAM,eAAe,eAAgB,EAAA;AACrC,EAAM,MAAA,UAAA,GAAa,2BAAoC,gBAAgB,CAAA;AAEvE,EAAA,MAAM,UAAU,UACb,GAAA,YAAA,GACC,GACA,GAAA,GAAA,GACD,eACC,GACA,GAAA,GAAA;AAEJ,EAAM,MAAA,YAAA,GAAe,OAAO,UAAW,CAAA,IAAA;AAAA,IAAK,CAACA,OAAAA,KAC5CA,OAAO,CAAA,MAAA,CAAO,YAAa;AAAA,GACzB,EAAA,MAAA;AAEH,EAAA,MAAM,gBAAgB,CAAC,YAAA,EAAc,aAClC,GAAA,SAAA,GACC,aAAc,WAAY,EAAA;AAC9B,EAAA,MAAM,eACL,YAAc,EAAA,mBAAA,OAA0B,KACrC,GAAA,IAAA,CAAK,EAAE,oBAAoB,CAAA,GAC3B,cAAc,mBAAoB,EAAA,KAAM,SACvC,IAAK,CAAA,CAAA,CAAE,qBAAqB,CAC5B,GAAA,IAAA,CAAK,EAAE,SAAS,CAAA;AAErB,EACC,uBAAA,GAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MAEA,KAAM,EAAA,QAAA;AAAA,MACN,eAAe,IAAK,CAAA,CAAA,CAAE,uBAAyB,EAAA,EAAE,cAAc,CAAA;AAAA,MAC/D,eAAA,EAAiB,CAAC,CAAA,EAAG,CAAM,KAAA;AAC1B,QAAM,MAAA,IAAA,GAAO,aAAc,uBAAwB,EAAA;AACnD,QAAA,IAAI,IAAM,EAAA;AACT,UAAA,IAAA,CAAK,CAAC,CAAA;AAAA;AACP,OACD;AAAA,MACA,KAAK,EAAA,IAAA;AAAA,MAGL,IAAK,EAAA,GAAA;AAAA,MACL,aAAA;AAAA,MACA,OAAA,EAAS,MAAO,CAAA,OAAA,CAAQ,QAAS,EAAA;AAAA,MACjC,OAAA;AAAA,MACA,WAAW,MAAO,CAAA,UAAA;AAAA,MAEjB,QAAA,EAAA,CAAC,CAAC,YACF,oBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UAEA,MAAQ,EAAA;AAAA,SAAA;AAAA,QADH,CAAA,EAAG,OAAO,EAAE,CAAA,YAAA;AAAA;AAElB,KAAA;AAAA,IAtBI,CAAG,EAAA,MAAA,CAAO,EAAE,CAAA,CAAA,EAAI,SAAS,OAAO,CAAA;AAAA,GAwBtC;AAEF;AAEa,MAAA,cAAA,GAAiB,KAAK,uBAAuB","file":"MetaHeaderCell.js","sourcesContent":["import type { HeaderContext } from \"@tanstack/react-table\";\nimport type { ScorecardTableData } from \"../../../../../schemas/config\";\nimport { DataTableColumnHeader, type DataTableSortDirection } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport styles from \"../TableHeader.module.css\";\nimport { FilterArea } from \"./FilterArea\";\nimport { uid } from \"@hisptz/dhis2-utils\";\nimport { memo, useRef } from \"react\";\nimport { useScorecardViewStateValue } from \"../../../../../utils/viewState\";\nimport { useHasOnePeriod } from \"../../../../../utils/dimensionState\";\n\nfunction MetaHeaderCellComponent({\n\theader,\n}: HeaderContext<ScorecardTableData, any>) {\n\tconst randomId = useRef<string>(uid());\n\n\tconst hasOnePeriod = useHasOnePeriod();\n\tconst dataInRows = useScorecardViewStateValue<boolean>(\"showDataInRows\");\n\n\tconst rowSpan = dataInRows\n\t\t? hasOnePeriod\n\t\t\t? \"2\"\n\t\t\t: \"2\"\n\t\t: hasOnePeriod\n\t\t\t? \"2\"\n\t\t\t: \"3\";\n\n\tconst filterColumn = header.subHeaders.find((header) =>\n\t\theader.column.getCanFilter(),\n\t)?.column;\n\n\tconst sortDirection = !filterColumn?.getIsSorted()\n\t\t? \"default\"\n\t\t: (filterColumn!.getIsSorted() as DataTableSortDirection);\n\tconst nextSortType =\n\t\tfilterColumn?.getNextSortingOrder() === \"asc\"\n\t\t\t? i18n.t(\"in ascending order\")\n\t\t\t: filterColumn?.getNextSortingOrder() === \"desc\"\n\t\t\t\t? i18n.t(\"in descending order\")\n\t\t\t\t: i18n.t(\"disable\");\n\n\treturn (\n\t\t<DataTableColumnHeader\n\t\t\tkey={`${header.id}-${randomId.current}`}\n\t\t\talign=\"center\"\n\t\t\tsortIconTitle={i18n.t(\"Sort {{nextSortType}}\", { nextSortType })}\n\t\t\tonSortIconClick={(_, e) => {\n\t\t\t\tconst sort = filterColumn!.getToggleSortingHandler();\n\t\t\t\tif (sort) {\n\t\t\t\t\tsort(e);\n\t\t\t\t}\n\t\t\t}}\n\t\t\tfixed\n\t\t\t/*\n // @ts-ignore */\n\t\t\tleft=\"0\"\n\t\t\tsortDirection={sortDirection}\n\t\t\tcolSpan={header.colSpan.toString()}\n\t\t\trowSpan={rowSpan}\n\t\t\tclassName={styles.metaHeader}\n\t\t>\n\t\t\t{!!filterColumn && (\n\t\t\t\t<FilterArea\n\t\t\t\t\tkey={`${header.id}-filter-area`}\n\t\t\t\t\tcolumn={filterColumn}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</DataTableColumnHeader>\n\t);\n}\n\nexport const MetaHeaderCell = memo(MetaHeaderCellComponent);\n"]}
|
|
@@ -1,42 +1,53 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { getInitialStateFromConfig } from '../utils';
|
|
2
|
+
import { createContext, useContext, useRef } from 'react';
|
|
3
|
+
import { createScorecardViewStateEngine } from '../utils/viewState';
|
|
4
|
+
import { createDimensionStateEngine } from '../utils/dimensionState';
|
|
6
5
|
|
|
6
|
+
const ScorecardStateContext = createContext(null);
|
|
7
|
+
function useScorecardViewStateEngine() {
|
|
8
|
+
const context = useContext(ScorecardStateContext);
|
|
9
|
+
if (!context) {
|
|
10
|
+
throw Error(
|
|
11
|
+
"useScorecardViewStateEngine should be used inside a Scorecard Context"
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
return context.options;
|
|
15
|
+
}
|
|
16
|
+
function useScorecardDimensionStateEngine() {
|
|
17
|
+
const context = useContext(ScorecardStateContext);
|
|
18
|
+
if (!context) {
|
|
19
|
+
throw Error(
|
|
20
|
+
"useScorecardDimensionStateEngine should be used inside a Scorecard Context"
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
return context.dimension;
|
|
24
|
+
}
|
|
7
25
|
function ScorecardStateProvider({
|
|
8
26
|
children,
|
|
9
27
|
initialState,
|
|
10
|
-
config
|
|
11
|
-
withRecoilRoot
|
|
28
|
+
config
|
|
12
29
|
}) {
|
|
13
|
-
const
|
|
14
|
-
(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
30
|
+
const viewStateEngine = useRef(
|
|
31
|
+
createScorecardViewStateEngine(initialState?.options ?? config.options)
|
|
32
|
+
);
|
|
33
|
+
const dimensionStateEngine = useRef(
|
|
34
|
+
createDimensionStateEngine({
|
|
35
|
+
orgUnitSelection: initialState?.orgUnitSelection ?? config.orgUnitSelection,
|
|
36
|
+
periodSelection: initialState?.periodSelection ?? config.periodSelection
|
|
37
|
+
})
|
|
21
38
|
);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
ScorecardStateContext.Provider,
|
|
41
|
+
{
|
|
42
|
+
value: {
|
|
43
|
+
options: viewStateEngine.current,
|
|
44
|
+
dimension: dimensionStateEngine.current
|
|
45
|
+
},
|
|
46
|
+
children
|
|
27
47
|
}
|
|
28
48
|
);
|
|
29
|
-
if (!withRecoilRoot) {
|
|
30
|
-
initializeStateWithoutRecoil(
|
|
31
|
-
initialState ?? getInitialStateFromConfig(config)
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
if (withRecoilRoot) {
|
|
35
|
-
return /* @__PURE__ */ jsx(RecoilRoot, { initializeState: initState, children });
|
|
36
|
-
}
|
|
37
|
-
return children;
|
|
38
49
|
}
|
|
39
50
|
|
|
40
|
-
export { ScorecardStateProvider };
|
|
51
|
+
export { ScorecardStateProvider, useScorecardDimensionStateEngine, useScorecardViewStateEngine };
|
|
41
52
|
//# sourceMappingURL=StateProvider.js.map
|
|
42
53
|
//# sourceMappingURL=StateProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/StateProvider.tsx"],"names":[
|
|
1
|
+
{"version":3,"sources":["../../../src/components/StateProvider.tsx"],"names":[],"mappings":";;;;;AAiBA,MAAM,qBAAA,GAAwB,cAGpB,IAAI,CAAA;AAEP,SAAS,2BAA8B,GAAA;AAC7C,EAAM,MAAA,OAAA,GAAU,WAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAS,EAAA;AACb,IAAM,MAAA,KAAA;AAAA,MACL;AAAA,KACD;AAAA;AAED,EAAA,OAAO,OAAQ,CAAA,OAAA;AAChB;AAEO,SAAS,gCAAmC,GAAA;AAClD,EAAM,MAAA,OAAA,GAAU,WAAW,qBAAqB,CAAA;AAChD,EAAA,IAAI,CAAC,OAAS,EAAA;AACb,IAAM,MAAA,KAAA;AAAA,MACL;AAAA,KACD;AAAA;AAED,EAAA,OAAO,OAAQ,CAAA,SAAA;AAChB;AAEO,SAAS,sBAAuB,CAAA;AAAA,EACtC,QAAA;AAAA,EACA,YAAA;AAAA,EACA;AACD,CAAgC,EAAA;AAC/B,EAAA,MAAM,eAAkB,GAAA,MAAA;AAAA,IACvB,8BAA+B,CAAA,YAAA,EAAc,OAAW,IAAA,MAAA,CAAO,OAAO;AAAA,GACvE;AACA,EAAA,MAAM,oBAAuB,GAAA,MAAA;AAAA,IAC5B,0BAA2B,CAAA;AAAA,MAC1B,gBAAA,EACC,YAAc,EAAA,gBAAA,IAAoB,MAAO,CAAA,gBAAA;AAAA,MAC1C,eAAA,EACC,YAAc,EAAA,eAAA,IAAmB,MAAO,CAAA;AAAA,KACzC;AAAA,GACF;AAEA,EACC,uBAAA,GAAA;AAAA,IAAC,qBAAsB,CAAA,QAAA;AAAA,IAAtB;AAAA,MACA,KAAO,EAAA;AAAA,QACN,SAAS,eAAgB,CAAA,OAAA;AAAA,QACzB,WAAW,oBAAqB,CAAA;AAAA,OACjC;AAAA,MAEC;AAAA;AAAA,GACF;AAEF","file":"StateProvider.js","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\nimport { createContext, type ReactNode, useContext, useRef } from \"react\";\nimport {\n\tcreateScorecardViewStateEngine,\n\ttype ScorecardViewStateEngine,\n} from \"../utils/viewState\";\nimport {\n\tcreateDimensionStateEngine,\n\ttype DimensionStateEngine,\n} from \"../utils/dimensionState\";\n\nexport interface ScorecardStateProviderProps {\n\tinitialState?: ScorecardState;\n\tconfig: ScorecardConfig;\n\tchildren: ReactNode;\n}\n\nconst ScorecardStateContext = createContext<{\n\toptions: ScorecardViewStateEngine;\n\tdimension: DimensionStateEngine;\n} | null>(null);\n\nexport function useScorecardViewStateEngine() {\n\tconst context = useContext(ScorecardStateContext);\n\tif (!context) {\n\t\tthrow Error(\n\t\t\t\"useScorecardViewStateEngine should be used inside a Scorecard Context\",\n\t\t);\n\t}\n\treturn context.options;\n}\n\nexport function useScorecardDimensionStateEngine() {\n\tconst context = useContext(ScorecardStateContext);\n\tif (!context) {\n\t\tthrow Error(\n\t\t\t\"useScorecardDimensionStateEngine should be used inside a Scorecard Context\",\n\t\t);\n\t}\n\treturn context.dimension;\n}\n\nexport function ScorecardStateProvider({\n\tchildren,\n\tinitialState,\n\tconfig,\n}: ScorecardStateProviderProps) {\n\tconst viewStateEngine = useRef<ScorecardViewStateEngine>(\n\t\tcreateScorecardViewStateEngine(initialState?.options ?? config.options),\n\t);\n\tconst dimensionStateEngine = useRef<DimensionStateEngine>(\n\t\tcreateDimensionStateEngine({\n\t\t\torgUnitSelection:\n\t\t\t\tinitialState?.orgUnitSelection ?? config.orgUnitSelection,\n\t\t\tperiodSelection:\n\t\t\t\tinitialState?.periodSelection ?? config.periodSelection,\n\t\t}),\n\t);\n\n\treturn (\n\t\t<ScorecardStateContext.Provider\n\t\t\tvalue={{\n\t\t\t\toptions: viewStateEngine.current,\n\t\t\t\tdimension: dimensionStateEngine.current,\n\t\t\t}}\n\t\t>\n\t\t\t{children}\n\t\t</ScorecardStateContext.Provider>\n\t);\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createColumnHelper } from '@tanstack/react-table';
|
|
2
|
-
import { useScorecardConfig, useScorecardMeta } from '../components';
|
|
2
|
+
import { useScorecardConfig, useScorecardData, useScorecardMeta } from '../components';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { getOrgUnitColumnHeaders, getDataColumnHeaders, getAverageColumn } from '../utils/columns';
|
|
5
5
|
import { LabelCell } from '../components/ScorecardTable/components/TableHeader/components/LabelCell';
|
|
@@ -9,20 +9,14 @@ import { useCalendar } from './metadata';
|
|
|
9
9
|
import { MetaFooterCell } from '../components/ScorecardTable/components/MetaFooterCell';
|
|
10
10
|
import { getOrgUnitLevel } from '../utils/orgUnits';
|
|
11
11
|
import { useLowestOrgUnitLevel } from './orgUnit';
|
|
12
|
-
import { useScorecardData } from '../components/DataProvider';
|
|
13
|
-
import { useScorecardStateSelectorValue } from '../state';
|
|
14
12
|
import { ExpandCell } from '../components/ScorecardTable/components/TableHeader/components/ExpandCell';
|
|
13
|
+
import { useScorecardViewStateValue } from '../utils/viewState';
|
|
14
|
+
import { usePeriodSelectionValue, useOrgUnitSelectionValue } from '../utils/dimensionState';
|
|
15
15
|
|
|
16
16
|
const columnHelper = createColumnHelper();
|
|
17
17
|
function useMetaColumns() {
|
|
18
|
-
const showDataInRows =
|
|
19
|
-
|
|
20
|
-
"showDataInRows"
|
|
21
|
-
]);
|
|
22
|
-
const disableExpanding = useScorecardStateSelectorValue([
|
|
23
|
-
"options",
|
|
24
|
-
"disableExpanding"
|
|
25
|
-
]);
|
|
18
|
+
const showDataInRows = useScorecardViewStateValue("showDataInRows");
|
|
19
|
+
const disableExpanding = useScorecardViewStateValue("disableExpanding");
|
|
26
20
|
const lowestLevel = useLowestOrgUnitLevel();
|
|
27
21
|
return useMemo(() => {
|
|
28
22
|
const metaColumns = [
|
|
@@ -134,16 +128,9 @@ function useTableColumns() {
|
|
|
134
128
|
const meta = useScorecardMeta();
|
|
135
129
|
const metaColumns = useMetaColumns();
|
|
136
130
|
const calendar = useCalendar();
|
|
137
|
-
const showDataInRows =
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
]);
|
|
141
|
-
const periodSelection = useScorecardStateSelectorValue(
|
|
142
|
-
"periodSelection"
|
|
143
|
-
);
|
|
144
|
-
const orgUnitSelection = useScorecardStateSelectorValue(
|
|
145
|
-
"orgUnitSelection"
|
|
146
|
-
);
|
|
131
|
+
const showDataInRows = useScorecardViewStateValue("showDataInRows");
|
|
132
|
+
const periodSelection = usePeriodSelectionValue();
|
|
133
|
+
const orgUnitSelection = useOrgUnitSelectionValue();
|
|
147
134
|
if (!config || !meta) {
|
|
148
135
|
return [];
|
|
149
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/columns.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/columns.ts"],"names":[],"mappings":"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","file":"columns.js","sourcesContent":["import { type ColumnDef, createColumnHelper } from \"@tanstack/react-table\";\nimport {\n\tuseScorecardConfig,\n\tuseScorecardData,\n\tuseScorecardMeta,\n} from \"../components\";\nimport { useMemo } from \"react\";\nimport {\n\ttype ScorecardTableCellConfig,\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 { 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\";\nimport { ExpandCell } from \"../components/ScorecardTable/components/TableHeader/components/ExpandCell\";\nimport { useScorecardViewStateValue } from \"../utils/viewState\";\nimport {\n\tuseOrgUnitSelectionValue,\n\tusePeriodSelectionValue,\n} from \"../utils/dimensionState\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nexport function useMetaColumns() {\n\tconst showDataInRows =\n\t\tuseScorecardViewStateValue<boolean>(\"showDataInRows\");\n\n\tconst disableExpanding =\n\t\tuseScorecardViewStateValue<boolean>(\"disableExpanding\");\n\n\tconst lowestLevel = useLowestOrgUnitLevel();\n\n\treturn useMemo(() => {\n\t\tconst metaColumns: ColumnDef<ScorecardTableData, any>[] = [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tif (disableExpanding) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (showDataInRows) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!lowestLevel) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst orgUnit = rowData.orgUnit;\n\t\t\t\t\tif (!orgUnit) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst ouLevel = getOrgUnitLevel(orgUnit);\n\n\t\t\t\t\treturn ouLevel !== lowestLevel.level;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"expand\",\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tisMeta: true,\n\t\t\t\t\t\tfixed: true,\n\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t},\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tenableColumnFilter: false,\n\t\t\t\t\tcell: ExpandCell,\n\t\t\t\t\tsize: 48,\n\t\t\t\t\tfooter: () => null,\n\t\t\t\t},\n\t\t\t),\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(_, index) => {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"count\",\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tisMeta: true,\n\t\t\t\t\t\tfixed: true,\n\t\t\t\t\t\tlabel: \"\",\n\t\t\t\t\t},\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tenableColumnFilter: false,\n\t\t\t\t\tcell: NumberCell,\n\t\t\t\t\tsize: 48,\n\t\t\t\t\tfooter: () => null,\n\t\t\t\t},\n\t\t\t),\n\t\t];\n\n\t\tif (showDataInRows) {\n\t\t\tmetaColumns.push(\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\treturn rowData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: () => null,\n\t\t\t\t\t\tid: \"dataItems\",\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tfilterable: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tenableColumnFilter: true,\n\t\t\t\t\t\tfilterFn: (row, columnId, filterValue) => {\n\t\t\t\t\t\t\treturn row\n\t\t\t\t\t\t\t\t.getValue<{ label: string }>(columnId)\n\t\t\t\t\t\t\t\t?.label.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(filterValue.toLowerCase());\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: LabelCell,\n\t\t\t\t\t\tsize: 300,\n\t\t\t\t\t\tfooter: MetaFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tmetaColumns.push(\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\treturn rowData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: () => null,\n\t\t\t\t\t\tid: \"orgUnits\",\n\t\t\t\t\t\tenableColumnFilter: true,\n\t\t\t\t\t\tfilterFn: (row, columnId, filterValue) => {\n\t\t\t\t\t\t\treturn row\n\t\t\t\t\t\t\t\t.getValue<{ label: string }>(columnId)\n\t\t\t\t\t\t\t\t?.label.toLowerCase()\n\t\t\t\t\t\t\t\t.includes(filterValue.toLowerCase());\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tisMeta: true,\n\t\t\t\t\t\t\tfixed: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: LabelCell,\n\t\t\t\t\t\tsize: 300,\n\t\t\t\t\t\tfooter: MetaFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn metaColumns;\n\t}, [showDataInRows, disableExpanding]);\n}\n\nexport function useTableColumns(): ColumnDef<\n\tScorecardTableData,\n\tScorecardTableCellConfig\n>[] {\n\tconst config = useScorecardConfig();\n\tconst { data: dataEngine } = useScorecardData();\n\tconst meta = useScorecardMeta();\n\tconst metaColumns = useMetaColumns();\n\tconst calendar = useCalendar();\n\tconst showDataInRows =\n\t\tuseScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst periodSelection = usePeriodSelectionValue();\n\tconst orgUnitSelection = useOrgUnitSelectionValue();\n\n\tif (!config || !meta) {\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 (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\tdataEngine,\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\tdataEngine,\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}, [showDataInRows, periodSelection, orgUnitSelection]);\n}\n"]}
|
package/dist/esm/hooks/data.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/data.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/data.ts"],"names":[],"mappings":"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","file":"data.js","sourcesContent":["import { useScorecardConfig, useScorecardMeta } from \"../components\";\nimport { useCallback, useEffect, useMemo } from \"react\";\nimport { getDimensionsFromMeta } from \"../utils/analytics\";\nimport { FetchError, useAlert, useDataEngine } from \"@dhis2/app-runtime\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport { uniq } from \"lodash\";\nimport { useCalendar } from \"./metadata\";\nimport type { ScorecardDataEngine } from \"../utils/dataEngine\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { sanitizeAnalyticsData } from \"../utils/data\";\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(dataEngine: ScorecardDataEngine) {\n\tconst engine = useDataEngine();\n\tconst { show, hide: hideAlert } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type, actions }) => ({ ...type, actions, duration: 3000 }),\n\t);\n\tconst getTableData = (rawAnalyticsData: ScorecardDataQueryResponse) => {\n\t\treturn sanitizeAnalyticsData(rawAnalyticsData);\n\t};\n\tconst fetchData = useCallback(\n\t\tasync ({\n\t\t\tperiods,\n\t\t\tdataItems,\n\t\t\torgUnits,\n\t\t}: {\n\t\t\tperiods: string[];\n\t\t\torgUnits: string[];\n\t\t\tdataItems: string[];\n\t\t}) => {\n\t\t\ttry {\n\t\t\t\tconst rawAnalyticsData = (await engine.query(query, {\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tdataItems,\n\t\t\t\t\t\torgUnits,\n\t\t\t\t\t},\n\t\t\t\t})) as unknown as ScorecardDataQueryResponse;\n\t\t\t\tif (!rawAnalyticsData) return [];\n\t\t\t\treturn getTableData(rawAnalyticsData);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error || error instanceof FetchError) {\n\t\t\t\t\tshow({\n\t\t\t\t\t\tmessage: `${i18n.t(\"Error getting scorecard data\")}: ${\n\t\t\t\t\t\t\terror.message\n\t\t\t\t\t\t}`,\n\t\t\t\t\t\ttype: { critical: true },\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(error);\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\t\t[engine, show, hideAlert],\n\t);\n\tconst config = useScorecardConfig();\n\tconst meta = useScorecardMeta();\n\tconst calendar = useCalendar();\n\tif (!config || !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 } = useMemo(\n\t\t() =>\n\t\t\tgetDimensionsFromMeta({\n\t\t\t\tmeta,\n\t\t\t}),\n\t\t[meta],\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\tuseEffect(() => {\n\t\tdataEngine.initialize(fetchData, {\n\t\t\tdimensions: {\n\t\t\t\tdataItems: dataItemsIds,\n\t\t\t\tperiods: analyticsPeriod,\n\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t},\n\t\t});\n\t}, [dataEngine, dataItemsIds, analyticsPeriod, orgUnitsIds]);\n\n\treturn {};\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { useAlert, useDataQuery, useConfig } from '@dhis2/app-runtime';
|
|
|
3
3
|
import { useMemo, useEffect } from 'react';
|
|
4
4
|
import { getDimensions } from '../utils/analytics';
|
|
5
5
|
import i18n from '@dhis2/d2-i18n';
|
|
6
|
-
import {
|
|
6
|
+
import { useOrgUnitSelectionValue, usePeriodSelectionValue } from '../utils/dimensionState';
|
|
7
7
|
|
|
8
8
|
const query = {
|
|
9
9
|
meta: {
|
|
@@ -40,12 +40,8 @@ function useGetScorecardMeta() {
|
|
|
40
40
|
({ message }) => message,
|
|
41
41
|
({ type }) => ({ ...type, duration: 3e3 })
|
|
42
42
|
);
|
|
43
|
-
const orgUnitSelection =
|
|
44
|
-
|
|
45
|
-
);
|
|
46
|
-
const periodSelection = useScorecardStateSelectorValue(
|
|
47
|
-
"periodSelection"
|
|
48
|
-
);
|
|
43
|
+
const orgUnitSelection = useOrgUnitSelectionValue();
|
|
44
|
+
const periodSelection = usePeriodSelectionValue();
|
|
49
45
|
const { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(
|
|
50
46
|
() => getDimensions({
|
|
51
47
|
config,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/metadata.ts"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/metadata.ts"],"names":[],"mappings":"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","file":"metadata.js","sourcesContent":["import { useScorecardConfig } from \"../components\";\nimport { useAlert, 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\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport {\n\tuseOrgUnitSelectionValue,\n\tusePeriodSelectionValue,\n} from \"../utils/dimensionState\";\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\n\tconst { show } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type }) => ({ ...type, duration: 3000 }),\n\t);\n\n\tconst orgUnitSelection = useOrgUnitSelectionValue();\n\tconst periodSelection = usePeriodSelectionValue();\n\n\tconst { dataItemsIds, orgUnitsIds, periodsIds } = useMemo(\n\t\t() =>\n\t\t\tgetDimensions({\n\t\t\t\tconfig,\n\t\t\t\torgUnitSelection,\n\t\t\t\tperiodSelection,\n\t\t\t}),\n\t\t[config, orgUnitSelection, periodSelection],\n\t);\n\n\tconst { loading, data, refetch, called } = useDataQuery<MetaResponse>(\n\t\tquery,\n\t\t{\n\t\t\tvariables: {\n\t\t\t\tperiods: periodsIds,\n\t\t\t\torgUnits: orgUnitsIds,\n\t\t\t\tdataItems: dataItemsIds,\n\t\t\t},\n\t\t\tlazy: true,\n\t\t\tonError: (error) => {\n\t\t\t\tshow({\n\t\t\t\t\tmessage: `${i18n.t(\"Error getting scorecard data\")}: ${\n\t\t\t\t\t\terror.message\n\t\t\t\t\t}`,\n\t\t\t\t\ttype: { critical: true },\n\t\t\t\t});\n\t\t\t},\n\t\t},\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 {\n\t\t\t\t\t\t...data?.meta?.metaData.items[dx],\n\t\t\t\t\t\tuid: dx,\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 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}, [periodsIds, orgUnitsIds, dataItemsIds]);\n\n\treturn {\n\t\tloading,\n\t\torgUnits,\n\t\tperiods,\n\t\tdataItems,\n\t\torgUnitLevels,\n\t\tcalled,\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"]}
|
package/dist/esm/hooks/table.js
CHANGED
|
@@ -5,7 +5,7 @@ import { useScorecardMeta, useScorecardData, useScorecardConfig } from '../compo
|
|
|
5
5
|
import { getRowsFromMeta } from '../utils/data';
|
|
6
6
|
import { meanBy, isEmpty } from 'lodash';
|
|
7
7
|
import { getAverageValue } from '../utils/columns';
|
|
8
|
-
import {
|
|
8
|
+
import { useScorecardViewStateValue } from '../utils/viewState';
|
|
9
9
|
|
|
10
10
|
function getRowValues({
|
|
11
11
|
data,
|
|
@@ -67,15 +67,11 @@ function filterRows({
|
|
|
67
67
|
function useTableRows() {
|
|
68
68
|
const meta = useScorecardMeta();
|
|
69
69
|
const { data: dataEngine } = useScorecardData();
|
|
70
|
-
const showDataInRows =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
"options",
|
|
76
|
-
"emptyRows"
|
|
77
|
-
]);
|
|
78
|
-
const averageDisplayType = useScorecardStateSelectorValue(["options", "averageDisplayType"]);
|
|
70
|
+
const showDataInRows = useScorecardViewStateValue("showDataInRows") ?? false;
|
|
71
|
+
const emptyRows = useScorecardViewStateValue("emptyRows");
|
|
72
|
+
const averageDisplayType = useScorecardViewStateValue(
|
|
73
|
+
"averageDisplayType"
|
|
74
|
+
);
|
|
79
75
|
const config = useScorecardConfig();
|
|
80
76
|
const [hiddenRowIndexes, setHiddenRowIndexes] = useState([]);
|
|
81
77
|
if (meta == null) return [];
|
|
@@ -123,22 +119,10 @@ function useTableRows() {
|
|
|
123
119
|
return rows;
|
|
124
120
|
}
|
|
125
121
|
function useColumnVisibility() {
|
|
126
|
-
const showAverageColumn =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const showItemNumber = useScorecardStateSelectorValue([
|
|
131
|
-
"options",
|
|
132
|
-
"itemNumber"
|
|
133
|
-
]);
|
|
134
|
-
const showDataInRows = useScorecardStateSelectorValue([
|
|
135
|
-
"options",
|
|
136
|
-
"showDataInRows"
|
|
137
|
-
]);
|
|
138
|
-
const disableExpanding = useScorecardStateSelectorValue([
|
|
139
|
-
"options",
|
|
140
|
-
"disableExpanding"
|
|
141
|
-
]) ?? false;
|
|
122
|
+
const showAverageColumn = useScorecardViewStateValue("averageColumn") ?? false;
|
|
123
|
+
const showItemNumber = useScorecardViewStateValue("itemNumber") ?? false;
|
|
124
|
+
const showDataInRows = useScorecardViewStateValue("showDataInRows");
|
|
125
|
+
const disableExpanding = useScorecardViewStateValue("disableExpanding") ?? false;
|
|
142
126
|
const [columnVisibility, setColumnVisibility] = useState({
|
|
143
127
|
average: showAverageColumn,
|
|
144
128
|
count: showItemNumber,
|
|
@@ -158,10 +142,7 @@ function useColumnVisibility() {
|
|
|
158
142
|
}
|
|
159
143
|
function useRowExpanding() {
|
|
160
144
|
const [expanded, setExpanded] = useState({});
|
|
161
|
-
const disableExpanding =
|
|
162
|
-
"options",
|
|
163
|
-
"disableExpanding"
|
|
164
|
-
]) ?? false;
|
|
145
|
+
const disableExpanding = useScorecardViewStateValue("disableExpanding") ?? false;
|
|
165
146
|
const getRowCanExpand = useCallback((row) => {
|
|
166
147
|
const expandCell = row.getVisibleCells().find(({ id }) => id.includes("expand"));
|
|
167
148
|
if (!expandCell) return false;
|
|
@@ -175,10 +156,7 @@ function useRowExpanding() {
|
|
|
175
156
|
}
|
|
176
157
|
function useTableSetup() {
|
|
177
158
|
const [columnFilters, setColumnFilters] = useState([]);
|
|
178
|
-
const disablePagination =
|
|
179
|
-
"options",
|
|
180
|
-
"disablePagination"
|
|
181
|
-
]);
|
|
159
|
+
const disablePagination = useScorecardViewStateValue("disablePagination");
|
|
182
160
|
const [pagination, setPagination] = useState({
|
|
183
161
|
pageSize: 50,
|
|
184
162
|
pageIndex: 0
|