@hisptz/dhis2-scorecard 1.2.24 → 1.2.25

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.
Files changed (58) hide show
  1. package/dist/components/HighlightedItems/components/HighlightedItem.js +66 -0
  2. package/dist/components/HighlightedItems/components/HighlightedItem.js.map +1 -0
  3. package/dist/components/HighlightedItems/hooks/data.js +51 -0
  4. package/dist/components/HighlightedItems/hooks/data.js.map +1 -0
  5. package/dist/components/HighlightedItems/index.js +35 -0
  6. package/dist/components/HighlightedItems/index.js.map +1 -0
  7. package/dist/components/ScorecardLegendsView/components/LegendView.js +33 -17
  8. package/dist/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
  9. package/dist/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js +55 -21
  10. package/dist/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
  11. package/dist/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js +7 -2
  12. package/dist/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
  13. package/dist/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js +32 -19
  14. package/dist/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
  15. package/dist/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js +63 -47
  16. package/dist/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js.map +1 -1
  17. package/dist/components/ScorecardTable/components/PaginatedToolbar.js +1 -2
  18. package/dist/components/ScorecardTable/components/PaginatedToolbar.js.map +1 -1
  19. package/dist/components/index.js +7 -0
  20. package/dist/esm/components/HighlightedItems/components/HighlightedItem.js +64 -0
  21. package/dist/esm/components/HighlightedItems/components/HighlightedItem.js.map +1 -0
  22. package/dist/esm/components/HighlightedItems/hooks/data.js +49 -0
  23. package/dist/esm/components/HighlightedItems/hooks/data.js.map +1 -0
  24. package/dist/esm/components/HighlightedItems/index.js +33 -0
  25. package/dist/esm/components/HighlightedItems/index.js.map +1 -0
  26. package/dist/esm/components/ScorecardLegendsView/components/LegendView.js +33 -17
  27. package/dist/esm/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
  28. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js +55 -21
  29. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
  30. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js +7 -2
  31. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
  32. package/dist/esm/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js +32 -19
  33. package/dist/esm/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
  34. package/dist/esm/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js +65 -49
  35. package/dist/esm/components/ScorecardLegendsView/components/SpecificTargetLegendsView.js.map +1 -1
  36. package/dist/esm/components/ScorecardTable/components/PaginatedToolbar.js +2 -3
  37. package/dist/esm/components/ScorecardTable/components/PaginatedToolbar.js.map +1 -1
  38. package/dist/esm/components/index.js +1 -0
  39. package/dist/esm/hooks/orgUnit.js +3 -4
  40. package/dist/esm/hooks/orgUnit.js.map +1 -1
  41. package/dist/hooks/orgUnit.js +3 -4
  42. package/dist/hooks/orgUnit.js.map +1 -1
  43. package/dist/types/components/HighlightedItems/components/HighlightedItem.d.ts +6 -0
  44. package/dist/types/components/HighlightedItems/components/HighlightedItem.d.ts.map +1 -0
  45. package/dist/types/components/HighlightedItems/hooks/data.d.ts +7 -0
  46. package/dist/types/components/HighlightedItems/hooks/data.d.ts.map +1 -0
  47. package/dist/types/components/HighlightedItems/index.d.ts +2 -0
  48. package/dist/types/components/HighlightedItems/index.d.ts.map +1 -0
  49. package/dist/types/components/ScorecardLegendsView/components/LegendView.d.ts.map +1 -1
  50. package/dist/types/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.d.ts.map +1 -1
  51. package/dist/types/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.d.ts.map +1 -1
  52. package/dist/types/components/ScorecardLegendsView/components/PeriodSpecificTargetView.d.ts.map +1 -1
  53. package/dist/types/components/ScorecardLegendsView/components/SpecificTargetLegendsView.d.ts.map +1 -1
  54. package/dist/types/components/ScorecardTable/components/PaginatedToolbar.d.ts.map +1 -1
  55. package/dist/types/components/index.d.ts +1 -0
  56. package/dist/types/components/index.d.ts.map +1 -1
  57. package/dist/types/hooks/orgUnit.d.ts.map +1 -1
  58. package/package.json +1 -1
@@ -22,7 +22,7 @@ function SpecificTargetsLibrary() {
22
22
  const dataSources$1 = dataSources.getDataSourcesFromGroups(
23
23
  config.dataSelection.dataGroups
24
24
  );
25
- const specificTargetsDataSourcesByType = react.useMemo(() => {
25
+ const { orgUnit, orgUnitLevel, periods } = react.useMemo(() => {
26
26
  const dataSourcesWithSpecificTargets = dataSources$1.filter(
27
27
  (ds) => ds.specificTargetsSet
28
28
  );
@@ -33,67 +33,83 @@ function SpecificTargetsLibrary() {
33
33
  ),
34
34
  (ds) => lodash.head(ds.specificTargets)?.type
35
35
  );
36
+ console.log({ data });
36
37
  data["orgUnitLevel"] = dataSourcesWithSpecificTargets.filter(
37
38
  (ds) => lodash.isEmpty(ds.specificTargets)
38
39
  );
39
40
  return data;
40
41
  }, [dataSources$1]);
42
+ const [activeTab, setActiveTab] = react.useState(
43
+ !lodash.isEmpty(orgUnit) ? "orgUnit" : !lodash.isEmpty("orgUnitLevel") ? "orgUnitLevel" : "period"
44
+ );
41
45
  const getDataSourceLabel = hooks.useGetDataSourceLabel();
42
46
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "column gap-16", children: [
43
- !lodash.isEmpty(specificTargetsDataSourcesByType?.orgUnit) && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
47
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.TabBar, { children: [
48
+ !lodash.isEmpty(orgUnit) && /* @__PURE__ */ jsxRuntime.jsx(
49
+ ui.Tab,
50
+ {
51
+ selected: activeTab === "orgUnit",
52
+ onClick: () => setActiveTab("orgUnit"),
53
+ children: i18n__default.default.t("Organisation Units")
54
+ }
55
+ ),
56
+ !lodash.isEmpty(orgUnitLevel) && /* @__PURE__ */ jsxRuntime.jsx(
57
+ ui.Tab,
58
+ {
59
+ selected: activeTab === "orgUnitLevel",
60
+ onClick: () => setActiveTab("orgUnitLevel"),
61
+ children: i18n__default.default.t("Organisation Unit Level")
62
+ }
63
+ ),
64
+ !lodash.isEmpty(periods) && /* @__PURE__ */ jsxRuntime.jsx(
65
+ ui.Tab,
66
+ {
67
+ selected: activeTab === "period",
68
+ onClick: () => setActiveTab("period"),
69
+ children: i18n__default.default.t("Period")
70
+ }
71
+ )
72
+ ] }),
73
+ activeTab === "orgUnit" && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
44
74
  /* @__PURE__ */ jsxRuntime.jsx("h3", { children: i18n__default.default.t("Organisation Units Specific targets") }),
45
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "row gap-16", children: specificTargetsDataSourcesByType?.orgUnit?.map(
46
- (dataSource) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
47
- /* @__PURE__ */ jsxRuntime.jsx(
48
- OrgUnitSpecificTargetView.OrgUnitSpecificTargetView,
49
- {
50
- specificTarget: lodash.head(
51
- dataSource.specificTargets
52
- ),
53
- label: getDataSourceLabel(
54
- dataSource
55
- )
56
- },
57
- `${dataSource.id}-orgUnit-specific-target`
58
- ),
59
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
60
- ] })
61
- ) }),
75
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "row gap-16", children: orgUnit?.map((dataSource) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
76
+ /* @__PURE__ */ jsxRuntime.jsx(
77
+ OrgUnitSpecificTargetView.OrgUnitSpecificTargetView,
78
+ {
79
+ specificTarget: lodash.head(dataSource.specificTargets),
80
+ label: getDataSourceLabel(dataSource)
81
+ },
82
+ `${dataSource.id}-orgUnit-specific-target`
83
+ ),
84
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
85
+ ] })) }),
62
86
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
63
87
  ] }),
64
- !lodash.isEmpty(specificTargetsDataSourcesByType?.period) && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
88
+ activeTab === "period" && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
65
89
  /* @__PURE__ */ jsxRuntime.jsx("h3", { children: i18n__default.default.t("Period Specific targets") }),
66
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "row gap-16", children: specificTargetsDataSourcesByType?.period?.map(
67
- (dataSource) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
68
- /* @__PURE__ */ jsxRuntime.jsx(
69
- PeriodSpecificTargetView.PeriodSpecificTargetView,
70
- {
71
- specificTarget: lodash.head(
72
- dataSource.specificTargets
73
- ),
74
- label: getDataSourceLabel(
75
- dataSource
76
- )
77
- },
78
- `${dataSource.id}-orgUnit-specific-target`
79
- ),
80
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
81
- ] })
82
- ) }),
83
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
84
- ] }),
85
- !lodash.isEmpty(specificTargetsDataSourcesByType.orgUnitLevel) && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
86
- /* @__PURE__ */ jsxRuntime.jsx("h3", { children: i18n__default.default.t("Organisation unit level targets") }),
87
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "column gap-16", children: specificTargetsDataSourcesByType?.orgUnitLevel.map(
88
- (dataSource) => /* @__PURE__ */ jsxRuntime.jsx(
89
- OrgUnitLevelSpecificTargetView.OrgUnitLevelSpecificTargetView,
90
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "row gap-16", children: periods?.map((dataSource) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
91
+ /* @__PURE__ */ jsxRuntime.jsx(
92
+ PeriodSpecificTargetView.PeriodSpecificTargetView,
90
93
  {
91
- specificTarget: dataSource.legends,
94
+ specificTarget: lodash.head(dataSource.specificTargets),
92
95
  label: getDataSourceLabel(dataSource)
93
96
  },
94
97
  `${dataSource.id}-orgUnit-specific-target`
95
- )
96
- ) }),
98
+ ),
99
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
100
+ ] })) }),
101
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
102
+ ] }),
103
+ activeTab === "orgUnitLevel" && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
104
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { children: i18n__default.default.t("Organisation Unit Level Targets") }),
105
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "column gap-16", children: orgUnitLevel.map((dataSource) => /* @__PURE__ */ jsxRuntime.jsx(
106
+ OrgUnitLevelSpecificTargetView.OrgUnitLevelSpecificTargetView,
107
+ {
108
+ specificTarget: dataSource.legends,
109
+ label: getDataSourceLabel(dataSource)
110
+ },
111
+ `${dataSource.id}-orgUnit-specific-target`
112
+ )) }),
97
113
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "page-break" })
98
114
  ] })
99
115
  ] }) });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/SpecificTargetLegendsView.tsx"],"names":["useScorecardConfig","dataSources","getDataSourcesFromGroups","useMemo","groupBy","filter","isEmpty","head","useGetDataSourceLabel","jsx","Fragment","jsxs","i18n","OrgUnitSpecificTargetView","PeriodSpecificTargetView","OrgUnitLevelSpecificTargetView","Modal","ModalTitle","ModalContent","ModalActions","Button","useBoolean"],"mappings":"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","file":"SpecificTargetLegendsView.js","sourcesContent":["import { filter, groupBy, head, isEmpty } from \"lodash\";\nimport {\n\tButton,\n\tModal,\n\tModalActions,\n\tModalContent,\n\tModalTitle,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useMemo } from \"react\";\nimport { OrgUnitSpecificTargetView } from \"./OrgUnitSpecificTargetView\";\nimport { PeriodSpecificTargetView } from \"./PeriodSpecificTargetView\";\nimport { useBoolean } from \"usehooks-ts\";\nimport { OrgUnitLevelSpecificTargetView } from \"./OrgUnitLevelSpecificTargetView\";\nimport { getDataSourcesFromGroups } from \"../../../utils/dataSources\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport type {\n\tOrgUnitLevelLegend,\n\tScorecardDataSource,\n} from \"../../../schemas/config\";\nimport { useGetDataSourceLabel } from \"../../../hooks\";\n\nexport function SpecificTargetsLibrary() {\n\tconst config = useScorecardConfig();\n\tconst dataSources = getDataSourcesFromGroups(\n\t\tconfig.dataSelection.dataGroups,\n\t);\n\tconst specificTargetsDataSourcesByType = useMemo(() => {\n\t\tconst dataSourcesWithSpecificTargets = dataSources.filter(\n\t\t\t(ds) => ds.specificTargetsSet,\n\t\t);\n\t\tconst data = groupBy(\n\t\t\tfilter(\n\t\t\t\tdataSourcesWithSpecificTargets,\n\t\t\t\t(ds) => !isEmpty(ds.specificTargets),\n\t\t\t),\n\t\t\t(ds) => head(ds.specificTargets)?.type,\n\t\t);\n\t\tdata[\"orgUnitLevel\"] = dataSourcesWithSpecificTargets.filter((ds) =>\n\t\t\tisEmpty(ds.specificTargets),\n\t\t);\n\t\treturn data as {\n\t\t\tperiod: Array<ScorecardDataSource> | undefined;\n\t\t\torgUnit: Array<ScorecardDataSource> | undefined;\n\t\t\torgUnitLevel: Array<ScorecardDataSource>;\n\t\t};\n\t}, [dataSources]);\n\n\tconst getDataSourceLabel = useGetDataSourceLabel();\n\treturn (\n\t\t<>\n\t\t\t<div className=\"column gap-16\">\n\t\t\t\t{!isEmpty(specificTargetsDataSourcesByType?.orgUnit) && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Organisation Units Specific targets\")}</h3>\n\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t{specificTargetsDataSourcesByType?.orgUnit?.map(\n\t\t\t\t\t\t\t\t(dataSource) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<OrgUnitSpecificTargetView\n\t\t\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\t\t\thead(\n\t\t\t\t\t\t\t\t\t\t\t\t\tdataSource.specificTargets,\n\t\t\t\t\t\t\t\t\t\t\t\t)!\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(\n\t\t\t\t\t\t\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<div className=\"page-break\" />\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</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!isEmpty(specificTargetsDataSourcesByType?.period) && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Period Specific targets\")}</h3>\n\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t{specificTargetsDataSourcesByType?.period?.map(\n\t\t\t\t\t\t\t\t(dataSource) => (\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t<PeriodSpecificTargetView\n\t\t\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\t\t\thead(\n\t\t\t\t\t\t\t\t\t\t\t\t\tdataSource.specificTargets,\n\t\t\t\t\t\t\t\t\t\t\t\t)!\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(\n\t\t\t\t\t\t\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<div className=\"page-break\" />\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</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{!isEmpty(specificTargetsDataSourcesByType.orgUnitLevel) && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Organisation unit level targets\")}</h3>\n\t\t\t\t\t\t<div className=\"column gap-16\">\n\t\t\t\t\t\t\t{specificTargetsDataSourcesByType?.orgUnitLevel.map(\n\t\t\t\t\t\t\t\t(dataSource) => (\n\t\t\t\t\t\t\t\t\t<OrgUnitLevelSpecificTargetView\n\t\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\t\tdataSource.legends as OrgUnitLevelLegend\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(dataSource)}\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</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nfunction SpecificTargetLegendsModal({\n\thide,\n\tonClose,\n}: {\n\thide: boolean;\n\tonClose: () => void;\n}) {\n\treturn (\n\t\t<Modal large position=\"middle\" hide={hide} onClose={onClose}>\n\t\t\t<ModalTitle>{i18n.t(\"Specific targets\")}</ModalTitle>\n\t\t\t<ModalContent>\n\t\t\t\t<SpecificTargetsLibrary />\n\t\t\t</ModalContent>\n\t\t\t<ModalActions>\n\t\t\t\t<Button onClick={onClose}>{i18n.t(\"Close\")}</Button>\n\t\t\t</ModalActions>\n\t\t</Modal>\n\t);\n}\n\nexport function SpecificTargetLegendsView() {\n\tconst config = useScorecardConfig();\n\tconst {\n\t\tvalue: hide,\n\t\tsetTrue: onClose,\n\t\tsetFalse: onShow,\n\t} = useBoolean(true);\n\tconst dataSources = getDataSourcesFromGroups(\n\t\tconfig.dataSelection.dataGroups,\n\t);\n\tconst dataSourcesWithSpecificTargets = dataSources.filter(\n\t\t(dataSource) =>\n\t\t\t!isEmpty(dataSource.specificTargets) ||\n\t\t\t!Array.isArray(dataSource.legends),\n\t);\n\n\tif (isEmpty(dataSourcesWithSpecificTargets)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{!hide && (\n\t\t\t\t<SpecificTargetLegendsModal hide={hide} onClose={onClose} />\n\t\t\t)}\n\t\t\t<Button className=\"print-hide\" onClick={onShow}>\n\t\t\t\t{i18n.t(\"Specific Targets Library\")}\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/SpecificTargetLegendsView.tsx"],"names":["useScorecardConfig","dataSources","getDataSourcesFromGroups","useMemo","groupBy","filter","isEmpty","head","useState","useGetDataSourceLabel","jsx","Fragment","jsxs","TabBar","Tab","i18n","OrgUnitSpecificTargetView","PeriodSpecificTargetView","OrgUnitLevelSpecificTargetView","Modal","ModalTitle","ModalContent","ModalActions","Button","useBoolean"],"mappings":";;;;;;;;;;;;;;;;;;;AAwBO,SAAS,sBAAA,GAAyB;AACxC,EAAA,MAAM,SAASA,iCAAA,EAAmB;AAClC,EAAA,MAAMC,aAAA,GAAcC,oCAAA;AAAA,IACnB,OAAO,aAAA,CAAc;AAAA,GACtB;AACA,EAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAc,OAAA,EAAQ,GAAIC,cAAQ,MAAM;AACxD,IAAA,MAAM,iCAAiCF,aAAA,CAAY,MAAA;AAAA,MAClD,CAAC,OAAO,EAAA,CAAG;AAAA,KACZ;AACA,IAAA,MAAM,IAAA,GAAOG,cAAA;AAAA,MACZC,aAAA;AAAA,QACC,8BAAA;AAAA,QACA,CAAC,EAAA,KAAO,CAACC,cAAA,CAAQ,GAAG,eAAe;AAAA,OACpC;AAAA,MACA,CAAC,EAAA,KAAOC,WAAA,CAAK,EAAA,CAAG,eAAe,CAAA,EAAG;AAAA,KACnC;AAEA,IAAA,OAAA,CAAQ,GAAA,CAAI,EAAE,IAAA,EAAM,CAAA;AAEpB,IAAA,IAAA,CAAK,cAAc,IAAI,8BAAA,CAA+B,MAAA;AAAA,MAAO,CAAC,EAAA,KAC7DD,cAAA,CAAQ,EAAA,CAAG,eAAe;AAAA,KAC3B;AACA,IAAA,OAAO,IAAA;AAAA,EAKR,CAAA,EAAG,CAACL,aAAW,CAAC,CAAA;AAEhB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIO,cAAA;AAAA,IAGjC,CAACF,eAAQ,OAAO,CAAA,GACb,YACA,CAACA,cAAA,CAAQ,cAAc,CAAA,GACtB,cAAA,GACA;AAAA,GACL;AAEA,EAAA,MAAM,qBAAqBG,2BAAA,EAAsB;AACjD,EAAA,uBACCC,cAAA,CAAAC,mBAAA,EAAA,EACC,QAAA,kBAAAC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACd,QAAA,EAAA;AAAA,oBAAAA,eAAA,CAACC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,MAAA,CAACP,cAAA,CAAQ,OAAO,CAAA,oBAChBI,cAAA;AAAA,QAACI,MAAA;AAAA,QAAA;AAAA,UACA,UAAU,SAAA,KAAc,SAAA;AAAA,UACxB,OAAA,EAAS,MAAM,YAAA,CAAa,SAAS,CAAA;AAAA,UAEpC,QAAA,EAAAC,qBAAA,CAAK,EAAE,oBAAoB;AAAA;AAAA,OAC7B;AAAA,MAEA,CAACT,cAAA,CAAQ,YAAY,CAAA,oBACrBI,cAAA;AAAA,QAACI,MAAA;AAAA,QAAA;AAAA,UACA,UAAU,SAAA,KAAc,cAAA;AAAA,UACxB,OAAA,EAAS,MAAM,YAAA,CAAa,cAAc,CAAA;AAAA,UAEzC,QAAA,EAAAC,qBAAA,CAAK,EAAE,yBAAyB;AAAA;AAAA,OAClC;AAAA,MAEA,CAACT,cAAA,CAAQ,OAAO,CAAA,oBAChBI,cAAA;AAAA,QAACI,MAAA;AAAA,QAAA;AAAA,UACA,UAAU,SAAA,KAAc,QAAA;AAAA,UACxB,OAAA,EAAS,MAAM,YAAA,CAAa,QAAQ,CAAA;AAAA,UAEnC,QAAA,EAAAC,qBAAA,CAAK,EAAE,QAAQ;AAAA;AAAA;AACjB,KAAA,EAEF,CAAA;AAAA,IACC,SAAA,KAAc,SAAA,oBACdH,eAAA,CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAAK,qBAAA,CAAK,CAAA,CAAE,qCAAqC,CAAA,EAAE,CAAA;AAAA,sBACnDL,cAAA,CAAC,SAAI,SAAA,EAAU,YAAA,EACb,mBAAS,GAAA,CAAI,CAAC,+BACdE,eAAA,CAAAD,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAA;AAAA,UAACM,mDAAA;AAAA,UAAA;AAAA,YAEA,cAAA,EACCT,WAAA,CAAK,UAAA,CAAW,eAAe,CAAA;AAAA,YAEhC,KAAA,EAAO,mBAAmB,UAAU;AAAA,WAAA;AAAA,UAJ/B,CAAA,EAAG,WAAW,EAAE,CAAA,wBAAA;AAAA,SAKtB;AAAA,wBACAG,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa;AAAA,OAAA,EAC7B,CACA,CAAA,EACF,CAAA;AAAA,sBACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa;AAAA,KAAA,EAC7B,CAAA;AAAA,IAEA,SAAA,KAAc,QAAA,oBACdE,eAAA,CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAAK,qBAAA,CAAK,CAAA,CAAE,yBAAyB,CAAA,EAAE,CAAA;AAAA,sBACvCL,cAAA,CAAC,SAAI,SAAA,EAAU,YAAA,EACb,mBAAS,GAAA,CAAI,CAAC,+BACdE,eAAA,CAAAD,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAD,cAAA;AAAA,UAACO,iDAAA;AAAA,UAAA;AAAA,YAEA,cAAA,EACCV,WAAA,CAAK,UAAA,CAAW,eAAe,CAAA;AAAA,YAEhC,KAAA,EAAO,mBAAmB,UAAU;AAAA,WAAA;AAAA,UAJ/B,CAAA,EAAG,WAAW,EAAE,CAAA,wBAAA;AAAA,SAKtB;AAAA,wBACAG,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa;AAAA,OAAA,EAC7B,CACA,CAAA,EACF,CAAA;AAAA,sBACAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa;AAAA,KAAA,EAC7B,CAAA;AAAA,IAEA,SAAA,KAAc,cAAA,oBACdE,eAAA,CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,sBAAAF,cAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAAK,qBAAA,CAAK,CAAA,CAAE,iCAAiC,CAAA,EAAE,CAAA;AAAA,qCAC9C,KAAA,EAAA,EAAI,SAAA,EAAU,iBACb,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,UAAA,qBAClBL,cAAA;AAAA,QAACQ,6DAAA;AAAA,QAAA;AAAA,UAEA,gBACC,UAAA,CAAW,OAAA;AAAA,UAEZ,KAAA,EAAO,mBAAmB,UAAU;AAAA,SAAA;AAAA,QAJ/B,CAAA,EAAG,WAAW,EAAE,CAAA,wBAAA;AAAA,OAMtB,CAAA,EACF,CAAA;AAAA,sBACAR,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EAAa;AAAA,KAAA,EAC7B;AAAA,GAAA,EAEF,CAAA,EACD,CAAA;AAEF;AAEA,SAAS,0BAAA,CAA2B;AAAA,EACnC,IAAA;AAAA,EACA;AACD,CAAA,EAGG;AACF,EAAA,uCACES,QAAA,EAAA,EAAM,KAAA,EAAK,MAAC,QAAA,EAAS,QAAA,EAAS,MAAY,OAAA,EAC1C,QAAA,EAAA;AAAA,oBAAAT,cAAA,CAACU,aAAA,EAAA,EAAY,QAAA,EAAAL,qBAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA;AAAA,oBACxCL,cAAA,CAACW,eAAA,EAAA,EACA,QAAA,kBAAAX,cAAA,CAAC,sBAAA,EAAA,EAAuB,CAAA,EACzB,CAAA;AAAA,oBACAA,cAAA,CAACY,eAAA,EAAA,EACA,QAAA,kBAAAZ,cAAA,CAACa,SAAA,EAAA,EAAO,OAAA,EAAS,SAAU,QAAA,EAAAR,qBAAA,CAAK,CAAA,CAAE,OAAO,CAAA,EAAE,CAAA,EAC5C;AAAA,GAAA,EACD,CAAA;AAEF;AAEO,SAAS,yBAAA,GAA4B;AAC3C,EAAA,MAAM,SAASf,iCAAA,EAAmB;AAClC,EAAA,MAAM;AAAA,IACL,KAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAS,OAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACX,GAAIwB,sBAAW,IAAI,CAAA;AACnB,EAAA,MAAMvB,aAAA,GAAcC,oCAAA;AAAA,IACnB,OAAO,aAAA,CAAc;AAAA,GACtB;AACA,EAAA,MAAM,iCAAiCD,aAAA,CAAY,MAAA;AAAA,IAClD,CAAC,UAAA,KACA,CAACK,cAAA,CAAQ,UAAA,CAAW,eAAe,CAAA,IACnC,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAA,CAAW,OAAO;AAAA,GACnC;AAEA,EAAA,IAAIA,cAAA,CAAQ,8BAA8B,CAAA,EAAG;AAC5C,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,uBACCM,eAAA,CAAAD,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,CAAC,IAAA,oBACDD,cAAA,CAAC,0BAAA,EAAA,EAA2B,IAAA,EAAY,OAAA,EAAkB,CAAA;AAAA,oBAE3DA,cAAA,CAACa,aAAO,SAAA,EAAU,YAAA,EAAa,SAAS,MAAA,EACtC,QAAA,EAAAR,qBAAA,CAAK,CAAA,CAAE,0BAA0B,CAAA,EACnC;AAAA,GAAA,EACD,CAAA;AAEF","file":"SpecificTargetLegendsView.js","sourcesContent":["import { filter, groupBy, head, isEmpty } from \"lodash\";\nimport {\n\tButton,\n\tModal,\n\tModalActions,\n\tModalContent,\n\tModalTitle,\n\tTab,\n\tTabBar,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useMemo, useState } from \"react\";\nimport { OrgUnitSpecificTargetView } from \"./OrgUnitSpecificTargetView\";\nimport { PeriodSpecificTargetView } from \"./PeriodSpecificTargetView\";\nimport { useBoolean } from \"usehooks-ts\";\nimport { OrgUnitLevelSpecificTargetView } from \"./OrgUnitLevelSpecificTargetView\";\nimport { getDataSourcesFromGroups } from \"../../../utils/dataSources\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport type {\n\tOrgUnitLevelLegend,\n\tScorecardDataSource,\n} from \"../../../schemas/config\";\nimport { useGetDataSourceLabel } from \"../../../hooks\";\n\nexport function SpecificTargetsLibrary() {\n\tconst config = useScorecardConfig();\n\tconst dataSources = getDataSourcesFromGroups(\n\t\tconfig.dataSelection.dataGroups,\n\t);\n\tconst { orgUnit, orgUnitLevel, periods } = useMemo(() => {\n\t\tconst dataSourcesWithSpecificTargets = dataSources.filter(\n\t\t\t(ds) => ds.specificTargetsSet,\n\t\t);\n\t\tconst data = groupBy(\n\t\t\tfilter(\n\t\t\t\tdataSourcesWithSpecificTargets,\n\t\t\t\t(ds) => !isEmpty(ds.specificTargets),\n\t\t\t),\n\t\t\t(ds) => head(ds.specificTargets)?.type,\n\t\t);\n\n\t\tconsole.log({ data });\n\n\t\tdata[\"orgUnitLevel\"] = dataSourcesWithSpecificTargets.filter((ds) =>\n\t\t\tisEmpty(ds.specificTargets),\n\t\t);\n\t\treturn data as {\n\t\t\tperiods: Array<ScorecardDataSource> | undefined;\n\t\t\torgUnit: Array<ScorecardDataSource> | undefined;\n\t\t\torgUnitLevel: Array<ScorecardDataSource>;\n\t\t};\n\t}, [dataSources]);\n\n\tconst [activeTab, setActiveTab] = useState<\n\t\t\"period\" | \"orgUnit\" | \"orgUnitLevel\"\n\t>(\n\t\t!isEmpty(orgUnit)\n\t\t\t? \"orgUnit\"\n\t\t\t: !isEmpty(\"orgUnitLevel\")\n\t\t\t\t? \"orgUnitLevel\"\n\t\t\t\t: \"period\",\n\t);\n\n\tconst getDataSourceLabel = useGetDataSourceLabel();\n\treturn (\n\t\t<>\n\t\t\t<div className=\"column gap-16\">\n\t\t\t\t<TabBar>\n\t\t\t\t\t{!isEmpty(orgUnit) && (\n\t\t\t\t\t\t<Tab\n\t\t\t\t\t\t\tselected={activeTab === \"orgUnit\"}\n\t\t\t\t\t\t\tonClick={() => setActiveTab(\"orgUnit\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{i18n.t(\"Organisation Units\")}\n\t\t\t\t\t\t</Tab>\n\t\t\t\t\t)}\n\t\t\t\t\t{!isEmpty(orgUnitLevel) && (\n\t\t\t\t\t\t<Tab\n\t\t\t\t\t\t\tselected={activeTab === \"orgUnitLevel\"}\n\t\t\t\t\t\t\tonClick={() => setActiveTab(\"orgUnitLevel\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{i18n.t(\"Organisation Unit Level\")}\n\t\t\t\t\t\t</Tab>\n\t\t\t\t\t)}\n\t\t\t\t\t{!isEmpty(periods) && (\n\t\t\t\t\t\t<Tab\n\t\t\t\t\t\t\tselected={activeTab === \"period\"}\n\t\t\t\t\t\t\tonClick={() => setActiveTab(\"period\")}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{i18n.t(\"Period\")}\n\t\t\t\t\t\t</Tab>\n\t\t\t\t\t)}\n\t\t\t\t</TabBar>\n\t\t\t\t{activeTab === \"orgUnit\" && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Organisation Units Specific targets\")}</h3>\n\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t{orgUnit?.map((dataSource) => (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<OrgUnitSpecificTargetView\n\t\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\t\thead(dataSource.specificTargets)!\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(dataSource)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{activeTab === \"period\" && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Period Specific targets\")}</h3>\n\t\t\t\t\t\t<div className=\"row gap-16\">\n\t\t\t\t\t\t\t{periods?.map((dataSource) => (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<PeriodSpecificTargetView\n\t\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\t\thead(dataSource.specificTargets)!\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(dataSource)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{activeTab === \"orgUnitLevel\" && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<h3>{i18n.t(\"Organisation Unit Level Targets\")}</h3>\n\t\t\t\t\t\t<div className=\"column gap-16\">\n\t\t\t\t\t\t\t{orgUnitLevel.map((dataSource) => (\n\t\t\t\t\t\t\t\t<OrgUnitLevelSpecificTargetView\n\t\t\t\t\t\t\t\t\tkey={`${dataSource.id}-orgUnit-specific-target`}\n\t\t\t\t\t\t\t\t\tspecificTarget={\n\t\t\t\t\t\t\t\t\t\tdataSource.legends as OrgUnitLevelLegend\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tlabel={getDataSourceLabel(dataSource)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"page-break\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nfunction SpecificTargetLegendsModal({\n\thide,\n\tonClose,\n}: {\n\thide: boolean;\n\tonClose: () => void;\n}) {\n\treturn (\n\t\t<Modal large position=\"middle\" hide={hide} onClose={onClose}>\n\t\t\t<ModalTitle>{i18n.t(\"Specific targets\")}</ModalTitle>\n\t\t\t<ModalContent>\n\t\t\t\t<SpecificTargetsLibrary />\n\t\t\t</ModalContent>\n\t\t\t<ModalActions>\n\t\t\t\t<Button onClick={onClose}>{i18n.t(\"Close\")}</Button>\n\t\t\t</ModalActions>\n\t\t</Modal>\n\t);\n}\n\nexport function SpecificTargetLegendsView() {\n\tconst config = useScorecardConfig();\n\tconst {\n\t\tvalue: hide,\n\t\tsetTrue: onClose,\n\t\tsetFalse: onShow,\n\t} = useBoolean(true);\n\tconst dataSources = getDataSourcesFromGroups(\n\t\tconfig.dataSelection.dataGroups,\n\t);\n\tconst dataSourcesWithSpecificTargets = dataSources.filter(\n\t\t(dataSource) =>\n\t\t\t!isEmpty(dataSource.specificTargets) ||\n\t\t\t!Array.isArray(dataSource.legends),\n\t);\n\n\tif (isEmpty(dataSourcesWithSpecificTargets)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{!hide && (\n\t\t\t\t<SpecificTargetLegendsModal hide={hide} onClose={onClose} />\n\t\t\t)}\n\t\t\t<Button className=\"print-hide\" onClick={onShow}>\n\t\t\t\t{i18n.t(\"Specific Targets Library\")}\n\t\t\t</Button>\n\t\t</>\n\t);\n}\n"]}
@@ -4,7 +4,6 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var ui = require('@dhis2/ui');
5
5
  var TableStateProvider = require('../../TableStateProvider');
6
6
  var react = require('react');
7
- var usehooksTs = require('usehooks-ts');
8
7
 
9
8
  function PaginatedToolbar() {
10
9
  const [isPending, startTransition] = react.useTransition();
@@ -24,7 +23,7 @@ function PaginatedToolbar() {
24
23
  table.setPageSize(pageSize2);
25
24
  });
26
25
  };
27
- usehooksTs.useUpdateEffect(() => {
26
+ react.useEffect(() => {
28
27
  toggleTableLoading();
29
28
  }, [isPending]);
30
29
  if (rowCount <= 50 || table.options.meta?.disablePagination) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardTable/components/PaginatedToolbar.tsx"],"names":["useTransition","useTableState","useToggleTableLoadingState","page","pageSize","useUpdateEffect","jsx","DataTableToolbar","Pagination"],"mappings":";;;;;;;;AAQO,SAAS,gBAAA,GAAmB;AAClC,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAIA,mBAAA,EAAc;AACnD,EAAA,MAAM,QAAQC,gCAAA,EAAc;AAC5B,EAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,EAAS,CAAE,WAAW,SAAA,GAAY,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,EAAS,CAAE,UAAA,CAAW,QAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,MAAM,YAAA,EAAa;AACrC,EAAA,MAAM,qBAAqBC,6CAAA,EAA2B;AAEtD,EAAA,MAAM,YAAA,GAAe,CAACC,KAAAA,KAAiB;AACtC,IAAA,eAAA,CAAgB,MAAM;AACrB,MAAA,KAAA,CAAM,YAAA,CAAaA,QAAO,CAAC,CAAA;AAAA,IAC5B,CAAC,CAAA;AAAA,EACF,CAAA;AACA,EAAA,MAAM,gBAAA,GAAmB,CAACC,SAAAA,KAAqB;AAC9C,IAAA,eAAA,CAAgB,MAAM;AACrB,MAAA,KAAA,CAAM,YAAYA,SAAQ,CAAA;AAAA,IAC3B,CAAC,CAAA;AAAA,EACF,CAAA;AAEA,EAAAC,0BAAA,CAAgB,MAAM;AACrB,IAAA,kBAAA,EAAmB;AAAA,EACpB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IACC,QAAA,IAAY,EAAA,IACX,KAAA,CAAM,OAAA,CAAQ,MACZ,iBAAA,EACF;AACD,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,uBACCC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MAGA,KAAA,EAAO,EAAE,QAAA,EAAU,OAAA,EAAQ;AAAA,MAC3B,QAAA,EAAS,QAAA;AAAA,MAET,yCAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC9B,QAAA,kBAAAD,cAAA;AAAA,QAACE,aAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO,QAAA;AAAA,UACP,SAAA;AAAA,UACA,SAAA,EAAW,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA,CAAE,GAAA;AAAA,YAAI,CAAC,IAAA,KACzC,IAAA,CAAK,QAAA;AAAS,WACf;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA,OACD,EACD;AAAA;AAAA,GACD;AAEF","file":"PaginatedToolbar.js","sourcesContent":["import { DataTableToolbar, Pagination } from \"@dhis2/ui\";\nimport {\n\tuseTableState,\n\tuseToggleTableLoadingState,\n} from \"../../TableStateProvider\";\nimport { useTransition } from \"react\";\nimport { useUpdateEffect } from \"usehooks-ts\";\n\nexport function PaginatedToolbar() {\n\tconst [isPending, startTransition] = useTransition();\n\tconst table = useTableState();\n\tconst rowCount = table.getRowCount();\n\tconst page = table.getState().pagination.pageIndex + 1;\n\tconst pageSize = table.getState().pagination.pageSize;\n\tconst pageCount = table.getPageCount();\n\tconst toggleTableLoading = useToggleTableLoadingState();\n\n\tconst onPageChange = (page: number) => {\n\t\tstartTransition(() => {\n\t\t\ttable.setPageIndex(page - 1);\n\t\t});\n\t};\n\tconst onPageSizeChange = (pageSize: number) => {\n\t\tstartTransition(() => {\n\t\t\ttable.setPageSize(pageSize);\n\t\t});\n\t};\n\n\tuseUpdateEffect(() => {\n\t\ttoggleTableLoading();\n\t}, [isPending]);\n\n\tif (\n\t\trowCount <= 50 ||\n\t\t(table.options.meta as { disablePagination?: boolean })\n\t\t\t?.disablePagination\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataTableToolbar\n\t\t\t/*\n\t\t\t// @ts-ignore */\n\t\t\tstyle={{ position: \"unset\" }}\n\t\t\tposition=\"bottom\"\n\t\t>\n\t\t\t<div style={{ width: \"stretch\" }}>\n\t\t\t\t<Pagination\n\t\t\t\t\ttotal={rowCount}\n\t\t\t\t\tpageCount={pageCount}\n\t\t\t\t\tpageSizes={[10, 20, 30, 40, 50, 100].map((size) =>\n\t\t\t\t\t\tsize.toString(),\n\t\t\t\t\t)}\n\t\t\t\t\tpage={page}\n\t\t\t\t\tpageSize={pageSize}\n\t\t\t\t\tonPageChange={onPageChange}\n\t\t\t\t\tonPageSizeChange={onPageSizeChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</DataTableToolbar>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardTable/components/PaginatedToolbar.tsx"],"names":["useTransition","useTableState","useToggleTableLoadingState","page","pageSize","useEffect","jsx","DataTableToolbar","Pagination"],"mappings":";;;;;;;AAOO,SAAS,gBAAA,GAAmB;AAClC,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAIA,mBAAA,EAAc;AACnD,EAAA,MAAM,QAAQC,gCAAA,EAAc;AAC5B,EAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AACnC,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,QAAA,EAAS,CAAE,WAAW,SAAA,GAAY,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,EAAS,CAAE,UAAA,CAAW,QAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,MAAM,YAAA,EAAa;AACrC,EAAA,MAAM,qBAAqBC,6CAAA,EAA2B;AAEtD,EAAA,MAAM,YAAA,GAAe,CAACC,KAAAA,KAAiB;AACtC,IAAA,eAAA,CAAgB,MAAM;AACrB,MAAA,KAAA,CAAM,YAAA,CAAaA,QAAO,CAAC,CAAA;AAAA,IAC5B,CAAC,CAAA;AAAA,EACF,CAAA;AACA,EAAA,MAAM,gBAAA,GAAmB,CAACC,SAAAA,KAAqB;AAC9C,IAAA,eAAA,CAAgB,MAAM;AACrB,MAAA,KAAA,CAAM,YAAYA,SAAQ,CAAA;AAAA,IAC3B,CAAC,CAAA;AAAA,EACF,CAAA;AAEA,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,kBAAA,EAAmB;AAAA,EACpB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IACC,QAAA,IAAY,EAAA,IACX,KAAA,CAAM,OAAA,CAAQ,MACZ,iBAAA,EACF;AACD,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,uBACCC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MAGA,KAAA,EAAO,EAAE,QAAA,EAAU,OAAA,EAAQ;AAAA,MAC3B,QAAA,EAAS,QAAA;AAAA,MAET,yCAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,WAAU,EAC9B,QAAA,kBAAAD,cAAA;AAAA,QAACE,aAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAO,QAAA;AAAA,UACP,SAAA;AAAA,UACA,SAAA,EAAW,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA,CAAE,GAAA;AAAA,YAAI,CAAC,IAAA,KACzC,IAAA,CAAK,QAAA;AAAS,WACf;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA,OACD,EACD;AAAA;AAAA,GACD;AAEF","file":"PaginatedToolbar.js","sourcesContent":["import { DataTableToolbar, Pagination } from \"@dhis2/ui\";\nimport {\n\tuseTableState,\n\tuseToggleTableLoadingState,\n} from \"../../TableStateProvider\";\nimport { useEffect, useTransition } from \"react\";\n\nexport function PaginatedToolbar() {\n\tconst [isPending, startTransition] = useTransition();\n\tconst table = useTableState();\n\tconst rowCount = table.getRowCount();\n\tconst page = table.getState().pagination.pageIndex + 1;\n\tconst pageSize = table.getState().pagination.pageSize;\n\tconst pageCount = table.getPageCount();\n\tconst toggleTableLoading = useToggleTableLoadingState();\n\n\tconst onPageChange = (page: number) => {\n\t\tstartTransition(() => {\n\t\t\ttable.setPageIndex(page - 1);\n\t\t});\n\t};\n\tconst onPageSizeChange = (pageSize: number) => {\n\t\tstartTransition(() => {\n\t\t\ttable.setPageSize(pageSize);\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\ttoggleTableLoading();\n\t}, [isPending]);\n\n\tif (\n\t\trowCount <= 50 ||\n\t\t(table.options.meta as { disablePagination?: boolean })\n\t\t\t?.disablePagination\n\t) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataTableToolbar\n\t\t\t/*\n\t\t\t// @ts-ignore */\n\t\t\tstyle={{ position: \"unset\" }}\n\t\t\tposition=\"bottom\"\n\t\t>\n\t\t\t<div style={{ width: \"stretch\" }}>\n\t\t\t\t<Pagination\n\t\t\t\t\ttotal={rowCount}\n\t\t\t\t\tpageCount={pageCount}\n\t\t\t\t\tpageSizes={[10, 20, 30, 40, 50, 100].map((size) =>\n\t\t\t\t\t\tsize.toString(),\n\t\t\t\t\t)}\n\t\t\t\t\tpage={page}\n\t\t\t\t\tpageSize={pageSize}\n\t\t\t\t\tonPageChange={onPageChange}\n\t\t\t\t\tonPageSizeChange={onPageSizeChange}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</DataTableToolbar>\n\t);\n}\n"]}
@@ -10,6 +10,7 @@ var ScorecardHeader = require('./ScorecardHeader');
10
10
  var ScorecardLegendsView = require('./ScorecardLegendsView');
11
11
  var StateProvider = require('./StateProvider');
12
12
  var TableStateProvider = require('./TableStateProvider');
13
+ var HighlightedItems = require('./HighlightedItems');
13
14
 
14
15
 
15
16
 
@@ -73,5 +74,11 @@ Object.keys(TableStateProvider).forEach(function (k) {
73
74
  get: function () { return TableStateProvider[k]; }
74
75
  });
75
76
  });
77
+ Object.keys(HighlightedItems).forEach(function (k) {
78
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
79
+ enumerable: true,
80
+ get: function () { return HighlightedItems[k]; }
81
+ });
82
+ });
76
83
  //# sourceMappingURL=index.js.map
77
84
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,64 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import { getLegend, getTextColorFromBackgroundColor } from '../../../utils/legends';
4
+ import { useScorecardMeta } from '../../MetaProvider';
5
+ import { useScorecardConfig } from '../../ConfigProvider';
6
+ import { colors } from '@dhis2/ui';
7
+
8
+ function HighlightedItem({
9
+ item,
10
+ data
11
+ }) {
12
+ const config = useScorecardConfig();
13
+ const meta = useScorecardMeta();
14
+ const legendDefinition = useMemo(() => {
15
+ return data ? getLegend({
16
+ dataSource: item,
17
+ value: parseFloat(data),
18
+ orgUnitLevels: meta.orgUnitLevels,
19
+ config
20
+ }) : void 0;
21
+ }, [item, data, meta, config]);
22
+ return /* @__PURE__ */ jsxs(
23
+ "div",
24
+ {
25
+ style: {
26
+ display: "flex",
27
+ gap: 16,
28
+ justifyContent: "space-between",
29
+ border: `1px solid ${colors.grey500}`,
30
+ borderRadius: 4,
31
+ minHeight: 48,
32
+ alignItems: "center",
33
+ width: "100%"
34
+ },
35
+ children: [
36
+ /* @__PURE__ */ jsx("span", { style: { padding: 8, fontSize: 14 }, children: item.label ?? item.name }),
37
+ /* @__PURE__ */ jsx(
38
+ "div",
39
+ {
40
+ style: {
41
+ minHeight: 48,
42
+ height: "100%",
43
+ width: 100,
44
+ display: "flex",
45
+ justifyContent: "center",
46
+ borderLeft: `1px solid ${colors.grey500}`,
47
+ alignItems: "center",
48
+ padding: 8,
49
+ background: legendDefinition?.color,
50
+ color: legendDefinition?.color ? getTextColorFromBackgroundColor(
51
+ legendDefinition?.color
52
+ ) : void 0
53
+ },
54
+ children: /* @__PURE__ */ jsx("b", { children: data })
55
+ }
56
+ )
57
+ ]
58
+ }
59
+ );
60
+ }
61
+
62
+ export { HighlightedItem };
63
+ //# sourceMappingURL=HighlightedItem.js.map
64
+ //# sourceMappingURL=HighlightedItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/HighlightedItems/components/HighlightedItem.tsx"],"names":[],"mappings":";;;;;;;AAUO,SAAS,eAAA,CAAgB;AAAA,EAC/B,IAAA;AAAA,EACA;AACD,CAAA,EAGG;AACF,EAAA,MAAM,SAAS,kBAAA,EAAmB;AAClC,EAAA,MAAM,OAAO,gBAAA,EAAiB;AAC9B,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACtC,IAAA,OAAO,OACJ,SAAA,CAAU;AAAA,MACV,UAAA,EAAY,IAAA;AAAA,MACZ,KAAA,EAAO,WAAW,IAAI,CAAA;AAAA,MACtB,eAAe,IAAA,CAAM,aAAA;AAAA,MACrB;AAAA,KACA,CAAA,GACA,MAAA;AAAA,EACJ,GAAG,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,CAAC,CAAA;AAE7B,EAAA,uBACC,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,GAAA,EAAK,EAAA;AAAA,QACL,cAAA,EAAgB,eAAA;AAAA,QAChB,MAAA,EAAQ,CAAA,UAAA,EAAa,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QACnC,YAAA,EAAc,CAAA;AAAA,QACd,SAAA,EAAW,EAAA;AAAA,QACX,UAAA,EAAY,QAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,OAAA,EAAS,CAAA,EAAG,QAAA,EAAU,EAAA,EAAG,EACtC,QAAA,EAAA,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,IAAA,EACrB,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,SAAA,EAAW,EAAA;AAAA,cACX,MAAA,EAAQ,MAAA;AAAA,cACR,KAAA,EAAO,GAAA;AAAA,cACP,OAAA,EAAS,MAAA;AAAA,cACT,cAAA,EAAgB,QAAA;AAAA,cAChB,UAAA,EAAY,CAAA,UAAA,EAAa,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,cACvC,UAAA,EAAY,QAAA;AAAA,cACZ,OAAA,EAAS,CAAA;AAAA,cACT,YAAY,gBAAA,EAAkB,KAAA;AAAA,cAC9B,KAAA,EAAO,kBAAkB,KAAA,GACtB,+BAAA;AAAA,gBACA,gBAAA,EAAkB;AAAA,eACnB,GACC;AAAA,aACJ;AAAA,YAEA,QAAA,kBAAA,GAAA,CAAC,OAAG,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA;AACV;AAAA;AAAA,GACD;AAEF","file":"HighlightedItem.js","sourcesContent":["import type { ScorecardDataSource } from \"../../../schemas/config\";\nimport { useMemo } from \"react\";\nimport {\n\tgetLegend,\n\tgetTextColorFromBackgroundColor,\n} from \"../../../utils/legends\";\nimport { useScorecardMeta } from \"../../MetaProvider\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { colors } from \"@dhis2/ui\";\n\nexport function HighlightedItem({\n\titem,\n\tdata,\n}: {\n\titem: ScorecardDataSource;\n\tdata?: string;\n}) {\n\tconst config = useScorecardConfig();\n\tconst meta = useScorecardMeta();\n\tconst legendDefinition = useMemo(() => {\n\t\treturn data\n\t\t\t? getLegend({\n\t\t\t\t\tdataSource: item,\n\t\t\t\t\tvalue: parseFloat(data),\n\t\t\t\t\torgUnitLevels: meta!.orgUnitLevels,\n\t\t\t\t\tconfig: config!,\n\t\t\t\t})\n\t\t\t: undefined;\n\t}, [item, data, meta, config]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tgap: 16,\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\tborder: `1px solid ${colors.grey500}`,\n\t\t\t\tborderRadius: 4,\n\t\t\t\tminHeight: 48,\n\t\t\t\talignItems: \"center\",\n\t\t\t\twidth: \"100%\",\n\t\t\t}}\n\t\t>\n\t\t\t<span style={{ padding: 8, fontSize: 14 }}>\n\t\t\t\t{item.label ?? item.name}\n\t\t\t</span>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tminHeight: 48,\n\t\t\t\t\theight: \"100%\",\n\t\t\t\t\twidth: 100,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\tborderLeft: `1px solid ${colors.grey500}`,\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tpadding: 8,\n\t\t\t\t\tbackground: legendDefinition?.color,\n\t\t\t\t\tcolor: legendDefinition?.color\n\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\tlegendDefinition?.color,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<b>{data}</b>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { useScorecardMeta } from '../../MetaProvider';
2
+ import { useScorecardConfig } from '../../ConfigProvider';
3
+ import { useMemo } from 'react';
4
+ import { useDataQuery } from '@dhis2/app-runtime';
5
+
6
+ const query = {
7
+ data: {
8
+ resource: "analytics",
9
+ params: ({
10
+ periods,
11
+ orgUnits,
12
+ dataItems
13
+ }) => {
14
+ return {
15
+ skipMeta: true,
16
+ dimension: [`dx:${dataItems.join(";")}`],
17
+ filter: [`ou:${orgUnits.join(";")}`, `pe:${periods.join(";")}`]
18
+ };
19
+ }
20
+ }
21
+ };
22
+ function useHighlightedItemsData() {
23
+ const meta = useScorecardMeta();
24
+ const { highlightedIndicators } = useScorecardConfig();
25
+ const dimensions = useMemo(() => {
26
+ const periods = meta?.periods.map((period) => period.uid) || [];
27
+ const orgUnits = meta?.orgUnits.map((orgUnit) => orgUnit.uid) || [];
28
+ const dataItems = highlightedIndicators.map(
29
+ (indicator) => indicator.id
30
+ );
31
+ return {
32
+ periods,
33
+ orgUnits,
34
+ dataItems
35
+ };
36
+ }, [highlightedIndicators, meta]);
37
+ const { data, loading, error } = useDataQuery(query, {
38
+ variables: dimensions
39
+ });
40
+ return {
41
+ data: data?.data,
42
+ loading,
43
+ error
44
+ };
45
+ }
46
+
47
+ export { useHighlightedItemsData };
48
+ //# sourceMappingURL=data.js.map
49
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/HighlightedItems/hooks/data.ts"],"names":[],"mappings":";;;;;AAMA,MAAM,KAAA,GAAa;AAAA,EAClB,IAAA,EAAM;AAAA,IACL,QAAA,EAAU,WAAA;AAAA,IACV,QAAQ,CAAC;AAAA,MACR,OAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,KAIM;AACL,MAAA,OAAO;AAAA,QACN,QAAA,EAAU,IAAA;AAAA,QACV,WAAW,CAAC,CAAA,GAAA,EAAM,UAAU,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,CAAA;AAAA,QACvC,MAAA,EAAQ,CAAC,CAAA,GAAA,EAAM,QAAA,CAAS,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,EAAI,CAAA,GAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE;AAAA,OAC/D;AAAA,IACD;AAAA;AAEF,CAAA;AAEO,SAAS,uBAAA,GAA0B;AACzC,EAAA,MAAM,OAAO,gBAAA,EAAiB;AAE9B,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,kBAAA,EAAmB;AACrD,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAM;AAChC,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,GAAG,CAAA,IAAK,EAAC;AAC9D,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,OAAA,KAAY,OAAA,CAAQ,GAAG,CAAA,IAAK,EAAC;AAClE,IAAA,MAAM,YAAY,qBAAA,CAAsB,GAAA;AAAA,MACvC,CAAC,cAAc,SAAA,CAAU;AAAA,KAC1B;AACA,IAAA,OAAO;AAAA,MACN,OAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD;AAAA,EACD,CAAA,EAAG,CAAC,qBAAA,EAAuB,IAAI,CAAC,CAAA;AAChC,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,GAAI,aAAkC,KAAA,EAAO;AAAA,IACzE,SAAA,EAAW;AAAA,GACX,CAAA;AAED,EAAA,OAAO;AAAA,IACN,MAAM,IAAA,EAAM,IAAA;AAAA,IACZ,OAAA;AAAA,IACA;AAAA,GACD;AACD","file":"data.js","sourcesContent":["import { useScorecardMeta } from \"../../MetaProvider\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { useMemo } from \"react\";\nimport { useDataQuery } from \"@dhis2/app-runtime\";\nimport type { Analytics } from \"@hisptz/dhis2-utils\";\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: [`dx:${dataItems.join(\";\")}`],\n\t\t\t\tfilter: [`ou:${orgUnits.join(\";\")}`, `pe:${periods.join(\";\")}`],\n\t\t\t};\n\t\t},\n\t},\n};\n\nexport function useHighlightedItemsData() {\n\tconst meta = useScorecardMeta();\n\n\tconst { highlightedIndicators } = useScorecardConfig();\n\tconst dimensions = useMemo(() => {\n\t\tconst periods = meta?.periods.map((period) => period.uid) || [];\n\t\tconst orgUnits = meta?.orgUnits.map((orgUnit) => orgUnit.uid) || [];\n\t\tconst dataItems = highlightedIndicators.map(\n\t\t\t(indicator) => indicator.id,\n\t\t);\n\t\treturn {\n\t\t\tperiods,\n\t\t\torgUnits,\n\t\t\tdataItems,\n\t\t};\n\t}, [highlightedIndicators, meta]);\n\tconst { data, loading, error } = useDataQuery<{ data: Analytics }>(query, {\n\t\tvariables: dimensions,\n\t});\n\n\treturn {\n\t\tdata: data?.data,\n\t\tloading,\n\t\terror,\n\t};\n}\n"]}
@@ -0,0 +1,33 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useHighlightedItemsData } from './hooks/data';
3
+ import { CircularLoader } from '@dhis2/ui';
4
+ import { useScorecardConfig } from '../ConfigProvider';
5
+ import { HighlightedItem } from './components/HighlightedItem';
6
+
7
+ function HighlightedItems() {
8
+ const { highlightedIndicators } = useScorecardConfig();
9
+ const { loading, error, data } = useHighlightedItemsData();
10
+ if (loading) {
11
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(CircularLoader, { small: true }) });
12
+ }
13
+ return /* @__PURE__ */ jsx(
14
+ "div",
15
+ {
16
+ style: {
17
+ display: "grid",
18
+ gap: 16,
19
+ gridTemplateColumns: "repeat(auto-fill, minmax(400px, 1fr))"
20
+ },
21
+ children: highlightedIndicators?.map((item) => {
22
+ const value = data?.rows?.find(
23
+ (row) => row.includes(item.id)
24
+ )?.[1];
25
+ return /* @__PURE__ */ jsx(HighlightedItem, { item, data: value }, item.id);
26
+ })
27
+ }
28
+ );
29
+ }
30
+
31
+ export { HighlightedItems };
32
+ //# sourceMappingURL=index.js.map
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/HighlightedItems/index.tsx"],"names":[],"mappings":";;;;;;AAKO,SAAS,gBAAA,GAAmB;AAClC,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,kBAAA,EAAmB;AACrD,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAO,IAAA,KAAS,uBAAA,EAAwB;AAEzD,EAAA,IAAI,OAAA,EAAS;AACZ,IAAA,2BACE,KAAA,EAAA,EACA,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAK,MAAC,CAAA,EACvB,CAAA;AAAA,EAEF;AAEA,EAAA,uBACC,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,GAAA,EAAK,EAAA;AAAA,QACL,mBAAA,EAAqB;AAAA,OACtB;AAAA,MAEC,QAAA,EAAA,qBAAA,EAAuB,GAAA,CAAI,CAAC,IAAA,KAAS;AACrC,QAAA,MAAM,KAAA,GAAQ,MAAM,IAAA,EAAM,IAAA;AAAA,UAAK,CAAC,GAAA,KAC/B,GAAA,CAAI,QAAA,CAAS,KAAK,EAAE;AAAA,YACjB,CAAC,CAAA;AACL,QAAA,2BACE,eAAA,EAAA,EAA8B,IAAA,EAAY,IAAA,EAAM,KAAA,EAAA,EAA3B,KAAK,EAA6B,CAAA;AAAA,MAE1D,CAAC;AAAA;AAAA,GACF;AAEF","file":"index.js","sourcesContent":["import { useHighlightedItemsData } from \"./hooks/data\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport { useScorecardConfig } from \"../ConfigProvider\";\nimport { HighlightedItem } from \"./components/HighlightedItem\";\n\nexport function HighlightedItems() {\n\tconst { highlightedIndicators } = useScorecardConfig();\n\tconst { loading, error, data } = useHighlightedItemsData();\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<CircularLoader small />\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"grid\",\n\t\t\t\tgap: 16,\n\t\t\t\tgridTemplateColumns: \"repeat(auto-fill, minmax(400px, 1fr))\",\n\t\t\t}}\n\t\t>\n\t\t\t{highlightedIndicators?.map((item) => {\n\t\t\t\tconst value = data?.rows?.find((row) =>\n\t\t\t\t\trow.includes(item.id),\n\t\t\t\t)?.[1];\n\t\t\t\treturn (\n\t\t\t\t\t<HighlightedItem key={item.id} item={item} data={value} />\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n}\n"]}
@@ -10,7 +10,7 @@ function LegendsView({ legends }) {
10
10
  /* @__PURE__ */ jsx("col", { width: "60%" }),
11
11
  /* @__PURE__ */ jsx("col", { width: "20%" }),
12
12
  /* @__PURE__ */ jsx("col", { width: "20%" }),
13
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
13
+ /* @__PURE__ */ jsx("thead", { style: { fontSize: 14 }, children: /* @__PURE__ */ jsxs("tr", { children: [
14
14
  /* @__PURE__ */ jsx("th", { align: "left", children: i18n.t("Legend") }),
15
15
  /* @__PURE__ */ jsx("th", { children: i18n.t("Min") }),
16
16
  /* @__PURE__ */ jsx("th", { children: i18n.t("Max") })
@@ -19,27 +19,43 @@ function LegendsView({ legends }) {
19
19
  const legendDefinition = find(legendDefinitions, {
20
20
  id: legend.legendDefinitionId
21
21
  });
22
- return /* @__PURE__ */ jsxs("tr", { children: [
23
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsxs("table", { children: [
24
- /* @__PURE__ */ jsx("col", { width: "20%" }),
25
- /* @__PURE__ */ jsx("col", { width: "80%" }),
26
- /* @__PURE__ */ jsx("tbody", { children: /* @__PURE__ */ jsxs("tr", { children: [
27
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(
22
+ return /* @__PURE__ */ jsxs(
23
+ "tr",
24
+ {
25
+ style: {
26
+ fontSize: 14
27
+ },
28
+ children: [
29
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsxs(
28
30
  "div",
29
31
  {
30
32
  style: {
31
- height: 24,
32
- width: 32,
33
- background: legendDefinition?.color
34
- }
33
+ display: "grid",
34
+ alignItems: "center",
35
+ gap: 8,
36
+ gridTemplateColumns: "32px 1fr"
37
+ },
38
+ children: [
39
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
40
+ "div",
41
+ {
42
+ style: {
43
+ height: 24,
44
+ width: 32,
45
+ background: legendDefinition?.color
46
+ }
47
+ }
48
+ ) }),
49
+ /* @__PURE__ */ jsx("div", { children: legendDefinition?.name })
50
+ ]
35
51
  }
36
52
  ) }),
37
- /* @__PURE__ */ jsx("td", { children: legendDefinition?.name })
38
- ] }) })
39
- ] }) }),
40
- /* @__PURE__ */ jsx("td", { align: "center", children: legend?.startValue }),
41
- /* @__PURE__ */ jsx("td", { align: "center", children: legend?.endValue })
42
- ] }, `${legend.id}-view`);
53
+ /* @__PURE__ */ jsx("td", { align: "center", children: legend?.startValue }),
54
+ /* @__PURE__ */ jsx("td", { align: "center", children: legend?.endValue })
55
+ ]
56
+ },
57
+ `${legend.id}-view`
58
+ );
43
59
  }) })
44
60
  ] }) });
45
61
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardLegendsView/components/LegendView.tsx"],"names":[],"mappings":"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","file":"LegendView.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { find } from \"lodash\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport type {\n\tLegendDefinition,\n\tScorecardLegend,\n} from \"../../../schemas/config\";\n\nexport interface LegendsViewProps {\n\tlegends: ScorecardLegend[];\n}\n\nexport function LegendsView({ legends }: LegendsViewProps) {\n\tconst config = useScorecardConfig();\n\tconst legendDefinitions = config.legendDefinitions ?? [];\n\n\treturn (\n\t\t<div className=\"column gap-8\">\n\t\t\t<table>\n\t\t\t\t<col width=\"60%\" />\n\t\t\t\t<col width=\"20%\" />\n\t\t\t\t<col width=\"20%\" />\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th align=\"left\">{i18n.t(\"Legend\")}</th>\n\t\t\t\t\t\t<th>{i18n.t(\"Min\")}</th>\n\t\t\t\t\t\t<th>{i18n.t(\"Max\")}</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{legends?.map((legend) => {\n\t\t\t\t\t\tconst legendDefinition = find(legendDefinitions, {\n\t\t\t\t\t\t\tid: legend.legendDefinitionId,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<tr key={`${legend.id}-view`}>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<table>\n\t\t\t\t\t\t\t\t\t\t<col width=\"20%\" />\n\t\t\t\t\t\t\t\t\t\t<col width=\"80%\" />\n\t\t\t\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: 24,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: 32,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlegendDefinition?.color,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{legendDefinition?.name}\n\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td align=\"center\">{legend?.startValue}</td>\n\t\t\t\t\t\t\t\t<td align=\"center\">{legend?.endValue}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n}\n\nexport interface LegendViewProps {\n\tlegend: LegendDefinition;\n}\n\nexport function LegendView({ legend }: LegendViewProps) {\n\tconst { color, name, id } = legend;\n\treturn (\n\t\t<div\n\t\t\tkey={id}\n\t\t\tstyle={{ display: \"grid\", gap: 8, gridTemplateColumns: \"auto 1fr\" }}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: 60,\n\t\t\t\t\theight: 25,\n\t\t\t\t\tbackground: color,\n\t\t\t\t\tborder: \"1px solid rgb(232, 237, 242)\",\n\t\t\t\t\tpadding: 16,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<p style={{ paddingLeft: 8, marginRight: 8 }}>{name}</p>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardLegendsView/components/LegendView.tsx"],"names":[],"mappings":"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","file":"LegendView.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { find } from \"lodash\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport type {\n\tLegendDefinition,\n\tScorecardLegend,\n} from \"../../../schemas/config\";\n\nexport interface LegendsViewProps {\n\tlegends: ScorecardLegend[];\n}\n\nexport function LegendsView({ legends }: LegendsViewProps) {\n\tconst config = useScorecardConfig();\n\tconst legendDefinitions = config.legendDefinitions ?? [];\n\n\treturn (\n\t\t<div className=\"column gap-8\">\n\t\t\t<table>\n\t\t\t\t<col width=\"60%\" />\n\t\t\t\t<col width=\"20%\" />\n\t\t\t\t<col width=\"20%\" />\n\t\t\t\t<thead style={{ fontSize: 14 }}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th align=\"left\">{i18n.t(\"Legend\")}</th>\n\t\t\t\t\t\t<th>{i18n.t(\"Min\")}</th>\n\t\t\t\t\t\t<th>{i18n.t(\"Max\")}</th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t\t{legends?.map((legend) => {\n\t\t\t\t\t\tconst legendDefinition = find(legendDefinitions, {\n\t\t\t\t\t\t\tid: legend.legendDefinitionId,\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tkey={`${legend.id}-view`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<td>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tdisplay: \"grid\",\n\t\t\t\t\t\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t\t\t\t\t\t\tgridTemplateColumns: \"32px 1fr\",\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\theight: 24,\n\t\t\t\t\t\t\t\t\t\t\t\t\twidth: 32,\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlegendDefinition?.color,\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t<div>{legendDefinition?.name}</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t<td align=\"center\">{legend?.startValue}</td>\n\t\t\t\t\t\t\t\t<td align=\"center\">{legend?.endValue}</td>\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n}\n\nexport interface LegendViewProps {\n\tlegend: LegendDefinition;\n}\n\nexport function LegendView({ legend }: LegendViewProps) {\n\tconst { color, name, id } = legend;\n\treturn (\n\t\t<div\n\t\t\tkey={id}\n\t\t\tstyle={{ display: \"grid\", gap: 8, gridTemplateColumns: \"auto 1fr\" }}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\twidth: 60,\n\t\t\t\t\theight: 25,\n\t\t\t\t\tbackground: color,\n\t\t\t\t\tborder: \"1px solid rgb(232, 237, 242)\",\n\t\t\t\t\tpadding: 16,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<p style={{ paddingLeft: 8, marginRight: 8 }}>{name}</p>\n\t\t</div>\n\t);\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { colors } from '@dhis2/ui';
3
2
  import i18n from '@dhis2/d2-i18n';
4
3
  import { LegendsView } from './LegendView';
5
4
  import { useScorecardMeta } from '../../MetaProvider';
5
+ import { colors } from '@dhis2/ui';
6
6
 
7
7
  function OrgUnitLevelSpecificTargetView({
8
8
  specificTarget,
@@ -14,35 +14,69 @@ function OrgUnitLevelSpecificTargetView({
14
14
  "div",
15
15
  {
16
16
  style: {
17
- maxWidth: 350,
18
- border: `1px solid ${colors.grey600}`,
19
17
  borderRadius: 4,
20
- gap: 8
18
+ gap: 8,
19
+ maxWidth: "fit-content",
20
+ display: "flex",
21
+ flexDirection: "column",
22
+ padding: 16,
23
+ fontSize: 14
21
24
  },
22
- className: "column gap-16 p-16",
23
25
  children: [
24
- /* @__PURE__ */ jsxs("div", { children: [
26
+ /* @__PURE__ */ jsxs("div", { style: { fontSize: 16 }, children: [
25
27
  /* @__PURE__ */ jsxs("b", { children: [
26
28
  i18n.t("Data Source"),
27
29
  ": "
28
30
  ] }),
29
31
  label
30
32
  ] }),
31
- /* @__PURE__ */ jsx("div", { style: { gap: 16 }, className: "column gap-8", children: Object.keys(specificTarget).map((key) => {
32
- const orgUnitLevel = orgUnitLevels.find(
33
- (level) => level.id === key
34
- );
35
- const legends = specificTarget[key];
36
- return /* @__PURE__ */ jsxs("div", { children: [
37
- /* @__PURE__ */ jsx("div", { className: "column gap-16", children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("b", { children: [
38
- i18n.t("Organisation Unit Level"),
39
- ":",
40
- " ",
41
- orgUnitLevel?.displayName
42
- ] }) }) }),
43
- /* @__PURE__ */ jsx(LegendsView, { legends })
44
- ] });
45
- }) })
33
+ /* @__PURE__ */ jsx(
34
+ "div",
35
+ {
36
+ style: {
37
+ gap: 16,
38
+ display: "grid",
39
+ gridTemplateColumns: "1fr 1fr"
40
+ },
41
+ children: Object.keys(specificTarget).map((key) => {
42
+ const orgUnitLevel = orgUnitLevels.find(
43
+ (level) => level.id === key
44
+ );
45
+ const legends = specificTarget[key];
46
+ return /* @__PURE__ */ jsxs(
47
+ "div",
48
+ {
49
+ style: {
50
+ border: `1px solid ${colors.grey600}`,
51
+ padding: 16,
52
+ borderRadius: 4,
53
+ fontSize: 14
54
+ },
55
+ children: [
56
+ /* @__PURE__ */ jsx(
57
+ "div",
58
+ {
59
+ style: {
60
+ display: "flex",
61
+ flexDirection: "column",
62
+ gap: 4
63
+ },
64
+ children: /* @__PURE__ */ jsxs("div", { children: [
65
+ /* @__PURE__ */ jsxs("b", { children: [
66
+ i18n.t("Organisation Unit Level"),
67
+ ": "
68
+ ] }),
69
+ orgUnitLevel?.displayName
70
+ ] })
71
+ }
72
+ ),
73
+ /* @__PURE__ */ jsx(LegendsView, { legends })
74
+ ]
75
+ }
76
+ );
77
+ })
78
+ }
79
+ )
46
80
  ]
47
81
  }
48
82
  );