@hisptz/dhis2-scorecard 1.2.30 → 1.2.33

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 (110) hide show
  1. package/dist/components/LoadingIndicator.js +3 -5
  2. package/dist/components/LoadingIndicator.js.map +1 -1
  3. package/dist/components/ScorecardLegendsView/components/LegendView.js +86 -56
  4. package/dist/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
  5. package/dist/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js +7 -31
  6. package/dist/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
  7. package/dist/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js +16 -26
  8. package/dist/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
  9. package/dist/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js +4 -22
  10. package/dist/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
  11. package/dist/components/ScorecardPrint/components/ScorecardDownloadButton.js +6 -13
  12. package/dist/components/ScorecardPrint/components/ScorecardDownloadButton.js.map +1 -1
  13. package/dist/components/ScorecardTable/FurtherAnalysisVisualization.js +6 -6
  14. package/dist/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -1
  15. package/dist/components/ScorecardTable/components/AverageCell.js +2 -2
  16. package/dist/components/ScorecardTable/components/AverageCell.js.map +1 -1
  17. package/dist/components/ScorecardTable/components/AverageFooterCell.js +10 -32
  18. package/dist/components/ScorecardTable/components/AverageFooterCell.js.map +1 -1
  19. package/dist/components/ScorecardTable/components/DataContainer.js +4 -1
  20. package/dist/components/ScorecardTable/components/DataContainer.js.map +1 -1
  21. package/dist/components/ScorecardTable/components/DataFooterCell.js +35 -71
  22. package/dist/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
  23. package/dist/components/ScorecardTable/components/FurtherAnalysisMenu.js +45 -0
  24. package/dist/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -1
  25. package/dist/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -1
  26. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +37 -2
  27. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
  28. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.js +78 -0
  29. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.js.map +1 -0
  30. package/dist/esm/components/LoadingIndicator.js +2 -4
  31. package/dist/esm/components/LoadingIndicator.js.map +1 -1
  32. package/dist/esm/components/ScorecardLegendsView/components/LegendView.js +86 -52
  33. package/dist/esm/components/ScorecardLegendsView/components/LegendView.js.map +1 -1
  34. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js +7 -27
  35. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.js.map +1 -1
  36. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js +16 -22
  37. package/dist/esm/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.js.map +1 -1
  38. package/dist/esm/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js +4 -18
  39. package/dist/esm/components/ScorecardLegendsView/components/PeriodSpecificTargetView.js.map +1 -1
  40. package/dist/esm/components/ScorecardPrint/components/ScorecardDownloadButton.js +4 -11
  41. package/dist/esm/components/ScorecardPrint/components/ScorecardDownloadButton.js.map +1 -1
  42. package/dist/esm/components/ScorecardTable/FurtherAnalysisVisualization.js +6 -6
  43. package/dist/esm/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -1
  44. package/dist/esm/components/ScorecardTable/components/AverageCell.js +2 -2
  45. package/dist/esm/components/ScorecardTable/components/AverageCell.js.map +1 -1
  46. package/dist/esm/components/ScorecardTable/components/AverageFooterCell.js +11 -33
  47. package/dist/esm/components/ScorecardTable/components/AverageFooterCell.js.map +1 -1
  48. package/dist/esm/components/ScorecardTable/components/DataContainer.js +4 -1
  49. package/dist/esm/components/ScorecardTable/components/DataContainer.js.map +1 -1
  50. package/dist/esm/components/ScorecardTable/components/DataFooterCell.js +36 -72
  51. package/dist/esm/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
  52. package/dist/esm/components/ScorecardTable/components/FurtherAnalysisMenu.js +45 -0
  53. package/dist/esm/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -1
  54. package/dist/esm/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -1
  55. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +39 -4
  56. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
  57. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.js +72 -0
  58. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.js.map +1 -0
  59. package/dist/esm/hooks/completed.js +13 -0
  60. package/dist/esm/hooks/completed.js.map +1 -0
  61. package/dist/esm/hooks/table.js +35 -45
  62. package/dist/esm/hooks/table.js.map +1 -1
  63. package/dist/esm/hooks/value.js +51 -101
  64. package/dist/esm/hooks/value.js.map +1 -1
  65. package/dist/esm/schemas/config.js +4 -0
  66. package/dist/esm/schemas/config.js.map +1 -1
  67. package/dist/esm/utils/columns.js +15 -5
  68. package/dist/esm/utils/columns.js.map +1 -1
  69. package/dist/esm/utils/dataEngine.js +128 -83
  70. package/dist/esm/utils/dataEngine.js.map +1 -1
  71. package/dist/hooks/completed.js +15 -0
  72. package/dist/hooks/completed.js.map +1 -0
  73. package/dist/hooks/table.js +43 -53
  74. package/dist/hooks/table.js.map +1 -1
  75. package/dist/hooks/value.js +49 -98
  76. package/dist/hooks/value.js.map +1 -1
  77. package/dist/schemas/config.js +4 -0
  78. package/dist/schemas/config.js.map +1 -1
  79. package/dist/types/components/LoadingIndicator.d.ts.map +1 -1
  80. package/dist/types/components/ScorecardLegendsView/components/LegendView.d.ts +1 -1
  81. package/dist/types/components/ScorecardLegendsView/components/LegendView.d.ts.map +1 -1
  82. package/dist/types/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.d.ts.map +1 -1
  83. package/dist/types/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.d.ts.map +1 -1
  84. package/dist/types/components/ScorecardLegendsView/components/PeriodSpecificTargetView.d.ts.map +1 -1
  85. package/dist/types/components/ScorecardPrint/components/ScorecardDownloadButton.d.ts.map +1 -1
  86. package/dist/types/components/ScorecardTable/FurtherAnalysisVisualization.d.ts.map +1 -1
  87. package/dist/types/components/ScorecardTable/components/AverageFooterCell.d.ts.map +1 -1
  88. package/dist/types/components/ScorecardTable/components/DataContainer.d.ts.map +1 -1
  89. package/dist/types/components/ScorecardTable/components/DataFooterCell.d.ts.map +1 -1
  90. package/dist/types/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts.map +1 -1
  91. package/dist/types/components/ScorecardTable/components/FurtherAnalysisModal.d.ts +10 -0
  92. package/dist/types/components/ScorecardTable/components/FurtherAnalysisModal.d.ts.map +1 -1
  93. package/dist/types/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +1 -1
  94. package/dist/types/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.d.ts +13 -0
  95. package/dist/types/components/ScorecardTable/components/TableHeader/components/DataHeaderLegendView.d.ts.map +1 -0
  96. package/dist/types/hooks/completed.d.ts +2 -0
  97. package/dist/types/hooks/completed.d.ts.map +1 -0
  98. package/dist/types/hooks/table.d.ts.map +1 -1
  99. package/dist/types/hooks/value.d.ts +9 -3
  100. package/dist/types/hooks/value.d.ts.map +1 -1
  101. package/dist/types/schemas/config.d.ts +18 -0
  102. package/dist/types/schemas/config.d.ts.map +1 -1
  103. package/dist/types/utils/columns.d.ts.map +1 -1
  104. package/dist/types/utils/dataEngine.d.ts +16 -12
  105. package/dist/types/utils/dataEngine.d.ts.map +1 -1
  106. package/dist/utils/columns.js +15 -5
  107. package/dist/utils/columns.js.map +1 -1
  108. package/dist/utils/dataEngine.js +127 -82
  109. package/dist/utils/dataEngine.js.map +1 -1
  110. package/package.json +5 -5
@@ -6,6 +6,7 @@ var ui = require('@dhis2/ui');
6
6
  var TableStateProvider = require('./TableStateProvider');
7
7
  var react = require('react');
8
8
  var styles = require('./ScorecardTable/ScorecardTable.module.css');
9
+ var completed = require('../hooks/completed');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
12
 
@@ -16,19 +17,16 @@ const LoadingIndicator = react.memo(function LoadingIndicator2({
16
17
  }) {
17
18
  const { data: dataEngine } = DataProvider.useScorecardData();
18
19
  const [progress, setProgress] = react.useState(0);
19
- const [completed, setCompleted] = react.useState(dataEngine.isDone);
20
+ const completed$1 = completed.useScorecardLoadingCompleted();
20
21
  const table = TableStateProvider.useTableState();
21
22
  const colSpan = table.getVisibleFlatColumns().length;
22
23
  const width = tableRef.current?.parentElement?.getBoundingClientRect().width;
23
- react.useEffect(() => {
24
- return dataEngine.addOnCompleteListener(setCompleted);
25
- }, [dataEngine]);
26
24
  react.useEffect(() => {
27
25
  return dataEngine.addProgressListener((value) => {
28
26
  setProgress(value);
29
27
  });
30
28
  }, [dataEngine]);
31
- if (progress === 1 || isNaN(progress) || completed) {
29
+ if (progress === 1 || isNaN(progress) || completed$1) {
32
30
  return null;
33
31
  }
34
32
  return /* @__PURE__ */ jsxRuntime.jsx(ui.DataTableRow, { children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/LoadingIndicator.tsx"],"names":["memo","LoadingIndicator","useScorecardData","useState","useTableState","useEffect","DataTableRow","jsx","LinearLoader","styles"],"mappings":";;;;;;;;;;;;;AAMO,MAAM,gBAAA,GAAmBA,UAAA,CAAK,SAASC,iBAAAA,CAAiB;AAAA,EAC9D;AACD,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAIC,6BAAA,EAAiB;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,eAAiB,CAAC,CAAA;AAClD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,cAAA,CAAkB,WAAW,MAAM,CAAA;AACrE,EAAA,MAAM,QAAQC,gCAAA,EAAc;AAC5B,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,qBAAA,EAAsB,CAAE,MAAA;AAE9C,EAAA,MAAM,KAAA,GACL,QAAA,CAAS,OAAA,EAAS,aAAA,EAAe,uBAAsB,CAAE,KAAA;AAE1D,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,OAAO,UAAA,CAAW,sBAAsB,YAAY,CAAA;AAAA,EACrD,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAAA,eAAA,CAAU,MAAM;AACf,IAAA,OAAO,UAAA,CAAW,mBAAA,CAAoB,CAAC,KAAA,KAAU;AAChD,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IAClB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,IAAI,QAAA,KAAa,CAAA,IAAK,KAAA,CAAM,QAAS,KAAK,SAAA,EAAW;AACpD,IAAA,OAAO,IAAA;AAAA,EACR;AACA,EAAA,sCACEC,eAAA,EAAA,EACA,QAAA,kBAAAC,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,QAAA,EAAU,UAAU,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAAE;AAAA,MAC7C,OAAA;AAAA,MAEA,QAAA,kBAAAA,cAAA;AAAA,QAACC,eAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAWC,wBAAO,QAAQ,CAAA;AAAA,UAC1B,MAAA,EAAQ,GAAA;AAAA,UACR,OAAO,KAAA,GAAQ,CAAA,EAAG,KAAK,KAAA,CAAM,KAAK,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,UAC1C,MAAA,EAAA,CAAS,YAAY,CAAA,IAAK;AAAA;AAAA;AAC3B;AAAA,GACD,EACD,CAAA;AAEF,CAAC","file":"LoadingIndicator.js","sourcesContent":["import { useScorecardData } from \"./DataProvider\";\nimport { DataTableRow, LinearLoader } from \"@dhis2/ui\";\nimport { useTableState } from \"./TableStateProvider\";\nimport { memo, type RefObject, useEffect, useState } from \"react\";\nimport styles from \"./ScorecardTable/ScorecardTable.module.css\";\n\nexport const LoadingIndicator = memo(function LoadingIndicator({\n\ttableRef,\n}: {\n\ttableRef: RefObject<HTMLTableElement>;\n}) {\n\tconst { data: dataEngine } = useScorecardData();\n\tconst [progress, setProgress] = useState<number>(0);\n\tconst [completed, setCompleted] = useState<boolean>(dataEngine.isDone);\n\tconst table = useTableState();\n\tconst colSpan = table.getVisibleFlatColumns().length;\n\n\tconst width =\n\t\ttableRef.current?.parentElement?.getBoundingClientRect().width;\n\n\tuseEffect(() => {\n\t\treturn dataEngine.addOnCompleteListener(setCompleted);\n\t}, [dataEngine]);\n\n\tuseEffect(() => {\n\t\treturn dataEngine.addProgressListener((value) => {\n\t\t\tsetProgress(value);\n\t\t});\n\t}, [dataEngine]);\n\n\tif (progress === 1 || isNaN(progress!) || completed) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DataTableRow>\n\t\t\t<td\n\t\t\t\tstyle={{ position: \"static\", left: 0, top: 0 }}\n\t\t\t\tcolSpan={colSpan}\n\t\t\t>\n\t\t\t\t<LinearLoader\n\t\t\t\t\tclassName={styles[\"loader\"]}\n\t\t\t\t\tmargin={\"0\"}\n\t\t\t\t\twidth={width ? `${Math.trunc(width)}px` : \"100%\"}\n\t\t\t\t\tamount={(progress ?? 0) * 100}\n\t\t\t\t/>\n\t\t\t</td>\n\t\t</DataTableRow>\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../src/components/LoadingIndicator.tsx"],"names":["memo","LoadingIndicator","useScorecardData","useState","completed","useScorecardLoadingCompleted","useTableState","useEffect","DataTableRow","jsx","LinearLoader","styles"],"mappings":";;;;;;;;;;;;;;AAaO,MAAM,gBAAA,GAAmBA,UAAA,CAAK,SAASC,iBAAAA,CAAiB;AAAA,EAC9D;AACD,CAAA,EAEG;AACF,EAAA,MAAM,EAAE,IAAA,EAAM,UAAA,EAAW,GAAIC,6BAAA,EAAiB;AAC9C,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIC,eAAiB,CAAC,CAAA;AAClD,EAAA,MAAMC,cAAYC,sCAAA,EAA6B;AAC/C,EAAA,MAAM,QAAQC,gCAAA,EAAc;AAC5B,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,qBAAA,EAAsB,CAAE,MAAA;AAE9C,EAAA,MAAM,KAAA,GACL,QAAA,CAAS,OAAA,EAAS,aAAA,EAAe,uBAAsB,CAAE,KAAA;AAE1D,EAAAC,eAAA,CAAU,MAAM;AACf,IAAA,OAAO,UAAA,CAAW,mBAAA,CAAoB,CAAC,KAAA,KAAU;AAChD,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IAClB,CAAC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,IAAI,QAAA,KAAa,CAAA,IAAK,KAAA,CAAM,QAAS,KAAKH,WAAA,EAAW;AACpD,IAAA,OAAO,IAAA;AAAA,EACR;AACA,EAAA,sCACEI,eAAA,EAAA,EACA,QAAA,kBAAAC,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,QAAA,EAAU,UAAU,IAAA,EAAM,CAAA,EAAG,KAAK,CAAA,EAAE;AAAA,MAC7C,OAAA;AAAA,MAEA,QAAA,kBAAAA,cAAA;AAAA,QAACC,eAAA;AAAA,QAAA;AAAA,UACA,SAAA,EAAWC,wBAAO,QAAQ,CAAA;AAAA,UAC1B,MAAA,EAAQ,GAAA;AAAA,UACR,OAAO,KAAA,GAAQ,CAAA,EAAG,KAAK,KAAA,CAAM,KAAK,CAAC,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,UAC1C,MAAA,EAAA,CAAS,YAAY,CAAA,IAAK;AAAA;AAAA;AAC3B;AAAA,GACD,EACD,CAAA;AAEF,CAAC","file":"LoadingIndicator.js","sourcesContent":["import { useScorecardData } from \"./DataProvider\";\nimport { DataTableRow, LinearLoader } from \"@dhis2/ui\";\nimport { useTableState } from \"./TableStateProvider\";\nimport {\n\tmemo,\n\ttype RefObject,\n\tuseEffect,\n\tuseState,\n\tuseSyncExternalStore,\n} from \"react\";\nimport styles from \"./ScorecardTable/ScorecardTable.module.css\";\nimport { useScorecardLoadingCompleted } from \"../hooks/completed\";\n\nexport const LoadingIndicator = memo(function LoadingIndicator({\n\ttableRef,\n}: {\n\ttableRef: RefObject<HTMLTableElement>;\n}) {\n\tconst { data: dataEngine } = useScorecardData();\n\tconst [progress, setProgress] = useState<number>(0);\n\tconst completed = useScorecardLoadingCompleted();\n\tconst table = useTableState();\n\tconst colSpan = table.getVisibleFlatColumns().length;\n\n\tconst width =\n\t\ttableRef.current?.parentElement?.getBoundingClientRect().width;\n\n\tuseEffect(() => {\n\t\treturn dataEngine.addProgressListener((value) => {\n\t\t\tsetProgress(value);\n\t\t});\n\t}, [dataEngine]);\n\n\tif (progress === 1 || isNaN(progress!) || completed) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<DataTableRow>\n\t\t\t<td\n\t\t\t\tstyle={{ position: \"static\", left: 0, top: 0 }}\n\t\t\t\tcolSpan={colSpan}\n\t\t\t>\n\t\t\t\t<LinearLoader\n\t\t\t\t\tclassName={styles[\"loader\"]}\n\t\t\t\t\tmargin={\"0\"}\n\t\t\t\t\twidth={width ? `${Math.trunc(width)}px` : \"100%\"}\n\t\t\t\t\tamount={(progress ?? 0) * 100}\n\t\t\t\t/>\n\t\t\t</td>\n\t\t</DataTableRow>\n\t);\n});\n"]}
@@ -1,69 +1,99 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var i18n = require('@dhis2/d2-i18n');
5
- var lodash = require('lodash');
6
4
  var ConfigProvider = require('../../ConfigProvider');
5
+ var ui = require('@dhis2/ui');
6
+ var lodash = require('lodash');
7
7
 
8
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
-
10
- var i18n__default = /*#__PURE__*/_interopDefault(i18n);
11
-
8
+ const formatNumber = Intl.NumberFormat("en-GB", {
9
+ notation: "standard"
10
+ }).format;
11
+ function LegendItem({
12
+ legend,
13
+ legendDefinitions
14
+ }) {
15
+ const legendDefinition = legendDefinitions.find(
16
+ ({ id }) => id === legend.legendDefinitionId
17
+ );
18
+ if (!legendDefinition) {
19
+ return null;
20
+ }
21
+ return /* @__PURE__ */ jsxRuntime.jsxs(
22
+ "div",
23
+ {
24
+ style: {
25
+ display: "flex",
26
+ gap: 8,
27
+ alignItems: "stretch",
28
+ width: "100%"
29
+ },
30
+ children: [
31
+ /* @__PURE__ */ jsxRuntime.jsx(
32
+ "div",
33
+ {
34
+ style: {
35
+ alignSelf: "stretch",
36
+ backgroundColor: legendDefinition.color,
37
+ width: 8,
38
+ minHeight: "100%"
39
+ }
40
+ }
41
+ ),
42
+ /* @__PURE__ */ jsxRuntime.jsxs(
43
+ "div",
44
+ {
45
+ style: {
46
+ display: "flex",
47
+ flexDirection: "column",
48
+ gap: 2
49
+ },
50
+ children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: legendDefinition.name }),
52
+ /* @__PURE__ */ jsxRuntime.jsx(
53
+ "div",
54
+ {
55
+ style: {
56
+ display: "flex",
57
+ gap: 4,
58
+ fontSize: 11,
59
+ color: ui.colors.grey600
60
+ },
61
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "legend-item-label", children: `${formatNumber(+legend.startValue)} - ${formatNumber(+legend.endValue)}` })
62
+ }
63
+ )
64
+ ]
65
+ }
66
+ )
67
+ ]
68
+ }
69
+ );
70
+ }
12
71
  function LegendsView({ legends }) {
13
72
  const config = ConfigProvider.useScorecardConfig();
14
73
  const legendDefinitions = config.legendDefinitions ?? [];
15
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "column gap-8", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { children: [
16
- /* @__PURE__ */ jsxRuntime.jsx("col", { width: "60%" }),
17
- /* @__PURE__ */ jsxRuntime.jsx("col", { width: "20%" }),
18
- /* @__PURE__ */ jsxRuntime.jsx("col", { width: "20%" }),
19
- /* @__PURE__ */ jsxRuntime.jsx("thead", { style: { fontSize: 14 }, children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
20
- /* @__PURE__ */ jsxRuntime.jsx("th", { align: "left", children: i18n__default.default.t("Legend") }),
21
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: i18n__default.default.t("Min") }),
22
- /* @__PURE__ */ jsxRuntime.jsx("th", { children: i18n__default.default.t("Max") })
23
- ] }) }),
24
- /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: legends?.map((legend) => {
25
- const legendDefinition = lodash.find(legendDefinitions, {
26
- id: legend.legendDefinitionId
27
- });
28
- return /* @__PURE__ */ jsxRuntime.jsxs(
29
- "tr",
74
+ if (lodash.isEmpty(legends)) {
75
+ return null;
76
+ }
77
+ console.log(legends);
78
+ return /* @__PURE__ */ jsxRuntime.jsx(
79
+ "div",
80
+ {
81
+ style: {
82
+ display: "flex",
83
+ flexDirection: "column",
84
+ gap: 8,
85
+ fontSize: 14
86
+ },
87
+ children: legends?.map((legend) => /* @__PURE__ */ jsxRuntime.jsx(
88
+ LegendItem,
30
89
  {
31
- style: {
32
- fontSize: 14
33
- },
34
- children: [
35
- /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsxs(
36
- "div",
37
- {
38
- style: {
39
- display: "grid",
40
- alignItems: "center",
41
- gap: 8,
42
- gridTemplateColumns: "32px 1fr"
43
- },
44
- children: [
45
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
46
- "div",
47
- {
48
- style: {
49
- height: 24,
50
- width: 32,
51
- background: legendDefinition?.color
52
- }
53
- }
54
- ) }),
55
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: legendDefinition?.name })
56
- ]
57
- }
58
- ) }),
59
- /* @__PURE__ */ jsxRuntime.jsx("td", { align: "center", children: legend?.startValue }),
60
- /* @__PURE__ */ jsxRuntime.jsx("td", { align: "center", children: legend?.endValue })
61
- ]
90
+ legend,
91
+ legendDefinitions
62
92
  },
63
- `${legend.id}-view`
64
- );
65
- }) })
66
- ] }) });
93
+ legend.id
94
+ ))
95
+ }
96
+ );
67
97
  }
68
98
  function LegendView({ legend }) {
69
99
  const { color, name, id } = legend;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/LegendView.tsx"],"names":["useScorecardConfig","jsx","i18n","find","jsxs"],"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
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/LegendView.tsx"],"names":["jsxs","jsx","colors","useScorecardConfig","isEmpty"],"mappings":";;;;;;;AAYA,MAAM,YAAA,GAAe,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,EAC/C,QAAA,EAAU;AACX,CAAC,CAAA,CAAE,MAAA;AAEH,SAAS,UAAA,CAAW;AAAA,EACnB,MAAA;AAAA,EACA;AACD,CAAA,EAGG;AACF,EAAA,MAAM,mBAAmB,iBAAA,CAAkB,IAAA;AAAA,IAC1C,CAAC,EAAE,EAAA,EAAG,KAAM,OAAO,MAAA,CAAO;AAAA,GAC3B;AACA,EAAA,IAAI,CAAC,gBAAA,EAAkB;AACtB,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,uBACCA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,GAAA,EAAK,CAAA;AAAA,QACL,UAAA,EAAY,SAAA;AAAA,QACZ,KAAA,EAAO;AAAA,OACR;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,SAAA,EAAW,SAAA;AAAA,cACX,iBAAiB,gBAAA,CAAiB,KAAA;AAAA,cAClC,KAAA,EAAO,CAAA;AAAA,cACP,SAAA,EAAW;AAAA;AACZ;AAAA,SACA;AAAA,wBACDD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,GAAA,EAAK;AAAA,aACN;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAC,cAAA,CAAC,MAAA,EAAA,EAAM,2BAAiB,IAAA,EAAK,CAAA;AAAA,8BAC7BA,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,KAAA,EAAO;AAAA,oBACN,OAAA,EAAS,MAAA;AAAA,oBACT,GAAA,EAAK,CAAA;AAAA,oBACL,QAAA,EAAU,EAAA;AAAA,oBACV,OAAOC,SAAA,CAAO;AAAA,mBACf;AAAA,kBAEA,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,CAAA,EAAG,aAAa,CAAC,MAAA,CAAO,UAAU,CAAC,MAAM,YAAA,CAAa,CAAC,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA,EAAG;AAAA;AAAA;AAC/G;AAAA;AAAA;AACD;AAAA;AAAA,GACD;AAEF;AAEO,SAAS,WAAA,CAAY,EAAE,OAAA,EAAQ,EAAqB;AAC1D,EAAA,MAAM,SAASC,iCAAA,EAAmB;AAClC,EAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAEvD,EAAA,IAAIC,cAAA,CAAQ,OAAO,CAAA,EAAG;AACrB,IAAA,OAAO,IAAA;AAAA,EACR;AAEA,EAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAEnB,EAAA,uBACCH,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU;AAAA,OACX;AAAA,MAEC,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,MAAA,qBACdA,cAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UAEA,MAAA;AAAA,UACA;AAAA,SAAA;AAAA,QAFK,MAAA,CAAO;AAAA,OAIb;AAAA;AAAA,GACF;AAEF;AAMO,SAAS,UAAA,CAAW,EAAE,MAAA,EAAO,EAAoB;AACvD,EAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,EAAA,EAAG,GAAI,MAAA;AAC5B,EAAA,uBACCD,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEA,OAAO,EAAE,OAAA,EAAS,QAAQ,GAAA,EAAK,CAAA,EAAG,qBAAqB,UAAA,EAAW;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,KAAA,EAAO,EAAA;AAAA,cACP,MAAA,EAAQ,EAAA;AAAA,cACR,UAAA,EAAY,KAAA;AAAA,cACZ,MAAA,EAAQ,8BAAA;AAAA,cACR,OAAA,EAAS;AAAA;AACV;AAAA,SACD;AAAA,wBACAA,cAAA,CAAC,OAAE,KAAA,EAAO,EAAE,aAAa,CAAA,EAAG,WAAA,EAAa,CAAA,EAAE,EAAI,QAAA,EAAA,IAAA,EAAK;AAAA;AAAA,KAAA;AAAA,IAZ/C;AAAA,GAaN;AAEF","file":"LegendView.js","sourcesContent":["import { useScorecardConfig } from \"../../ConfigProvider\";\nimport type {\n\tLegendDefinition,\n\tScorecardLegend,\n} from \"../../../schemas/config\";\nimport { colors } from \"@dhis2/ui\";\nimport { isEmpty } from \"lodash\";\n\nexport interface LegendsViewProps {\n\tlegends: ScorecardLegend[];\n}\n\nconst formatNumber = Intl.NumberFormat(\"en-GB\", {\n\tnotation: \"standard\",\n}).format;\n\nfunction LegendItem({\n\tlegend,\n\tlegendDefinitions,\n}: {\n\tlegend: ScorecardLegend;\n\tlegendDefinitions: LegendDefinition[];\n}) {\n\tconst legendDefinition = legendDefinitions.find(\n\t\t({ id }) => id === legend.legendDefinitionId,\n\t);\n\tif (!legendDefinition) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tgap: 8,\n\t\t\t\talignItems: \"stretch\",\n\t\t\t\twidth: \"100%\",\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\talignSelf: \"stretch\",\n\t\t\t\t\tbackgroundColor: legendDefinition.color,\n\t\t\t\t\twidth: 8,\n\t\t\t\t\tminHeight: \"100%\",\n\t\t\t\t}}\n\t\t\t></div>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 2,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<span>{legendDefinition.name}</span>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\tfontSize: 11,\n\t\t\t\t\t\tcolor: colors.grey600,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"legend-item-label\">{`${formatNumber(+legend.startValue)} - ${formatNumber(+legend.endValue)}`}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function LegendsView({ legends }: LegendsViewProps) {\n\tconst config = useScorecardConfig();\n\tconst legendDefinitions = config.legendDefinitions ?? [];\n\n\tif (isEmpty(legends)) {\n\t\treturn null;\n\t}\n\n\tconsole.log(legends);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tgap: 8,\n\t\t\t\tfontSize: 14,\n\t\t\t}}\n\t\t>\n\t\t\t{legends?.map((legend) => (\n\t\t\t\t<LegendItem\n\t\t\t\t\tkey={legend.id}\n\t\t\t\t\tlegend={legend}\n\t\t\t\t\tlegendDefinitions={legendDefinitions}\n\t\t\t\t/>\n\t\t\t))}\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,15 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var i18n = require('@dhis2/d2-i18n');
5
4
  var LegendView = require('./LegendView');
6
5
  var MetaProvider = require('../../MetaProvider');
7
6
  var ui = require('@dhis2/ui');
8
7
 
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- var i18n__default = /*#__PURE__*/_interopDefault(i18n);
12
-
13
8
  function OrgUnitLevelSpecificTargetView({
14
9
  specificTarget,
15
10
  label
@@ -29,13 +24,7 @@ function OrgUnitLevelSpecificTargetView({
29
24
  fontSize: 14
30
25
  },
31
26
  children: [
32
- /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { fontSize: 16 }, children: [
33
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
34
- i18n__default.default.t("Data Source"),
35
- ": "
36
- ] }),
37
- label
38
- ] }),
27
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: { fontSize: 16 }, children: /* @__PURE__ */ jsxRuntime.jsx("b", { children: label }) }),
39
28
  /* @__PURE__ */ jsxRuntime.jsx(
40
29
  "div",
41
30
  {
@@ -53,29 +42,16 @@ function OrgUnitLevelSpecificTargetView({
53
42
  "div",
54
43
  {
55
44
  style: {
56
- border: `1px solid ${ui.colors.grey600}`,
45
+ border: `1px solid ${ui.colors.grey400}`,
57
46
  padding: 16,
58
47
  borderRadius: 4,
59
- fontSize: 14
48
+ fontSize: 14,
49
+ display: "flex",
50
+ flexDirection: "column",
51
+ gap: 8
60
52
  },
61
53
  children: [
62
- /* @__PURE__ */ jsxRuntime.jsx(
63
- "div",
64
- {
65
- style: {
66
- display: "flex",
67
- flexDirection: "column",
68
- gap: 4
69
- },
70
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
71
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
72
- i18n__default.default.t("Organisation Unit Level"),
73
- ": "
74
- ] }),
75
- orgUnitLevel?.displayName
76
- ] })
77
- }
78
- ),
54
+ /* @__PURE__ */ jsxRuntime.jsx("b", { children: orgUnitLevel?.displayName }),
79
55
  /* @__PURE__ */ jsxRuntime.jsx(LegendView.LegendsView, { legends })
80
56
  ]
81
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.tsx"],"names":["useScorecardMeta","jsxs","i18n","jsx","colors","LegendsView"],"mappings":";;;;;;;;;;;;AAWO,SAAS,8BAAA,CAA+B;AAAA,EAC9C,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,OAAOA,6BAAA,EAAiB;AAC9B,EAAA,MAAM,aAAA,GAAgB,IAAA,EAAM,aAAA,IAAiB,EAAC;AAE9C,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,YAAA,EAAc,CAAA;AAAA,QACd,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACX;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,QAAA,EAAU,IAAG,EAC1B,QAAA,EAAA;AAAA,0BAAAA,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,YAAAC,qBAAA,CAAK,EAAE,aAAa,CAAA;AAAA,YAAE;AAAA,WAAA,EAAE,CAAA;AAAA,UAC3B;AAAA,SAAA,EACF,CAAA;AAAA,wBACAC,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,EAAA;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,mBAAA,EAAqB;AAAA,aACtB;AAAA,YAEC,iBAAO,IAAA,CAAK,cAAc,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ;AACzC,cAAA,MAAM,eAAe,aAAA,CAAc,IAAA;AAAA,gBAClC,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO;AAAA,eACzB;AACA,cAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAClC,cAAA,uBACCF,eAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,KAAA,EAAO;AAAA,oBACN,MAAA,EAAQ,CAAA,UAAA,EAAaG,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,oBACnC,OAAA,EAAS,EAAA;AAAA,oBACT,YAAA,EAAc,CAAA;AAAA,oBACd,QAAA,EAAU;AAAA,mBACX;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAD,cAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACA,KAAA,EAAO;AAAA,0BACN,OAAA,EAAS,MAAA;AAAA,0BACT,aAAA,EAAe,QAAA;AAAA,0BACf,GAAA,EAAK;AAAA,yBACN;AAAA,wBAEA,0CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,0CAAAF,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,4BAAAC,qBAAA,CAAK,EAAE,yBAAyB,CAAA;AAAA,4BAAE;AAAA,2BAAA,EAAE,CAAA;AAAA,0BACvC,YAAA,EAAc;AAAA,yBAAA,EAChB;AAAA;AAAA,qBACD;AAAA,oCACAC,cAAA,CAACE,0BAAY,OAAA,EAAkB;AAAA;AAAA;AAAA,eAChC;AAAA,YAEF,CAAC;AAAA;AAAA;AACF;AAAA;AAAA,GACD;AAEF","file":"OrgUnitLevelSpecificTargetView.js","sourcesContent":["import i18n from \"@dhis2/d2-i18n\";\nimport { LegendsView } from \"./LegendView\";\nimport type { OrgUnitLevelLegend } from \"../../../schemas/config\";\nimport { useScorecardMeta } from \"../../MetaProvider\";\nimport { colors } from \"@dhis2/ui\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: OrgUnitLevelLegend;\n\tlabel: string;\n}\n\nexport function OrgUnitLevelSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst meta = useScorecardMeta();\n\tconst orgUnitLevels = meta?.orgUnitLevels ?? [];\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tborderRadius: 4,\n\t\t\t\tgap: 8,\n\t\t\t\tmaxWidth: \"fit-content\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tpadding: 16,\n\t\t\t\tfontSize: 14,\n\t\t\t}}\n\t\t>\n\t\t\t<div style={{ fontSize: 16 }}>\n\t\t\t\t<b>{i18n.t(\"Data Source\")}: </b>\n\t\t\t\t{label}\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tgap: 16,\n\t\t\t\t\tdisplay: \"grid\",\n\t\t\t\t\tgridTemplateColumns: \"1fr 1fr\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{Object.keys(specificTarget).map((key) => {\n\t\t\t\t\tconst orgUnitLevel = orgUnitLevels.find(\n\t\t\t\t\t\t(level) => level.id === key,\n\t\t\t\t\t);\n\t\t\t\t\tconst legends = specificTarget[key];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tborder: `1px solid ${colors.grey600}`,\n\t\t\t\t\t\t\t\tpadding: 16,\n\t\t\t\t\t\t\t\tborderRadius: 4,\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<b>{i18n.t(\"Organisation Unit Level\")}: </b>\n\t\t\t\t\t\t\t\t\t{orgUnitLevel?.displayName}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<LegendsView legends={legends} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/OrgUnitLevelSpecificTargetView.tsx"],"names":["useScorecardMeta","jsxs","jsx","colors","LegendsView"],"mappings":";;;;;;;AAUO,SAAS,8BAAA,CAA+B;AAAA,EAC9C,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,OAAOA,6BAAA,EAAiB;AAC9B,EAAA,MAAM,aAAA,GAAgB,IAAA,EAAM,aAAA,IAAiB,EAAC;AAE9C,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,YAAA,EAAc,CAAA;AAAA,QACd,GAAA,EAAK,CAAA;AAAA,QACL,QAAA,EAAU,aAAA;AAAA,QACV,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACX;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,QAAA,EAAU,IAAG,EAC1B,QAAA,kBAAAA,cAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,KAAA,EAAM,CAAA,EACX,CAAA;AAAA,wBACAA,cAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,EAAA;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,mBAAA,EAAqB;AAAA,aACtB;AAAA,YAEC,iBAAO,IAAA,CAAK,cAAc,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,KAAQ;AACzC,cAAA,MAAM,eAAe,aAAA,CAAc,IAAA;AAAA,gBAClC,CAAC,KAAA,KAAU,KAAA,CAAM,EAAA,KAAO;AAAA,eACzB;AACA,cAAA,MAAM,OAAA,GAAU,eAAe,GAAG,CAAA;AAClC,cAAA,uBACCD,eAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACA,KAAA,EAAO;AAAA,oBACN,MAAA,EAAQ,CAAA,UAAA,EAAaE,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,oBACnC,OAAA,EAAS,EAAA;AAAA,oBACT,YAAA,EAAc,CAAA;AAAA,oBACd,QAAA,EAAU,EAAA;AAAA,oBACV,OAAA,EAAS,MAAA;AAAA,oBACT,aAAA,EAAe,QAAA;AAAA,oBACf,GAAA,EAAK;AAAA,mBACN;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAAD,cAAA,CAAC,GAAA,EAAA,EAAG,wBAAc,WAAA,EAAY,CAAA;AAAA,oCAC9BA,cAAA,CAACE,0BAAY,OAAA,EAAkB;AAAA;AAAA;AAAA,eAChC;AAAA,YAEF,CAAC;AAAA;AAAA;AACF;AAAA;AAAA,GACD;AAEF","file":"OrgUnitLevelSpecificTargetView.js","sourcesContent":["import { LegendsView } from \"./LegendView\";\nimport type { OrgUnitLevelLegend } from \"../../../schemas/config\";\nimport { useScorecardMeta } from \"../../MetaProvider\";\nimport { colors } from \"@dhis2/ui\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: OrgUnitLevelLegend;\n\tlabel: string;\n}\n\nexport function OrgUnitLevelSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst meta = useScorecardMeta();\n\tconst orgUnitLevels = meta?.orgUnitLevels ?? [];\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tborderRadius: 4,\n\t\t\t\tgap: 8,\n\t\t\t\tmaxWidth: \"fit-content\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tpadding: 16,\n\t\t\t\tfontSize: 14,\n\t\t\t}}\n\t\t>\n\t\t\t<div style={{ fontSize: 16 }}>\n\t\t\t\t<b>{label}</b>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tgap: 16,\n\t\t\t\t\tdisplay: \"grid\",\n\t\t\t\t\tgridTemplateColumns: \"1fr 1fr\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{Object.keys(specificTarget).map((key) => {\n\t\t\t\t\tconst orgUnitLevel = orgUnitLevels.find(\n\t\t\t\t\t\t(level) => level.id === key,\n\t\t\t\t\t);\n\t\t\t\t\tconst legends = specificTarget[key];\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tborder: `1px solid ${colors.grey400}`,\n\t\t\t\t\t\t\t\tpadding: 16,\n\t\t\t\t\t\t\t\tborderRadius: 4,\n\t\t\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t\t\t\tgap: 8,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<b>{orgUnitLevel?.displayName}</b>\n\t\t\t\t\t\t\t<LegendsView legends={legends} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -2,14 +2,9 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var ui = require('@dhis2/ui');
5
- var i18n = require('@dhis2/d2-i18n');
6
5
  var LegendView = require('./LegendView');
7
6
  var orgUnit = require('../../../hooks/orgUnit');
8
7
 
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- var i18n__default = /*#__PURE__*/_interopDefault(i18n);
12
-
13
8
  function OrgUnitSpecificTargetView({
14
9
  specificTarget,
15
10
  label
@@ -31,33 +26,28 @@ function OrgUnitSpecificTargetView({
31
26
  {
32
27
  style: {
33
28
  maxWidth: "fit-content",
34
- border: `1px solid ${ui.colors.grey600}`,
29
+ border: `1px solid ${ui.colors.grey400}`,
35
30
  borderRadius: 4,
36
31
  display: "flex",
37
32
  flexDirection: "column",
38
33
  gap: 8,
39
- padding: 16,
40
- fontSize: 14
34
+ padding: 16
41
35
  },
42
- className: "column gap-16 p-16",
43
36
  children: [
44
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "column gap-16", children: [
45
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
46
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
47
- i18n__default.default.t("Organisation Unit(s)"),
48
- ": "
49
- ] }),
50
- " ",
51
- orgUnits?.map((ou) => ou.displayName)?.join(", ")
52
- ] }),
53
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
54
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
55
- i18n__default.default.t("Data Source"),
56
- ": "
57
- ] }),
58
- label
59
- ] })
60
- ] }),
37
+ /* @__PURE__ */ jsxRuntime.jsxs(
38
+ "div",
39
+ {
40
+ style: {
41
+ display: "flex",
42
+ flexDirection: "column",
43
+ gap: 8
44
+ },
45
+ children: [
46
+ /* @__PURE__ */ jsxRuntime.jsx("b", { children: label }),
47
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: ui.colors.grey600, fontSize: 12 }, children: orgUnits?.map((ou) => ou.displayName)?.join(", ") })
48
+ ]
49
+ }
50
+ ),
61
51
  /* @__PURE__ */ jsxRuntime.jsx(LegendView.LegendsView, { legends: specificTarget.legends })
62
52
  ]
63
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.tsx"],"names":["useOrgUnits","jsx","CircularLoader","jsxs","colors","i18n","LegendsView"],"mappings":";;;;;;;;;;;;AAWO,SAAS,yBAAA,CAA0B;AAAA,EACzC,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,QAAQ,cAAA,CAAe,KAAA;AAC7B,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAIA,oBAAY,KAAK,CAAA;AAE/C,EAAA,IAAI,OAAA,EAAS;AACZ,IAAA,uBACCC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAA,EAAO,EAAE,QAAA,EAAU,GAAA,EAAK,WAAW,GAAA,EAAI;AAAA,QACvC,SAAA,EAAU,kDAAA;AAAA,QAEV,QAAA,kBAAAA,cAAA,CAACC,iBAAA,EAAA,EAAe,UAAA,EAAU,IAAA,EAAC;AAAA;AAAA,KAC5B;AAAA,EAEF;AAEA,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,QAAA,EAAU,aAAA;AAAA,QACV,MAAA,EAAQ,CAAA,UAAA,EAAaC,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QACnC,YAAA,EAAc,CAAA;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,CAAA;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EAAU;AAAA,OACX;AAAA,MACA,SAAA,EAAU,oBAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAAD,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACd,QAAA,EAAA;AAAA,0BAAAA,eAAA,CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,4BAAAA,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,cAAAE,qBAAA,CAAK,EAAE,sBAAsB,CAAA;AAAA,cAAE;AAAA,aAAA,EAAE,CAAA;AAAA,YAAK,GAAA;AAAA,YACzC,QAAA,EAAU,IAAI,CAAC,EAAA,KAAO,GAAG,WAAW,CAAA,EAAG,KAAK,IAAI;AAAA,WAAA,EAClD,CAAA;AAAA,0CACC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,4BAAAF,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,cAAAE,qBAAA,CAAK,EAAE,aAAa,CAAA;AAAA,cAAE;AAAA,aAAA,EAAE,CAAA;AAAA,YAC3B;AAAA,WAAA,EACF;AAAA,SAAA,EACD,CAAA;AAAA,wBACAJ,cAAA,CAACK,sBAAA,EAAA,EAAY,OAAA,EAAS,cAAA,CAAe,OAAA,EAAS;AAAA;AAAA;AAAA,GAC/C;AAEF","file":"OrgUnitSpecificTargetView.js","sourcesContent":["import type { SpecificTarget } from \"../../../schemas/config\";\nimport { CircularLoader, colors } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { LegendsView } from \"./LegendView\";\nimport { useOrgUnits } from \"../../../hooks/orgUnit\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: SpecificTarget;\n\tlabel: string;\n}\n\nexport function OrgUnitSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst items = specificTarget.items;\n\tconst { loading, orgUnits } = useOrgUnits(items);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{ minWidth: 200, minHeight: 200 }}\n\t\t\t\tclassName=\"column align-items-center justify-content-center\"\n\t\t\t>\n\t\t\t\t<CircularLoader extrasmall />\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\tmaxWidth: \"fit-content\",\n\t\t\t\tborder: `1px solid ${colors.grey600}`,\n\t\t\t\tborderRadius: 4,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tgap: 8,\n\t\t\t\tpadding: 16,\n\t\t\t\tfontSize: 14,\n\t\t\t}}\n\t\t\tclassName=\"column gap-16 p-16\"\n\t\t>\n\t\t\t<div className=\"column gap-16\">\n\t\t\t\t<div>\n\t\t\t\t\t<b>{i18n.t(\"Organisation Unit(s)\")}: </b>{\" \"}\n\t\t\t\t\t{orgUnits?.map((ou) => ou.displayName)?.join(\", \")}\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<b>{i18n.t(\"Data Source\")}: </b>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<LegendsView legends={specificTarget.legends} />\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/OrgUnitSpecificTargetView.tsx"],"names":["useOrgUnits","jsx","CircularLoader","jsxs","colors","LegendsView"],"mappings":";;;;;;;AAUO,SAAS,yBAAA,CAA0B;AAAA,EACzC,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,QAAQ,cAAA,CAAe,KAAA;AAC7B,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAIA,oBAAY,KAAK,CAAA;AAE/C,EAAA,IAAI,OAAA,EAAS;AACZ,IAAA,uBACCC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAA,EAAO,EAAE,QAAA,EAAU,GAAA,EAAK,WAAW,GAAA,EAAI;AAAA,QACvC,SAAA,EAAU,kDAAA;AAAA,QAEV,QAAA,kBAAAA,cAAA,CAACC,iBAAA,EAAA,EAAe,UAAA,EAAU,IAAA,EAAC;AAAA;AAAA,KAC5B;AAAA,EAEF;AAEA,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,QAAA,EAAU,aAAA;AAAA,QACV,MAAA,EAAQ,CAAA,UAAA,EAAaC,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QACnC,YAAA,EAAc,CAAA;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,CAAA;AAAA,QACL,OAAA,EAAS;AAAA,OACV;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe,QAAA;AAAA,cACf,GAAA,EAAK;AAAA,aACN;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,cAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,6CACT,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAOG,SAAA,CAAO,SAAS,QAAA,EAAU,EAAA,IAC9C,QAAA,EAAA,QAAA,EAAU,GAAA,CAAI,CAAC,EAAA,KAAO,EAAA,CAAG,WAAW,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAClD;AAAA;AAAA;AAAA,SACD;AAAA,wBACAH,cAAA,CAACI,sBAAA,EAAA,EAAY,OAAA,EAAS,cAAA,CAAe,OAAA,EAAS;AAAA;AAAA;AAAA,GAC/C;AAEF","file":"OrgUnitSpecificTargetView.js","sourcesContent":["import type { SpecificTarget } from \"../../../schemas/config\";\nimport { CircularLoader, colors } from \"@dhis2/ui\";\nimport { LegendsView } from \"./LegendView\";\nimport { useOrgUnits } from \"../../../hooks/orgUnit\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: SpecificTarget;\n\tlabel: string;\n}\n\nexport function OrgUnitSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst items = specificTarget.items;\n\tconst { loading, orgUnits } = useOrgUnits(items);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{ minWidth: 200, minHeight: 200 }}\n\t\t\t\tclassName=\"column align-items-center justify-content-center\"\n\t\t\t>\n\t\t\t\t<CircularLoader extrasmall />\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\tmaxWidth: \"fit-content\",\n\t\t\t\tborder: `1px solid ${colors.grey400}`,\n\t\t\t\tborderRadius: 4,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tgap: 8,\n\t\t\t\tpadding: 16,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<b>{label}</b>\n\t\t\t\t<span style={{ color: colors.grey600, fontSize: 12 }}>\n\t\t\t\t\t{orgUnits?.map((ou) => ou.displayName)?.join(\", \")}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<LegendsView legends={specificTarget.legends} />\n\t\t</div>\n\t);\n}\n"]}
@@ -2,15 +2,10 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var ui = require('@dhis2/ui');
5
- var i18n = require('@dhis2/d2-i18n');
6
5
  var LegendView = require('./LegendView');
7
6
  var multiCalendarDates = require('@dhis2/multi-calendar-dates');
8
7
  var metadata = require('../../../hooks/metadata');
9
8
 
10
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
-
12
- var i18n__default = /*#__PURE__*/_interopDefault(i18n);
13
-
14
9
  function PeriodSpecificTargetView({
15
10
  specificTarget,
16
11
  label
@@ -28,7 +23,7 @@ function PeriodSpecificTargetView({
28
23
  {
29
24
  style: {
30
25
  maxWidth: 350,
31
- border: `1px solid ${ui.colors.grey600}`,
26
+ border: `1px solid ${ui.colors.grey400}`,
32
27
  borderRadius: 4,
33
28
  display: "flex",
34
29
  flexDirection: "column",
@@ -40,26 +35,13 @@ function PeriodSpecificTargetView({
40
35
  "div",
41
36
  {
42
37
  style: {
43
- gap: 8,
38
+ gap: 4,
44
39
  display: "flex",
45
40
  flexDirection: "column"
46
41
  },
47
42
  children: [
48
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
49
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
50
- i18n__default.default.t("Period(s)"),
51
- ": "
52
- ] }),
53
- " ",
54
- periods?.map((ou) => ou.displayName)?.join(", ")
55
- ] }),
56
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
57
- /* @__PURE__ */ jsxRuntime.jsxs("b", { children: [
58
- i18n__default.default.t("Data Source"),
59
- ": "
60
- ] }),
61
- label
62
- ] })
43
+ /* @__PURE__ */ jsxRuntime.jsx("b", { children: label }),
44
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { color: ui.colors.grey600, fontSize: 12 }, children: periods?.map((ou) => ou.displayName)?.join(", ") })
63
45
  ]
64
46
  }
65
47
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/PeriodSpecificTargetView.tsx"],"names":["useCalendar","createFixedPeriodFromPeriodId","jsxs","colors","i18n","jsx","LegendsView"],"mappings":";;;;;;;;;;;;;AAYO,SAAS,wBAAA,CAAyB;AAAA,EACxC,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,QAAQ,cAAA,CAAe,KAAA;AAC7B,EAAA,MAAM,WAAWA,oBAAA,EAAY;AAC7B,EAAA,MAAM,UAAU,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,aAC1BC,gDAAA,CAA8B;AAAA,MAC7B,QAAA;AAAA,MACA;AAAA,KACA;AAAA,GACF;AAEA,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,QAAA,EAAU,GAAA;AAAA,QACV,MAAA,EAAQ,CAAA,UAAA,EAAaC,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QACnC,YAAA,EAAc,CAAA;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,CAAA;AAAA,QACL,OAAA,EAAS;AAAA,OACV;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,CAAA;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe;AAAA,aAChB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,eAAA,CAAC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,gCAAAA,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,kBAAAE,qBAAA,CAAK,EAAE,WAAW,CAAA;AAAA,kBAAE;AAAA,iBAAA,EAAE,CAAA;AAAA,gBAAK,GAAA;AAAA,gBAC9B,OAAA,EAAS,IAAI,CAAC,EAAA,KAAO,GAAG,WAAW,CAAA,EAAG,KAAK,IAAI;AAAA,eAAA,EACjD,CAAA;AAAA,8CACC,KAAA,EAAA,EACA,QAAA,EAAA;AAAA,gCAAAF,eAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA;AAAA,kBAAAE,qBAAA,CAAK,EAAE,aAAa,CAAA;AAAA,kBAAE;AAAA,iBAAA,EAAE,CAAA;AAAA,gBAC3B;AAAA,eAAA,EACF;AAAA;AAAA;AAAA,SACD;AAAA,wBACAC,cAAA,CAACC,sBAAA,EAAA,EAAY,OAAA,EAAS,cAAA,CAAe,OAAA,EAAS;AAAA;AAAA;AAAA,GAC/C;AAEF","file":"PeriodSpecificTargetView.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { LegendsView } from \"./LegendView\";\nimport { createFixedPeriodFromPeriodId } from \"@dhis2/multi-calendar-dates\";\nimport { useCalendar } from \"../../../hooks/metadata\";\nimport type { SpecificTarget } from \"../../../schemas/config\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: SpecificTarget;\n\tlabel: string;\n}\n\nexport function PeriodSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst items = specificTarget.items;\n\tconst calendar = useCalendar();\n\tconst periods = items.map((periodId) =>\n\t\tcreateFixedPeriodFromPeriodId({\n\t\t\tcalendar,\n\t\t\tperiodId,\n\t\t}),\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tmaxWidth: 350,\n\t\t\t\tborder: `1px solid ${colors.grey600}`,\n\t\t\t\tborderRadius: 4,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tgap: 8,\n\t\t\t\tpadding: 16,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<b>{i18n.t(\"Period(s)\")}: </b>{\" \"}\n\t\t\t\t\t{periods?.map((ou) => ou.displayName)?.join(\", \")}\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<b>{i18n.t(\"Data Source\")}: </b>\n\t\t\t\t\t{label}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<LegendsView legends={specificTarget.legends} />\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/components/PeriodSpecificTargetView.tsx"],"names":["useCalendar","createFixedPeriodFromPeriodId","jsxs","colors","jsx","LegendsView"],"mappings":";;;;;;;;AAWO,SAAS,wBAAA,CAAyB;AAAA,EACxC,cAAA;AAAA,EACA;AACD,CAAA,EAAmC;AAClC,EAAA,MAAM,QAAQ,cAAA,CAAe,KAAA;AAC7B,EAAA,MAAM,WAAWA,oBAAA,EAAY;AAC7B,EAAA,MAAM,UAAU,KAAA,CAAM,GAAA;AAAA,IAAI,CAAC,aAC1BC,gDAAA,CAA8B;AAAA,MAC7B,QAAA;AAAA,MACA;AAAA,KACA;AAAA,GACF;AAEA,EAAA,uBACCC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAA,EAAO;AAAA,QACN,QAAA,EAAU,GAAA;AAAA,QACV,MAAA,EAAQ,CAAA,UAAA,EAAaC,SAAA,CAAO,OAAO,CAAA,CAAA;AAAA,QACnC,YAAA,EAAc,CAAA;AAAA,QACd,OAAA,EAAS,MAAA;AAAA,QACT,aAAA,EAAe,QAAA;AAAA,QACf,GAAA,EAAK,CAAA;AAAA,QACL,OAAA,EAAS;AAAA,OACV;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAD,eAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAA,EAAO;AAAA,cACN,GAAA,EAAK,CAAA;AAAA,cACL,OAAA,EAAS,MAAA;AAAA,cACT,aAAA,EAAe;AAAA,aAChB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAE,cAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,6CACT,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAOD,SAAA,CAAO,SAAS,QAAA,EAAU,EAAA,IAC9C,QAAA,EAAA,OAAA,EAAS,GAAA,CAAI,CAAC,EAAA,KAAO,EAAA,CAAG,WAAW,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EACjD;AAAA;AAAA;AAAA,SACD;AAAA,wBACAC,cAAA,CAACC,sBAAA,EAAA,EAAY,OAAA,EAAS,cAAA,CAAe,OAAA,EAAS;AAAA;AAAA;AAAA,GAC/C;AAEF","file":"PeriodSpecificTargetView.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport { LegendsView } from \"./LegendView\";\nimport { createFixedPeriodFromPeriodId } from \"@dhis2/multi-calendar-dates\";\nimport { useCalendar } from \"../../../hooks/metadata\";\nimport type { SpecificTarget } from \"../../../schemas/config\";\n\nexport interface OrgUnitSpecificTargetViewProps {\n\tspecificTarget: SpecificTarget;\n\tlabel: string;\n}\n\nexport function PeriodSpecificTargetView({\n\tspecificTarget,\n\tlabel,\n}: OrgUnitSpecificTargetViewProps) {\n\tconst items = specificTarget.items;\n\tconst calendar = useCalendar();\n\tconst periods = items.map((periodId) =>\n\t\tcreateFixedPeriodFromPeriodId({\n\t\t\tcalendar,\n\t\t\tperiodId,\n\t\t}),\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tmaxWidth: 350,\n\t\t\t\tborder: `1px solid ${colors.grey400}`,\n\t\t\t\tborderRadius: 4,\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\tflexDirection: \"column\",\n\t\t\t\tgap: 8,\n\t\t\t\tpadding: 16,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tgap: 4,\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<b>{label}</b>\n\t\t\t\t<span style={{ color: colors.grey600, fontSize: 12 }}>\n\t\t\t\t\t{periods?.map((ou) => ou.displayName)?.join(\", \")}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t\t<LegendsView legends={specificTarget.legends} />\n\t\t</div>\n\t);\n}\n"]}
@@ -13,6 +13,7 @@ var MetaProvider = require('../../MetaProvider');
13
13
  var download = require('../utils/download');
14
14
  var appRuntime = require('@dhis2/app-runtime');
15
15
  require('../print.css');
16
+ var completed = require('../../../hooks/completed');
16
17
 
17
18
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
19
 
@@ -81,7 +82,7 @@ function DownloadMenu({
81
82
  download.downloadALMAData({
82
83
  config,
83
84
  meta,
84
- data: dataEngine.data
85
+ data: Array.from(dataEngine.data.values())
85
86
  });
86
87
  break;
87
88
  }
@@ -116,25 +117,17 @@ function DownloadMenu({
116
117
  }
117
118
  function ScorecardDownloadButton() {
118
119
  const [isPending, startTransition] = react.useTransition();
119
- const { data: dataEngine } = DataProvider.useScorecardData();
120
120
  const [openMenu, setOpenMenu] = react.useState(false);
121
- const [completed, setCompleted] = react.useState(dataEngine.isDone);
121
+ const completed$1 = completed.useScorecardLoadingCompleted();
122
122
  const previewRef = react.useRef(null);
123
- react.useEffect(() => {
124
- return dataEngine.addOnCompleteListener((completed2) => {
125
- startTransition(() => {
126
- setCompleted(completed2);
127
- });
128
- });
129
- }, [dataEngine]);
130
123
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
131
- completed && openMenu ? /* @__PURE__ */ jsxRuntime.jsx(ScorecardPreviewArea.ScorecardPreviewArea, { previewRef }) : null,
124
+ completed$1 && openMenu ? /* @__PURE__ */ jsxRuntime.jsx(ScorecardPreviewArea.ScorecardPreviewArea, { previewRef }) : null,
132
125
  /* @__PURE__ */ jsxRuntime.jsx(
133
126
  ui.DropdownButton,
134
127
  {
135
128
  type: "button",
136
129
  value: "scorecard-download-button",
137
- disabled: !completed || isPending,
130
+ disabled: !completed$1 || isPending,
138
131
  open: openMenu,
139
132
  onClick: ({ open }) => {
140
133
  startTransition(() => {
@@ -149,7 +142,7 @@ function ScorecardDownloadButton() {
149
142
  previewRef
150
143
  }
151
144
  ),
152
- children: !completed ? i18n__default.default.t("Please wait...") : isPending ? i18n__default.default.t("Preparing...") : i18n__default.default.t("Download")
145
+ children: !completed$1 ? i18n__default.default.t("Please wait...") : isPending ? i18n__default.default.t("Preparing...") : i18n__default.default.t("Download")
153
146
  }
154
147
  )
155
148
  ] });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardPrint/components/ScorecardDownloadButton.tsx"],"names":["useScorecardConfig","useAlert","useScorecardData","useScorecardMeta","useReactToPrint","i18n","xlsx","downloadALMAMeta","downloadALMAData","jsx","Fragment","jsxs","FlyoutMenu","MenuItem","useTransition","useState","useRef","useEffect","completed","ScorecardPreviewArea","DropdownButton","IconDownload24"],"mappings":"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","file":"ScorecardDownloadButton.js","sourcesContent":["import {\n\tDropdownButton,\n\tFlyoutMenu,\n\tIconDownload24,\n\tMenuItem,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport {\n\ttype RefObject,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n\tuseTransition,\n} from \"react\";\nimport { useScorecardData } from \"../../DataProvider\";\nimport { useReactToPrint } from \"react-to-print\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { ScorecardPreviewArea } from \"./ScorecardPreviewArea\";\nimport * as xlsx from \"xlsx\";\nimport { useScorecardMeta } from \"../../MetaProvider\";\nimport { downloadALMAData, downloadALMAMeta } from \"../utils/download\";\nimport { useAlert } from \"@dhis2/app-runtime\";\nimport \"../print.css\";\n\nfunction DownloadMenu({\n\tpreviewRef,\n\tonClose,\n}: {\n\tpreviewRef: RefObject<HTMLDivElement>;\n\tonClose: () => void;\n}) {\n\tconst config = useScorecardConfig();\n\tconst { show } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type }) => ({ ...type, duration: 3000 }),\n\t);\n\tconst { data: dataEngine } = useScorecardData();\n\tconst meta = useScorecardMeta();\n\tconst print = useReactToPrint({\n\t\tcontentRef: previewRef,\n\t\tdocumentTitle: config.title,\n\t\tonPrintError: (errorLocation, error) => {\n\t\t\tconsole.error(`Error running ${errorLocation}`);\n\t\t\tconsole.error(error);\n\t\t\tshow({\n\t\t\t\tmessage: `${i18n.t(\"Could not open the print dialog\")}: ${\n\t\t\t\t\terror.message ?? i18n.t(\"Unknown error\")\n\t\t\t\t}`,\n\t\t\t\ttype: { info: true },\n\t\t\t});\n\t\t},\n\t});\n\n\tconst onDownload =\n\t\t(type: \"excel\" | \"csv\" | \"alma\" | \"almaMeta\" | \"pdf\") => () => {\n\t\t\tonClose();\n\t\t\tswitch (type) {\n\t\t\t\tcase \"pdf\":\n\t\t\t\t\tprint();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"csv\":\n\t\t\t\tcase \"excel\":\n\t\t\t\t\tconst extension = type === \"csv\" ? \"csv\" : \"xlsx\";\n\t\t\t\t\tconst workbook = xlsx.utils.table_to_book(\n\t\t\t\t\t\tpreviewRef.current,\n\t\t\t\t\t);\n\t\t\t\t\txlsx.writeFile(workbook, `${config.title}.${extension}`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"almaMeta\":\n\t\t\t\t\tdownloadALMAMeta({ config, meta: meta! });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"alma\":\n\t\t\t\t\tdownloadALMAData({\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tmeta: meta!,\n\t\t\t\t\t\tdata: dataEngine.data,\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<FlyoutMenu closeMenu={onClose}>\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={onDownload(\"excel\")}\n\t\t\t\t\tlabel={i18n.t(\"Excel\")}\n\t\t\t\t/>\n\t\t\t\t<MenuItem onClick={onDownload(\"csv\")} label={i18n.t(\"CSV\")} />\n\t\t\t\t<MenuItem onClick={onDownload(\"pdf\")} label={i18n.t(\"PDF\")} />\n\t\t\t\t<MenuItem label={i18n.t(\"ALMA\")}>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={onDownload(\"alma\")}\n\t\t\t\t\t\tlabel={i18n.t(\"Data(JSON)\")}\n\t\t\t\t\t/>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={onDownload(\"almaMeta\")}\n\t\t\t\t\t\tlabel={i18n.t(\"Metadata\")}\n\t\t\t\t\t/>\n\t\t\t\t</MenuItem>\n\t\t\t</FlyoutMenu>\n\t\t</>\n\t);\n}\n\nexport function ScorecardDownloadButton() {\n\tconst [isPending, startTransition] = useTransition();\n\tconst { data: dataEngine } = useScorecardData();\n\tconst [openMenu, setOpenMenu] = useState<boolean>(false);\n\tconst [completed, setCompleted] = useState<boolean>(dataEngine.isDone);\n\tconst previewRef = useRef<HTMLDivElement | null>(null);\n\n\tuseEffect(() => {\n\t\treturn dataEngine.addOnCompleteListener((completed) => {\n\t\t\tstartTransition(() => {\n\t\t\t\tsetCompleted(completed);\n\t\t\t});\n\t\t});\n\t}, [dataEngine]);\n\n\treturn (\n\t\t<>\n\t\t\t{completed && openMenu ? (\n\t\t\t\t<ScorecardPreviewArea previewRef={previewRef} />\n\t\t\t) : null}\n\t\t\t<DropdownButton\n\t\t\t\ttype=\"button\"\n\t\t\t\tvalue=\"scorecard-download-button\"\n\t\t\t\tdisabled={!completed || isPending}\n\t\t\t\topen={openMenu}\n\t\t\t\tonClick={({ open }) => {\n\t\t\t\t\tstartTransition(() => {\n\t\t\t\t\t\tsetOpenMenu(open);\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\ticon={<IconDownload24 />}\n\t\t\t\tcomponent={\n\t\t\t\t\tisPending ? (\n\t\t\t\t\t\t<div>Loading</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DownloadMenu\n\t\t\t\t\t\t\tonClose={() => setOpenMenu(false)}\n\t\t\t\t\t\t\tpreviewRef={previewRef}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{!completed\n\t\t\t\t\t? i18n.t(\"Please wait...\")\n\t\t\t\t\t: isPending\n\t\t\t\t\t\t? i18n.t(\"Preparing...\")\n\t\t\t\t\t\t: i18n.t(\"Download\")}\n\t\t\t</DropdownButton>\n\t\t</>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardPrint/components/ScorecardDownloadButton.tsx"],"names":["useScorecardConfig","useAlert","useScorecardData","useScorecardMeta","useReactToPrint","i18n","xlsx","downloadALMAMeta","downloadALMAData","jsx","Fragment","jsxs","FlyoutMenu","MenuItem","useTransition","useState","completed","useScorecardLoadingCompleted","useRef","ScorecardPreviewArea","DropdownButton","IconDownload24"],"mappings":"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","file":"ScorecardDownloadButton.js","sourcesContent":["import {\n\tDropdownButton,\n\tFlyoutMenu,\n\tIconDownload24,\n\tMenuItem,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { type RefObject, useRef, useState, useTransition } from \"react\";\nimport { useScorecardData } from \"../../DataProvider\";\nimport { useReactToPrint } from \"react-to-print\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { ScorecardPreviewArea } from \"./ScorecardPreviewArea\";\nimport * as xlsx from \"xlsx\";\nimport { useScorecardMeta } from \"../../MetaProvider\";\nimport { downloadALMAData, downloadALMAMeta } from \"../utils/download\";\nimport { useAlert } from \"@dhis2/app-runtime\";\nimport \"../print.css\";\nimport { useScorecardLoadingCompleted } from \"../../../hooks/completed\";\n\nfunction DownloadMenu({\n\tpreviewRef,\n\tonClose,\n}: {\n\tpreviewRef: RefObject<HTMLDivElement>;\n\tonClose: () => void;\n}) {\n\tconst config = useScorecardConfig();\n\tconst { show } = useAlert(\n\t\t({ message }) => message,\n\t\t({ type }) => ({ ...type, duration: 3000 }),\n\t);\n\tconst { data: dataEngine } = useScorecardData();\n\tconst meta = useScorecardMeta();\n\tconst print = useReactToPrint({\n\t\tcontentRef: previewRef,\n\t\tdocumentTitle: config.title,\n\t\tonPrintError: (errorLocation, error) => {\n\t\t\tconsole.error(`Error running ${errorLocation}`);\n\t\t\tconsole.error(error);\n\t\t\tshow({\n\t\t\t\tmessage: `${i18n.t(\"Could not open the print dialog\")}: ${\n\t\t\t\t\terror.message ?? i18n.t(\"Unknown error\")\n\t\t\t\t}`,\n\t\t\t\ttype: { info: true },\n\t\t\t});\n\t\t},\n\t});\n\n\tconst onDownload =\n\t\t(type: \"excel\" | \"csv\" | \"alma\" | \"almaMeta\" | \"pdf\") => () => {\n\t\t\tonClose();\n\t\t\tswitch (type) {\n\t\t\t\tcase \"pdf\":\n\t\t\t\t\tprint();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"csv\":\n\t\t\t\tcase \"excel\":\n\t\t\t\t\tconst extension = type === \"csv\" ? \"csv\" : \"xlsx\";\n\t\t\t\t\tconst workbook = xlsx.utils.table_to_book(\n\t\t\t\t\t\tpreviewRef.current,\n\t\t\t\t\t);\n\t\t\t\t\txlsx.writeFile(workbook, `${config.title}.${extension}`);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"almaMeta\":\n\t\t\t\t\tdownloadALMAMeta({ config, meta: meta! });\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"alma\":\n\t\t\t\t\tdownloadALMAData({\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tmeta: meta!,\n\t\t\t\t\t\tdata: Array.from(dataEngine.data.values()),\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t};\n\n\treturn (\n\t\t<>\n\t\t\t<FlyoutMenu closeMenu={onClose}>\n\t\t\t\t<MenuItem\n\t\t\t\t\tonClick={onDownload(\"excel\")}\n\t\t\t\t\tlabel={i18n.t(\"Excel\")}\n\t\t\t\t/>\n\t\t\t\t<MenuItem onClick={onDownload(\"csv\")} label={i18n.t(\"CSV\")} />\n\t\t\t\t<MenuItem onClick={onDownload(\"pdf\")} label={i18n.t(\"PDF\")} />\n\t\t\t\t<MenuItem label={i18n.t(\"ALMA\")}>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={onDownload(\"alma\")}\n\t\t\t\t\t\tlabel={i18n.t(\"Data(JSON)\")}\n\t\t\t\t\t/>\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={onDownload(\"almaMeta\")}\n\t\t\t\t\t\tlabel={i18n.t(\"Metadata\")}\n\t\t\t\t\t/>\n\t\t\t\t</MenuItem>\n\t\t\t</FlyoutMenu>\n\t\t</>\n\t);\n}\n\nexport function ScorecardDownloadButton() {\n\tconst [isPending, startTransition] = useTransition();\n\tconst [openMenu, setOpenMenu] = useState<boolean>(false);\n\tconst completed = useScorecardLoadingCompleted();\n\tconst previewRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<>\n\t\t\t{completed && openMenu ? (\n\t\t\t\t<ScorecardPreviewArea previewRef={previewRef} />\n\t\t\t) : null}\n\t\t\t<DropdownButton\n\t\t\t\ttype=\"button\"\n\t\t\t\tvalue=\"scorecard-download-button\"\n\t\t\t\tdisabled={!completed || isPending}\n\t\t\t\topen={openMenu}\n\t\t\t\tonClick={({ open }) => {\n\t\t\t\t\tstartTransition(() => {\n\t\t\t\t\t\tsetOpenMenu(open);\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\ticon={<IconDownload24 />}\n\t\t\t\tcomponent={\n\t\t\t\t\tisPending ? (\n\t\t\t\t\t\t<div>Loading</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<DownloadMenu\n\t\t\t\t\t\t\tonClose={() => setOpenMenu(false)}\n\t\t\t\t\t\t\tpreviewRef={previewRef}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{!completed\n\t\t\t\t\t? i18n.t(\"Please wait...\")\n\t\t\t\t\t: isPending\n\t\t\t\t\t\t? i18n.t(\"Preparing...\")\n\t\t\t\t\t\t: i18n.t(\"Download\")}\n\t\t\t</DropdownButton>\n\t\t</>\n\t);\n}\n"]}