@hisptz/dhis2-analytics 2.0.60 → 2.0.62
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/DHIS2PivotTable/components/TableBody/index.js +4 -1
- package/dist/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
- package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js +6 -2
- package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
- package/dist/components/Visualization/components/DimensionsProvider/index.js +13 -9
- package/dist/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js +6 -3
- package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js +7 -3
- package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/DimensionsProvider/index.js +14 -10
- package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
- package/dist/types/components/DHIS2PivotTable/components/TableBody/index.d.ts.map +1 -1
- package/dist/types/components/DHIS2PivotTable/components/TableHeaders/index.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts +1 -1
- package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -39,7 +39,10 @@ function RowRenderer({
|
|
|
39
39
|
index,
|
|
40
40
|
config: { rows, columns, mapper, prevWidth, fixRowHeaders }
|
|
41
41
|
}) {
|
|
42
|
-
const
|
|
42
|
+
const cellRef = react.useRef(null);
|
|
43
|
+
const { width } = usehooksTs.useResizeObserver({
|
|
44
|
+
ref: cellRef
|
|
45
|
+
});
|
|
43
46
|
const rowSpan = lodash.slice(rows, index + 1).reduce((acc, column) => {
|
|
44
47
|
return acc * (column.items?.length ?? 1);
|
|
45
48
|
}, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","useRef","useResizeObserver","slice","isEmpty","jsxs","DataTableRow","classes","TableBody"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\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) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
4
5
|
var engine_js = require('../../state/engine.js');
|
|
5
6
|
var ui = require('@dhis2/ui');
|
|
6
7
|
var lodash = require('lodash');
|
|
@@ -16,7 +17,10 @@ function ColumnRenderer({
|
|
|
16
17
|
index,
|
|
17
18
|
config: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine }
|
|
18
19
|
}) {
|
|
19
|
-
const
|
|
20
|
+
const ref = react.useRef(null);
|
|
21
|
+
const { height } = usehooksTs.useResizeObserver({
|
|
22
|
+
ref
|
|
23
|
+
});
|
|
20
24
|
if (!column) {
|
|
21
25
|
return null;
|
|
22
26
|
}
|
|
@@ -60,7 +64,7 @@ function ColumnRenderer({
|
|
|
60
64
|
{
|
|
61
65
|
fixed: fixColumnHeaders,
|
|
62
66
|
top: `${prevHeight.toString()}px`,
|
|
63
|
-
ref: index === 0 ?
|
|
67
|
+
ref: index === 0 ? ref : void 0,
|
|
64
68
|
className: classes__default.default["table-header"],
|
|
65
69
|
align: "center",
|
|
66
70
|
colSpan: colSpan.toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["useRef","useResizeObserver","slice","column","isEmpty","jsxs","Fragment","DataTableRow","jsx","DataTableColumnHeader","classes","times","useCustomPivotTableEngine","TableHead"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
|
|
@@ -3,30 +3,34 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var react = require('react');
|
|
5
5
|
var lodash = require('lodash');
|
|
6
|
-
var usehooksTs = require('usehooks-ts');
|
|
7
6
|
|
|
8
7
|
const DimensionState = react.createContext({
|
|
9
8
|
dx: [],
|
|
10
9
|
pe: [],
|
|
11
10
|
ou: []
|
|
12
11
|
});
|
|
13
|
-
const DimensionUpdateState = react.createContext(
|
|
12
|
+
const DimensionUpdateState = react.createContext(
|
|
13
|
+
void 0
|
|
14
|
+
);
|
|
14
15
|
function reducer(state, { dimension, value }) {
|
|
15
16
|
const updatedState = { ...state ?? {} };
|
|
16
17
|
lodash.set(updatedState, [dimension], value);
|
|
17
18
|
return updatedState;
|
|
18
19
|
}
|
|
19
20
|
function useDimensions() {
|
|
20
|
-
return [
|
|
21
|
-
react.useContext(DimensionState),
|
|
22
|
-
react.useContext(DimensionUpdateState)
|
|
23
|
-
];
|
|
21
|
+
return [react.useContext(DimensionState), react.useContext(DimensionUpdateState)];
|
|
24
22
|
}
|
|
25
|
-
function DimensionsProvider({
|
|
23
|
+
function DimensionsProvider({
|
|
24
|
+
children,
|
|
25
|
+
dimensions
|
|
26
|
+
}) {
|
|
26
27
|
const [state, dispatch] = react.useReducer(reducer, dimensions);
|
|
27
|
-
|
|
28
|
+
react.useEffect(() => {
|
|
28
29
|
Object.keys(dimensions).forEach((dimension) => {
|
|
29
|
-
dispatch({
|
|
30
|
+
dispatch({
|
|
31
|
+
dimension,
|
|
32
|
+
value: dimensions[dimension] ?? []
|
|
33
|
+
});
|
|
30
34
|
});
|
|
31
35
|
}, [dimensions]);
|
|
32
36
|
return /* @__PURE__ */ jsxRuntime.jsx(DimensionState.Provider, { value: state, children: /* @__PURE__ */ jsxRuntime.jsx(DimensionUpdateState.Provider, { value: dispatch, children }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":["createContext","set","useContext","useReducer","
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":["createContext","set","useContext","useReducer","useEffect","jsx"],"mappings":";;;;;;AAUO,MAAM,iBAAiBA,mBAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACN,CAAC,EAAA;AACM,MAAM,oBAAuB,GAAAA,mBAAA;AAAA,EACnC,KAAA,CAAA;AACD,EAAA;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA,CAAA;AACxC,EAAAC,UAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACR,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAACC,gBAAW,CAAA,cAAc,CAAG,EAAAA,gBAAA,CAAW,oBAAoB,CAAC,CAAA,CAAA;AAIrE,CAAA;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAAC,gBAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK,EAAC;AAAA,OACjC,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAA,uBACEC,cAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAAA,cAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: React.ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
|
|
@@ -2,9 +2,9 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
|
2
2
|
import { isEmpty, slice } from 'lodash';
|
|
3
3
|
import { useCustomPivotTableEngine } from '../../state/engine.js';
|
|
4
4
|
import { TableBody, DataTableRow, DataTableCell } from '@dhis2/ui';
|
|
5
|
-
import { Fragment as Fragment$1 } from 'react';
|
|
5
|
+
import { useRef, Fragment as Fragment$1 } from 'react';
|
|
6
6
|
import classes from './TableBody.module.css';
|
|
7
|
-
import {
|
|
7
|
+
import { useResizeObserver } from 'usehooks-ts';
|
|
8
8
|
|
|
9
9
|
function DataRowRenderer({
|
|
10
10
|
mapper,
|
|
@@ -33,7 +33,10 @@ function RowRenderer({
|
|
|
33
33
|
index,
|
|
34
34
|
config: { rows, columns, mapper, prevWidth, fixRowHeaders }
|
|
35
35
|
}) {
|
|
36
|
-
const
|
|
36
|
+
const cellRef = useRef(null);
|
|
37
|
+
const { width } = useResizeObserver({
|
|
38
|
+
ref: cellRef
|
|
39
|
+
});
|
|
37
40
|
const rowSpan = slice(rows, index + 1).reduce((acc, column) => {
|
|
38
41
|
return acc * (column.items?.length ?? 1);
|
|
39
42
|
}, 1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":";;;;;;;;AAUA,SAAS,eAAgB,CAAA;AAAA,EACxB,MAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AACD,CAIG,EAAA;AACF,EAAA,MAAM,SAAS,yBAA0B,EAAA,CAAA;AAEzC,EAAA,MAAM,gBAAgB,MAAQ,EAAA,SAAA,CAAA;AAC9B,EAAA,MAAM,cAAiB,GAAA,aAAA,EAAe,GAAI,CAAA,CAAC,GAAS,MAAA;AAAA,IACnD,GAAG,GAAA;AAAA,IACH,GAAG,MAAA;AAAA,IACH,CAAC,SAAS,GAAG,IAAK,CAAA,GAAA;AAAA,GACjB,CAAA,CAAA,CAAA;AACF,EAAA,uBAEG,GAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAgB,GAAI,CAAA,CAACA,OACrB,qBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MAEA,KAAM,EAAA,QAAA;AAAA,MACN,QAAQ,EAAA,IAAA;AAAA,MAEP,QAAA,EAAA,MAAA,EAAQ,QAASA,CAAAA,OAAM,CAAK,IAAA,EAAA;AAAA,KAAA;AAAA,IAJxB,GAAG,MAAO,CAAA,MAAA,CAAOA,OAAM,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,GAMxC,CACF,EAAA,CAAA,CAAA;AAEF,CAAA;AAEA,SAAS,WAAY,CAAA;AAAA,EACpB,GAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAQ,EAAE,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,WAAW,aAAc,EAAA;AAC3D,CAU8B,EAAA;AAC7B,
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["mapper","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport React, { Fragment, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces/index.js\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => (\n\t\t\t\t<DataTableCell\n\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tbordered\n\t\t\t\t>\n\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t</DataTableCell>\n\t\t\t))}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): React.ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\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) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef } from 'react';
|
|
2
3
|
import { useCustomPivotTableEngine } from '../../state/engine.js';
|
|
3
4
|
import { TableHead, DataTableRow, DataTableColumnHeader } from '@dhis2/ui';
|
|
4
5
|
import { isEmpty, slice, times } from 'lodash';
|
|
5
6
|
import classes from './TableHeaders.module.css';
|
|
6
|
-
import {
|
|
7
|
+
import { useResizeObserver } from 'usehooks-ts';
|
|
7
8
|
|
|
8
9
|
function ColumnRenderer({
|
|
9
10
|
column,
|
|
10
11
|
index,
|
|
11
12
|
config: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine }
|
|
12
13
|
}) {
|
|
13
|
-
const
|
|
14
|
+
const ref = useRef(null);
|
|
15
|
+
const { height } = useResizeObserver({
|
|
16
|
+
ref
|
|
17
|
+
});
|
|
14
18
|
if (!column) {
|
|
15
19
|
return null;
|
|
16
20
|
}
|
|
@@ -54,7 +58,7 @@ function ColumnRenderer({
|
|
|
54
58
|
{
|
|
55
59
|
fixed: fixColumnHeaders,
|
|
56
60
|
top: `${prevHeight.toString()}px`,
|
|
57
|
-
ref: index === 0 ?
|
|
61
|
+
ref: index === 0 ? ref : void 0,
|
|
58
62
|
className: classes["table-header"],
|
|
59
63
|
align: "center",
|
|
60
64
|
colSpan: colSpan.toString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["column"],"mappings":"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","file":"index.js","sourcesContent":["import React, { useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): React.ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { createContext, useContext, useReducer } from 'react';
|
|
2
|
+
import { createContext, useContext, useReducer, useEffect } from 'react';
|
|
3
3
|
import { set } from 'lodash';
|
|
4
|
-
import { useUpdateEffect } from 'usehooks-ts';
|
|
5
4
|
|
|
6
5
|
const DimensionState = createContext({
|
|
7
6
|
dx: [],
|
|
8
7
|
pe: [],
|
|
9
8
|
ou: []
|
|
10
9
|
});
|
|
11
|
-
const DimensionUpdateState = createContext(
|
|
10
|
+
const DimensionUpdateState = createContext(
|
|
11
|
+
void 0
|
|
12
|
+
);
|
|
12
13
|
function reducer(state, { dimension, value }) {
|
|
13
14
|
const updatedState = { ...state ?? {} };
|
|
14
15
|
set(updatedState, [dimension], value);
|
|
15
16
|
return updatedState;
|
|
16
17
|
}
|
|
17
18
|
function useDimensions() {
|
|
18
|
-
return [
|
|
19
|
-
useContext(DimensionState),
|
|
20
|
-
useContext(DimensionUpdateState)
|
|
21
|
-
];
|
|
19
|
+
return [useContext(DimensionState), useContext(DimensionUpdateState)];
|
|
22
20
|
}
|
|
23
|
-
function DimensionsProvider({
|
|
21
|
+
function DimensionsProvider({
|
|
22
|
+
children,
|
|
23
|
+
dimensions
|
|
24
|
+
}) {
|
|
24
25
|
const [state, dispatch] = useReducer(reducer, dimensions);
|
|
25
|
-
|
|
26
|
+
useEffect(() => {
|
|
26
27
|
Object.keys(dimensions).forEach((dimension) => {
|
|
27
|
-
dispatch({
|
|
28
|
+
dispatch({
|
|
29
|
+
dimension,
|
|
30
|
+
value: dimensions[dimension] ?? []
|
|
31
|
+
});
|
|
28
32
|
});
|
|
29
33
|
}, [dimensions]);
|
|
30
34
|
return /* @__PURE__ */ jsx(DimensionState.Provider, { value: state, children: /* @__PURE__ */ jsx(DimensionUpdateState.Provider, { value: dispatch, children }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":";;;;AAUO,MAAM,iBAAiB,aAAkC,CAAA;AAAA,EAC/D,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AAAA,EACL,IAAI,EAAC;AACN,CAAC,EAAA;AACM,MAAM,oBAAuB,GAAA,aAAA;AAAA,EACnC,KAAA,CAAA;AACD,EAAA;AAEA,SAAS,OACR,CAAA,KAAA,EACA,EAAE,SAAA,EAAW,OACZ,EAAA;AACD,EAAA,MAAM,YAAe,GAAA,EAAE,GAAI,KAAA,IAAS,EAAI,EAAA,CAAA;AACxC,EAAA,GAAA,CAAI,YAAc,EAAA,CAAC,SAAS,CAAA,EAAG,KAAK,CAAA,CAAA;AACpC,EAAO,OAAA,YAAA,CAAA;AACR,CAAA;AAOO,SAAS,aAAgB,GAAA;AAC/B,EAAA,OAAO,CAAC,UAAW,CAAA,cAAc,CAAG,EAAA,UAAA,CAAW,oBAAoB,CAAC,CAAA,CAAA;AAIrE,CAAA;AAEO,SAAS,kBAAmB,CAAA;AAAA,EAClC,QAAA;AAAA,EACA,UAAA;AACD,CAA2B,EAAA;AAC1B,EAAA,MAAM,CAAC,KAAO,EAAA,QAAQ,CAAI,GAAA,UAAA,CAAW,SAAS,UAAU,CAAA,CAAA;AAExD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,SAAsB,KAAA;AACtD,MAAS,QAAA,CAAA;AAAA,QACR,SAAA;AAAA,QACA,KAAO,EAAA,UAAA,CAAW,SAAS,CAAA,IAAK,EAAC;AAAA,OACjC,CAAA,CAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EAAA,uBACE,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,KAAO,EAAA,KAAA,EAC/B,QAAC,kBAAA,GAAA,CAAA,oBAAA,CAAqB,QAArB,EAAA,EAA8B,KAAO,EAAA,QAAA,EACpC,UACF,CACD,EAAA,CAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import React, { createContext, useContext, useEffect, useReducer } from \"react\";\nimport { AnalyticsDimension } from \"@hisptz/dhis2-utils\";\nimport { set } from \"lodash\";\n\nexport type Dimension = \"ou\" | \"pe\" | \"dx\" | \"co\";\n\nexport type DimensionUpdater = (data: {\n\tdimension: Dimension;\n\tvalue: string[];\n}) => void;\nexport const DimensionState = createContext<AnalyticsDimension>({\n\tdx: [],\n\tpe: [],\n\tou: [],\n});\nexport const DimensionUpdateState = createContext<DimensionUpdater | undefined>(\n\tundefined,\n);\n\nfunction reducer(\n\tstate: AnalyticsDimension,\n\t{ dimension, value }: { dimension: Dimension; value: string[] },\n) {\n\tconst updatedState = { ...(state ?? {}) };\n\tset(updatedState, [dimension], value);\n\treturn updatedState;\n}\n\nexport interface DimensionProviderProps {\n\tchildren: React.ReactNode;\n\tdimensions: AnalyticsDimension;\n}\n\nexport function useDimensions() {\n\treturn [useContext(DimensionState), useContext(DimensionUpdateState)] as [\n\t\tAnalyticsDimension,\n\t\tDimensionUpdater,\n\t];\n}\n\nexport function DimensionsProvider({\n\tchildren,\n\tdimensions,\n}: DimensionProviderProps) {\n\tconst [state, dispatch] = useReducer(reducer, dimensions);\n\n\tuseEffect(() => {\n\t\tObject.keys(dimensions).forEach((dimension: string) => {\n\t\t\tdispatch({\n\t\t\t\tdimension: dimension as Dimension,\n\t\t\t\tvalue: dimensions[dimension] ?? [],\n\t\t\t});\n\t\t});\n\t}, [dimensions]);\n\n\treturn (\n\t\t<DimensionState.Provider value={state}>\n\t\t\t<DimensionUpdateState.Provider value={dispatch}>\n\t\t\t\t{children}\n\t\t\t</DimensionUpdateState.Provider>\n\t\t</DimensionState.Provider>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":[],"mappings":"AAwHA,wBAAgB,oBAAoB,mDAmBnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":[],"mappings":"AA6GA,wBAAgB,YAAY,sDAmB3B"}
|
|
@@ -12,5 +12,5 @@ export interface DimensionProviderProps {
|
|
|
12
12
|
dimensions: AnalyticsDimension;
|
|
13
13
|
}
|
|
14
14
|
export declare function useDimensions(): [AnalyticsDimension, DimensionUpdater];
|
|
15
|
-
export declare function DimensionsProvider({ children, dimensions }: DimensionProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export declare function DimensionsProvider({ children, dimensions, }: DimensionProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Visualization/components/DimensionsProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB,KAAK,IAAI,CAAC;AACX,eAAO,MAAM,cAAc,mCAIzB,CAAC;AACH,eAAO,MAAM,oBAAoB,6CAEhC,CAAC;AAWF,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,EAAE,kBAAkB,CAAC;CAC/B;AAED,wBAAgB,aAAa,IAC6C,CACxE,kBAAkB,EAClB,gBAAgB,CAChB,CACD;AAED,wBAAgB,kBAAkB,CAAC,EAClC,QAAQ,EACR,UAAU,GACV,EAAE,sBAAsB,2CAmBxB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hisptz/dhis2-analytics",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.62",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/esm/index.js",
|
|
6
6
|
"types": "./dist/types/index.d.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"styled-jsx": "^5.1.2",
|
|
46
46
|
"tsup": "^8.0.1",
|
|
47
47
|
"typescript": "^5.3.3",
|
|
48
|
-
"usehooks-ts": "^2.
|
|
48
|
+
"usehooks-ts": "^2.16.0",
|
|
49
49
|
"@repo/eslint-config": "0.0.0",
|
|
50
50
|
"@repo/typescript-config": "0.0.2"
|
|
51
51
|
},
|
|
@@ -78,8 +78,8 @@
|
|
|
78
78
|
"screenfull": "^6.0.2",
|
|
79
79
|
"xlsx": "^0.18.5",
|
|
80
80
|
"zod": "^3.23.8",
|
|
81
|
-
"@hisptz/dhis2-
|
|
82
|
-
"@hisptz/dhis2-
|
|
81
|
+
"@hisptz/dhis2-utils": "2.0.17",
|
|
82
|
+
"@hisptz/dhis2-ui": "2.0.39"
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"@dhis2/app-runtime": "^3.10.2",
|