@hisptz/dhis2-analytics 2.0.13 → 2.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
- package/dist/components/Map/utils/map.js +1 -1
- package/dist/components/Map/utils/map.js.map +1 -1
- package/dist/components/Scorecard/Scorecard.js +22 -0
- package/dist/components/Scorecard/Scorecard.js.map +1 -0
- package/dist/components/Scorecard/Scorecard.stories.js +1188 -0
- package/dist/components/Scorecard/Scorecard.stories.js.map +1 -0
- package/dist/components/Scorecard/components/ConfigProvider.js +17 -0
- package/dist/components/Scorecard/components/ConfigProvider.js.map +1 -0
- package/dist/components/Scorecard/components/DataProvider.js +39 -0
- package/dist/components/Scorecard/components/DataProvider.js.map +1 -0
- package/dist/components/Scorecard/components/MetaProvider.js +45 -0
- package/dist/components/Scorecard/components/MetaProvider.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +29 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +30 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +62 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +14 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +77 -0
- package/dist/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js +42 -0
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +11 -0
- package/dist/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js +102 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +24 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js +27 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +50 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js +50 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js +66 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +47 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +38 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +12 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +56 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +152 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +58 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +100 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +95 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js +45 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +20 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +98 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js +38 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js +15 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js +28 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +20 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +12 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +40 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +62 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +16 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +37 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +49 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +63 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +24 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +14 -0
- package/dist/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +1 -0
- package/dist/components/Scorecard/components/ScorecardTable/index.js +14 -0
- package/dist/components/Scorecard/components/ScorecardTable/index.js.map +1 -0
- package/dist/components/Scorecard/components/StateProvider.js +26 -0
- package/dist/components/Scorecard/components/StateProvider.js.map +1 -0
- package/dist/components/Scorecard/components/StateSetProvider.js +17 -0
- package/dist/components/Scorecard/components/StateSetProvider.js.map +1 -0
- package/dist/components/Scorecard/components/TableStateProvider.js +26 -0
- package/dist/components/Scorecard/components/TableStateProvider.js.map +1 -0
- package/dist/components/Scorecard/hooks/average.js +50 -0
- package/dist/components/Scorecard/hooks/average.js.map +1 -0
- package/dist/components/Scorecard/hooks/cellData.js +36 -0
- package/dist/components/Scorecard/hooks/cellData.js.map +1 -0
- package/dist/components/Scorecard/hooks/columns.js +150 -0
- package/dist/components/Scorecard/hooks/columns.js.map +1 -0
- package/dist/components/Scorecard/hooks/data.js +97 -0
- package/dist/components/Scorecard/hooks/data.js.map +1 -0
- package/dist/components/Scorecard/hooks/metadata.js +95 -0
- package/dist/components/Scorecard/hooks/metadata.js.map +1 -0
- package/dist/components/Scorecard/hooks/orgUnit.js +17 -0
- package/dist/components/Scorecard/hooks/orgUnit.js.map +1 -0
- package/dist/components/Scorecard/hooks/period.js +15 -0
- package/dist/components/Scorecard/hooks/period.js.map +1 -0
- package/dist/components/Scorecard/hooks/table.js +40 -0
- package/dist/components/Scorecard/hooks/table.js.map +1 -0
- package/dist/components/Scorecard/index.js +21 -0
- package/dist/components/Scorecard/index.js.map +1 -0
- package/dist/components/Scorecard/schemas/config.js +181 -0
- package/dist/components/Scorecard/schemas/config.js.map +1 -0
- package/dist/components/Scorecard/utils/analytics.js +27 -0
- package/dist/components/Scorecard/utils/analytics.js.map +1 -0
- package/dist/components/Scorecard/utils/columns.js +331 -0
- package/dist/components/Scorecard/utils/columns.js.map +1 -0
- package/dist/components/Scorecard/utils/data.js +147 -0
- package/dist/components/Scorecard/utils/data.js.map +1 -0
- package/dist/components/Scorecard/utils/dataSources.js +16 -0
- package/dist/components/Scorecard/utils/dataSources.js.map +1 -0
- package/dist/components/Scorecard/utils/engine.js +20 -0
- package/dist/components/Scorecard/utils/engine.js.map +1 -0
- package/dist/components/Scorecard/utils/legends.js +118 -0
- package/dist/components/Scorecard/utils/legends.js.map +1 -0
- package/dist/components/Scorecard/utils/orgUnits.js +40 -0
- package/dist/components/Scorecard/utils/orgUnits.js.map +1 -0
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/CustomTooltip/index.js.map +1 -1
- package/dist/esm/components/Map/utils/map.js +1 -1
- package/dist/esm/components/Map/utils/map.js.map +1 -1
- package/dist/esm/components/Scorecard/Scorecard.js +20 -0
- package/dist/esm/components/Scorecard/Scorecard.js.map +1 -0
- package/dist/esm/components/Scorecard/Scorecard.stories.js +1178 -0
- package/dist/esm/components/Scorecard/Scorecard.stories.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ConfigProvider.js +14 -0
- package/dist/esm/components/Scorecard/components/ConfigProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/DataProvider.js +36 -0
- package/dist/esm/components/Scorecard/components/DataProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/MetaProvider.js +42 -0
- package/dist/esm/components/Scorecard/components/MetaProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js +23 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js +27 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js +55 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js +3 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js +75 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js +40 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css +11 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/ScorecardTable.module.css.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js +98 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js +22 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js +25 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataContainer.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js +48 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js +44 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataRow.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js +64 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DataValue.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js +45 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DraggableCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js +36 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/DroppableCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js +10 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js +54 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js +146 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js +52 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js +94 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js +93 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js +43 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js +14 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js +96 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js +36 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js +13 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableBody.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js +26 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableFoot.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js +18 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css +12 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.module.css.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js +33 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js +54 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js +14 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js +31 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js +42 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js +56 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js +22 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js +3 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/components/TableHeader/index.js.map +1 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/index.js +3 -0
- package/dist/esm/components/Scorecard/components/ScorecardTable/index.js.map +1 -0
- package/dist/esm/components/Scorecard/components/StateProvider.js +23 -0
- package/dist/esm/components/Scorecard/components/StateProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/StateSetProvider.js +14 -0
- package/dist/esm/components/Scorecard/components/StateSetProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/components/TableStateProvider.js +23 -0
- package/dist/esm/components/Scorecard/components/TableStateProvider.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/average.js +48 -0
- package/dist/esm/components/Scorecard/hooks/average.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/cellData.js +34 -0
- package/dist/esm/components/Scorecard/hooks/cellData.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/columns.js +147 -0
- package/dist/esm/components/Scorecard/hooks/columns.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/data.js +95 -0
- package/dist/esm/components/Scorecard/hooks/data.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/metadata.js +92 -0
- package/dist/esm/components/Scorecard/hooks/metadata.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/orgUnit.js +15 -0
- package/dist/esm/components/Scorecard/hooks/orgUnit.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/period.js +13 -0
- package/dist/esm/components/Scorecard/hooks/period.js.map +1 -0
- package/dist/esm/components/Scorecard/hooks/table.js +38 -0
- package/dist/esm/components/Scorecard/hooks/table.js.map +1 -0
- package/dist/esm/components/Scorecard/index.js +4 -0
- package/dist/esm/components/Scorecard/index.js.map +1 -0
- package/dist/esm/components/Scorecard/schemas/config.js +163 -0
- package/dist/esm/components/Scorecard/schemas/config.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/analytics.js +25 -0
- package/dist/esm/components/Scorecard/utils/analytics.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/columns.js +326 -0
- package/dist/esm/components/Scorecard/utils/columns.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/data.js +144 -0
- package/dist/esm/components/Scorecard/utils/data.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/dataSources.js +13 -0
- package/dist/esm/components/Scorecard/utils/dataSources.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/engine.js +18 -0
- package/dist/esm/components/Scorecard/utils/engine.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/legends.js +115 -0
- package/dist/esm/components/Scorecard/utils/legends.js.map +1 -0
- package/dist/esm/components/Scorecard/utils/orgUnits.js +37 -0
- package/dist/esm/components/Scorecard/utils/orgUnits.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/types/components/Scorecard/Scorecard.d.ts +10 -0
- package/dist/types/components/Scorecard/Scorecard.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ConfigProvider.d.ts +125 -0
- package/dist/types/components/Scorecard/components/ConfigProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/DataProvider.d.ts +13 -0
- package/dist/types/components/Scorecard/components/DataProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/MetaProvider.d.ts +18 -0
- package/dist/types/components/Scorecard/components/MetaProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/FurtherAnalysisDictionary.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts +12 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/ConfigProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts +9 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/components/DetailsProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisDictionary/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/FurtherAnalysisVisualization.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/ScorecardTable.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts +19 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/AverageFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataContainer.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts +8 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataRow.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DataValue.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts +8 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DraggableCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/DroppableCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/EmptyFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/ExpandedScorecardTable.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts +15 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisMenu.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts +13 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/FurtherAnalysisModal.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts +19 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts +14 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/LinkedDataFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/MetaFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts +14 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/SingleDataFooterCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableBody.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableFoot.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/TableHeader.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/AverageHeaderCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts +5 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/DataHeaderCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts +4 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/ExpandCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/FilterArea.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts +6 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/LabelCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/MetaHeaderCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts +7 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/components/NumberCell.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/components/TableHeader/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts +2 -0
- package/dist/types/components/Scorecard/components/ScorecardTable/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/StateProvider.d.ts +41 -0
- package/dist/types/components/Scorecard/components/StateProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/StateSetProvider.d.ts +9 -0
- package/dist/types/components/Scorecard/components/StateSetProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/components/TableStateProvider.d.ts +55 -0
- package/dist/types/components/Scorecard/components/TableStateProvider.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/average.d.ts +14 -0
- package/dist/types/components/Scorecard/hooks/average.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/cellData.d.ts +18 -0
- package/dist/types/components/Scorecard/hooks/cellData.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/columns.d.ts +54 -0
- package/dist/types/components/Scorecard/hooks/columns.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/data.d.ts +70 -0
- package/dist/types/components/Scorecard/hooks/data.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/metadata.d.ts +34 -0
- package/dist/types/components/Scorecard/hooks/metadata.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/orgUnit.d.ts +5 -0
- package/dist/types/components/Scorecard/hooks/orgUnit.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/period.d.ts +2 -0
- package/dist/types/components/Scorecard/hooks/period.d.ts.map +1 -0
- package/dist/types/components/Scorecard/hooks/table.d.ts +4 -0
- package/dist/types/components/Scorecard/hooks/table.d.ts.map +1 -0
- package/dist/types/components/Scorecard/index.d.ts +3 -0
- package/dist/types/components/Scorecard/index.d.ts.map +1 -0
- package/dist/types/components/Scorecard/schemas/config.d.ts +2522 -0
- package/dist/types/components/Scorecard/schemas/config.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/analytics.d.ts +10 -0
- package/dist/types/components/Scorecard/utils/analytics.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/columns.d.ts +71 -0
- package/dist/types/components/Scorecard/utils/columns.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/data.d.ts +16 -0
- package/dist/types/components/Scorecard/utils/data.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/dataSources.d.ts +35 -0
- package/dist/types/components/Scorecard/utils/dataSources.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/engine.d.ts +14 -0
- package/dist/types/components/Scorecard/utils/engine.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/legends.d.ts +22 -0
- package/dist/types/components/Scorecard/utils/legends.d.ts.map +1 -0
- package/dist/types/components/Scorecard/utils/orgUnits.d.ts +7 -0
- package/dist/types/components/Scorecard/utils/orgUnits.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +8 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { getDataSourcesFromGroups } from './dataSources';
|
|
2
|
+
import { getOrgUnitsForAnalytics } from './orgUnits';
|
|
3
|
+
|
|
4
|
+
function getDimensions({
|
|
5
|
+
config,
|
|
6
|
+
state
|
|
7
|
+
}) {
|
|
8
|
+
const dataItemObjects = getDataSourcesFromGroups(
|
|
9
|
+
config?.dataSelection?.dataGroups ?? []
|
|
10
|
+
);
|
|
11
|
+
const dataItemsIds = dataItemObjects?.map((item) => item?.id);
|
|
12
|
+
const orgUnitsIds = getOrgUnitsForAnalytics(
|
|
13
|
+
state?.orgUnitSelection ?? config?.orgUnitSelection
|
|
14
|
+
);
|
|
15
|
+
const periodsIds = state.periodSelection.periods.map(({ id }) => id);
|
|
16
|
+
return {
|
|
17
|
+
dataItemsIds,
|
|
18
|
+
orgUnitsIds,
|
|
19
|
+
periodsIds
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { getDimensions };
|
|
24
|
+
//# sourceMappingURL=out.js.map
|
|
25
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/analytics.ts"],"names":[],"mappings":"AACA,SAAS,gCAAgC;AACzC,SAAS,+BAA+B;AAEjC,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AACD,GAGG;AACF,QAAM,kBAAkB;AAAA,IACvB,QAAQ,eAAe,cAAc,CAAC;AAAA,EACvC;AAEA,QAAM,eAAe,iBAAiB,IAAI,CAAC,SAAS,MAAM,EAAE;AAC5D,QAAM,cAAc;AAAA,IACnB,OAAO,oBAAoB,QAAQ;AAAA,EACpC;AACA,QAAM,aAAa,MAAM,gBAAgB,QAAQ,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE;AAEnE,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD","sourcesContent":["import type { ScorecardConfig, ScorecardState } from \"../schemas/config\";\nimport { getDataSourcesFromGroups } from \"./dataSources\";\nimport { getOrgUnitsForAnalytics } from \"./orgUnits\";\n\nexport function getDimensions({\n\tconfig,\n\tstate,\n}: {\n\tconfig: ScorecardConfig;\n\tstate: ScorecardState;\n}) {\n\tconst dataItemObjects = getDataSourcesFromGroups(\n\t\tconfig?.dataSelection?.dataGroups ?? [],\n\t);\n\n\tconst dataItemsIds = dataItemObjects?.map((item) => item?.id);\n\tconst orgUnitsIds = getOrgUnitsForAnalytics(\n\t\tstate?.orgUnitSelection ?? config?.orgUnitSelection,\n\t);\n\tconst periodsIds = state.periodSelection.periods.map(({ id }) => id);\n\n\treturn {\n\t\tdataItemsIds,\n\t\torgUnitsIds,\n\t\tperiodsIds,\n\t};\n}\n"]}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { createColumnHelper } from '@tanstack/react-table';
|
|
2
|
+
import { sum, head } from 'lodash';
|
|
3
|
+
import { DataContainer } from '../components/ScorecardTable/components/DataContainer';
|
|
4
|
+
import { DataHeaderCell } from '../components/ScorecardTable/components/TableHeader/components/DataHeaderCell';
|
|
5
|
+
import { getAdjacentFixedPeriods, createFixedPeriodFromPeriodId } from '@dhis2/multi-calendar-dates';
|
|
6
|
+
import { AverageCell } from '../components/ScorecardTable/components/AverageCell';
|
|
7
|
+
import { AverageHeaderCell } from '../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell';
|
|
8
|
+
import { DataFooterCell } from '../components/ScorecardTable/components/DataFooterCell';
|
|
9
|
+
import { AverageFooterCell } from '../components/ScorecardTable/components/AverageFooterCell';
|
|
10
|
+
|
|
11
|
+
const columnHelper = createColumnHelper();
|
|
12
|
+
function sortingFunction(rowA, rowB, columnId) {
|
|
13
|
+
const dataA = rowA.getValue(columnId);
|
|
14
|
+
const dataB = rowB.getValue(columnId);
|
|
15
|
+
const valueA = head(dataA.dataSources)?.data.current ?? 0;
|
|
16
|
+
const valueB = head(dataB.dataSources)?.data.current ?? 0;
|
|
17
|
+
if (valueA === valueB) {
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
return valueA > valueB ? 1 : -1;
|
|
21
|
+
}
|
|
22
|
+
function getAverageValue({
|
|
23
|
+
dataValues,
|
|
24
|
+
meta
|
|
25
|
+
}) {
|
|
26
|
+
const currentPeriodValues = dataValues.filter(({ pe }) => {
|
|
27
|
+
return !!meta.periods.find(({ uid }) => uid === pe);
|
|
28
|
+
});
|
|
29
|
+
const values = currentPeriodValues.map(({ value }) => value ? +value : 0);
|
|
30
|
+
return Math.round(sum(values) / values.length * 100) / 100;
|
|
31
|
+
}
|
|
32
|
+
function getValues({
|
|
33
|
+
values,
|
|
34
|
+
currentPeriod,
|
|
35
|
+
previousPeriod
|
|
36
|
+
}) {
|
|
37
|
+
const currentValueData = values.find(({ pe }) => {
|
|
38
|
+
return pe === currentPeriod;
|
|
39
|
+
});
|
|
40
|
+
const previousValueData = values.find(({ pe }) => {
|
|
41
|
+
return pe === previousPeriod;
|
|
42
|
+
});
|
|
43
|
+
const previousValue = parseFloat(previousValueData?.value ?? "");
|
|
44
|
+
const currentValue = parseFloat(currentValueData?.value ?? "");
|
|
45
|
+
return {
|
|
46
|
+
previous: isNaN(previousValue) ? void 0 : previousValue,
|
|
47
|
+
current: isNaN(currentValue) ? void 0 : currentValue
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function getOrgUnitColumnHeaders({
|
|
51
|
+
meta,
|
|
52
|
+
calendar
|
|
53
|
+
}) {
|
|
54
|
+
const orgUnits = meta.orgUnits ?? [];
|
|
55
|
+
const periods = meta.periods ?? [];
|
|
56
|
+
return orgUnits.map((orgUnit) => {
|
|
57
|
+
return columnHelper.group({
|
|
58
|
+
id: orgUnit.uid,
|
|
59
|
+
header: DataHeaderCell,
|
|
60
|
+
meta: {
|
|
61
|
+
label: orgUnit.name
|
|
62
|
+
},
|
|
63
|
+
columns: periods.map(
|
|
64
|
+
({ name, uid }) => columnHelper.accessor(
|
|
65
|
+
(rowData) => {
|
|
66
|
+
const currentPeriod = uid;
|
|
67
|
+
const previousPeriod = head(
|
|
68
|
+
getAdjacentFixedPeriods({
|
|
69
|
+
calendar,
|
|
70
|
+
period: createFixedPeriodFromPeriodId({
|
|
71
|
+
calendar,
|
|
72
|
+
periodId: currentPeriod
|
|
73
|
+
}),
|
|
74
|
+
steps: -1
|
|
75
|
+
})
|
|
76
|
+
)?.id;
|
|
77
|
+
const values = rowData.dataValues.filter(({ ou }) => {
|
|
78
|
+
return ou === orgUnit.uid;
|
|
79
|
+
});
|
|
80
|
+
const dataSources = rowData.dataHolder?.dataSources?.map(
|
|
81
|
+
(dataSource) => {
|
|
82
|
+
const dataSourceValues = values.filter(
|
|
83
|
+
(value) => {
|
|
84
|
+
return value.dx === dataSource.id;
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
const data = getValues({
|
|
88
|
+
currentPeriod,
|
|
89
|
+
previousPeriod,
|
|
90
|
+
values: dataSourceValues
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
...dataSource,
|
|
94
|
+
data
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
);
|
|
98
|
+
return {
|
|
99
|
+
...rowData,
|
|
100
|
+
period: uid,
|
|
101
|
+
dataSources,
|
|
102
|
+
orgUnit
|
|
103
|
+
};
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
header: DataHeaderCell,
|
|
107
|
+
meta: {
|
|
108
|
+
label: name
|
|
109
|
+
},
|
|
110
|
+
cell: DataContainer,
|
|
111
|
+
id: `${orgUnit.uid}-${uid}`,
|
|
112
|
+
enableSorting: true,
|
|
113
|
+
sortingFn: sortingFunction,
|
|
114
|
+
footer: DataFooterCell
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
)
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function getAverageColumn({
|
|
122
|
+
meta
|
|
123
|
+
}) {
|
|
124
|
+
return columnHelper.group({
|
|
125
|
+
id: "average-header",
|
|
126
|
+
header: AverageHeaderCell,
|
|
127
|
+
columns: [
|
|
128
|
+
columnHelper.accessor(
|
|
129
|
+
(rowData) => {
|
|
130
|
+
return {
|
|
131
|
+
...rowData,
|
|
132
|
+
dataSources: rowData.dataHolder?.dataSources?.map(
|
|
133
|
+
(dataSource) => {
|
|
134
|
+
const dataValues = rowData.dataValues.filter(
|
|
135
|
+
({ dx }) => dx === dataSource.id
|
|
136
|
+
);
|
|
137
|
+
return {
|
|
138
|
+
...dataSource,
|
|
139
|
+
average: getAverageValue({
|
|
140
|
+
dataValues,
|
|
141
|
+
meta
|
|
142
|
+
})
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
),
|
|
146
|
+
average: getAverageValue({
|
|
147
|
+
dataValues: rowData.dataValues,
|
|
148
|
+
meta
|
|
149
|
+
})
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: `average`,
|
|
154
|
+
header: () => null,
|
|
155
|
+
cell: AverageCell,
|
|
156
|
+
enableHiding: true,
|
|
157
|
+
footer: AverageFooterCell
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
function getDataHolderColumn({
|
|
164
|
+
hasOnePeriod,
|
|
165
|
+
dataHolder,
|
|
166
|
+
periods,
|
|
167
|
+
calendar
|
|
168
|
+
}) {
|
|
169
|
+
const { id, dataSources } = dataHolder;
|
|
170
|
+
const header = dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
|
|
171
|
+
(acc, { label, id: id2 }) => `${acc} / ${label}`,
|
|
172
|
+
""
|
|
173
|
+
);
|
|
174
|
+
if (hasOnePeriod) {
|
|
175
|
+
return columnHelper.accessor(
|
|
176
|
+
(rowData) => {
|
|
177
|
+
const currentPeriod = head(periods).uid;
|
|
178
|
+
const previousPeriod = head(
|
|
179
|
+
getAdjacentFixedPeriods({
|
|
180
|
+
calendar,
|
|
181
|
+
period: createFixedPeriodFromPeriodId({
|
|
182
|
+
calendar,
|
|
183
|
+
periodId: currentPeriod
|
|
184
|
+
}),
|
|
185
|
+
steps: -1
|
|
186
|
+
})
|
|
187
|
+
)?.id;
|
|
188
|
+
const dataSourceWithValues = dataSources.map((dataSource) => {
|
|
189
|
+
const values = rowData.dataValues.filter(({ dx }) => {
|
|
190
|
+
return dx === dataSource.id;
|
|
191
|
+
});
|
|
192
|
+
const data = getValues({
|
|
193
|
+
currentPeriod,
|
|
194
|
+
previousPeriod,
|
|
195
|
+
values
|
|
196
|
+
});
|
|
197
|
+
return {
|
|
198
|
+
...dataSource,
|
|
199
|
+
data
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
...rowData,
|
|
204
|
+
dataSources: dataSourceWithValues,
|
|
205
|
+
period: head(periods)?.uid
|
|
206
|
+
};
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
header: DataHeaderCell,
|
|
210
|
+
meta: {
|
|
211
|
+
label: header
|
|
212
|
+
},
|
|
213
|
+
id: id.toString(),
|
|
214
|
+
cell: DataContainer,
|
|
215
|
+
enableSorting: true,
|
|
216
|
+
sortingFn: sortingFunction,
|
|
217
|
+
footer: DataFooterCell
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
return columnHelper.group({
|
|
222
|
+
id: id.toString(),
|
|
223
|
+
columns: periods.map(
|
|
224
|
+
({ name, uid }) => columnHelper.accessor(
|
|
225
|
+
(rowData) => {
|
|
226
|
+
const currentPeriod = uid;
|
|
227
|
+
const previousPeriod = head(
|
|
228
|
+
getAdjacentFixedPeriods({
|
|
229
|
+
calendar,
|
|
230
|
+
period: createFixedPeriodFromPeriodId({
|
|
231
|
+
calendar,
|
|
232
|
+
periodId: currentPeriod
|
|
233
|
+
}),
|
|
234
|
+
steps: -1
|
|
235
|
+
})
|
|
236
|
+
)?.id;
|
|
237
|
+
const dataSourceWithValues = dataSources.map(
|
|
238
|
+
(dataSource) => {
|
|
239
|
+
const values = rowData.dataValues.filter(
|
|
240
|
+
({ dx }) => {
|
|
241
|
+
return dx === dataSource.id;
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
const data = getValues({
|
|
245
|
+
currentPeriod,
|
|
246
|
+
previousPeriod,
|
|
247
|
+
values
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
...dataSource,
|
|
251
|
+
data
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
);
|
|
255
|
+
return {
|
|
256
|
+
...rowData,
|
|
257
|
+
dataSources: dataSourceWithValues,
|
|
258
|
+
period: uid
|
|
259
|
+
};
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
header: DataHeaderCell,
|
|
263
|
+
meta: {
|
|
264
|
+
label: name
|
|
265
|
+
},
|
|
266
|
+
cell: DataContainer,
|
|
267
|
+
id: `${id.toString()}-${uid}`,
|
|
268
|
+
enableSorting: true,
|
|
269
|
+
sortingFn: sortingFunction,
|
|
270
|
+
footer: DataFooterCell
|
|
271
|
+
}
|
|
272
|
+
)
|
|
273
|
+
),
|
|
274
|
+
meta: {
|
|
275
|
+
label: header
|
|
276
|
+
},
|
|
277
|
+
header: DataHeaderCell,
|
|
278
|
+
enableSorting: true,
|
|
279
|
+
sortingFn: sortingFunction
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
function getDataColumnHeaders({
|
|
283
|
+
meta,
|
|
284
|
+
config,
|
|
285
|
+
calendar
|
|
286
|
+
}) {
|
|
287
|
+
const dataGroups = config.dataSelection.dataGroups ?? [];
|
|
288
|
+
const hasOneGroup = dataGroups.length === 1;
|
|
289
|
+
const periods = meta.periods ?? [];
|
|
290
|
+
const hasOnePeriod = periods.length === 1;
|
|
291
|
+
if (hasOneGroup) {
|
|
292
|
+
return head(dataGroups).dataHolders.map((dataHolder) => {
|
|
293
|
+
return getDataHolderColumn({
|
|
294
|
+
hasOnePeriod,
|
|
295
|
+
dataHolder,
|
|
296
|
+
periods,
|
|
297
|
+
calendar
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
} else {
|
|
301
|
+
return dataGroups.map(({ title, dataHolders, id }) => {
|
|
302
|
+
return columnHelper.group({
|
|
303
|
+
id: id.toString(),
|
|
304
|
+
header: DataHeaderCell,
|
|
305
|
+
meta: {
|
|
306
|
+
label: title,
|
|
307
|
+
bold: true
|
|
308
|
+
},
|
|
309
|
+
columns: dataHolders.map((dataHolder) => {
|
|
310
|
+
return getDataHolderColumn({
|
|
311
|
+
hasOnePeriod,
|
|
312
|
+
dataHolder,
|
|
313
|
+
periods,
|
|
314
|
+
calendar
|
|
315
|
+
});
|
|
316
|
+
}),
|
|
317
|
+
enableSorting: false,
|
|
318
|
+
footer: () => null
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
export { getAverageColumn, getAverageValue, getDataColumnHeaders, getOrgUnitColumnHeaders };
|
|
325
|
+
//# sourceMappingURL=out.js.map
|
|
326
|
+
//# sourceMappingURL=columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/columns.ts"],"names":["id"],"mappings":"AAQA;AAAA,EAEC;AAAA,OAEM;AACP,SAAS,MAAM,WAAW;AAE1B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAC/B;AAAA,EACC;AAAA,EACA;AAAA,OACM;AAEP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;AAElC,MAAM,eAAe,mBAAuC;AAE5D,SAAS,gBACR,MACA,MACA,UACC;AACD,QAAM,QAAQ,KAAK,SAAS,QAAQ;AACpC,QAAM,QAAQ,KAAK,SAAS,QAAQ;AAEpC,QAAM,SAAS,KAAK,MAAM,WAAW,GAAG,KAAK,WAAW;AACxD,QAAM,SAAS,KAAK,MAAM,WAAW,GAAG,KAAK,WAAW;AAExD,MAAI,WAAW,QAAQ;AACtB,WAAO;AAAA,EACR;AAEA,SAAO,SAAS,SAAS,IAAI;AAC9B;AAEO,SAAS,gBAAgB;AAAA,EAC/B;AAAA,EACA;AACD,GAGG;AACF,QAAM,sBAAsB,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACzD,WAAO,CAAC,CAAC,KAAK,QAAQ,KAAK,CAAC,EAAE,IAAI,MAAM,QAAQ,EAAE;AAAA,EACnD,CAAC;AACD,QAAM,SAAS,oBAAoB,IAAI,CAAC,EAAE,MAAM,MAAO,QAAQ,CAAC,QAAQ,CAAE;AAE1E,SAAO,KAAK,MAAO,IAAI,MAAM,IAAI,OAAO,SAAU,GAAG,IAAI;AAC1D;AAEA,SAAS,UAAU;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACD,GAIG;AACF,QAAM,mBAAmB,OAAO,KAAK,CAAC,EAAE,GAAG,MAAM;AAChD,WAAO,OAAO;AAAA,EACf,CAAC;AAED,QAAM,oBAAoB,OAAO,KAAK,CAAC,EAAE,GAAG,MAAM;AACjD,WAAO,OAAO;AAAA,EACf,CAAC;AAED,QAAM,gBAAgB,WAAW,mBAAmB,SAAS,EAAE;AAC/D,QAAM,eAAe,WAAW,kBAAkB,SAAS,EAAE;AAE7D,SAAO;AAAA,IACN,UAAU,MAAM,aAAa,IAAI,SAAY;AAAA,IAC7C,SAAS,MAAM,YAAY,IAAI,SAAY;AAAA,EAC5C;AACD;AAEO,SAAS,wBAAwB;AAAA,EACvC;AAAA,EACA;AACD,GAG4D;AAC3D,QAAM,WAAW,KAAK,YAAY,CAAC;AACnC,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,SAAO,SAAS,IAAI,CAAC,YAAY;AAChC,WAAO,aAAa,MAAM;AAAA,MACzB,IAAI,QAAQ;AAAA,MACZ,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,OAAO,QAAQ;AAAA,MAChB;AAAA,MACA,SAAS,QAAQ;AAAA,QAAI,CAAC,EAAE,MAAM,IAAI,MACjC,aAAa;AAAA,UACZ,CAAC,YAAY;AACZ,kBAAM,gBAAgB;AACtB,kBAAM,iBAAiB;AAAA,cACtB,wBAAwB;AAAA,gBACvB;AAAA,gBACA,QAAQ,8BAA8B;AAAA,kBACrC;AAAA,kBACA,UAAU;AAAA,gBACX,CAAC;AAAA,gBACD,OAAO;AAAA,cACR,CAAC;AAAA,YACF,GAAG;AAEH,kBAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACpD,qBAAO,OAAO,QAAQ;AAAA,YACvB,CAAC;AAED,kBAAM,cACL,QAAQ,YAAY,aAAa;AAAA,cAChC,CAAC,eAAe;AACf,sBAAM,mBAAmB,OAAO;AAAA,kBAC/B,CAAC,UAAU;AACV,2BAAO,MAAM,OAAO,WAAW;AAAA,kBAChC;AAAA,gBACD;AAEA,sBAAM,OAAO,UAAU;AAAA,kBACtB;AAAA,kBACA;AAAA,kBACA,QAAQ;AAAA,gBACT,CAAC;AAED,uBAAO;AAAA,kBACN,GAAG;AAAA,kBACH;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAED,mBAAO;AAAA,cACN,GAAG;AAAA,cACH,QAAQ;AAAA,cACR;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,UACA;AAAA,YACC,QAAQ;AAAA,YACR,MAAM;AAAA,cACL,OAAO;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,YACzB,eAAe;AAAA,YACf,WAAW;AAAA,YACX,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,IACD,CAAC;AAAA,EACF,CAAC;AACF;AAEO,SAAS,iBAAiB;AAAA,EAChC;AACD,GAGG;AACF,SAAO,aAAa,MAAM;AAAA,IACzB,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,SAAS;AAAA,MACR,aAAa;AAAA,QACZ,CAAC,YAAY;AACZ,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,aAAa,QAAQ,YAAY,aAAa;AAAA,cAC7C,CAAC,eAAe;AACf,sBAAM,aAAa,QAAQ,WAAW;AAAA,kBACrC,CAAC,EAAE,GAAG,MAAM,OAAO,WAAW;AAAA,gBAC/B;AACA,uBAAO;AAAA,kBACN,GAAG;AAAA,kBACH,SAAS,gBAAgB;AAAA,oBACxB;AAAA,oBACA;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cACD;AAAA,YACD;AAAA,YACA,SAAS,gBAAgB;AAAA,cACxB,YAAY,QAAQ;AAAA,cACpB;AAAA,YACD,CAAC;AAAA,UACF;AAAA,QACD;AAAA,QACA;AAAA,UACC,IAAI;AAAA,UACJ,QAAQ,MAAM;AAAA,UACd,MAAM;AAAA,UACN,cAAc;AAAA,UACd,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAC;AACF;AAEA,SAAS,oBAAoB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAKG;AACF,QAAM,EAAE,IAAI,YAAY,IAAI;AAE5B,QAAM,SACL,YAAY,WAAW,IACpB,KAAK,WAAW,GAAG,QACnB,YAAY;AAAA,IACZ,CAAC,KAAK,EAAE,OAAO,IAAAA,IAAG,MAAM,GAAG,GAAG,MAAM,KAAK;AAAA,IACzC;AAAA,EACD;AAEH,MAAI,cAAc;AACjB,WAAO,aAAa;AAAA,MACnB,CAAC,YAAY;AACZ,cAAM,gBAAgB,KAAK,OAAO,EAAG;AACrC,cAAM,iBAAiB;AAAA,UACtB,wBAAwB;AAAA,YACvB;AAAA,YACA,QAAQ,8BAA8B;AAAA,cACrC;AAAA,cACA,UAAU;AAAA,YACX,CAAC;AAAA,YACD,OAAO;AAAA,UACR,CAAC;AAAA,QACF,GAAG;AAEH,cAAM,uBAAuB,YAAY,IAAI,CAAC,eAAe;AAC5D,gBAAM,SAAS,QAAQ,WAAW,OAAO,CAAC,EAAE,GAAG,MAAM;AACpD,mBAAO,OAAO,WAAW;AAAA,UAC1B,CAAC;AAED,gBAAM,OAAO,UAAU;AAAA,YACtB;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,YACN,GAAG;AAAA,YACH;AAAA,UACD;AAAA,QACD,CAAC;AACD,eAAO;AAAA,UACN,GAAG;AAAA,UACH,aAAa;AAAA,UACb,QAAQ,KAAK,OAAO,GAAG;AAAA,QACxB;AAAA,MACD;AAAA,MACA;AAAA,QACC,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,OAAO;AAAA,QACR;AAAA,QACA,IAAI,GAAG,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,MACT;AAAA,IACD;AAAA,EACD;AAEA,SAAO,aAAa,MAAM;AAAA,IACzB,IAAI,GAAG,SAAS;AAAA,IAChB,SAAS,QAAQ;AAAA,MAAI,CAAC,EAAE,MAAM,IAAI,MACjC,aAAa;AAAA,QACZ,CAAC,YAAY;AACZ,gBAAM,gBAAgB;AACtB,gBAAM,iBAAiB;AAAA,YACtB,wBAAwB;AAAA,cACvB;AAAA,cACA,QAAQ,8BAA8B;AAAA,gBACrC;AAAA,gBACA,UAAU;AAAA,cACX,CAAC;AAAA,cACD,OAAO;AAAA,YACR,CAAC;AAAA,UACF,GAAG;AACH,gBAAM,uBAAuB,YAAY;AAAA,YACxC,CAAC,eAAe;AACf,oBAAM,SAAS,QAAQ,WAAW;AAAA,gBACjC,CAAC,EAAE,GAAG,MAAM;AACX,yBAAO,OAAO,WAAW;AAAA,gBAC1B;AAAA,cACD;AAEA,oBAAM,OAAO,UAAU;AAAA,gBACtB;AAAA,gBACA;AAAA,gBACA;AAAA,cACD,CAAC;AAED,qBAAO;AAAA,gBACN,GAAG;AAAA,gBACH;AAAA,cACD;AAAA,YACD;AAAA,UACD;AACA,iBAAO;AAAA,YACN,GAAG;AAAA,YACH,aAAa;AAAA,YACb,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,QACA;AAAA,UACC,QAAQ;AAAA,UACR,MAAM;AAAA,YACL,OAAO;AAAA,UACR;AAAA,UACA,MAAM;AAAA,UACN,IAAI,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG;AAAA,UAC3B,eAAe;AAAA,UACf,WAAW;AAAA,UACX,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM;AAAA,MACL,OAAO;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,WAAW;AAAA,EACZ,CAAC;AACF;AAEO,SAAS,qBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACD,GAI4D;AAC3D,QAAM,aAAa,OAAO,cAAc,cAAc,CAAC;AACvD,QAAM,cAAc,WAAW,WAAW;AAC1C,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,QAAM,eAAe,QAAQ,WAAW;AAExC,MAAI,aAAa;AAChB,WAAO,KAAK,UAAU,EAAG,YAAY,IAAI,CAAC,eAAe;AACxD,aAAO,oBAAoB;AAAA,QAC1B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,CAAC;AAAA,EACF,OAAO;AACN,WAAO,WAAW,IAAI,CAAC,EAAE,OAAO,aAAa,GAAG,MAAM;AACrD,aAAO,aAAa,MAAM;AAAA,QACzB,IAAI,GAAG,SAAS;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM;AAAA,UACL,OAAO;AAAA,UACP,MAAM;AAAA,QACP;AAAA,QACA,SAAS,YAAY,IAAI,CAAC,eAAe;AACxC,iBAAO,oBAAoB;AAAA,YAC1B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,QACF,CAAC;AAAA,QACD,eAAe;AAAA,QACf,QAAQ,MAAM;AAAA,MACf,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AACD","sourcesContent":["import type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardAnalyticsData,\n\tScorecardConfig,\n\tScorecardDataHolder,\n\tScorecardTableCellData,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport {\n\ttype ColumnDef,\n\tcreateColumnHelper,\n\ttype Row,\n} from \"@tanstack/react-table\";\nimport { head, sum } from \"lodash\";\nimport type { ItemMeta } from \"../hooks/metadata\";\nimport { DataContainer } from \"../components/ScorecardTable/components/DataContainer\";\nimport { DataHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/DataHeaderCell\";\nimport {\n\tcreateFixedPeriodFromPeriodId,\n\tgetAdjacentFixedPeriods,\n} from \"@dhis2/multi-calendar-dates\";\nimport type { SupportedCalendar } from \"@dhis2/multi-calendar-dates/build/types/types\";\nimport { AverageCell } from \"../components/ScorecardTable/components/AverageCell\";\nimport { AverageHeaderCell } from \"../components/ScorecardTable/components/TableHeader/components/AverageHeaderCell\";\nimport { DataFooterCell } from \"../components/ScorecardTable/components/DataFooterCell\";\nimport { AverageFooterCell } from \"../components/ScorecardTable/components/AverageFooterCell\";\n\nconst columnHelper = createColumnHelper<ScorecardTableData>();\n\nfunction sortingFunction(\n\trowA: Row<ScorecardTableData>,\n\trowB: Row<ScorecardTableData>,\n\tcolumnId: string,\n) {\n\tconst dataA = rowA.getValue(columnId) as ScorecardTableCellData;\n\tconst dataB = rowB.getValue(columnId) as ScorecardTableCellData;\n\n\tconst valueA = head(dataA.dataSources)?.data.current ?? 0;\n\tconst valueB = head(dataB.dataSources)?.data.current ?? 0;\n\n\tif (valueA === valueB) {\n\t\treturn 0;\n\t}\n\n\treturn valueA > valueB ? 1 : -1;\n}\n\nexport function getAverageValue({\n\tdataValues,\n\tmeta,\n}: {\n\tdataValues: ScorecardAnalyticsData[];\n\tmeta: ScorecardMeta;\n}) {\n\tconst currentPeriodValues = dataValues.filter(({ pe }) => {\n\t\treturn !!meta.periods.find(({ uid }) => uid === pe);\n\t});\n\tconst values = currentPeriodValues.map(({ value }) => (value ? +value : 0));\n\n\treturn Math.round((sum(values) / values.length) * 100) / 100;\n}\n\nfunction getValues({\n\tvalues,\n\tcurrentPeriod,\n\tpreviousPeriod,\n}: {\n\tvalues: ScorecardAnalyticsData[];\n\tcurrentPeriod: string;\n\tpreviousPeriod?: string;\n}) {\n\tconst currentValueData = values.find(({ pe }) => {\n\t\treturn pe === currentPeriod;\n\t});\n\n\tconst previousValueData = values.find(({ pe }) => {\n\t\treturn pe === previousPeriod;\n\t});\n\n\tconst previousValue = parseFloat(previousValueData?.value ?? \"\");\n\tconst currentValue = parseFloat(currentValueData?.value ?? \"\");\n\n\treturn {\n\t\tprevious: isNaN(previousValue) ? undefined : previousValue,\n\t\tcurrent: isNaN(currentValue) ? undefined : currentValue,\n\t};\n}\n\nexport function getOrgUnitColumnHeaders({\n\tmeta,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst orgUnits = meta.orgUnits ?? [];\n\tconst periods = meta.periods ?? [];\n\treturn orgUnits.map((orgUnit) => {\n\t\treturn columnHelper.group({\n\t\t\tid: orgUnit.uid,\n\t\t\theader: DataHeaderCell,\n\t\t\tmeta: {\n\t\t\t\tlabel: orgUnit.name,\n\t\t\t},\n\t\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\t\tcolumnHelper.accessor(\n\t\t\t\t\t(rowData) => {\n\t\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)?.id;\n\n\t\t\t\t\t\tconst values = rowData.dataValues.filter(({ ou }) => {\n\t\t\t\t\t\t\treturn ou === orgUnit.uid;\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst dataSources =\n\t\t\t\t\t\t\trowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\t\tconst dataSourceValues = values.filter(\n\t\t\t\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\t\t\t\treturn value.dx === dataSource.id;\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\t\t\tvalues: dataSourceValues,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t\t\tdataSources,\n\t\t\t\t\t\t\torgUnit: orgUnit,\n\t\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\t\tmeta: {\n\t\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\t\tid: `${orgUnit.uid}-${uid}`,\n\t\t\t\t\t\tenableSorting: true,\n\t\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t),\n\t\t});\n\t});\n}\n\nexport function getAverageColumn({\n\tmeta,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n}) {\n\treturn columnHelper.group({\n\t\tid: \"average-header\",\n\t\theader: AverageHeaderCell,\n\t\tcolumns: [\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: rowData.dataHolder?.dataSources?.map(\n\t\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\t\tconst dataValues = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t\t({ dx }) => dx === dataSource.id,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t\taverage: getAverageValue({\n\t\t\t\t\t\t\tdataValues: rowData.dataValues,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t}),\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: `average`,\n\t\t\t\t\theader: () => null,\n\t\t\t\t\tcell: AverageCell,\n\t\t\t\t\tenableHiding: true,\n\t\t\t\t\tfooter: AverageFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t],\n\t});\n}\n\nfunction getDataHolderColumn({\n\thasOnePeriod,\n\tdataHolder,\n\tperiods,\n\tcalendar,\n}: {\n\thasOnePeriod: boolean;\n\tdataHolder: ScorecardDataHolder;\n\tperiods: ItemMeta[];\n\tcalendar: SupportedCalendar;\n}) {\n\tconst { id, dataSources } = dataHolder;\n\n\tconst header =\n\t\tdataSources.length === 1\n\t\t\t? head(dataSources)?.label\n\t\t\t: dataSources.reduce(\n\t\t\t\t\t(acc, { label, id }) => `${acc} / ${label}`,\n\t\t\t\t\t\"\",\n\t\t\t\t);\n\n\tif (hasOnePeriod) {\n\t\treturn columnHelper.accessor(\n\t\t\t(rowData) => {\n\t\t\t\tconst currentPeriod = head(periods)!.uid;\n\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t}),\n\t\t\t\t)?.id;\n\n\t\t\t\tconst dataSourceWithValues = dataSources.map((dataSource) => {\n\t\t\t\t\tconst values = rowData.dataValues.filter(({ dx }) => {\n\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t});\n\n\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\tvalues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\tdata,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\t...rowData,\n\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\tperiod: head(periods)?.uid,\n\t\t\t\t} as ScorecardTableCellData;\n\t\t\t},\n\t\t\t{\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: header,\n\t\t\t\t},\n\t\t\t\tid: id.toString(),\n\t\t\t\tcell: DataContainer,\n\t\t\t\tenableSorting: true,\n\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\tfooter: DataFooterCell,\n\t\t\t},\n\t\t);\n\t}\n\n\treturn columnHelper.group({\n\t\tid: id.toString(),\n\t\tcolumns: periods.map(({ name, uid }) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(rowData) => {\n\t\t\t\t\tconst currentPeriod = uid;\n\t\t\t\t\tconst previousPeriod = head(\n\t\t\t\t\t\tgetAdjacentFixedPeriods({\n\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\tperiod: createFixedPeriodFromPeriodId({\n\t\t\t\t\t\t\t\tcalendar,\n\t\t\t\t\t\t\t\tperiodId: currentPeriod,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tsteps: -1,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)?.id;\n\t\t\t\t\tconst dataSourceWithValues = dataSources.map(\n\t\t\t\t\t\t(dataSource) => {\n\t\t\t\t\t\t\tconst values = rowData.dataValues.filter(\n\t\t\t\t\t\t\t\t({ dx }) => {\n\t\t\t\t\t\t\t\t\treturn dx === dataSource.id;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst data = getValues({\n\t\t\t\t\t\t\t\tcurrentPeriod,\n\t\t\t\t\t\t\t\tpreviousPeriod,\n\t\t\t\t\t\t\t\tvalues,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...dataSource,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...rowData,\n\t\t\t\t\t\tdataSources: dataSourceWithValues,\n\t\t\t\t\t\tperiod: uid,\n\t\t\t\t\t} as ScorecardTableCellData;\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: DataHeaderCell,\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\tlabel: name,\n\t\t\t\t\t},\n\t\t\t\t\tcell: DataContainer,\n\t\t\t\t\tid: `${id.toString()}-${uid}`,\n\t\t\t\t\tenableSorting: true,\n\t\t\t\t\tsortingFn: sortingFunction,\n\t\t\t\t\tfooter: DataFooterCell,\n\t\t\t\t},\n\t\t\t),\n\t\t),\n\t\tmeta: {\n\t\t\tlabel: header,\n\t\t},\n\t\theader: DataHeaderCell,\n\t\tenableSorting: true,\n\t\tsortingFn: sortingFunction,\n\t});\n}\n\nexport function getDataColumnHeaders({\n\tmeta,\n\tconfig,\n\tcalendar,\n}: {\n\tmeta: ScorecardMeta;\n\tconfig: ScorecardConfig;\n\tcalendar: SupportedCalendar;\n}): ColumnDef<ScorecardTableData, ScorecardTableCellData>[] {\n\tconst dataGroups = config.dataSelection.dataGroups ?? [];\n\tconst hasOneGroup = dataGroups.length === 1;\n\tconst periods = meta.periods ?? [];\n\tconst hasOnePeriod = periods.length === 1;\n\n\tif (hasOneGroup) {\n\t\treturn head(dataGroups)!.dataHolders.map((dataHolder) => {\n\t\t\treturn getDataHolderColumn({\n\t\t\t\thasOnePeriod,\n\t\t\t\tdataHolder,\n\t\t\t\tperiods,\n\t\t\t\tcalendar,\n\t\t\t});\n\t\t});\n\t} else {\n\t\treturn dataGroups.map(({ title, dataHolders, id }) => {\n\t\t\treturn columnHelper.group({\n\t\t\t\tid: id.toString(),\n\t\t\t\theader: DataHeaderCell,\n\t\t\t\tmeta: {\n\t\t\t\t\tlabel: title,\n\t\t\t\t\tbold: true,\n\t\t\t\t},\n\t\t\t\tcolumns: dataHolders.map((dataHolder) => {\n\t\t\t\t\treturn getDataHolderColumn({\n\t\t\t\t\t\thasOnePeriod,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\tperiods,\n\t\t\t\t\t\tcalendar,\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t\tenableSorting: false,\n\t\t\t\tfooter: () => null,\n\t\t\t});\n\t\t});\n\t}\n}\n"]}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { fromPairs, compact, head } from 'lodash';
|
|
2
|
+
import { getAverageValue } from './columns';
|
|
3
|
+
|
|
4
|
+
function sanitizeAnalyticsData(data) {
|
|
5
|
+
const { headers, rows } = data.data;
|
|
6
|
+
return rows.map((row) => {
|
|
7
|
+
return fromPairs(
|
|
8
|
+
row.map((value, index) => {
|
|
9
|
+
const key = headers[index].name;
|
|
10
|
+
return [key, value];
|
|
11
|
+
})
|
|
12
|
+
);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function getTableDataFromAnalytics(data, {
|
|
16
|
+
meta,
|
|
17
|
+
state,
|
|
18
|
+
config
|
|
19
|
+
}) {
|
|
20
|
+
const dataInRows = state.options.showDataInRows;
|
|
21
|
+
const showHierarchy = state.options.showHierarchy;
|
|
22
|
+
const sanitizedAnalyticsData = sanitizeAnalyticsData(data);
|
|
23
|
+
const averageFilter = state.options.averageDisplayType;
|
|
24
|
+
function getOrgUnitData() {
|
|
25
|
+
return meta.orgUnits.map((orgUnit, i) => {
|
|
26
|
+
const dataValues = sanitizedAnalyticsData.filter((value) => {
|
|
27
|
+
return orgUnit.uid === value.ou;
|
|
28
|
+
});
|
|
29
|
+
const label = showHierarchy ? orgUnit.hierarchy.replace("/", "") ?? "" : orgUnit.name ?? "";
|
|
30
|
+
return {
|
|
31
|
+
dataValues,
|
|
32
|
+
label,
|
|
33
|
+
orgUnit
|
|
34
|
+
};
|
|
35
|
+
}).flat();
|
|
36
|
+
}
|
|
37
|
+
function getDataGroupsData(dataGroups) {
|
|
38
|
+
return dataGroups.map(({ dataHolders }) => {
|
|
39
|
+
return dataHolders.map((dataHolder) => {
|
|
40
|
+
const { dataSources, id } = dataHolder;
|
|
41
|
+
const dataItemIds = dataSources.map(({ id: id2 }) => id2);
|
|
42
|
+
const dataValues = sanitizedAnalyticsData.filter(
|
|
43
|
+
(value) => {
|
|
44
|
+
return dataItemIds.includes(value.dx);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
const label = (dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
|
|
48
|
+
(acc, { label: label2 }) => `${acc} / ${label2}`,
|
|
49
|
+
""
|
|
50
|
+
)) ?? "";
|
|
51
|
+
return {
|
|
52
|
+
id,
|
|
53
|
+
label,
|
|
54
|
+
dataValues,
|
|
55
|
+
dataHolder
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
}).flat();
|
|
59
|
+
}
|
|
60
|
+
if (averageFilter !== "ABOVE_AVERAGE" && averageFilter !== "BELOW_AVERAGE") {
|
|
61
|
+
if (dataInRows) {
|
|
62
|
+
const dataGroups = config.dataSelection.dataGroups;
|
|
63
|
+
return getDataGroupsData(dataGroups);
|
|
64
|
+
}
|
|
65
|
+
return getOrgUnitData();
|
|
66
|
+
}
|
|
67
|
+
const totalAverage = getAverageValue({
|
|
68
|
+
dataValues: sanitizedAnalyticsData,
|
|
69
|
+
meta
|
|
70
|
+
});
|
|
71
|
+
if (averageFilter === "BELOW_AVERAGE") {
|
|
72
|
+
if (dataInRows) {
|
|
73
|
+
const dataGroups = config.dataSelection.dataGroups;
|
|
74
|
+
return getDataGroupsData(dataGroups).filter((data2) => {
|
|
75
|
+
const average = getAverageValue({
|
|
76
|
+
meta,
|
|
77
|
+
dataValues: data2.dataValues
|
|
78
|
+
});
|
|
79
|
+
return average <= totalAverage;
|
|
80
|
+
}).map((data2, index) => ({ ...data2, count: index + 1 }));
|
|
81
|
+
}
|
|
82
|
+
return getOrgUnitData().filter((data2) => {
|
|
83
|
+
const average = getAverageValue({
|
|
84
|
+
meta,
|
|
85
|
+
dataValues: data2.dataValues
|
|
86
|
+
});
|
|
87
|
+
return average <= totalAverage;
|
|
88
|
+
}).map((data2, index) => ({ ...data2, count: index + 1 }));
|
|
89
|
+
} else {
|
|
90
|
+
if (dataInRows) {
|
|
91
|
+
const dataGroups = config.dataSelection.dataGroups;
|
|
92
|
+
return compact(
|
|
93
|
+
dataGroups.map(({ dataHolders }) => {
|
|
94
|
+
return dataHolders.map((dataHolder) => {
|
|
95
|
+
const { dataSources, id } = dataHolder;
|
|
96
|
+
const dataItemIds = dataSources.map(({ id: id2 }) => id2);
|
|
97
|
+
const dataValues = sanitizedAnalyticsData.filter(
|
|
98
|
+
(value) => {
|
|
99
|
+
return dataItemIds.includes(value.dx);
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
const label = (dataSources.length === 1 ? head(dataSources)?.label : dataSources.reduce(
|
|
103
|
+
(acc, { label: label2 }) => `${acc} / ${label2}`,
|
|
104
|
+
""
|
|
105
|
+
)) ?? "";
|
|
106
|
+
return {
|
|
107
|
+
id,
|
|
108
|
+
label,
|
|
109
|
+
dataValues,
|
|
110
|
+
dataHolder
|
|
111
|
+
};
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
).flat().filter((data2) => {
|
|
115
|
+
const average = getAverageValue({
|
|
116
|
+
meta,
|
|
117
|
+
dataValues: data2.dataValues
|
|
118
|
+
});
|
|
119
|
+
return average >= totalAverage;
|
|
120
|
+
}).map((data2, index) => ({ ...data2, count: index + 1 }));
|
|
121
|
+
}
|
|
122
|
+
return meta.orgUnits.map((orgUnit, i) => {
|
|
123
|
+
const dataValues = sanitizedAnalyticsData.filter((value) => {
|
|
124
|
+
return orgUnit.uid === value.ou;
|
|
125
|
+
});
|
|
126
|
+
const label = showHierarchy ? orgUnit.hierarchy.replace("/", "") ?? "" : orgUnit.name ?? "";
|
|
127
|
+
return {
|
|
128
|
+
dataValues,
|
|
129
|
+
label,
|
|
130
|
+
orgUnit
|
|
131
|
+
};
|
|
132
|
+
}).flat().filter((data2) => {
|
|
133
|
+
const average = getAverageValue({
|
|
134
|
+
meta,
|
|
135
|
+
dataValues: data2.dataValues
|
|
136
|
+
});
|
|
137
|
+
return average >= totalAverage;
|
|
138
|
+
}).map((data2, index) => ({ ...data2, count: index + 1 }));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export { getTableDataFromAnalytics, sanitizeAnalyticsData };
|
|
143
|
+
//# sourceMappingURL=out.js.map
|
|
144
|
+
//# sourceMappingURL=data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/data.ts"],"names":["id","label","data"],"mappings":"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","sourcesContent":["import type { ScorecardDataQueryResponse } from \"../hooks/data\";\nimport type { ScorecardMeta } from \"../components/MetaProvider\";\nimport type {\n\tScorecardConfig,\n\tScorecardDataGroup,\n\tScorecardState,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport { compact, fromPairs, head } from \"lodash\";\nimport { getAverageValue } from \"./columns\";\n\nexport interface AnalyticsData {\n\tdx?: string;\n\tpe?: string;\n\tou?: string;\n\n\t[key: string]: string | undefined;\n}\n\nexport function sanitizeAnalyticsData(data: ScorecardDataQueryResponse) {\n\tconst { headers, rows } = data.data;\n\treturn rows.map((row) => {\n\t\treturn fromPairs(\n\t\t\trow.map((value, index) => {\n\t\t\t\tconst key = headers[index].name as \"dx\" | \"ou\" | \"pe\";\n\t\t\t\treturn [key, value];\n\t\t\t}),\n\t\t) as AnalyticsData;\n\t});\n}\n\nexport function getTableDataFromAnalytics(\n\tdata: ScorecardDataQueryResponse,\n\t{\n\t\tmeta,\n\t\tstate,\n\t\tconfig,\n\t}: { meta: ScorecardMeta; state: ScorecardState; config: ScorecardConfig },\n): ScorecardTableData[] {\n\tconst dataInRows = state.options.showDataInRows;\n\tconst showHierarchy = state.options.showHierarchy;\n\tconst sanitizedAnalyticsData = sanitizeAnalyticsData(data);\n\tconst averageFilter = state.options.averageDisplayType;\n\n\tfunction getOrgUnitData() {\n\t\treturn meta.orgUnits\n\t\t\t.map((orgUnit, i) => {\n\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter((value) => {\n\t\t\t\t\treturn orgUnit.uid === value.ou;\n\t\t\t\t});\n\n\t\t\t\tconst label = showHierarchy\n\t\t\t\t\t? orgUnit.hierarchy.replace(\"/\", \"\") ?? \"\"\n\t\t\t\t\t: orgUnit.name ?? \"\";\n\n\t\t\t\treturn {\n\t\t\t\t\tdataValues,\n\t\t\t\t\tlabel,\n\t\t\t\t\torgUnit,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\tfunction getDataGroupsData(dataGroups: ScorecardDataGroup[]) {\n\t\treturn dataGroups\n\t\t\t.map(({ dataHolders }) => {\n\t\t\t\treturn dataHolders.map((dataHolder) => {\n\t\t\t\t\tconst { dataSources, id } = dataHolder;\n\t\t\t\t\tconst dataItemIds = dataSources.map(({ id }) => id);\n\t\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter(\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\treturn dataItemIds.includes(value.dx as string);\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t\tconst label =\n\t\t\t\t\t\t(dataSources.length === 1\n\t\t\t\t\t\t\t? head(dataSources)?.label\n\t\t\t\t\t\t\t: dataSources.reduce(\n\t\t\t\t\t\t\t\t\t(acc, { label }) => `${acc} / ${label}`,\n\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t)) ?? \"\";\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tlabel,\n\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t})\n\t\t\t.flat();\n\t}\n\n\tif (\n\t\taverageFilter !== \"ABOVE_AVERAGE\" &&\n\t\taverageFilter !== \"BELOW_AVERAGE\"\n\t) {\n\t\t//No need of computing the average of each row\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn getDataGroupsData(dataGroups);\n\t\t}\n\t\treturn getOrgUnitData();\n\t}\n\n\tconst totalAverage = getAverageValue({\n\t\tdataValues: sanitizedAnalyticsData,\n\t\tmeta,\n\t});\n\n\tif (averageFilter === \"BELOW_AVERAGE\") {\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn getDataGroupsData(dataGroups)\n\t\t\t\t.filter((data) => {\n\t\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn average <= totalAverage;\n\t\t\t\t})\n\t\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t\t}\n\n\t\treturn getOrgUnitData()\n\t\t\t.filter((data) => {\n\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\tmeta,\n\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t});\n\n\t\t\t\treturn average <= totalAverage;\n\t\t\t})\n\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t} else {\n\t\tif (dataInRows) {\n\t\t\t//Rows are derived from groups\n\t\t\tconst dataGroups = config.dataSelection.dataGroups;\n\t\t\treturn compact(\n\t\t\t\tdataGroups.map(({ dataHolders }) => {\n\t\t\t\t\treturn dataHolders.map((dataHolder) => {\n\t\t\t\t\t\tconst { dataSources, id } = dataHolder;\n\t\t\t\t\t\tconst dataItemIds = dataSources.map(({ id }) => id);\n\t\t\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter(\n\t\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\t\treturn dataItemIds.includes(value.dx as string);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst label =\n\t\t\t\t\t\t\t(dataSources.length === 1\n\t\t\t\t\t\t\t\t? head(dataSources)?.label\n\t\t\t\t\t\t\t\t: dataSources.reduce(\n\t\t\t\t\t\t\t\t\t\t(acc, { label }) => `${acc} / ${label}`,\n\t\t\t\t\t\t\t\t\t\t\"\",\n\t\t\t\t\t\t\t\t\t)) ?? \"\";\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tlabel,\n\t\t\t\t\t\t\tdataValues,\n\t\t\t\t\t\t\tdataHolder,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t)\n\t\t\t\t.flat()\n\t\t\t\t.filter((data) => {\n\t\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\t\tmeta,\n\t\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn average >= totalAverage;\n\t\t\t\t})\n\t\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t\t}\n\n\t\treturn meta.orgUnits\n\t\t\t.map((orgUnit, i) => {\n\t\t\t\tconst dataValues = sanitizedAnalyticsData.filter((value) => {\n\t\t\t\t\treturn orgUnit.uid === value.ou;\n\t\t\t\t});\n\n\t\t\t\tconst label = showHierarchy\n\t\t\t\t\t? orgUnit.hierarchy.replace(\"/\", \"\") ?? \"\"\n\t\t\t\t\t: orgUnit.name ?? \"\";\n\n\t\t\t\treturn {\n\t\t\t\t\tdataValues,\n\t\t\t\t\tlabel,\n\t\t\t\t\torgUnit,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.flat()\n\t\t\t.filter((data) => {\n\t\t\t\tconst average = getAverageValue({\n\t\t\t\t\tmeta,\n\t\t\t\t\tdataValues: data.dataValues,\n\t\t\t\t});\n\n\t\t\t\treturn average >= totalAverage;\n\t\t\t})\n\t\t\t.map((data, index) => ({ ...data, count: index + 1 }));\n\t}\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { flattenDeep, compact } from 'lodash';
|
|
2
|
+
|
|
3
|
+
function getHoldersFromGroups(dataGroups) {
|
|
4
|
+
return flattenDeep(dataGroups?.map(({ dataHolders }) => dataHolders) ?? []);
|
|
5
|
+
}
|
|
6
|
+
function getDataSourcesFromGroups(dataGroups) {
|
|
7
|
+
const dataHolders = compact(getHoldersFromGroups(dataGroups));
|
|
8
|
+
return flattenDeep(dataHolders?.map(({ dataSources }) => dataSources));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { getDataSourcesFromGroups, getHoldersFromGroups };
|
|
12
|
+
//# sourceMappingURL=out.js.map
|
|
13
|
+
//# sourceMappingURL=dataSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/dataSources.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,mBAAmB;AAM9B,SAAS,qBACf,YACwB;AACxB,SAAO,YAAY,YAAY,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW,KAAK,CAAC,CAAC;AAC3E;AAEO,SAAS,yBAAyB,YAAkC;AAC1E,QAAM,cAAc,QAAQ,qBAAqB,UAAU,CAAC;AAC5D,SAAO,YAAY,aAAa,IAAI,CAAC,EAAE,YAAY,MAAM,WAAW,CAAC;AACtE","sourcesContent":["import { compact, flattenDeep } from \"lodash\";\nimport type {\n\tScorecardDataGroup,\n\tScorecardDataHolder,\n} from \"../schemas/config\";\n\nexport function getHoldersFromGroups(\n\tdataGroups: ScorecardDataGroup[],\n): ScorecardDataHolder[] {\n\treturn flattenDeep(dataGroups?.map(({ dataHolders }) => dataHolders) ?? []);\n}\n\nexport function getDataSourcesFromGroups(dataGroups: ScorecardDataGroup[]) {\n\tconst dataHolders = compact(getHoldersFromGroups(dataGroups));\n\treturn flattenDeep(dataHolders?.map(({ dataSources }) => dataSources));\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class ScorecardEngine {
|
|
2
|
+
constructor({
|
|
3
|
+
config,
|
|
4
|
+
meta,
|
|
5
|
+
state
|
|
6
|
+
}) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
this.meta = meta;
|
|
9
|
+
this.state = state;
|
|
10
|
+
}
|
|
11
|
+
getRows() {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { ScorecardEngine };
|
|
17
|
+
//# sourceMappingURL=out.js.map
|
|
18
|
+
//# sourceMappingURL=engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Scorecard/utils/engine.ts"],"names":[],"mappings":"AAOO,MAAM,gBAAgB;AAAA,EAK5B,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACD,GAIG;AACF,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,QAAQ;AAAA,EACd;AAAA,EAEA,UAAgC;AAC/B,WAAO,CAAC;AAAA,EACT;AACD","sourcesContent":["import type {\n\tScorecardConfig,\n\tScorecardState,\n\tScorecardTableData,\n} from \"../schemas/config\";\nimport type { ScorecardMeta } from \"../components/MetaProvider\";\n\nexport class ScorecardEngine {\n\tconfig: ScorecardConfig;\n\tstate: ScorecardState;\n\tmeta: ScorecardMeta;\n\n\tconstructor({\n\t\tconfig,\n\t\tmeta,\n\t\tstate,\n\t}: {\n\t\tconfig: ScorecardConfig;\n\t\tstate: ScorecardState;\n\t\tmeta: ScorecardMeta;\n\t}) {\n\t\tthis.config = config;\n\t\tthis.meta = meta;\n\t\tthis.state = state;\n\t}\n\n\tgetRows(): ScorecardTableData[] {\n\t\treturn [];\n\t}\n}\n"]}
|