@hisptz/dhis2-scorecard 1.1.9 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/dist/Scorecard.js +2 -2
  2. package/dist/Scorecard.js.map +1 -1
  3. package/dist/components/ColGroup.js +3 -9
  4. package/dist/components/ColGroup.js.map +1 -1
  5. package/dist/components/ScorecardHeader.js +8 -7
  6. package/dist/components/ScorecardHeader.js.map +1 -1
  7. package/dist/components/ScorecardLegendsView/ScorecardLegendsView.js +2 -2
  8. package/dist/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
  9. package/dist/components/ScorecardLegendsView/components/ArrowLegendView.js +3 -3
  10. package/dist/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
  11. package/dist/components/ScorecardPrint/components/ScorecardPreviewArea.js +32 -37
  12. package/dist/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
  13. package/dist/components/ScorecardTable/ScorecardTable.js +6 -8
  14. package/dist/components/ScorecardTable/ScorecardTable.js.map +1 -1
  15. package/dist/components/ScorecardTable/components/AverageCell.js +2 -5
  16. package/dist/components/ScorecardTable/components/AverageCell.js.map +1 -1
  17. package/dist/components/ScorecardTable/components/DataFooterCell.js +2 -5
  18. package/dist/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
  19. package/dist/components/ScorecardTable/components/DataValue.js +5 -8
  20. package/dist/components/ScorecardTable/components/DataValue.js.map +1 -1
  21. package/dist/components/ScorecardTable/components/ExpandedScorecardTable.js +6 -4
  22. package/dist/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
  23. package/dist/components/ScorecardTable/components/LinkedCell.js +2 -2
  24. package/dist/components/ScorecardTable/components/LinkedCell.js.map +1 -1
  25. package/dist/components/ScorecardTable/components/TableFoot.js +2 -5
  26. package/dist/components/ScorecardTable/components/TableFoot.js.map +1 -1
  27. package/dist/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +4 -8
  28. package/dist/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
  29. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +2 -5
  30. package/dist/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
  31. package/dist/components/ScorecardTable/components/TableHeader/components/FilterArea.js +2 -5
  32. package/dist/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
  33. package/dist/components/ScorecardTable/components/TableHeader/components/LabelCell.js +4 -13
  34. package/dist/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
  35. package/dist/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +4 -6
  36. package/dist/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
  37. package/dist/components/StateProvider.js +40 -27
  38. package/dist/components/StateProvider.js.map +1 -1
  39. package/dist/esm/Scorecard.js +1 -1
  40. package/dist/esm/Scorecard.js.map +1 -1
  41. package/dist/esm/components/ColGroup.js +3 -9
  42. package/dist/esm/components/ColGroup.js.map +1 -1
  43. package/dist/esm/components/ScorecardHeader.js +8 -7
  44. package/dist/esm/components/ScorecardHeader.js.map +1 -1
  45. package/dist/esm/components/ScorecardLegendsView/ScorecardLegendsView.js +2 -2
  46. package/dist/esm/components/ScorecardLegendsView/ScorecardLegendsView.js.map +1 -1
  47. package/dist/esm/components/ScorecardLegendsView/components/ArrowLegendView.js +3 -3
  48. package/dist/esm/components/ScorecardLegendsView/components/ArrowLegendView.js.map +1 -1
  49. package/dist/esm/components/ScorecardPrint/components/ScorecardPreviewArea.js +32 -37
  50. package/dist/esm/components/ScorecardPrint/components/ScorecardPreviewArea.js.map +1 -1
  51. package/dist/esm/components/ScorecardTable/ScorecardTable.js +6 -8
  52. package/dist/esm/components/ScorecardTable/ScorecardTable.js.map +1 -1
  53. package/dist/esm/components/ScorecardTable/components/AverageCell.js +2 -5
  54. package/dist/esm/components/ScorecardTable/components/AverageCell.js.map +1 -1
  55. package/dist/esm/components/ScorecardTable/components/DataFooterCell.js +2 -5
  56. package/dist/esm/components/ScorecardTable/components/DataFooterCell.js.map +1 -1
  57. package/dist/esm/components/ScorecardTable/components/DataValue.js +5 -8
  58. package/dist/esm/components/ScorecardTable/components/DataValue.js.map +1 -1
  59. package/dist/esm/components/ScorecardTable/components/ExpandedScorecardTable.js +6 -4
  60. package/dist/esm/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -1
  61. package/dist/esm/components/ScorecardTable/components/LinkedCell.js +2 -2
  62. package/dist/esm/components/ScorecardTable/components/LinkedCell.js.map +1 -1
  63. package/dist/esm/components/ScorecardTable/components/TableFoot.js +2 -5
  64. package/dist/esm/components/ScorecardTable/components/TableFoot.js.map +1 -1
  65. package/dist/esm/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +4 -8
  66. package/dist/esm/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -1
  67. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +2 -5
  68. package/dist/esm/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -1
  69. package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js +2 -5
  70. package/dist/esm/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -1
  71. package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js +4 -13
  72. package/dist/esm/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -1
  73. package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +4 -6
  74. package/dist/esm/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -1
  75. package/dist/esm/components/StateProvider.js +40 -29
  76. package/dist/esm/components/StateProvider.js.map +1 -1
  77. package/dist/esm/hooks/columns.js +8 -21
  78. package/dist/esm/hooks/columns.js.map +1 -1
  79. package/dist/esm/hooks/data.js +1 -1
  80. package/dist/esm/hooks/data.js.map +1 -1
  81. package/dist/esm/hooks/metadata.js +3 -7
  82. package/dist/esm/hooks/metadata.js.map +1 -1
  83. package/dist/esm/hooks/table.js +12 -34
  84. package/dist/esm/hooks/table.js.map +1 -1
  85. package/dist/esm/index.js +0 -1
  86. package/dist/esm/utils/dimensionState.js +133 -0
  87. package/dist/esm/utils/dimensionState.js.map +1 -0
  88. package/dist/esm/utils/viewState.js +85 -0
  89. package/dist/esm/utils/viewState.js.map +1 -0
  90. package/dist/hooks/columns.js +8 -21
  91. package/dist/hooks/columns.js.map +1 -1
  92. package/dist/hooks/data.js +1 -1
  93. package/dist/hooks/data.js.map +1 -1
  94. package/dist/hooks/metadata.js +3 -7
  95. package/dist/hooks/metadata.js.map +1 -1
  96. package/dist/hooks/table.js +12 -34
  97. package/dist/hooks/table.js.map +1 -1
  98. package/dist/index.js +0 -7
  99. package/dist/types/components/ColGroup.d.ts.map +1 -1
  100. package/dist/types/components/ScorecardHeader.d.ts.map +1 -1
  101. package/dist/types/components/ScorecardLegendsView/components/ArrowLegendView.d.ts +1 -1
  102. package/dist/types/components/ScorecardLegendsView/components/ArrowLegendView.d.ts.map +1 -1
  103. package/dist/types/components/ScorecardPrint/components/ScorecardPreviewArea.d.ts.map +1 -1
  104. package/dist/types/components/ScorecardTable/ScorecardTable.d.ts.map +1 -1
  105. package/dist/types/components/ScorecardTable/components/AverageCell.d.ts.map +1 -1
  106. package/dist/types/components/ScorecardTable/components/DataFooterCell.d.ts.map +1 -1
  107. package/dist/types/components/ScorecardTable/components/DataValue.d.ts.map +1 -1
  108. package/dist/types/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +1 -1
  109. package/dist/types/components/ScorecardTable/components/TableFoot.d.ts.map +1 -1
  110. package/dist/types/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts.map +1 -1
  111. package/dist/types/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +1 -1
  112. package/dist/types/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts.map +1 -1
  113. package/dist/types/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts.map +1 -1
  114. package/dist/types/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts.map +1 -1
  115. package/dist/types/components/StateProvider.d.ts +34 -2
  116. package/dist/types/components/StateProvider.d.ts.map +1 -1
  117. package/dist/types/hooks/columns.d.ts.map +1 -1
  118. package/dist/types/hooks/metadata.d.ts.map +1 -1
  119. package/dist/types/hooks/table.d.ts.map +1 -1
  120. package/dist/types/index.d.ts +0 -1
  121. package/dist/types/index.d.ts.map +1 -1
  122. package/dist/types/utils/dimensionState.d.ts +62 -0
  123. package/dist/types/utils/dimensionState.d.ts.map +1 -0
  124. package/dist/types/utils/viewState.d.ts +34 -0
  125. package/dist/types/utils/viewState.d.ts.map +1 -0
  126. package/dist/utils/dimensionState.js +139 -0
  127. package/dist/utils/dimensionState.js.map +1 -0
  128. package/dist/utils/viewState.js +90 -0
  129. package/dist/utils/viewState.js.map +1 -0
  130. package/package.json +7 -8
  131. package/dist/esm/hooks/period.js +0 -13
  132. package/dist/esm/hooks/period.js.map +0 -1
  133. package/dist/esm/state/index.js +0 -53
  134. package/dist/esm/state/index.js.map +0 -1
  135. package/dist/esm/utils/engine.js +0 -18
  136. package/dist/esm/utils/engine.js.map +0 -1
  137. package/dist/hooks/period.js +0 -15
  138. package/dist/hooks/period.js.map +0 -1
  139. package/dist/state/index.js +0 -63
  140. package/dist/state/index.js.map +0 -1
  141. package/dist/types/hooks/period.d.ts +0 -2
  142. package/dist/types/hooks/period.d.ts.map +0 -1
  143. package/dist/types/state/index.d.ts +0 -109
  144. package/dist/types/state/index.d.ts.map +0 -1
  145. package/dist/types/utils/engine.d.ts +0 -14
  146. package/dist/types/utils/engine.d.ts.map +0 -1
  147. package/dist/utils/engine.js +0 -20
  148. package/dist/utils/engine.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/ScorecardLegendsView.tsx"],"names":["ScorecardLegendsView"],"mappings":";;;;;;;;AAOa,MAAA,oBAAA,GAAuB,IAAK,CAAA,SAASA,qBAAuB,GAAA;AACxE,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAA,MAAM,oBAAoB,MAAQ,CAAA,iBAAA;AAClC,EAAM,MAAA,WAAA,GAAc,4BAA4B,QAAQ,CAAA;AAExD,EAAA,IAAI,CAAC,WAAa,EAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,GAAK,EAAA,EAAA;AAAA,QACL,OAAS,EAAA,QAAA;AAAA,QACT,OAAS,EAAA,MAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA;AAAA,cACN,OAAS,EAAA,MAAA;AAAA,cACT,GAAK,EAAA,CAAA;AAAA,cACL,mBAAA,EAAqB,CAAU,OAAA,EAAA,iBAAA,CAAkB,MAAM,CAAA,OAAA;AAAA,aACxD;AAAA,YAEC,QAAA,EAAA,iBAAA,CAAkB,GAAI,CAAA,CAAC,IACvB,qBAAA,GAAA,CAAC,cAAW,MAAQ,EAAA,IAAA,EAAA,EAAW,IAAK,CAAA,EAAI,CACxC;AAAA;AAAA,SACF;AAAA,4BACC,KACA,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA;AAAA,cACN,GAAK,EAAA,EAAA;AAAA,cACL,WAAa,EAAA,UAAA;AAAA,cACb,OAAS,EAAA,MAAA;AAAA,cACT,UAAY,EAAA,QAAA;AAAA,cACZ,cAAgB,EAAA;AAAA,aACjB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,gBAAiB,EAAA,EAAA,CAAA;AAAA,kCACjB,yBAA0B,EAAA,EAAA;AAAA;AAAA;AAAA,SAE7B,EAAA;AAAA;AAAA;AAAA,GACD;AAEF,CAAC","file":"ScorecardLegendsView.js","sourcesContent":["import { ArrowLegendsView } from \"./components/ArrowLegendView\";\nimport { SpecificTargetLegendsView } from \"./components/SpecificTargetLegendsView\";\nimport { LegendView } from \"./components/LegendView\";\nimport { useScorecardConfig } from \"../ConfigProvider\";\nimport { memo } from \"react\";\nimport { useScorecardViewOptionValue } from \"../../state\";\n\nexport const ScorecardLegendsView = memo(function ScorecardLegendsView() {\n\tconst config = useScorecardConfig();\n\tconst legendDefinitions = config!.legendDefinitions;\n\tconst showLegends = useScorecardViewOptionValue(\"legend\");\n\n\tif (!showLegends) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tgap: 16,\n\t\t\t\tpadding: \"0 16px\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"grid\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tgridTemplateColumns: `repeat(${legendDefinitions.length}, auto)`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legendDefinitions.map((item) => (\n\t\t\t\t\t<LegendView legend={item} key={item.id} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\tjustifySelf: \"flex-end\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLegendsView />\n\t\t\t\t\t<SpecificTargetLegendsView />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardLegendsView/ScorecardLegendsView.tsx"],"names":["ScorecardLegendsView"],"mappings":";;;;;;;;AAOa,MAAA,oBAAA,GAAuB,IAAK,CAAA,SAASA,qBAAuB,GAAA;AACxE,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAA,MAAM,oBAAoB,MAAQ,CAAA,iBAAA;AAClC,EAAM,MAAA,WAAA,GAAc,2BAAoC,QAAQ,CAAA;AAEhE,EAAA,IAAI,CAAC,WAAa,EAAA;AACjB,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,GAAK,EAAA,EAAA;AAAA,QACL,OAAS,EAAA,QAAA;AAAA,QACT,OAAS,EAAA,MAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA;AAAA,OACjB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA;AAAA,cACN,OAAS,EAAA,MAAA;AAAA,cACT,GAAK,EAAA,CAAA;AAAA,cACL,mBAAA,EAAqB,CAAU,OAAA,EAAA,iBAAA,CAAkB,MAAM,CAAA,OAAA;AAAA,aACxD;AAAA,YAEC,QAAA,EAAA,iBAAA,CAAkB,GAAI,CAAA,CAAC,IACvB,qBAAA,GAAA,CAAC,cAAW,MAAQ,EAAA,IAAA,EAAA,EAAW,IAAK,CAAA,EAAI,CACxC;AAAA;AAAA,SACF;AAAA,4BACC,KACA,EAAA,EAAA,QAAA,kBAAA,IAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA;AAAA,cACN,GAAK,EAAA,EAAA;AAAA,cACL,WAAa,EAAA,UAAA;AAAA,cACb,OAAS,EAAA,MAAA;AAAA,cACT,UAAY,EAAA,QAAA;AAAA,cACZ,cAAgB,EAAA;AAAA,aACjB;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,gBAAiB,EAAA,EAAA,CAAA;AAAA,kCACjB,yBAA0B,EAAA,EAAA;AAAA;AAAA;AAAA,SAE7B,EAAA;AAAA;AAAA;AAAA,GACD;AAEF,CAAC","file":"ScorecardLegendsView.js","sourcesContent":["import { ArrowLegendsView } from \"./components/ArrowLegendView\";\nimport { SpecificTargetLegendsView } from \"./components/SpecificTargetLegendsView\";\nimport { LegendView } from \"./components/LegendView\";\nimport { useScorecardConfig } from \"../ConfigProvider\";\nimport { memo } from \"react\";\nimport { useScorecardViewStateValue } from \"../../utils/viewState\";\n\nexport const ScorecardLegendsView = memo(function ScorecardLegendsView() {\n\tconst config = useScorecardConfig();\n\tconst legendDefinitions = config!.legendDefinitions;\n\tconst showLegends = useScorecardViewStateValue<boolean>(\"legend\");\n\n\tif (!showLegends) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tgap: 16,\n\t\t\t\tpadding: \"0 16px\",\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"grid\",\n\t\t\t\t\tgap: 8,\n\t\t\t\t\tgridTemplateColumns: `repeat(${legendDefinitions.length}, auto)`,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legendDefinitions.map((item) => (\n\t\t\t\t\t<LegendView legend={item} key={item.id} />\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\tjustifySelf: \"flex-end\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\t\tjustifyContent: \"space-between\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLegendsView />\n\t\t\t\t\t<SpecificTargetLegendsView />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n});\n"]}
@@ -1,10 +1,10 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { IconArrowUp24, IconArrowDown24 } from '@dhis2/ui';
3
3
  import i18n from '@dhis2/d2-i18n';
4
- import { useScorecardViewOptionValue } from '../../../state';
4
+ import { useScorecardViewStateValue } from '../../../utils/viewState';
5
5
 
6
- function ArrowLegendsView(props) {
7
- const showArrows = useScorecardViewOptionValue("arrows");
6
+ function ArrowLegendsView() {
7
+ const showArrows = useScorecardViewStateValue("arrows");
8
8
  if (!showArrows) {
9
9
  return null;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardLegendsView/components/ArrowLegendView.tsx"],"names":[],"mappings":";;;;;AAIO,SAAS,iBAAiB,KAAY,EAAA;AAC5C,EAAM,MAAA,UAAA,GAAa,4BAA4B,QAAQ,CAAA;AAEvD,EAAA,IAAI,CAAC,UAAY,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,GAAA,EAAK,IAAI,OAAS,EAAA,MAAA,EAAQ,qBAAqB,SAAU,EAAA;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,OAAO,EAAE,GAAA,EAAK,GAAG,OAAS,EAAA,MAAA,EAAQ,UAAY,EAAA,QAAA,EAClD,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,UACd,IAAA,CAAK,EAAE,4BAA4B;AAAA,SACrC,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,GAAA,EAAK,GAAG,OAAS,EAAA,MAAA,EAAQ,UAAY,EAAA,QAAA,EAClD,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,UAChB,IAAA,CAAK,EAAE,4BAA4B;AAAA,SACrC,EAAA;AAAA;AAAA;AAAA,GACD;AAEF","file":"ArrowLegendView.js","sourcesContent":["import { IconArrowDown24, IconArrowUp24 } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useScorecardViewOptionValue } from \"../../../state\";\n\nexport function ArrowLegendsView(props: any) {\n\tconst showArrows = useScorecardViewOptionValue(\"arrows\");\n\n\tif (!showArrows) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ gap: 16, display: \"grid\", gridTemplateColumns: \"1fr 1fr\" }}\n\t\t>\n\t\t\t<div style={{ gap: 8, display: \"flex\", alignItems: \"center\" }}>\n\t\t\t\t<IconArrowUp24 />\n\t\t\t\t{i18n.t(\"Increased from last period\")}\n\t\t\t</div>\n\t\t\t<div style={{ gap: 8, display: \"flex\", alignItems: \"center\" }}>\n\t\t\t\t<IconArrowDown24 />\n\t\t\t\t{i18n.t(\"Decreased from last period\")}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardLegendsView/components/ArrowLegendView.tsx"],"names":[],"mappings":";;;;;AAIO,SAAS,gBAAmB,GAAA;AAClC,EAAM,MAAA,UAAA,GAAa,2BAAoC,QAAQ,CAAA;AAE/D,EAAA,IAAI,CAAC,UAAY,EAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,GAAA,EAAK,IAAI,OAAS,EAAA,MAAA,EAAQ,qBAAqB,SAAU,EAAA;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,OAAO,EAAE,GAAA,EAAK,GAAG,OAAS,EAAA,MAAA,EAAQ,UAAY,EAAA,QAAA,EAClD,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,UACd,IAAA,CAAK,EAAE,4BAA4B;AAAA,SACrC,EAAA,CAAA;AAAA,wBACA,IAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,GAAA,EAAK,GAAG,OAAS,EAAA,MAAA,EAAQ,UAAY,EAAA,QAAA,EAClD,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,UAChB,IAAA,CAAK,EAAE,4BAA4B;AAAA,SACrC,EAAA;AAAA;AAAA;AAAA,GACD;AAEF","file":"ArrowLegendView.js","sourcesContent":["import { IconArrowDown24, IconArrowUp24 } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useScorecardViewStateValue } from \"../../../utils/viewState\";\n\nexport function ArrowLegendsView() {\n\tconst showArrows = useScorecardViewStateValue<boolean>(\"arrows\");\n\n\tif (!showArrows) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ gap: 16, display: \"grid\", gridTemplateColumns: \"1fr 1fr\" }}\n\t\t>\n\t\t\t<div style={{ gap: 8, display: \"flex\", alignItems: \"center\" }}>\n\t\t\t\t<IconArrowUp24 />\n\t\t\t\t{i18n.t(\"Increased from last period\")}\n\t\t\t</div>\n\t\t\t<div style={{ gap: 8, display: \"flex\", alignItems: \"center\" }}>\n\t\t\t\t<IconArrowDown24 />\n\t\t\t\t{i18n.t(\"Decreased from last period\")}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
@@ -8,58 +8,53 @@ import { ScorecardHeader } from '../../ScorecardHeader';
8
8
  import { ScorecardLegendsView } from '../../ScorecardLegendsView';
9
9
  import { ScorecardStateProvider } from '../../StateProvider';
10
10
  import { useScorecardConfig } from '../../ConfigProvider';
11
- import { useRecoilValue } from 'recoil';
12
- import { scorecardStateAtom } from '../../../state';
13
11
  import '../print.css';
12
+ import { useScorecardViewOptions } from '../../../utils/viewState';
13
+ import { usePeriodSelectionValue, useOrgUnitSelectionValue } from '../../../utils/dimensionState';
14
14
 
15
15
  const ScorecardPreviewArea = memo(function ScorecardPreviewArea2({
16
16
  previewRef
17
17
  }) {
18
18
  const config = useScorecardConfig();
19
- const state = useRecoilValue(scorecardStateAtom);
19
+ const options = useScorecardViewOptions();
20
+ const periodSelection = usePeriodSelectionValue();
21
+ const orgUnitSelection = useOrgUnitSelectionValue();
20
22
  const updatedState = {
21
- ...state ?? {},
23
+ periodSelection,
24
+ orgUnitSelection,
22
25
  options: {
23
- ...state?.options ?? {},
26
+ ...options ?? {},
24
27
  disableExpanding: true,
25
28
  disablePagination: true,
26
29
  printMode: true
27
30
  }
28
31
  };
29
- return /* @__PURE__ */ jsx(
30
- ScorecardStateProvider,
32
+ return /* @__PURE__ */ jsx(ScorecardStateProvider, { initialState: updatedState, config, children: /* @__PURE__ */ jsx("div", { style: { display: "none" }, children: /* @__PURE__ */ jsxs(
33
+ "div",
31
34
  {
32
- withRecoilRoot: true,
33
- initialState: updatedState,
34
- config,
35
- children: /* @__PURE__ */ jsx("div", { style: { display: "none" }, children: /* @__PURE__ */ jsxs(
36
- "div",
37
- {
38
- className: "print-preview",
39
- style: {
40
- height: "100%",
41
- display: "flex",
42
- gap: 16,
43
- flexDirection: "column"
44
- },
45
- ref: previewRef,
46
- children: [
47
- /* @__PURE__ */ jsx(ScorecardHeader, {}),
48
- /* @__PURE__ */ jsx(ScorecardLegendsView, {}),
49
- /* @__PURE__ */ jsx(TableStateProvider, { children: /* @__PURE__ */ jsx(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsx(
50
- ScorecardTable,
51
- {
52
- layout: "fixed",
53
- scrollHeight: "100%",
54
- scrollWidth: "100%",
55
- width: "100%"
56
- }
57
- ) }) })
58
- ]
59
- }
60
- ) })
35
+ className: "print-preview",
36
+ style: {
37
+ height: "100%",
38
+ display: "flex",
39
+ gap: 16,
40
+ flexDirection: "column"
41
+ },
42
+ ref: previewRef,
43
+ children: [
44
+ /* @__PURE__ */ jsx(ScorecardHeader, {}),
45
+ /* @__PURE__ */ jsx(ScorecardLegendsView, {}),
46
+ /* @__PURE__ */ jsx(TableStateProvider, { children: /* @__PURE__ */ jsx(DndProvider, { backend: HTML5Backend, children: /* @__PURE__ */ jsx(
47
+ ScorecardTable,
48
+ {
49
+ layout: "fixed",
50
+ scrollHeight: "100%",
51
+ scrollWidth: "100%",
52
+ width: "100%"
53
+ }
54
+ ) }) })
55
+ ]
61
56
  }
62
- );
57
+ ) }) });
63
58
  });
64
59
 
65
60
  export { ScorecardPreviewArea };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardPrint/components/ScorecardPreviewArea.tsx"],"names":["ScorecardPreviewArea"],"mappings":";;;;;;;;;;;;;;AAca,MAAA,oBAAA,GAAuB,IAAK,CAAA,SAASA,qBAAqB,CAAA;AAAA,EACtE;AACD,CAEG,EAAA;AACF,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAM,MAAA,KAAA,GAAQ,eAAe,kBAAkB,CAAA;AAE/C,EAAA,MAAM,YAAe,GAAA;AAAA,IACpB,GAAI,SAAS,EAAC;AAAA,IACd,OAAS,EAAA;AAAA,MACR,GAAI,KAAO,EAAA,OAAA,IAAW,EAAC;AAAA,MACvB,gBAAkB,EAAA,IAAA;AAAA,MAClB,iBAAmB,EAAA,IAAA;AAAA,MACnB,SAAW,EAAA;AAAA;AACZ,GACD;AAEA,EACC,uBAAA,GAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACA,cAAc,EAAA,IAAA;AAAA,MACd,YAAc,EAAA,YAAA;AAAA,MACd,MAAA;AAAA,MAEA,8BAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QACtB,EAAA,QAAA,kBAAA,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,SAAU,EAAA,eAAA;AAAA,UACV,KAAO,EAAA;AAAA,YACN,MAAQ,EAAA,MAAA;AAAA,YACR,OAAS,EAAA,MAAA;AAAA,YACT,GAAK,EAAA,EAAA;AAAA,YACL,aAAe,EAAA;AAAA,WAChB;AAAA,UACA,GAAK,EAAA,UAAA;AAAA,UAEL,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,gCAChB,oBAAqB,EAAA,EAAA,CAAA;AAAA,4BACrB,GAAA,CAAA,kBAAA,EAAA,EACA,QAAC,kBAAA,GAAA,CAAA,WAAA,EAAA,EAAY,SAAS,YACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,cAAC,cAAA;AAAA,cAAA;AAAA,gBACA,MAAO,EAAA,OAAA;AAAA,gBACP,YAAa,EAAA,MAAA;AAAA,gBACb,WAAY,EAAA,MAAA;AAAA,gBACZ,KAAM,EAAA;AAAA;AAAA,eAER,CACD,EAAA;AAAA;AAAA;AAAA,OAEF,EAAA;AAAA;AAAA,GACD;AAEF,CAAC","file":"ScorecardPreviewArea.js","sourcesContent":["import React, { memo, type RefObject } from \"react\";\nimport { TableStateProvider } from \"../../TableStateProvider\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { ScorecardTable } from \"../../ScorecardTable\";\nimport { ScorecardHeader } from \"../../ScorecardHeader\";\nimport { ScorecardLegendsView } from \"../../ScorecardLegendsView\";\nimport { ScorecardStateProvider } from \"../../StateProvider\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { useRecoilValue } from \"recoil\";\nimport { scorecardStateAtom } from \"../../../state\";\nimport type { ScorecardState } from \"../../../schemas/config\";\nimport \"../print.css\";\n\nexport const ScorecardPreviewArea = memo(function ScorecardPreviewArea({\n\tpreviewRef,\n}: {\n\tpreviewRef: RefObject<HTMLDivElement>;\n}) {\n\tconst config = useScorecardConfig();\n\tconst state = useRecoilValue(scorecardStateAtom);\n\n\tconst updatedState = {\n\t\t...(state ?? {}),\n\t\toptions: {\n\t\t\t...(state?.options ?? {}),\n\t\t\tdisableExpanding: true,\n\t\t\tdisablePagination: true,\n\t\t\tprintMode: true,\n\t\t},\n\t} as ScorecardState;\n\n\treturn (\n\t\t<ScorecardStateProvider\n\t\t\twithRecoilRoot\n\t\t\tinitialState={updatedState}\n\t\t\tconfig={config}\n\t\t>\n\t\t\t<div style={{ display: \"none\" }}>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"print-preview\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t}}\n\t\t\t\t\tref={previewRef}\n\t\t\t\t>\n\t\t\t\t\t<ScorecardHeader />\n\t\t\t\t\t<ScorecardLegendsView />\n\t\t\t\t\t<TableStateProvider>\n\t\t\t\t\t\t<DndProvider backend={HTML5Backend}>\n\t\t\t\t\t\t\t<ScorecardTable\n\t\t\t\t\t\t\t\tlayout=\"fixed\"\n\t\t\t\t\t\t\t\tscrollHeight=\"100%\"\n\t\t\t\t\t\t\t\tscrollWidth=\"100%\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</DndProvider>\n\t\t\t\t\t</TableStateProvider>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ScorecardStateProvider>\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardPrint/components/ScorecardPreviewArea.tsx"],"names":["ScorecardPreviewArea"],"mappings":";;;;;;;;;;;;;;AAiBa,MAAA,oBAAA,GAAuB,IAAK,CAAA,SAASA,qBAAqB,CAAA;AAAA,EACtE;AACD,CAEG,EAAA;AACF,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAA,MAAM,UAAU,uBAAwB,EAAA;AACxC,EAAA,MAAM,kBAAkB,uBAAwB,EAAA;AAChD,EAAA,MAAM,mBAAmB,wBAAyB,EAAA;AAElD,EAAA,MAAM,YAAe,GAAA;AAAA,IACpB,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAS,EAAA;AAAA,MACR,GAAI,WAAW,EAAC;AAAA,MAChB,gBAAkB,EAAA,IAAA;AAAA,MAClB,iBAAmB,EAAA,IAAA;AAAA,MACnB,SAAW,EAAA;AAAA;AACZ,GACD;AAEA,EACC,uBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,YAAA,EAAc,YAAc,EAAA,MAAA,EACnD,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,OAAS,EAAA,MAAA,EACtB,EAAA,QAAA,kBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,SAAU,EAAA,eAAA;AAAA,MACV,KAAO,EAAA;AAAA,QACN,MAAQ,EAAA,MAAA;AAAA,QACR,OAAS,EAAA,MAAA;AAAA,QACT,GAAK,EAAA,EAAA;AAAA,QACL,aAAe,EAAA;AAAA,OAChB;AAAA,MACA,GAAK,EAAA,UAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,4BAChB,oBAAqB,EAAA,EAAA,CAAA;AAAA,wBACrB,GAAA,CAAA,kBAAA,EAAA,EACA,QAAC,kBAAA,GAAA,CAAA,WAAA,EAAA,EAAY,SAAS,YACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACA,MAAO,EAAA,OAAA;AAAA,YACP,YAAa,EAAA,MAAA;AAAA,YACb,WAAY,EAAA,MAAA;AAAA,YACZ,KAAM,EAAA;AAAA;AAAA,WAER,CACD,EAAA;AAAA;AAAA;AAAA,KAEF,CACD,EAAA,CAAA;AAEF,CAAC","file":"ScorecardPreviewArea.js","sourcesContent":["import React, { memo, type RefObject } from \"react\";\nimport { TableStateProvider } from \"../../TableStateProvider\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\nimport { ScorecardTable } from \"../../ScorecardTable\";\nimport { ScorecardHeader } from \"../../ScorecardHeader\";\nimport { ScorecardLegendsView } from \"../../ScorecardLegendsView\";\nimport { ScorecardStateProvider } from \"../../StateProvider\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport type { ScorecardState } from \"../../../schemas/config\";\nimport \"../print.css\";\nimport { useScorecardViewOptions } from \"../../../utils/viewState\";\nimport {\n\tuseOrgUnitSelectionValue,\n\tusePeriodSelectionValue,\n} from \"../../../utils/dimensionState\";\n\nexport const ScorecardPreviewArea = memo(function ScorecardPreviewArea({\n\tpreviewRef,\n}: {\n\tpreviewRef: RefObject<HTMLDivElement>;\n}) {\n\tconst config = useScorecardConfig();\n\tconst options = useScorecardViewOptions();\n\tconst periodSelection = usePeriodSelectionValue();\n\tconst orgUnitSelection = useOrgUnitSelectionValue();\n\n\tconst updatedState = {\n\t\tperiodSelection,\n\t\torgUnitSelection,\n\t\toptions: {\n\t\t\t...(options ?? {}),\n\t\t\tdisableExpanding: true,\n\t\t\tdisablePagination: true,\n\t\t\tprintMode: true,\n\t\t},\n\t} as ScorecardState;\n\n\treturn (\n\t\t<ScorecardStateProvider initialState={updatedState} config={config}>\n\t\t\t<div style={{ display: \"none\" }}>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"print-preview\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\tgap: 16,\n\t\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\t}}\n\t\t\t\t\tref={previewRef}\n\t\t\t\t>\n\t\t\t\t\t<ScorecardHeader />\n\t\t\t\t\t<ScorecardLegendsView />\n\t\t\t\t\t<TableStateProvider>\n\t\t\t\t\t\t<DndProvider backend={HTML5Backend}>\n\t\t\t\t\t\t\t<ScorecardTable\n\t\t\t\t\t\t\t\tlayout=\"fixed\"\n\t\t\t\t\t\t\t\tscrollHeight=\"100%\"\n\t\t\t\t\t\t\t\tscrollWidth=\"100%\"\n\t\t\t\t\t\t\t\twidth=\"100%\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</DndProvider>\n\t\t\t\t\t</TableStateProvider>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</ScorecardStateProvider>\n\t);\n});\n"]}
@@ -6,25 +6,23 @@ import { TableFoot } from './components/TableFoot';
6
6
  import { memo, useRef, useTransition, useEffect } from 'react';
7
7
  import { PaginatedToolbar } from './components/PaginatedToolbar';
8
8
  import { useDragDropManager } from 'react-dnd';
9
- import { useSetScorecardStateSelector } from '../../state';
10
9
  import { ColGroup } from '../ColGroup';
10
+ import { useScorecardViewStateEngine } from '../StateProvider';
11
11
 
12
12
  const ScorecardTable = memo(function TableComponent(props) {
13
13
  const tableRef = useRef(null);
14
14
  const manager = useDragDropManager();
15
15
  const [isPending, startTransition] = useTransition();
16
- const setState = useSetScorecardStateSelector([
17
- "options",
18
- "showDataInRows"
19
- ]);
16
+ const viewStateEngine = useScorecardViewStateEngine();
20
17
  useEffect(() => {
21
18
  return manager.getMonitor().subscribeToStateChange(() => {
22
19
  const dropResult = manager.getMonitor().getDropResult();
23
20
  if (dropResult) {
24
21
  startTransition(() => {
25
- setState((prevState) => {
26
- return !prevState;
27
- });
22
+ viewStateEngine.updateOption(
23
+ "showDataInRows",
24
+ !viewStateEngine.options.showDataInRows
25
+ );
28
26
  });
29
27
  }
30
28
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ScorecardTable/ScorecardTable.tsx"],"names":[],"mappings":";;;;;;;;;;;AAYO,MAAM,cAAiB,GAAA,IAAA,CAAK,SAAS,cAAA,CAC3C,KACC,EAAA;AACD,EAAM,MAAA,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,UAAU,kBAAmB,EAAA;AACnC,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAI,aAAc,EAAA;AACnD,EAAA,MAAM,WAAW,4BAA6B,CAAA;AAAA,IAC7C,SAAA;AAAA,IACA;AAAA,GACA,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,OAAO,OAAQ,CAAA,UAAA,EAAa,CAAA,sBAAA,CAAuB,MAAM;AACxD,MAAA,MAAM,UAAa,GAAA,OAAA,CAAQ,UAAW,EAAA,CAAE,aAAc,EAAA;AACtD,MAAA,IAAI,UAAY,EAAA;AACf,QAAA,eAAA,CAAgB,MAAM;AACrB,UAAA,QAAA,CAAS,CAAC,SAAuB,KAAA;AAChC,YAAA,OAAO,CAAC,SAAA;AAAA,WACR,CAAA;AAAA,SACD,CAAA;AAAA;AACF,KACA,CAAA;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,SAAW,EAAA;AACd,IACC,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACN,MAAQ,EAAA,MAAA;AAAA,UACR,KAAO,EAAA,MAAA;AAAA,UACP,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,cAAgB,EAAA;AAAA,SACjB;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,KAAA,EAAK,IAAC,EAAA;AAAA;AAAA,KACvB;AAAA;AAIF,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,KAAA,EAAO,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,WAAA;AAAA,QAC5B,QAAQ,KAAM,CAAA;AAAA,OACf;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACA,MAAO,EAAA,MAAA;AAAA,YACN,GAAG,KAAA;AAAA,YAEJ,GAAK,EAAA,QAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,kCACT,WAAY,EAAA,EAAA,CAAA;AAAA,8BACb,GAAA,CAAC,aAAU,QAAoB,EAAA,CAAA;AAAA,kCAC9B,SAAU,EAAA,EAAA;AAAA;AAAA;AAAA,SACZ;AAAA,4BACC,gBAAiB,EAAA,EAAA;AAAA;AAAA;AAAA,GACnB;AAEF,CAAC","file":"ScorecardTable.js","sourcesContent":["import { CircularLoader, DataTable, type DataTableProps } from \"@dhis2/ui\";\nimport { TableHeader } from \"./components/TableHeader\";\nimport { TableBody } from \"./components/TableBody\";\nimport { TableFoot } from \"./components/TableFoot\";\nimport { memo, useEffect, useRef, useTransition } from \"react\";\nimport { PaginatedToolbar } from \"./components/PaginatedToolbar\";\nimport { useDragDropManager } from \"react-dnd\";\nimport { useSetScorecardStateSelector } from \"../../state\";\nimport { ColGroup } from \"../ColGroup\";\n\nexport interface ScorecardTableProps extends Omit<DataTableProps, \"children\"> {}\n\nexport const ScorecardTable = memo(function TableComponent(\n\tprops: ScorecardTableProps,\n) {\n\tconst tableRef = useRef<HTMLTableElement>(null);\n\tconst manager = useDragDropManager();\n\tconst [isPending, startTransition] = useTransition();\n\tconst setState = useSetScorecardStateSelector([\n\t\t\"options\",\n\t\t\"showDataInRows\",\n\t]);\n\n\tuseEffect(() => {\n\t\treturn manager.getMonitor().subscribeToStateChange(() => {\n\t\t\tconst dropResult = manager.getMonitor().getDropResult();\n\t\t\tif (dropResult) {\n\t\t\t\tstartTransition(() => {\n\t\t\t\t\tsetState((prevState: boolean) => {\n\t\t\t\t\t\treturn !prevState;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}, [manager]);\n\n\tif (isPending) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\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\talignItems: \"center\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t}}\n\t\t\t>\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\twidth: props.width ?? props.scrollWidth,\n\t\t\t\theight: props.scrollHeight,\n\t\t\t}}\n\t\t>\n\t\t\t<DataTable\n\t\t\t\tlayout=\"auto\"\n\t\t\t\t{...props} /*\n // @ts-ignore */\n\t\t\t\tref={tableRef}\n\t\t\t>\n\t\t\t\t<ColGroup />\n\t\t\t\t<TableHeader />\n\t\t\t\t<TableBody tableRef={tableRef} />\n\t\t\t\t<TableFoot />\n\t\t\t</DataTable>\n\t\t\t<PaginatedToolbar />\n\t\t</div>\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../../../src/components/ScorecardTable/ScorecardTable.tsx"],"names":[],"mappings":";;;;;;;;;;;AAYO,MAAM,cAAiB,GAAA,IAAA,CAAK,SAAS,cAAA,CAC3C,KACC,EAAA;AACD,EAAM,MAAA,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,UAAU,kBAAmB,EAAA;AACnC,EAAA,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,GAAI,aAAc,EAAA;AACnD,EAAA,MAAM,kBAAkB,2BAA4B,EAAA;AAEpD,EAAA,SAAA,CAAU,MAAM;AACf,IAAA,OAAO,OAAQ,CAAA,UAAA,EAAa,CAAA,sBAAA,CAAuB,MAAM;AACxD,MAAA,MAAM,UAAa,GAAA,OAAA,CAAQ,UAAW,EAAA,CAAE,aAAc,EAAA;AACtD,MAAA,IAAI,UAAY,EAAA;AACf,QAAA,eAAA,CAAgB,MAAM;AACrB,UAAgB,eAAA,CAAA,YAAA;AAAA,YACf,gBAAA;AAAA,YACA,CAAC,gBAAgB,OAAQ,CAAA;AAAA,WAC1B;AAAA,SACA,CAAA;AAAA;AACF,KACA,CAAA;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,SAAW,EAAA;AACd,IACC,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACN,MAAQ,EAAA,MAAA;AAAA,UACR,KAAO,EAAA,MAAA;AAAA,UACP,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,cAAgB,EAAA;AAAA,SACjB;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,KAAA,EAAK,IAAC,EAAA;AAAA;AAAA,KACvB;AAAA;AAIF,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,KAAA,EAAO,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,WAAA;AAAA,QAC5B,QAAQ,KAAM,CAAA;AAAA,OACf;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACA,MAAO,EAAA,MAAA;AAAA,YACN,GAAG,KAAA;AAAA,YAEJ,GAAK,EAAA,QAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,kCACT,WAAY,EAAA,EAAA,CAAA;AAAA,8BACb,GAAA,CAAC,aAAU,QAAoB,EAAA,CAAA;AAAA,kCAC9B,SAAU,EAAA,EAAA;AAAA;AAAA;AAAA,SACZ;AAAA,4BACC,gBAAiB,EAAA,EAAA;AAAA;AAAA;AAAA,GACnB;AAEF,CAAC","file":"ScorecardTable.js","sourcesContent":["import { CircularLoader, DataTable, type DataTableProps } from \"@dhis2/ui\";\nimport { TableHeader } from \"./components/TableHeader\";\nimport { TableBody } from \"./components/TableBody\";\nimport { TableFoot } from \"./components/TableFoot\";\nimport { memo, useEffect, useRef, useTransition } from \"react\";\nimport { PaginatedToolbar } from \"./components/PaginatedToolbar\";\nimport { useDragDropManager } from \"react-dnd\";\nimport { ColGroup } from \"../ColGroup\";\nimport { useScorecardViewStateEngine } from \"../StateProvider\";\n\nexport interface ScorecardTableProps extends Omit<DataTableProps, \"children\"> {}\n\nexport const ScorecardTable = memo(function TableComponent(\n\tprops: ScorecardTableProps,\n) {\n\tconst tableRef = useRef<HTMLTableElement>(null);\n\tconst manager = useDragDropManager();\n\tconst [isPending, startTransition] = useTransition();\n\tconst viewStateEngine = useScorecardViewStateEngine();\n\n\tuseEffect(() => {\n\t\treturn manager.getMonitor().subscribeToStateChange(() => {\n\t\t\tconst dropResult = manager.getMonitor().getDropResult();\n\t\t\tif (dropResult) {\n\t\t\t\tstartTransition(() => {\n\t\t\t\t\tviewStateEngine.updateOption(\n\t\t\t\t\t\t\"showDataInRows\",\n\t\t\t\t\t\t!viewStateEngine.options.showDataInRows,\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}, [manager]);\n\n\tif (isPending) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\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\talignItems: \"center\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t}}\n\t\t\t>\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\twidth: props.width ?? props.scrollWidth,\n\t\t\t\theight: props.scrollHeight,\n\t\t\t}}\n\t\t>\n\t\t\t<DataTable\n\t\t\t\tlayout=\"auto\"\n\t\t\t\t{...props} /*\n // @ts-ignore */\n\t\t\t\tref={tableRef}\n\t\t\t>\n\t\t\t\t<ColGroup />\n\t\t\t\t<TableHeader />\n\t\t\t\t<TableBody tableRef={tableRef} />\n\t\t\t\t<TableFoot />\n\t\t\t</DataTable>\n\t\t\t<PaginatedToolbar />\n\t\t</div>\n\t);\n});\n"]}
@@ -7,7 +7,7 @@ import { getLegend, getTextColorFromBackgroundColor } from '../../../utils/legen
7
7
  import { LinkedCell } from './LinkedCell';
8
8
  import { useDataHolderAverageCellValue, useOrgUnitAverageCellValue } from '../../../hooks/value';
9
9
  import { CellLoader } from './CellLoader';
10
- import { useScorecardStateSelectorValue } from '../../../state';
10
+ import { useScorecardViewStateValue } from '../../../utils/viewState';
11
11
 
12
12
  function SingleAverageCell({
13
13
  dataSource,
@@ -150,10 +150,7 @@ function OrgUnitAverageCell(props) {
150
150
  );
151
151
  }
152
152
  function AverageCell(props) {
153
- const showDataInRows = useScorecardStateSelectorValue([
154
- "options",
155
- "showDataInRows"
156
- ]);
153
+ const showDataInRows = useScorecardViewStateValue("showDataInRows");
157
154
  if (showDataInRows) {
158
155
  return /* @__PURE__ */ jsx(DataSourceAverageCell, { ...props });
159
156
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/AverageCell.tsx"],"names":[],"mappings":"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","file":"AverageCell.js","sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\nimport type {\n\tScorecardAverageCellData,\n\tScorecardTableAverageCellConfig,\n\tScorecardTableData,\n} from \"../../../schemas/config\";\nimport { DataTableCell } from \"@dhis2/ui\";\nimport { head, isEmpty } from \"lodash\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { useMemo } from \"react\";\nimport {\n\tgetLegend,\n\tgetTextColorFromBackgroundColor,\n} from \"../../../utils/legends\";\nimport { LinkedCell } from \"./LinkedCell\";\nimport {\n\tuseDataHolderAverageCellValue,\n\tuseOrgUnitAverageCellValue,\n} from \"../../../hooks/value\";\nimport { CellLoader } from \"./CellLoader\";\nimport { useScorecardStateSelectorValue } from \"../../../state\";\n\nexport function SingleAverageCell({\n\tdataSource,\n\tsize,\n}: {\n\tdataSource: ScorecardAverageCellData;\n\tsize: number;\n}) {\n\tconst config = useScorecardConfig();\n\tconst legendDefinition = useMemo(() => {\n\t\tif (!dataSource) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource,\n\t\t\tconfig: config!,\n\t\t\tvalue: dataSource.data.average,\n\t\t});\n\t}, [dataSource]);\n\n\tif (!dataSource.data.average || isNaN(dataSource.data.average)) {\n\t\treturn <DataTableCell bordered />;\n\t}\n\n\treturn (\n\t\t<DataTableCell\n\t\t\tbordered\n\t\t\tstyle={{\n\t\t\t\tbackground: legendDefinition?.color,\n\t\t\t\ttextAlign: \"center\",\n\t\t\t\tminWidth: 100,\n\t\t\t\twidth: size,\n\t\t\t\theight: 48,\n\t\t\t\tcolor: legendDefinition\n\t\t\t\t\t? getTextColorFromBackgroundColor(legendDefinition?.color)\n\t\t\t\t\t: undefined,\n\t\t\t}}\n\t\t\talign=\"center\"\n\t\t>\n\t\t\t<b>{dataSource.data.average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function LinkedAverageCell({\n\tdataSources,\n\tsize,\n}: {\n\tdataSources: Array<ScorecardAverageCellData>;\n\tsize: number;\n}) {\n\tconst [top, bottom] = dataSources ?? [];\n\tconst config = useScorecardConfig();\n\tconst topLegendDefinition = useMemo(() => {\n\t\tif (!top) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource: top,\n\t\t\tconfig: config!,\n\t\t\tvalue: top.data.average,\n\t\t});\n\t}, [top]);\n\tconst bottomLegendDefinition = useMemo(() => {\n\t\tif (!bottom) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource: bottom,\n\t\t\tconfig: config!,\n\t\t\tvalue: bottom.data.average,\n\t\t});\n\t}, [bottom]);\n\n\treturn (\n\t\t<LinkedCell\n\t\t\tbold\n\t\t\tsize={size}\n\t\t\ttop={{\n\t\t\t\tdataSource: {\n\t\t\t\t\t...top,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcurrent: top.data.average,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlegendDefinition: topLegendDefinition,\n\t\t\t\tvalue: top.data.average,\n\t\t\t}}\n\t\t\tbottom={{\n\t\t\t\tdataSource: {\n\t\t\t\t\t...bottom,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcurrent: bottom.data.average,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlegendDefinition: bottomLegendDefinition,\n\t\t\t\tvalue: bottom.data.average,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nfunction DataSourceAverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst size = props.cell.column.getSize();\n\tconst dataConfig = useMemo(() => props.getValue(), [props.getValue()]);\n\tconst { cellData: dataSources, loading } =\n\t\tuseDataHolderAverageCellValue(dataConfig);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (!isEmpty(dataSources)) {\n\t\tif (dataSources?.length === 1) {\n\t\t\treturn (\n\t\t\t\t<SingleAverageCell\n\t\t\t\t\tsize={size}\n\t\t\t\t\tdataSource={head(dataSources)!}\n\t\t\t\t/>\n\t\t\t);\n\t\t} else {\n\t\t\treturn <LinkedAverageCell size={size} dataSources={dataSources!} />;\n\t\t}\n\t}\n\n\treturn <DataTableCell bordered style={{ width: size }} />;\n}\n\nfunction OrgUnitAverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst size = props.cell.column.getSize();\n\tconst dataConfig = useMemo(() => props.getValue(), [props.getValue()]);\n\tconst { loading, average } = useOrgUnitAverageCellValue(dataConfig);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isNaN(average as number)) {\n\t\treturn (\n\t\t\t<DataTableCell\n\t\t\t\tstyle={{ width: size }}\n\t\t\t\tbordered\n\t\t\t\talign=\"center\"\n\t\t\t\tkey={props.row.id}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DataTableCell\n\t\t\tstyle={{ width: size }}\n\t\t\tbordered\n\t\t\talign=\"center\"\n\t\t\tkey={props.row.id}\n\t\t>\n\t\t\t<b>{average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function AverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst showDataInRows = useScorecardStateSelectorValue<boolean>([\n\t\t\"options\",\n\t\t\"showDataInRows\",\n\t]);\n\n\tif (showDataInRows) {\n\t\treturn <DataSourceAverageCell {...props} />;\n\t}\n\n\treturn <OrgUnitAverageCell {...props} />;\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/AverageCell.tsx"],"names":[],"mappings":"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","file":"AverageCell.js","sourcesContent":["import type { CellContext } from \"@tanstack/react-table\";\nimport type {\n\tScorecardAverageCellData,\n\tScorecardTableAverageCellConfig,\n\tScorecardTableData,\n} from \"../../../schemas/config\";\nimport { DataTableCell } from \"@dhis2/ui\";\nimport { head, isEmpty } from \"lodash\";\nimport { useScorecardConfig } from \"../../ConfigProvider\";\nimport { useMemo } from \"react\";\nimport {\n\tgetLegend,\n\tgetTextColorFromBackgroundColor,\n} from \"../../../utils/legends\";\nimport { LinkedCell } from \"./LinkedCell\";\nimport {\n\tuseDataHolderAverageCellValue,\n\tuseOrgUnitAverageCellValue,\n} from \"../../../hooks/value\";\nimport { CellLoader } from \"./CellLoader\";\nimport { useScorecardViewStateValue } from \"../../../utils/viewState\";\n\nexport function SingleAverageCell({\n\tdataSource,\n\tsize,\n}: {\n\tdataSource: ScorecardAverageCellData;\n\tsize: number;\n}) {\n\tconst config = useScorecardConfig();\n\tconst legendDefinition = useMemo(() => {\n\t\tif (!dataSource) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource,\n\t\t\tconfig: config!,\n\t\t\tvalue: dataSource.data.average,\n\t\t});\n\t}, [dataSource]);\n\n\tif (!dataSource.data.average || isNaN(dataSource.data.average)) {\n\t\treturn <DataTableCell bordered />;\n\t}\n\n\treturn (\n\t\t<DataTableCell\n\t\t\tbordered\n\t\t\tstyle={{\n\t\t\t\tbackground: legendDefinition?.color,\n\t\t\t\ttextAlign: \"center\",\n\t\t\t\tminWidth: 100,\n\t\t\t\twidth: size,\n\t\t\t\theight: 48,\n\t\t\t\tcolor: legendDefinition\n\t\t\t\t\t? getTextColorFromBackgroundColor(legendDefinition?.color)\n\t\t\t\t\t: undefined,\n\t\t\t}}\n\t\t\talign=\"center\"\n\t\t>\n\t\t\t<b>{dataSource.data.average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function LinkedAverageCell({\n\tdataSources,\n\tsize,\n}: {\n\tdataSources: Array<ScorecardAverageCellData>;\n\tsize: number;\n}) {\n\tconst [top, bottom] = dataSources ?? [];\n\tconst config = useScorecardConfig();\n\tconst topLegendDefinition = useMemo(() => {\n\t\tif (!top) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource: top,\n\t\t\tconfig: config!,\n\t\t\tvalue: top.data.average,\n\t\t});\n\t}, [top]);\n\tconst bottomLegendDefinition = useMemo(() => {\n\t\tif (!bottom) {\n\t\t\treturn;\n\t\t}\n\t\treturn getLegend({\n\t\t\tdataSource: bottom,\n\t\t\tconfig: config!,\n\t\t\tvalue: bottom.data.average,\n\t\t});\n\t}, [bottom]);\n\n\treturn (\n\t\t<LinkedCell\n\t\t\tbold\n\t\t\tsize={size}\n\t\t\ttop={{\n\t\t\t\tdataSource: {\n\t\t\t\t\t...top,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcurrent: top.data.average,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlegendDefinition: topLegendDefinition,\n\t\t\t\tvalue: top.data.average,\n\t\t\t}}\n\t\t\tbottom={{\n\t\t\t\tdataSource: {\n\t\t\t\t\t...bottom,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tcurrent: bottom.data.average,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tlegendDefinition: bottomLegendDefinition,\n\t\t\t\tvalue: bottom.data.average,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nfunction DataSourceAverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst size = props.cell.column.getSize();\n\tconst dataConfig = useMemo(() => props.getValue(), [props.getValue()]);\n\tconst { cellData: dataSources, loading } =\n\t\tuseDataHolderAverageCellValue(dataConfig);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (!isEmpty(dataSources)) {\n\t\tif (dataSources?.length === 1) {\n\t\t\treturn (\n\t\t\t\t<SingleAverageCell\n\t\t\t\t\tsize={size}\n\t\t\t\t\tdataSource={head(dataSources)!}\n\t\t\t\t/>\n\t\t\t);\n\t\t} else {\n\t\t\treturn <LinkedAverageCell size={size} dataSources={dataSources!} />;\n\t\t}\n\t}\n\n\treturn <DataTableCell bordered style={{ width: size }} />;\n}\n\nfunction OrgUnitAverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst size = props.cell.column.getSize();\n\tconst dataConfig = useMemo(() => props.getValue(), [props.getValue()]);\n\tconst { loading, average } = useOrgUnitAverageCellValue(dataConfig);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isNaN(average as number)) {\n\t\treturn (\n\t\t\t<DataTableCell\n\t\t\t\tstyle={{ width: size }}\n\t\t\t\tbordered\n\t\t\t\talign=\"center\"\n\t\t\t\tkey={props.row.id}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<DataTableCell\n\t\t\tstyle={{ width: size }}\n\t\t\tbordered\n\t\t\talign=\"center\"\n\t\t\tkey={props.row.id}\n\t\t>\n\t\t\t<b>{average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function AverageCell(\n\tprops: CellContext<ScorecardTableData, ScorecardTableAverageCellConfig>,\n) {\n\tconst showDataInRows =\n\t\tuseScorecardViewStateValue<boolean>(\"showDataInRows\");\n\n\tif (showDataInRows) {\n\t\treturn <DataSourceAverageCell {...props} />;\n\t}\n\n\treturn <OrgUnitAverageCell {...props} />;\n}\n"]}
@@ -5,7 +5,7 @@ import { useScorecardData } from '../../DataProvider';
5
5
  import { head, meanBy, isEmpty } from 'lodash';
6
6
  import { CellLoader } from './CellLoader';
7
7
  import { SingleAverageCell, LinkedAverageCell } from './AverageCell';
8
- import { useScorecardStateSelectorValue } from '../../../state';
8
+ import { useScorecardViewStateValue } from '../../../utils/viewState';
9
9
 
10
10
  function getOrgUnitAverage({
11
11
  dataSourcesConfig,
@@ -121,10 +121,7 @@ function DataFooterCell({
121
121
  column
122
122
  }) {
123
123
  const size = column.getSize();
124
- const showDataInRows = useScorecardStateSelectorValue([
125
- "options",
126
- "showDataInRows"
127
- ]);
124
+ const showDataInRows = useScorecardViewStateValue("showDataInRows");
128
125
  const dataSourceConfig = useMemo(() => {
129
126
  return table.getRowModel().rows.map(
130
127
  (row) => row.getValue(column.id)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/DataFooterCell.tsx"],"names":["average"],"mappings":"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","file":"DataFooterCell.js","sourcesContent":["import type { HeaderContext } from \"@tanstack/react-table\";\nimport type {\n\tScorecardAverageCellData,\n\tScorecardTableCellConfig,\n\tScorecardTableData,\n} from \"../../../schemas/config\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { DataTableCell } from \"@dhis2/ui\";\nimport type { AnalyticsData } from \"../../../utils/data\";\nimport { useScorecardData } from \"../../DataProvider\";\nimport { head, isEmpty, meanBy } from \"lodash\";\nimport { CellLoader } from \"./CellLoader\";\nimport { LinkedAverageCell, SingleAverageCell } from \"./AverageCell\";\nimport { useScorecardStateSelectorValue } from \"../../../state\";\n\nfunction getOrgUnitAverage({\n\tdataSourcesConfig,\n\tdata,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tdata: AnalyticsData[];\n}): ScorecardAverageCellData[] {\n\tconst dataSourceConfig = head(dataSourcesConfig)!;\n\n\treturn dataSourceConfig?.dataSources?.map((config) => {\n\t\tconst period = dataSourceConfig.currentPeriod!;\n\t\tconst dataValues = data.filter(\n\t\t\t(datum) => datum.pe === period && datum.dx === config.id,\n\t\t);\n\t\tconst average = meanBy(dataValues, (value) => parseFloat(value.value!));\n\n\t\treturn {\n\t\t\t...config,\n\t\t\tdata: {\n\t\t\t\taverage,\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction OrgUnitFooterCell({\n\tdataSourcesConfig,\n\tsize,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tsize: number;\n}) {\n\tconst { data: scorecardEngine } = useScorecardData();\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [averageValues, setAverageValues] =\n\t\tuseState<ScorecardAverageCellData[]>();\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\tconst listener = (completed: boolean) => {\n\t\t\tif (completed) {\n\t\t\t\tsetAverageValues(\n\t\t\t\t\tgetOrgUnitAverage({\n\t\t\t\t\t\tdataSourcesConfig,\n\t\t\t\t\t\tdata: scorecardEngine.data,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t};\n\t\tif (scorecardEngine.isDone) {\n\t\t\tsetAverageValues(\n\t\t\t\tgetOrgUnitAverage({\n\t\t\t\t\tdataSourcesConfig,\n\t\t\t\t\tdata: scorecardEngine.data,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\treturn scorecardEngine.addOnCompleteListener(listener);\n\t\t}\n\t}, [dataSourcesConfig]);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isEmpty(averageValues)) {\n\t\treturn <DataTableCell style={{ width: size }} bordered />;\n\t}\n\n\tif (averageValues?.length === 1) {\n\t\treturn (\n\t\t\t<SingleAverageCell size={size} dataSource={head(averageValues)!} />\n\t\t);\n\t} else {\n\t\treturn <LinkedAverageCell size={size} dataSources={averageValues!} />;\n\t}\n}\n\nfunction DataHolderFooterCell({\n\tdataSourcesConfig,\n\tsize,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tsize: number;\n}) {\n\tconst { data: scorecardEngine } = useScorecardData();\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [average, setAverage] = useState<number>();\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\tconst listener = (completed: boolean) => {\n\t\t\tif (completed) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconst orgUnitId = head(dataSourcesConfig)!;\n\t\t\t\tconst dataValues = scorecardEngine.data.filter(\n\t\t\t\t\t(datum) => datum.ou === orgUnitId.orgUnit.uid,\n\t\t\t\t);\n\t\t\t\tconst average = meanBy(dataValues, (value) =>\n\t\t\t\t\tparseFloat(value.value!),\n\t\t\t\t);\n\t\t\t\tsetAverage(average);\n\t\t\t}\n\t\t};\n\t\tif (scorecardEngine.isDone) {\n\t\t\tconst orgUnitId = head(dataSourcesConfig)!;\n\t\t\tconst dataValues = scorecardEngine.data.filter(\n\t\t\t\t(datum) => datum.ou === orgUnitId.orgUnit.uid,\n\t\t\t);\n\t\t\tconst average = meanBy(dataValues, (value) =>\n\t\t\t\tparseFloat(value.value!),\n\t\t\t);\n\t\t\tsetAverage(average);\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\treturn scorecardEngine.addOnCompleteListener(listener);\n\t\t}\n\t}, [dataSourcesConfig]);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isNaN(average as number)) {\n\t\treturn (\n\t\t\t<DataTableCell style={{ width: size }} bordered align=\"center\" />\n\t\t);\n\t}\n\treturn (\n\t\t<DataTableCell style={{ width: size }} bordered align=\"center\">\n\t\t\t<b>{average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function DataFooterCell({\n\ttable,\n\tcolumn,\n}: HeaderContext<ScorecardTableData, ScorecardTableCellConfig>) {\n\tconst size = column.getSize();\n\tconst showDataInRows = useScorecardStateSelectorValue<boolean>([\n\t\t\"options\",\n\t\t\"showDataInRows\",\n\t]);\n\tconst dataSourceConfig = useMemo(() => {\n\t\treturn table\n\t\t\t.getRowModel()\n\t\t\t.rows.map((row) =>\n\t\t\t\trow.getValue(column.id),\n\t\t\t) as ScorecardTableCellConfig[];\n\t}, [table.getRowModel().rows]);\n\n\tif (showDataInRows) {\n\t\treturn (\n\t\t\t<DataHolderFooterCell\n\t\t\t\tsize={size}\n\t\t\t\tdataSourcesConfig={dataSourceConfig}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<OrgUnitFooterCell size={size} dataSourcesConfig={dataSourceConfig} />\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/DataFooterCell.tsx"],"names":["average"],"mappings":"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","file":"DataFooterCell.js","sourcesContent":["import type { HeaderContext } from \"@tanstack/react-table\";\nimport type {\n\tScorecardAverageCellData,\n\tScorecardTableCellConfig,\n\tScorecardTableData,\n} from \"../../../schemas/config\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { DataTableCell } from \"@dhis2/ui\";\nimport type { AnalyticsData } from \"../../../utils/data\";\nimport { useScorecardData } from \"../../DataProvider\";\nimport { head, isEmpty, meanBy } from \"lodash\";\nimport { CellLoader } from \"./CellLoader\";\nimport { LinkedAverageCell, SingleAverageCell } from \"./AverageCell\";\nimport { useScorecardViewStateValue } from \"../../../utils/viewState\";\n\nfunction getOrgUnitAverage({\n\tdataSourcesConfig,\n\tdata,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tdata: AnalyticsData[];\n}): ScorecardAverageCellData[] {\n\tconst dataSourceConfig = head(dataSourcesConfig)!;\n\n\treturn dataSourceConfig?.dataSources?.map((config) => {\n\t\tconst period = dataSourceConfig.currentPeriod!;\n\t\tconst dataValues = data.filter(\n\t\t\t(datum) => datum.pe === period && datum.dx === config.id,\n\t\t);\n\t\tconst average = meanBy(dataValues, (value) => parseFloat(value.value!));\n\n\t\treturn {\n\t\t\t...config,\n\t\t\tdata: {\n\t\t\t\taverage,\n\t\t\t},\n\t\t};\n\t});\n}\n\nfunction OrgUnitFooterCell({\n\tdataSourcesConfig,\n\tsize,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tsize: number;\n}) {\n\tconst { data: scorecardEngine } = useScorecardData();\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [averageValues, setAverageValues] =\n\t\tuseState<ScorecardAverageCellData[]>();\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\tconst listener = (completed: boolean) => {\n\t\t\tif (completed) {\n\t\t\t\tsetAverageValues(\n\t\t\t\t\tgetOrgUnitAverage({\n\t\t\t\t\t\tdataSourcesConfig,\n\t\t\t\t\t\tdata: scorecardEngine.data,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tsetLoading(false);\n\t\t\t}\n\t\t};\n\t\tif (scorecardEngine.isDone) {\n\t\t\tsetAverageValues(\n\t\t\t\tgetOrgUnitAverage({\n\t\t\t\t\tdataSourcesConfig,\n\t\t\t\t\tdata: scorecardEngine.data,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\treturn scorecardEngine.addOnCompleteListener(listener);\n\t\t}\n\t}, [dataSourcesConfig]);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isEmpty(averageValues)) {\n\t\treturn <DataTableCell style={{ width: size }} bordered />;\n\t}\n\n\tif (averageValues?.length === 1) {\n\t\treturn (\n\t\t\t<SingleAverageCell size={size} dataSource={head(averageValues)!} />\n\t\t);\n\t} else {\n\t\treturn <LinkedAverageCell size={size} dataSources={averageValues!} />;\n\t}\n}\n\nfunction DataHolderFooterCell({\n\tdataSourcesConfig,\n\tsize,\n}: {\n\tdataSourcesConfig: ScorecardTableCellConfig[];\n\tsize: number;\n}) {\n\tconst { data: scorecardEngine } = useScorecardData();\n\tconst [loading, setLoading] = useState<boolean>(false);\n\tconst [average, setAverage] = useState<number>();\n\n\tuseEffect(() => {\n\t\tsetLoading(true);\n\t\tconst listener = (completed: boolean) => {\n\t\t\tif (completed) {\n\t\t\t\tsetLoading(false);\n\t\t\t\tconst orgUnitId = head(dataSourcesConfig)!;\n\t\t\t\tconst dataValues = scorecardEngine.data.filter(\n\t\t\t\t\t(datum) => datum.ou === orgUnitId.orgUnit.uid,\n\t\t\t\t);\n\t\t\t\tconst average = meanBy(dataValues, (value) =>\n\t\t\t\t\tparseFloat(value.value!),\n\t\t\t\t);\n\t\t\t\tsetAverage(average);\n\t\t\t}\n\t\t};\n\t\tif (scorecardEngine.isDone) {\n\t\t\tconst orgUnitId = head(dataSourcesConfig)!;\n\t\t\tconst dataValues = scorecardEngine.data.filter(\n\t\t\t\t(datum) => datum.ou === orgUnitId.orgUnit.uid,\n\t\t\t);\n\t\t\tconst average = meanBy(dataValues, (value) =>\n\t\t\t\tparseFloat(value.value!),\n\t\t\t);\n\t\t\tsetAverage(average);\n\t\t\tsetLoading(false);\n\t\t} else {\n\t\t\treturn scorecardEngine.addOnCompleteListener(listener);\n\t\t}\n\t}, [dataSourcesConfig]);\n\n\tif (loading) {\n\t\treturn <CellLoader size={size} />;\n\t}\n\n\tif (isNaN(average as number)) {\n\t\treturn (\n\t\t\t<DataTableCell style={{ width: size }} bordered align=\"center\" />\n\t\t);\n\t}\n\treturn (\n\t\t<DataTableCell style={{ width: size }} bordered align=\"center\">\n\t\t\t<b>{average?.toFixed(2).toString()}</b>\n\t\t</DataTableCell>\n\t);\n}\n\nexport function DataFooterCell({\n\ttable,\n\tcolumn,\n}: HeaderContext<ScorecardTableData, ScorecardTableCellConfig>) {\n\tconst size = column.getSize();\n\tconst showDataInRows =\n\t\tuseScorecardViewStateValue<boolean>(\"showDataInRows\");\n\tconst dataSourceConfig = useMemo(() => {\n\t\treturn table\n\t\t\t.getRowModel()\n\t\t\t.rows.map((row) =>\n\t\t\t\trow.getValue(column.id),\n\t\t\t) as ScorecardTableCellConfig[];\n\t}, [table.getRowModel().rows]);\n\n\tif (showDataInRows) {\n\t\treturn (\n\t\t\t<DataHolderFooterCell\n\t\t\t\tsize={size}\n\t\t\t\tdataSourcesConfig={dataSourceConfig}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<OrgUnitFooterCell size={size} dataSourcesConfig={dataSourceConfig} />\n\t);\n}\n"]}
@@ -1,17 +1,14 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { IconArrowDown16, IconArrowUp16 } from '@dhis2/ui';
3
3
  import { memo, useMemo } from 'react';
4
- import { useScorecardStateSelectorValue } from '../../../state';
4
+ import { useScorecardViewStateValue } from '../../../utils/viewState';
5
5
 
6
6
  const DataValue = memo(function DataValue2({
7
7
  dataSource,
8
8
  value,
9
9
  bold
10
10
  }) {
11
- const showArrows = useScorecardStateSelectorValue([
12
- "options",
13
- "arrows"
14
- ]);
11
+ const showArrows = useScorecardViewStateValue("arrows");
15
12
  const currentValue = dataSource.data.current;
16
13
  const previousValue = dataSource.data.previous;
17
14
  const showArrow = useMemo(() => {
@@ -30,8 +27,8 @@ const DataValue = memo(function DataValue2({
30
27
  return;
31
28
  }
32
29
  return currentValue > previousValue ? "increasing" : "decreasing";
33
- }, [currentValue, dataSource.effectiveGap, showArrows]);
34
- if (value) {
30
+ }, [currentValue, dataSource.effectiveGap, showArrows, previousValue]);
31
+ if (value && !dataSource.data.current) {
35
32
  if (isNaN(value)) {
36
33
  return "";
37
34
  }
@@ -60,7 +57,7 @@ const DataValue = memo(function DataValue2({
60
57
  children: [
61
58
  showArrow === "decreasing" && /* @__PURE__ */ jsx(IconArrowDown16, {}),
62
59
  showArrow === "increasing" && /* @__PURE__ */ jsx(IconArrowUp16, {}),
63
- currentValue?.toFixed(2).toString() ?? ""
60
+ bold ? /* @__PURE__ */ jsx("b", { children: currentValue?.toFixed(2).toString() ?? "" }) : currentValue?.toFixed(2).toString() ?? ""
64
61
  ]
65
62
  }
66
63
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/DataValue.tsx"],"names":["DataValue"],"mappings":";;;;;AAKa,MAAA,SAAA,GAAY,IAAK,CAAA,SAASA,UAAU,CAAA;AAAA,EAChD,UAAA;AAAA,EACA,KAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAA,MAAM,aAAa,8BAAwC,CAAA;AAAA,IAC1D,SAAA;AAAA,IACA;AAAA,GACA,CAAA;AACD,EAAM,MAAA,YAAA,GAAe,WAAW,IAAK,CAAA,OAAA;AACrC,EAAM,MAAA,aAAA,GAAgB,WAAW,IAAK,CAAA,QAAA;AACtC,EAAM,MAAA,SAAA,GAAqD,QAAQ,MAAM;AACxE,IAAA,IAAI,CAAC,UAAY,EAAA;AAChB,MAAA;AAAA;AAGD,IAAI,IAAA,CAAC,aAAiB,IAAA,CAAC,YAAc,EAAA;AACpC,MAAA;AAAA;AAGD,IAAA,MAAM,eAAe,UAAW,CAAA,YAAA;AAChC,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,aAAA,GAAgB,YAAY,CAAA;AACjD,IAAA,IAAI,MAAM,YAAc,EAAA;AACvB,MAAA;AAAA;AAGD,IAAA,IAAI,kBAAkB,YAAc,EAAA;AACnC,MAAA;AAAA;AAGD,IAAO,OAAA,YAAA,GAAe,gBAAgB,YAAe,GAAA,YAAA;AAAA,KACnD,CAAC,YAAA,EAAc,UAAW,CAAA,YAAA,EAAc,UAAU,CAAC,CAAA;AAEtD,EAAA,IAAI,KAAO,EAAA;AACV,IAAI,IAAA,KAAA,CAAM,KAAe,CAAG,EAAA;AAC3B,MAAO,OAAA,EAAA;AAAA;AAER,IACC,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACN,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,cAAgB,EAAA,QAAA;AAAA,UAChB,GAAK,EAAA;AAAA,SACN;AAAA,QAEC,iCACC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,CAAQ,CAAC,CAAE,CAAA,QAAA,EAAc,IAAA,EAAA,EAAG,IAEvC,KAAO,EAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAc,IAAA;AAAA;AAAA,KAElC;AAAA;AAIF,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA,QAAA;AAAA,QAChB,GAAK,EAAA;AAAA,OACN;AAAA,MAEC,QAAA,EAAA;AAAA,QAAc,SAAA,KAAA,YAAA,wBAAiB,eAAgB,EAAA,EAAA,CAAA;AAAA,QAC/C,SAAA,KAAc,YAAgB,oBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,QAC7C,YAAc,EAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAc,IAAA;AAAA;AAAA;AAAA,GACzC;AAEF,CAAC","file":"DataValue.js","sourcesContent":["import { IconArrowDown16, IconArrowUp16 } from \"@dhis2/ui\";\nimport { memo, useMemo } from \"react\";\nimport type { ScorecardCellData } from \"../../../schemas/config\";\nimport { useScorecardStateSelectorValue } from \"../../../state\";\n\nexport const DataValue = memo(function DataValue({\n\tdataSource,\n\tvalue,\n\tbold,\n}: {\n\tdataSource: ScorecardCellData;\n\tvalue?: number;\n\tbold?: boolean;\n}) {\n\tconst showArrows = useScorecardStateSelectorValue<boolean>([\n\t\t\"options\",\n\t\t\"arrows\",\n\t]);\n\tconst currentValue = dataSource.data.current;\n\tconst previousValue = dataSource.data.previous;\n\tconst showArrow: \"decreasing\" | \"increasing\" | undefined = useMemo(() => {\n\t\tif (!showArrows) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!previousValue || !currentValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst effectiveGap = dataSource.effectiveGap;\n\t\tconst gap = Math.abs(previousValue - currentValue);\n\t\tif (gap < effectiveGap) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (previousValue === currentValue) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn currentValue > previousValue ? \"increasing\" : \"decreasing\";\n\t}, [currentValue, dataSource.effectiveGap, showArrows]);\n\n\tif (value) {\n\t\tif (isNaN(value as number)) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\tgap: 4,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{bold ? (\n\t\t\t\t\t<b>{value?.toFixed(2).toString() ?? \"\"}</b>\n\t\t\t\t) : (\n\t\t\t\t\tvalue?.toFixed(2).toString() ?? \"\"\n\t\t\t\t)}\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: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tgap: 2,\n\t\t\t}}\n\t\t>\n\t\t\t{showArrow === \"decreasing\" && <IconArrowDown16 />}\n\t\t\t{showArrow === \"increasing\" && <IconArrowUp16 />}\n\t\t\t{currentValue?.toFixed(2).toString() ?? \"\"}\n\t\t</div>\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/DataValue.tsx"],"names":["DataValue"],"mappings":";;;;;AAKa,MAAA,SAAA,GAAY,IAAK,CAAA,SAASA,UAAU,CAAA;AAAA,EAChD,UAAA;AAAA,EACA,KAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAM,MAAA,UAAA,GAAa,2BAAoC,QAAQ,CAAA;AAC/D,EAAM,MAAA,YAAA,GAAe,WAAW,IAAK,CAAA,OAAA;AACrC,EAAM,MAAA,aAAA,GAAgB,WAAW,IAAK,CAAA,QAAA;AACtC,EAAM,MAAA,SAAA,GAAqD,QAAQ,MAAM;AACxE,IAAA,IAAI,CAAC,UAAY,EAAA;AAChB,MAAA;AAAA;AAGD,IAAI,IAAA,CAAC,aAAiB,IAAA,CAAC,YAAc,EAAA;AACpC,MAAA;AAAA;AAGD,IAAA,MAAM,eAAe,UAAW,CAAA,YAAA;AAChC,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,aAAA,GAAgB,YAAY,CAAA;AACjD,IAAA,IAAI,MAAM,YAAc,EAAA;AACvB,MAAA;AAAA;AAGD,IAAA,IAAI,kBAAkB,YAAc,EAAA;AACnC,MAAA;AAAA;AAGD,IAAO,OAAA,YAAA,GAAe,gBAAgB,YAAe,GAAA,YAAA;AAAA,KACnD,CAAC,YAAA,EAAc,WAAW,YAAc,EAAA,UAAA,EAAY,aAAa,CAAC,CAAA;AAErE,EAAA,IAAI,KAAS,IAAA,CAAC,UAAW,CAAA,IAAA,CAAK,OAAS,EAAA;AACtC,IAAI,IAAA,KAAA,CAAM,KAAe,CAAG,EAAA;AAC3B,MAAO,OAAA,EAAA;AAAA;AAER,IACC,uBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACN,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,QAAA;AAAA,UACZ,cAAgB,EAAA,QAAA;AAAA,UAChB,GAAK,EAAA;AAAA,SACN;AAAA,QAEC,iCACC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAO,EAAA,KAAA,EAAA,OAAA,CAAQ,CAAC,CAAE,CAAA,QAAA,EAAc,IAAA,EAAA,EAAG,IAEtC,KAAO,EAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAc,IAAA;AAAA;AAAA,KAEnC;AAAA;AAIF,EACC,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,OAAS,EAAA,MAAA;AAAA,QACT,UAAY,EAAA,QAAA;AAAA,QACZ,cAAgB,EAAA,QAAA;AAAA,QAChB,GAAK,EAAA;AAAA,OACN;AAAA,MAEC,QAAA,EAAA;AAAA,QAAc,SAAA,KAAA,YAAA,wBAAiB,eAAgB,EAAA,EAAA,CAAA;AAAA,QAC/C,SAAA,KAAc,YAAgB,oBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,QAC7C,uBACC,GAAA,CAAA,GAAA,EAAA,EAAG,QAAc,EAAA,YAAA,EAAA,OAAA,CAAQ,CAAC,CAAE,CAAA,QAAA,EAAc,IAAA,EAAA,EAAG,IAE7C,YAAc,EAAA,OAAA,CAAQ,CAAC,CAAA,CAAE,UAAc,IAAA;AAAA;AAAA;AAAA,GAE1C;AAEF,CAAC","file":"DataValue.js","sourcesContent":["import { IconArrowDown16, IconArrowUp16 } from \"@dhis2/ui\";\nimport { memo, useMemo } from \"react\";\nimport type { ScorecardCellData } from \"../../../schemas/config\";\nimport { useScorecardViewStateValue } from \"../../../utils/viewState\";\n\nexport const DataValue = memo(function DataValue({\n\tdataSource,\n\tvalue,\n\tbold,\n}: {\n\tdataSource: ScorecardCellData;\n\tvalue?: number;\n\tbold?: boolean;\n}) {\n\tconst showArrows = useScorecardViewStateValue<boolean>(\"arrows\");\n\tconst currentValue = dataSource.data.current;\n\tconst previousValue = dataSource.data.previous;\n\tconst showArrow: \"decreasing\" | \"increasing\" | undefined = useMemo(() => {\n\t\tif (!showArrows) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!previousValue || !currentValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst effectiveGap = dataSource.effectiveGap;\n\t\tconst gap = Math.abs(previousValue - currentValue);\n\t\tif (gap < effectiveGap) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (previousValue === currentValue) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn currentValue > previousValue ? \"increasing\" : \"decreasing\";\n\t}, [currentValue, dataSource.effectiveGap, showArrows, previousValue]);\n\n\tif (value && !dataSource.data.current) {\n\t\tif (isNaN(value as number)) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn (\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\talignItems: \"center\",\n\t\t\t\t\tjustifyContent: \"center\",\n\t\t\t\t\tgap: 4,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{bold ? (\n\t\t\t\t\t<b>{value?.toFixed(2).toString() ?? \"\"}</b>\n\t\t\t\t) : (\n\t\t\t\t\t(value?.toFixed(2).toString() ?? \"\")\n\t\t\t\t)}\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: \"flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tgap: 2,\n\t\t\t}}\n\t\t>\n\t\t\t{showArrow === \"decreasing\" && <IconArrowDown16 />}\n\t\t\t{showArrow === \"increasing\" && <IconArrowUp16 />}\n\t\t\t{bold ? (\n\t\t\t\t<b>{currentValue?.toFixed(2).toString() ?? \"\"}</b>\n\t\t\t) : (\n\t\t\t\t(currentValue?.toFixed(2).toString() ?? \"\")\n\t\t\t)}\n\t\t</div>\n\t);\n});\n"]}
@@ -4,18 +4,20 @@ import { useMemo } from 'react';
4
4
  import { getOrgUnitLevel } from '../../../utils/orgUnits';
5
5
  import { ScorecardContext } from '../../ScorecardContext';
6
6
  import { CircularLoader } from '@dhis2/ui';
7
- import { useScorecardStateValue } from '../../../state';
8
7
  import { TableStateProvider } from '../../TableStateProvider';
9
8
  import { ScorecardTable } from '../ScorecardTable';
10
9
  import { ScorecardDataProvider } from '../../DataProvider';
11
10
  import { ScorecardStateProvider } from '../../StateProvider';
11
+ import { usePeriodSelectionValue } from '../../../utils/dimensionState';
12
+ import { useScorecardViewOptions } from '../../../utils/viewState';
12
13
 
13
14
  function ExpandedScorecardTable({
14
15
  orgUnit,
15
16
  pending
16
17
  }) {
17
18
  const config = useScorecardConfig();
18
- const state = useScorecardStateValue();
19
+ const periodSelection = usePeriodSelectionValue();
20
+ const options = useScorecardViewOptions();
19
21
  const orgUnitSelection = useMemo(() => {
20
22
  const orgUnitId = orgUnit.uid;
21
23
  const level = getOrgUnitLevel(orgUnit) + 1;
@@ -59,9 +61,9 @@ function ExpandedScorecardTable({
59
61
  ...config,
60
62
  orgUnitSelection
61
63
  },
62
- withRecoilRoot: true,
63
64
  initialState: {
64
- ...state,
65
+ ...options,
66
+ periodSelection,
65
67
  orgUnitSelection
66
68
  },
67
69
  children: /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/ExpandedScorecardTable.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAaO,SAAS,sBAAuB,CAAA;AAAA,EACtC,OAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAA,MAAM,QAAQ,sBAAuB,EAAA;AAErC,EAAM,MAAA,gBAAA,GAAqC,QAAQ,MAAM;AACxD,IAAA,MAAM,YAAY,OAAQ,CAAA,GAAA;AAC1B,IAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,OAAO,CAAI,GAAA,CAAA;AAEzC,IAAO,OAAA;AAAA,MACN,QAAU,EAAA;AAAA,QACT;AAAA,UACC,EAAI,EAAA;AAAA;AACL,OACD;AAAA,MACA,MAAQ,EAAA,CAAC,KAAM,CAAA,QAAA,EAAU,CAAA;AAAA,MACzB,QAAQ;AAAC,KACV;AAAA,GACD,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,MAAQ,EAAA,MAAA;AAAA,QACR,KAAO,EAAA,MAAA;AAAA,QACP,SAAW,EAAA,GAAA;AAAA,QACX,OAAS,EAAA;AAAA,OACV;AAAA,MAEC,QACA,EAAA,OAAA,mBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,KAAO,EAAA;AAAA,YACN,MAAQ,EAAA,MAAA;AAAA,YACR,KAAO,EAAA,MAAA;AAAA,YACP,SAAW,EAAA,GAAA;AAAA,YACX,OAAS,EAAA;AAAA,WACV;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,KAAA,EAAK,IAAC,EAAA;AAAA;AAAA,OAGvB,mBAAA,GAAA;AAAA,QAAC,sBAAA;AAAA,QAAA;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,GAAG,MAAA;AAAA,YACH;AAAA,WACD;AAAA,UACA,cAAc,EAAA,IAAA;AAAA,UACd,YACC,EAAA;AAAA,YACC,GAAG,KAAA;AAAA,YACH;AAAA,WACD;AAAA,UAGD,QAAA,kBAAA,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEA,MAAQ,EAAA;AAAA,gBACP,GAAG,MAAA;AAAA,gBACH;AAAA,eACD;AAAA,cAEA,QAAA,kBAAA,GAAA,CAAC,qBACA,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,kBACA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACA,YAAa,EAAA,MAAA;AAAA,kBACb,WAAY,EAAA,MAAA;AAAA,kBACZ,KAAM,EAAA;AAAA;AAAA,iBAER,CACD,EAAA;AAAA,aAAA;AAAA,YAdK,CAAA,EAAG,QAAQ,GAAG,CAAA,SAAA;AAAA;AAepB;AAAA;AACD;AAAA,GAEF;AAEF","file":"ExpandedScorecardTable.js","sourcesContent":["import { useScorecardConfig } from \"../../ConfigProvider\";\nimport type { ItemMeta } from \"../../../hooks/metadata\";\nimport { useMemo } from \"react\";\nimport { getOrgUnitLevel } from \"../../../utils/orgUnits\";\nimport type { OrgUnitSelection, ScorecardState } from \"../../../schemas/config\";\nimport { ScorecardContext } from \"../../ScorecardContext\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport { useScorecardStateValue } from \"../../../state\";\nimport { TableStateProvider } from \"../../TableStateProvider\";\nimport { ScorecardTable } from \"../ScorecardTable\";\nimport { ScorecardDataProvider } from \"../../DataProvider\";\nimport { ScorecardStateProvider } from \"../../StateProvider\";\n\nexport function ExpandedScorecardTable({\n\torgUnit,\n\tpending,\n}: {\n\torgUnit: ItemMeta & { hierarchy: string };\n\tpending: boolean;\n}) {\n\tconst config = useScorecardConfig();\n\tconst state = useScorecardStateValue();\n\n\tconst orgUnitSelection: OrgUnitSelection = useMemo(() => {\n\t\tconst orgUnitId = orgUnit.uid;\n\t\tconst level = getOrgUnitLevel(orgUnit) + 1;\n\n\t\treturn {\n\t\t\torgUnits: [\n\t\t\t\t{\n\t\t\t\t\tid: orgUnitId,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlevels: [level.toString()],\n\t\t\tgroups: [],\n\t\t};\n\t}, [orgUnit]);\n\n\tif (!config) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\theight: \"100%\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tminHeight: 500,\n\t\t\t\tpadding: 32,\n\t\t\t}}\n\t\t>\n\t\t\t{pending ? (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\tminHeight: 500,\n\t\t\t\t\t\tpadding: 32,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<ScorecardStateProvider\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\t...config,\n\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t}}\n\t\t\t\t\twithRecoilRoot\n\t\t\t\t\tinitialState={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t\t} as ScorecardState\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ScorecardContext\n\t\t\t\t\t\tkey={`${orgUnit.uid}-expanded`}\n\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t...config,\n\t\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ScorecardDataProvider>\n\t\t\t\t\t\t\t<TableStateProvider>\n\t\t\t\t\t\t\t\t<ScorecardTable\n\t\t\t\t\t\t\t\t\tscrollHeight=\"100%\"\n\t\t\t\t\t\t\t\t\tscrollWidth=\"100%\"\n\t\t\t\t\t\t\t\t\twidth=\"auto\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TableStateProvider>\n\t\t\t\t\t\t</ScorecardDataProvider>\n\t\t\t\t\t</ScorecardContext>\n\t\t\t\t</ScorecardStateProvider>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/ExpandedScorecardTable.tsx"],"names":[],"mappings":";;;;;;;;;;;;;AAcO,SAAS,sBAAuB,CAAA;AAAA,EACtC,OAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,MAAM,SAAS,kBAAmB,EAAA;AAClC,EAAA,MAAM,kBAAkB,uBAAwB,EAAA;AAChD,EAAA,MAAM,UAAU,uBAAwB,EAAA;AACxC,EAAM,MAAA,gBAAA,GAAqC,QAAQ,MAAM;AACxD,IAAA,MAAM,YAAY,OAAQ,CAAA,GAAA;AAC1B,IAAM,MAAA,KAAA,GAAQ,eAAgB,CAAA,OAAO,CAAI,GAAA,CAAA;AAEzC,IAAO,OAAA;AAAA,MACN,QAAU,EAAA;AAAA,QACT;AAAA,UACC,EAAI,EAAA;AAAA;AACL,OACD;AAAA,MACA,MAAQ,EAAA,CAAC,KAAM,CAAA,QAAA,EAAU,CAAA;AAAA,MACzB,QAAQ;AAAC,KACV;AAAA,GACD,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,CAAC,MAAQ,EAAA;AACZ,IAAO,OAAA,IAAA;AAAA;AAGR,EACC,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,MAAQ,EAAA,MAAA;AAAA,QACR,KAAO,EAAA,MAAA;AAAA,QACP,SAAW,EAAA,GAAA;AAAA,QACX,OAAS,EAAA;AAAA,OACV;AAAA,MAEC,QACA,EAAA,OAAA,mBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACA,KAAO,EAAA;AAAA,YACN,MAAQ,EAAA,MAAA;AAAA,YACR,KAAO,EAAA,MAAA;AAAA,YACP,SAAW,EAAA,GAAA;AAAA,YACX,OAAS,EAAA;AAAA,WACV;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,KAAA,EAAK,IAAC,EAAA;AAAA;AAAA,OAGvB,mBAAA,GAAA;AAAA,QAAC,sBAAA;AAAA,QAAA;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,GAAG,MAAA;AAAA,YACH;AAAA,WACD;AAAA,UACA,YACC,EAAA;AAAA,YACC,GAAG,OAAA;AAAA,YACH,eAAA;AAAA,YACA;AAAA,WACD;AAAA,UAGD,QAAA,kBAAA,GAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEA,MAAQ,EAAA;AAAA,gBACP,GAAG,MAAA;AAAA,gBACH;AAAA,eACD;AAAA,cAEA,QAAA,kBAAA,GAAA,CAAC,qBACA,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,kBACA,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,cAAA;AAAA,gBAAA;AAAA,kBACA,YAAa,EAAA,MAAA;AAAA,kBACb,WAAY,EAAA,MAAA;AAAA,kBACZ,KAAM,EAAA;AAAA;AAAA,iBAER,CACD,EAAA;AAAA,aAAA;AAAA,YAdK,CAAA,EAAG,QAAQ,GAAG,CAAA,SAAA;AAAA;AAepB;AAAA;AACD;AAAA,GAEF;AAEF","file":"ExpandedScorecardTable.js","sourcesContent":["import { useScorecardConfig } from \"../../ConfigProvider\";\nimport type { ItemMeta } from \"../../../hooks/metadata\";\nimport { useMemo } from \"react\";\nimport { getOrgUnitLevel } from \"../../../utils/orgUnits\";\nimport type { OrgUnitSelection, ScorecardState } from \"../../../schemas/config\";\nimport { ScorecardContext } from \"../../ScorecardContext\";\nimport { CircularLoader } from \"@dhis2/ui\";\nimport { TableStateProvider } from \"../../TableStateProvider\";\nimport { ScorecardTable } from \"../ScorecardTable\";\nimport { ScorecardDataProvider } from \"../../DataProvider\";\nimport { ScorecardStateProvider } from \"../../StateProvider\";\nimport { usePeriodSelectionValue } from \"../../../utils/dimensionState\";\nimport { useScorecardViewOptions } from \"../../../utils/viewState\";\n\nexport function ExpandedScorecardTable({\n\torgUnit,\n\tpending,\n}: {\n\torgUnit: ItemMeta & { hierarchy: string };\n\tpending: boolean;\n}) {\n\tconst config = useScorecardConfig();\n\tconst periodSelection = usePeriodSelectionValue();\n\tconst options = useScorecardViewOptions();\n\tconst orgUnitSelection: OrgUnitSelection = useMemo(() => {\n\t\tconst orgUnitId = orgUnit.uid;\n\t\tconst level = getOrgUnitLevel(orgUnit) + 1;\n\n\t\treturn {\n\t\t\torgUnits: [\n\t\t\t\t{\n\t\t\t\t\tid: orgUnitId,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlevels: [level.toString()],\n\t\t\tgroups: [],\n\t\t};\n\t}, [orgUnit]);\n\n\tif (!config) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\theight: \"100%\",\n\t\t\t\twidth: \"100%\",\n\t\t\t\tminHeight: 500,\n\t\t\t\tpadding: 32,\n\t\t\t}}\n\t\t>\n\t\t\t{pending ? (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\tminHeight: 500,\n\t\t\t\t\t\tpadding: 32,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<CircularLoader small />\n\t\t\t\t</div>\n\t\t\t) : (\n\t\t\t\t<ScorecardStateProvider\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\t...config,\n\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t}}\n\t\t\t\t\tinitialState={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\tperiodSelection,\n\t\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t\t} as ScorecardState\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ScorecardContext\n\t\t\t\t\t\tkey={`${orgUnit.uid}-expanded`}\n\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t...config,\n\t\t\t\t\t\t\torgUnitSelection,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ScorecardDataProvider>\n\t\t\t\t\t\t\t<TableStateProvider>\n\t\t\t\t\t\t\t\t<ScorecardTable\n\t\t\t\t\t\t\t\t\tscrollHeight=\"100%\"\n\t\t\t\t\t\t\t\t\tscrollWidth=\"100%\"\n\t\t\t\t\t\t\t\t\twidth=\"auto\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TableStateProvider>\n\t\t\t\t\t\t</ScorecardDataProvider>\n\t\t\t\t\t</ScorecardContext>\n\t\t\t\t</ScorecardStateProvider>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"]}
@@ -70,8 +70,8 @@ function LinkedCellComponent({
70
70
  children: topDataSource && /* @__PURE__ */ jsx(
71
71
  DataValue,
72
72
  {
73
- bold,
74
73
  value: topValue,
74
+ bold,
75
75
  dataSource: topDataSource
76
76
  }
77
77
  )
@@ -93,8 +93,8 @@ function LinkedCellComponent({
93
93
  children: bottomDataSource && /* @__PURE__ */ jsx(
94
94
  DataValue,
95
95
  {
96
- bold,
97
96
  value: bottomValue,
97
+ bold,
98
98
  dataSource: bottomDataSource
99
99
  }
100
100
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/LinkedCell.tsx"],"names":[],"mappings":"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","file":"LinkedCell.js","sourcesContent":["import { colors, DataTableCell } from \"@dhis2/ui\";\nimport { getTextColorFromBackgroundColor } from \"../../../utils/legends\";\nimport { DataValue } from \"./DataValue\";\nimport { useResizeObserver } from \"usehooks-ts\";\nimport React, { useMemo, useRef } from \"react\";\nimport type {\n\tLegendDefinition,\n\tScorecardCellData,\n} from \"../../../schemas/config\";\n\nexport interface LinkedCellProps {\n\ttop: {\n\t\tdataSource: ScorecardCellData;\n\t\tlegendDefinition?: LegendDefinition;\n\t\tvalue?: number;\n\t};\n\tbottom: {\n\t\tdataSource: ScorecardCellData;\n\t\tlegendDefinition?: LegendDefinition;\n\t\tvalue?: number;\n\t};\n\tsize: number;\n\tbold?: boolean;\n\n\t[key: string]: unknown;\n}\n\nfunction LinkedCellComponent({\n\ttop,\n\tbottom,\n\tsize,\n\tbold,\n\t...props\n}: LinkedCellProps) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst { height, width } = useResizeObserver<HTMLDivElement>({\n\t\tref: ref,\n\t});\n\n\tconst {\n\t\tlegendDefinition: topLegendDefinition,\n\t\tdataSource: topDataSource,\n\t\tvalue: topValue,\n\t} = top;\n\tconst {\n\t\tlegendDefinition: bottomLegendDefinition,\n\t\tdataSource: bottomDataSource,\n\t\tvalue: bottomValue,\n\t} = bottom;\n\n\tconst angle = useMemo(() => {\n\t\tif (!height || !width) {\n\t\t\treturn Math.tan(Math.PI / 2);\n\t\t}\n\t\treturn Math.tan(height / width);\n\t}, [height, width]);\n\n\treturn (\n\t\t<DataTableCell\n\t\t\t{...props}\n\t\t\t/*\n // @ts-ignore */\n\t\t\tref={ref}\n\t\t\tstyle={{\n\t\t\t\tpadding: 8,\n\t\t\t\twidth: size,\n\t\t\t\tminWidth: 120,\n\t\t\t\tbackground: `linear-gradient(-${angle}rad, ${\n\t\t\t\t\tbottomLegendDefinition?.color ?? colors.white\n\t\t\t\t} 0%, ${bottomLegendDefinition?.color ?? colors.white} 49%, ${\n\t\t\t\t\tcolors.white\n\t\t\t\t} 49%, ${colors.white} 50%, ${\n\t\t\t\t\ttopLegendDefinition?.color ?? colors.white\n\t\t\t\t} 50%, ${topLegendDefinition?.color ?? colors.white} 100%)`,\n\t\t\t}}\n\t\t\tbordered\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\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\",\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\tstyle={{\n\t\t\t\t\t\tbackground: \"inherit\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\talignItems: \"flex-start\",\n\t\t\t\t\t\tjustifyContent: \"flex-start\",\n\t\t\t\t\t\tcolor: topLegendDefinition\n\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\ttopLegendDefinition?.color ?? \"#FFFFFF\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{topDataSource && (\n\t\t\t\t\t\t<DataValue\n\t\t\t\t\t\t\tbold={bold}\n\t\t\t\t\t\t\tvalue={topValue}\n\t\t\t\t\t\t\tdataSource={topDataSource}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackground: \"inherit\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tjustifyContent: \"flex-end\",\n\t\t\t\t\t\tcolor: bottomLegendDefinition\n\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\tbottomLegendDefinition?.color ?? \"#FFFFFF\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{bottomDataSource && (\n\t\t\t\t\t\t<DataValue\n\t\t\t\t\t\t\tbold={bold}\n\t\t\t\t\t\t\tvalue={bottomValue}\n\t\t\t\t\t\t\tdataSource={bottomDataSource}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</DataTableCell>\n\t);\n}\n\nexport const LinkedCell = React.memo(LinkedCellComponent, (prev, next) => {\n\treturn (\n\t\tprev.top.value === next.top.value &&\n\t\tprev.bottom.value === next.bottom.value\n\t);\n});\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/LinkedCell.tsx"],"names":[],"mappings":"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","file":"LinkedCell.js","sourcesContent":["import { colors, DataTableCell } from \"@dhis2/ui\";\nimport { getTextColorFromBackgroundColor } from \"../../../utils/legends\";\nimport { DataValue } from \"./DataValue\";\nimport { useResizeObserver } from \"usehooks-ts\";\nimport React, { useMemo, useRef } from \"react\";\nimport type {\n\tLegendDefinition,\n\tScorecardCellData,\n} from \"../../../schemas/config\";\n\nexport interface LinkedCellProps {\n\ttop: {\n\t\tdataSource: ScorecardCellData;\n\t\tlegendDefinition?: LegendDefinition;\n\t\tvalue?: number;\n\t};\n\tbottom: {\n\t\tdataSource: ScorecardCellData;\n\t\tlegendDefinition?: LegendDefinition;\n\t\tvalue?: number;\n\t};\n\tsize: number;\n\tbold?: boolean;\n\n\t[key: string]: unknown;\n}\n\nfunction LinkedCellComponent({\n\ttop,\n\tbottom,\n\tsize,\n\tbold,\n\t...props\n}: LinkedCellProps) {\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst { height, width } = useResizeObserver<HTMLDivElement>({\n\t\tref: ref,\n\t});\n\n\tconst {\n\t\tlegendDefinition: topLegendDefinition,\n\t\tdataSource: topDataSource,\n\t\tvalue: topValue,\n\t} = top;\n\tconst {\n\t\tlegendDefinition: bottomLegendDefinition,\n\t\tdataSource: bottomDataSource,\n\t\tvalue: bottomValue,\n\t} = bottom;\n\n\tconst angle = useMemo(() => {\n\t\tif (!height || !width) {\n\t\t\treturn Math.tan(Math.PI / 2);\n\t\t}\n\t\treturn Math.tan(height / width);\n\t}, [height, width]);\n\n\treturn (\n\t\t<DataTableCell\n\t\t\t{...props}\n\t\t\t/*\n // @ts-ignore */\n\t\t\tref={ref}\n\t\t\tstyle={{\n\t\t\t\tpadding: 8,\n\t\t\t\twidth: size,\n\t\t\t\tminWidth: 120,\n\t\t\t\tbackground: `linear-gradient(-${angle}rad, ${\n\t\t\t\t\tbottomLegendDefinition?.color ?? colors.white\n\t\t\t\t} 0%, ${bottomLegendDefinition?.color ?? colors.white} 49%, ${\n\t\t\t\t\tcolors.white\n\t\t\t\t} 49%, ${colors.white} 50%, ${\n\t\t\t\t\ttopLegendDefinition?.color ?? colors.white\n\t\t\t\t} 50%, ${topLegendDefinition?.color ?? colors.white} 100%)`,\n\t\t\t}}\n\t\t\tbordered\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\twidth: \"100%\",\n\t\t\t\t\theight: \"100%\",\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\tstyle={{\n\t\t\t\t\t\tbackground: \"inherit\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\talignItems: \"flex-start\",\n\t\t\t\t\t\tjustifyContent: \"flex-start\",\n\t\t\t\t\t\tcolor: topLegendDefinition\n\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\ttopLegendDefinition?.color ?? \"#FFFFFF\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{topDataSource && (\n\t\t\t\t\t\t<DataValue\n\t\t\t\t\t\t\tvalue={topValue}\n\t\t\t\t\t\t\tbold={bold}\n\t\t\t\t\t\t\tdataSource={topDataSource}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackground: \"inherit\",\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\twidth: \"100%\",\n\t\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\t\tjustifyContent: \"flex-end\",\n\t\t\t\t\t\tcolor: bottomLegendDefinition\n\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\tbottomLegendDefinition?.color ?? \"#FFFFFF\",\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{bottomDataSource && (\n\t\t\t\t\t\t<DataValue\n\t\t\t\t\t\t\tvalue={bottomValue}\n\t\t\t\t\t\t\tbold={bold}\n\t\t\t\t\t\t\tdataSource={bottomDataSource}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</DataTableCell>\n\t);\n}\n\nexport const LinkedCell = React.memo(LinkedCellComponent, (prev, next) => {\n\treturn (\n\t\tprev.top.value === next.top.value &&\n\t\tprev.bottom.value === next.bottom.value\n\t);\n});\n"]}
@@ -3,14 +3,11 @@ import { DataTableFoot, DataTableRow } from '@dhis2/ui';
3
3
  import { useTableState } from '../../TableStateProvider';
4
4
  import { flexRender } from '@tanstack/react-table';
5
5
  import { Fragment } from 'react';
6
- import { useScorecardStateSelectorValue } from '../../../state';
6
+ import { useScorecardViewStateValue } from '../../../utils/viewState';
7
7
 
8
8
  function TableFoot() {
9
9
  const table = useTableState();
10
- const showAverageRow = useScorecardStateSelectorValue([
11
- "options",
12
- "averageRow"
13
- ]);
10
+ const showAverageRow = useScorecardViewStateValue("averageRow");
14
11
  if (!showAverageRow) {
15
12
  return null;
16
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/TableFoot.tsx"],"names":[],"mappings":";;;;;;;AAMO,SAAS,SAAY,GAAA;AAC3B,EAAA,MAAM,QAAQ,aAAc,EAAA;AAC5B,EAAA,MAAM,iBAAiB,8BAAwC,CAAA;AAAA,IAC9D,SAAA;AAAA,IACA;AAAA,GACA,CAAA;AAED,EAAA,IAAI,CAAC,cAAgB,EAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AAGR,EAAA,2BACE,aACC,EAAA,EAAA,QAAA,EAAA,KAAA,CAAM,iBAAkB,CAAA,GAAA,CAAI,CAAC,WAAgB,KAAA;AAC7C,IAAA,2BACE,YACC,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACpC,MAAA,OAAO,MAAO,CAAA,aAAA,GAAgB,IAC7B,mBAAA,GAAA,CAAC,QACC,EAAA,EAAA,QAAA,EAAA,UAAA;AAAA,QACA,MAAA,CAAO,OAAO,SAAU,CAAA,MAAA;AAAA,QACxB,OAAO,UAAW;AAAA,OACnB,EAAA,EAJc,OAAO,EAKtB,CAAA;AAAA,KAED,CAViB,EAAA,EAAA,WAAA,CAAY,EAW/B,CAAA;AAAA,GAED,CACF,EAAA,CAAA;AAEF","file":"TableFoot.js","sourcesContent":["import { DataTableFoot, DataTableRow } from \"@dhis2/ui\";\nimport { useTableState } from \"../../TableStateProvider\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { Fragment } from \"react\";\nimport { useScorecardStateSelectorValue } from \"../../../state\";\n\nexport function TableFoot() {\n\tconst table = useTableState();\n\tconst showAverageRow = useScorecardStateSelectorValue<boolean>([\n\t\t\"options\",\n\t\t\"averageRow\",\n\t]);\n\n\tif (!showAverageRow) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataTableFoot>\n\t\t\t{table.getFooterGroups().map((footerGroup) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DataTableRow key={footerGroup.id}>\n\t\t\t\t\t\t{footerGroup.headers.map((footer) => {\n\t\t\t\t\t\t\treturn footer.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t<Fragment key={footer.id}>\n\t\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\t\tfooter.column.columnDef.footer,\n\t\t\t\t\t\t\t\t\t\tfooter.getContext(),\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</DataTableRow>\n\t\t\t\t);\n\t\t\t})}\n\t\t</DataTableFoot>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../../../../../src/components/ScorecardTable/components/TableFoot.tsx"],"names":[],"mappings":";;;;;;;AAMO,SAAS,SAAY,GAAA;AAC3B,EAAA,MAAM,QAAQ,aAAc,EAAA;AAC5B,EAAM,MAAA,cAAA,GAAiB,2BAAoC,YAAY,CAAA;AAEvE,EAAA,IAAI,CAAC,cAAgB,EAAA;AACpB,IAAO,OAAA,IAAA;AAAA;AAGR,EAAA,2BACE,aACC,EAAA,EAAA,QAAA,EAAA,KAAA,CAAM,iBAAkB,CAAA,GAAA,CAAI,CAAC,WAAgB,KAAA;AAC7C,IAAA,2BACE,YACC,EAAA,EAAA,QAAA,EAAA,WAAA,CAAY,OAAQ,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACpC,MAAA,OAAO,MAAO,CAAA,aAAA,GAAgB,IAC7B,mBAAA,GAAA,CAAC,QACC,EAAA,EAAA,QAAA,EAAA,UAAA;AAAA,QACA,MAAA,CAAO,OAAO,SAAU,CAAA,MAAA;AAAA,QACxB,OAAO,UAAW;AAAA,OACnB,EAAA,EAJc,OAAO,EAKtB,CAAA;AAAA,KAED,CAViB,EAAA,EAAA,WAAA,CAAY,EAW/B,CAAA;AAAA,GAED,CACF,EAAA,CAAA;AAEF","file":"TableFoot.js","sourcesContent":["import { DataTableFoot, DataTableRow } from \"@dhis2/ui\";\nimport { useTableState } from \"../../TableStateProvider\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport { Fragment } from \"react\";\nimport { useScorecardViewStateValue } from \"../../../utils/viewState\";\n\nexport function TableFoot() {\n\tconst table = useTableState();\n\tconst showAverageRow = useScorecardViewStateValue<boolean>(\"averageRow\");\n\n\tif (!showAverageRow) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DataTableFoot>\n\t\t\t{table.getFooterGroups().map((footerGroup) => {\n\t\t\t\treturn (\n\t\t\t\t\t<DataTableRow key={footerGroup.id}>\n\t\t\t\t\t\t{footerGroup.headers.map((footer) => {\n\t\t\t\t\t\t\treturn footer.isPlaceholder ? null : (\n\t\t\t\t\t\t\t\t<Fragment key={footer.id}>\n\t\t\t\t\t\t\t\t\t{flexRender(\n\t\t\t\t\t\t\t\t\t\tfooter.column.columnDef.footer,\n\t\t\t\t\t\t\t\t\t\tfooter.getContext(),\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</DataTableRow>\n\t\t\t\t);\n\t\t\t})}\n\t\t</DataTableFoot>\n\t);\n}\n"]}
@@ -2,18 +2,14 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { DataTableColumnHeader } from '@dhis2/ui';
3
3
  import i18n from '@dhis2/d2-i18n';
4
4
  import styles from '../TableHeader.module.css';
5
- import { useScorecardStateSelectorValue } from '../../../../../state';
5
+ import { useScorecardViewStateValue } from '../../../../../utils/viewState';
6
+ import { useHasOnePeriod } from '../../../../../utils/dimensionState';
6
7
 
7
8
  function AverageHeaderCell({
8
9
  header
9
10
  }) {
10
- const dataInRows = useScorecardStateSelectorValue([
11
- "options",
12
- "showDataInRows"
13
- ]);
14
- const hasOnePeriod = useScorecardStateSelectorValue([
15
- "hasOnePeriod"
16
- ]);
11
+ const dataInRows = useScorecardViewStateValue("showDataInRows");
12
+ const hasOnePeriod = useHasOnePeriod();
17
13
  const rowSpan = dataInRows ? hasOnePeriod ? "2" : "2" : hasOnePeriod ? "2" : "3";
18
14
  return /* @__PURE__ */ jsx(
19
15
  DataTableColumnHeader,