@undp/data-viz 2.5.4 → 2.6.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.
- package/dist/AreaChart.cjs +1 -1
- package/dist/AreaChart.cjs.map +1 -1
- package/dist/AreaChart.js +17 -16
- package/dist/AreaChart.js.map +1 -1
- package/dist/Axis-DY7jsk1Y.cjs +2 -0
- package/dist/{Axis-BTaS9oPQ.cjs.map → Axis-DY7jsk1Y.cjs.map} +1 -1
- package/dist/{Axis-CNZYWzH0.js → Axis-RRx-0Rlw.js} +9 -8
- package/dist/{Axis-CNZYWzH0.js.map → Axis-RRx-0Rlw.js.map} +1 -1
- package/dist/AxisTitle-B9F80_Z0.js +30 -0
- package/dist/AxisTitle-B9F80_Z0.js.map +1 -0
- package/dist/AxisTitle-CyFFbdNU.cjs +2 -0
- package/dist/{AxisTitle-DP_evhbe.cjs.map → AxisTitle-CyFFbdNU.cjs.map} +1 -1
- package/dist/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +203 -201
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +1 -1
- package/dist/BasicStatCard.cjs.map +1 -1
- package/dist/BasicStatCard.js +15 -14
- package/dist/BasicStatCard.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.js +60 -59
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.js +88 -86
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/BulletChart.cjs +1 -1
- package/dist/BulletChart.cjs.map +1 -1
- package/dist/BulletChart.js +88 -86
- package/dist/BulletChart.js.map +1 -1
- package/dist/ButterflyChart.cjs +1 -1
- package/dist/ButterflyChart.cjs.map +1 -1
- package/dist/ButterflyChart.js +100 -98
- package/dist/ButterflyChart.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.js +83 -81
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +4 -4
- package/dist/ColorLegend.cjs +1 -1
- package/dist/ColorLegend.cjs.map +1 -1
- package/dist/ColorLegend.js +17 -16
- package/dist/ColorLegend.js.map +1 -1
- package/dist/ColorLegendWithMouseOver.cjs +1 -1
- package/dist/ColorLegendWithMouseOver.cjs.map +1 -1
- package/dist/ColorLegendWithMouseOver.js +13 -12
- package/dist/ColorLegendWithMouseOver.js.map +1 -1
- package/dist/CopyTextButton.cjs +1 -1
- package/dist/CopyTextButton.cjs.map +1 -1
- package/dist/CopyTextButton.js +37 -754
- package/dist/CopyTextButton.js.map +1 -1
- package/dist/CsvDownloadButton.cjs +4 -4
- package/dist/CsvDownloadButton.cjs.map +1 -1
- package/dist/CsvDownloadButton.js +47 -45
- package/dist/CsvDownloadButton.js.map +1 -1
- package/dist/DataCards.cjs +1 -1
- package/dist/DataCards.cjs.map +1 -1
- package/dist/DataCards.js +213 -467
- package/dist/DataCards.js.map +1 -1
- package/dist/DataTable.cjs +1 -1
- package/dist/DataTable.cjs.map +1 -1
- package/dist/DataTable.js +19 -19
- package/dist/DetailsModal-BmjtLqrZ.cjs +2 -0
- package/dist/{DetailsModal-Du8Fr1QD.cjs.map → DetailsModal-BmjtLqrZ.cjs.map} +1 -1
- package/dist/{DetailsModal-GqEbGHY2.js → DetailsModal-k-Me_U_T.js} +3 -3
- package/dist/{DetailsModal-GqEbGHY2.js.map → DetailsModal-k-Me_U_T.js.map} +1 -1
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.js +61 -60
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DonutChart.cjs +1 -1
- package/dist/DonutChart.cjs.map +1 -1
- package/dist/DonutChart.js +47 -46
- package/dist/DonutChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.js +112 -110
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.js +13 -12
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/DumbbellChart.cjs +1 -1
- package/dist/DumbbellChart.cjs.map +1 -1
- package/dist/DumbbellChart.js +104 -102
- package/dist/DumbbellChart.js.map +1 -1
- package/dist/EmptyState-BoaUUuo6.cjs +2 -0
- package/dist/{EmptyState-CFmiFPHz.cjs.map → EmptyState-BoaUUuo6.cjs.map} +1 -1
- package/dist/{EmptyState-CaxXCkiN.js → EmptyState-prZ8OnEs.js} +4 -4
- package/dist/{EmptyState-CaxXCkiN.js.map → EmptyState-prZ8OnEs.js.map} +1 -1
- package/dist/ExcelDownloadButton.cjs +1 -1
- package/dist/ExcelDownloadButton.cjs.map +1 -1
- package/dist/ExcelDownloadButton.js +15 -13
- package/dist/ExcelDownloadButton.js.map +1 -1
- package/dist/FootNote.cjs +1 -1
- package/dist/FootNote.cjs.map +1 -1
- package/dist/FootNote.js +10 -9
- package/dist/FootNote.js.map +1 -1
- package/dist/GeoHubCompareMaps.cjs +1 -1
- package/dist/GeoHubCompareMaps.cjs.map +1 -1
- package/dist/GeoHubCompareMaps.js +14 -14
- package/dist/GeoHubMap.cjs +1 -1
- package/dist/GeoHubMap.cjs.map +1 -1
- package/dist/GeoHubMap.js +59 -59
- package/dist/GeoHubMapWithLayerSelection.cjs +1 -1
- package/dist/GeoHubMapWithLayerSelection.cjs.map +1 -1
- package/dist/GeoHubMapWithLayerSelection.js +50 -50
- package/dist/{GraphContainer-B8ZqOzKI.js → GraphContainer-DcOM2CI6.js} +28 -27
- package/dist/GraphContainer-DcOM2CI6.js.map +1 -0
- package/dist/GraphContainer-gaG9TSy4.cjs +2 -0
- package/dist/{GraphContainer-Cul9b74X.cjs.map → GraphContainer-gaG9TSy4.cjs.map} +1 -1
- package/dist/GraphDescription.cjs +1 -1
- package/dist/GraphDescription.cjs.map +1 -1
- package/dist/GraphDescription.js +14 -13
- package/dist/GraphDescription.js.map +1 -1
- package/dist/{GraphEl-Ch0uAeZw.js → GraphEl-C7KBBHvB.js} +9 -9
- package/dist/{GraphEl-Ch0uAeZw.js.map → GraphEl-C7KBBHvB.js.map} +1 -1
- package/dist/GraphEl-CGALp07K.cjs +2 -0
- package/dist/{GraphEl-BgkDbq50.cjs.map → GraphEl-CGALp07K.cjs.map} +1 -1
- package/dist/GraphFooter.cjs +1 -1
- package/dist/GraphFooter.cjs.map +1 -1
- package/dist/GraphFooter.js +2 -2
- package/dist/GraphHeader.cjs +1 -1
- package/dist/GraphHeader.cjs.map +1 -1
- package/dist/GraphHeader.js +1 -1
- package/dist/GraphTitle.cjs +1 -1
- package/dist/GraphTitle.cjs.map +1 -1
- package/dist/GraphTitle.js +14 -13
- package/dist/GraphTitle.js.map +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.cjs.map +1 -1
- package/dist/GriddedGraphs.js +58 -55
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.cjs +1 -1
- package/dist/GriddedGraphsFromConfig.cjs.map +1 -1
- package/dist/GriddedGraphsFromConfig.js +15 -15
- package/dist/HeatMap.cjs +1 -1
- package/dist/HeatMap.cjs.map +1 -1
- package/dist/HeatMap.js +17 -16
- package/dist/HeatMap.js.map +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.cjs.map +1 -1
- package/dist/Histogram.js +3 -3
- package/dist/HybridMap.cjs +1 -1
- package/dist/HybridMap.cjs.map +1 -1
- package/dist/HybridMap.js +392 -424
- package/dist/HybridMap.js.map +1 -1
- package/dist/ImageDownloadButton.cjs +1 -1
- package/dist/ImageDownloadButton.cjs.map +1 -1
- package/dist/ImageDownloadButton.js +16 -14
- package/dist/ImageDownloadButton.js.map +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.js +16 -15
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/LinearColorLegend.cjs +1 -1
- package/dist/LinearColorLegend.cjs.map +1 -1
- package/dist/LinearColorLegend.js +5 -4
- package/dist/LinearColorLegend.js.map +1 -1
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.cjs.map +1 -1
- package/dist/MultiGraphDashboard.js +62 -60
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardFromConfig.cjs.map +1 -1
- package/dist/MultiGraphDashboardFromConfig.js +7 -7
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js +21 -21
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.cjs.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormatFromConfig.js +3 -3
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +16 -15
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +16 -15
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/ParetoChart.cjs +1 -1
- package/dist/ParetoChart.cjs.map +1 -1
- package/dist/ParetoChart.js +14 -13
- package/dist/ParetoChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +67 -65
- package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +8 -8
- package/dist/PerformanceIntensiveScrollStory.cjs +1 -1
- package/dist/PerformanceIntensiveScrollStory.cjs.map +1 -1
- package/dist/PerformanceIntensiveScrollStory.js +3 -3
- package/dist/RadarChart.cjs +1 -1
- package/dist/RadarChart.cjs.map +1 -1
- package/dist/RadarChart.js +11 -10
- package/dist/RadarChart.js.map +1 -1
- package/dist/ReferenceLine-CxITVT1K.cjs +2 -0
- package/dist/{ReferenceLine-CpU4G01Y.cjs.map → ReferenceLine-CxITVT1K.cjs.map} +1 -1
- package/dist/{ReferenceLine-D41VuUhE.js → ReferenceLine-NF4g3Reh.js} +26 -25
- package/dist/ReferenceLine-NF4g3Reh.js.map +1 -0
- package/dist/RegressionLine-BQ6h-NZP.js +88 -0
- package/dist/RegressionLine-BQ6h-NZP.js.map +1 -0
- package/dist/RegressionLine-BpcVBjL0.cjs +2 -0
- package/dist/{RegressionLine-BFoBiVJk.cjs.map → RegressionLine-BpcVBjL0.cjs.map} +1 -1
- package/dist/SVGDownloadButton.cjs +1 -1
- package/dist/SVGDownloadButton.cjs.map +1 -1
- package/dist/SVGDownloadButton.js +11 -9
- package/dist/SVGDownloadButton.js.map +1 -1
- package/dist/SankeyChart.cjs +1 -1
- package/dist/SankeyChart.cjs.map +1 -1
- package/dist/SankeyChart.js +63 -62
- package/dist/SankeyChart.js.map +1 -1
- package/dist/ScatterPlot.cjs +1 -1
- package/dist/ScatterPlot.cjs.map +1 -1
- package/dist/ScatterPlot.js +109 -107
- package/dist/ScatterPlot.js.map +1 -1
- package/dist/ScrollStory.cjs +1 -1
- package/dist/ScrollStory.cjs.map +1 -1
- package/dist/ScrollStory.js +3 -3
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.js +17 -16
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.cjs.map +1 -1
- package/dist/SingleGraphDashboard.js +59 -56
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardFromConfig.cjs.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.js +6 -6
- package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.cjs.map +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.js +12 -12
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs.map +1 -1
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +8 -8
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.js +59 -56
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +7 -7
- package/dist/SlopeChart.cjs +1 -1
- package/dist/SlopeChart.cjs.map +1 -1
- package/dist/SlopeChart.js +60 -59
- package/dist/SlopeChart.js.map +1 -1
- package/dist/Source.cjs +1 -1
- package/dist/Source.cjs.map +1 -1
- package/dist/Source.js +38 -4
- package/dist/Source.js.map +1 -1
- package/dist/SparkLine.cjs +1 -1
- package/dist/SparkLine.cjs.map +1 -1
- package/dist/SparkLine.js +11 -10
- package/dist/SparkLine.js.map +1 -1
- package/dist/StatCardFromData.cjs +1 -1
- package/dist/StatCardFromData.cjs.map +1 -1
- package/dist/StatCardFromData.js +15 -14
- package/dist/StatCardFromData.js.map +1 -1
- package/dist/StripChart.cjs +1 -1
- package/dist/StripChart.cjs.map +1 -1
- package/dist/StripChart.js +11 -10
- package/dist/StripChart.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.js +52 -51
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.cjs.map +1 -1
- package/dist/ThresholdColorLegendWithMouseOver.js +17 -16
- package/dist/ThresholdColorLegendWithMouseOver.js.map +1 -1
- package/dist/{Tooltip-3EYDVa3w.js → Tooltip-DO56mY4b.js} +11 -10
- package/dist/{Tooltip-3EYDVa3w.js.map → Tooltip-DO56mY4b.js.map} +1 -1
- package/dist/Tooltip-DwUFLDrj.cjs +2 -0
- package/dist/{Tooltip-C9F3uYG0.cjs.map → Tooltip-DwUFLDrj.cjs.map} +1 -1
- package/dist/TreeMapGraph.cjs +1 -1
- package/dist/TreeMapGraph.cjs.map +1 -1
- package/dist/TreeMapGraph.js +34 -33
- package/dist/TreeMapGraph.js.map +1 -1
- package/dist/UnitChart.cjs +1 -1
- package/dist/UnitChart.cjs.map +1 -1
- package/dist/UnitChart.js +27 -27
- package/dist/WaterfallChart.cjs +1 -1
- package/dist/WaterfallChart.cjs.map +1 -1
- package/dist/WaterfallChart.js +21 -20
- package/dist/WaterfallChart.js.map +1 -1
- package/dist/XAxesLabels-0ROJnigy.cjs +2 -0
- package/dist/{XAxesLabels-C03jHniq.cjs.map → XAxesLabels-0ROJnigy.cjs.map} +1 -1
- package/dist/{XAxesLabels-B9gkjUiC.js → XAxesLabels-CPZX3OJN.js} +12 -11
- package/dist/XAxesLabels-CPZX3OJN.js.map +1 -0
- package/dist/XTicksAndGridLines-BO6KJc8d.cjs +2 -0
- package/dist/{XTicksAndGridLines-B4UhDVyU.cjs.map → XTicksAndGridLines-BO6KJc8d.cjs.map} +1 -1
- package/dist/{XTicksAndGridLines-CkYwVshF.js → XTicksAndGridLines-obTK2e7G.js} +10 -9
- package/dist/{XTicksAndGridLines-CkYwVshF.js.map → XTicksAndGridLines-obTK2e7G.js.map} +1 -1
- package/dist/{YAxesLabels-hWEUCTvs.js → YAxesLabels-CwVnFG2a.js} +13 -12
- package/dist/YAxesLabels-CwVnFG2a.js.map +1 -0
- package/dist/YAxesLabels-DIa2cEXL.cjs +2 -0
- package/dist/{YAxesLabels-DeENFC2M.cjs.map → YAxesLabels-DIa2cEXL.cjs.map} +1 -1
- package/dist/YTicksAndGridLines-C7glLI5b.cjs +2 -0
- package/dist/{YTicksAndGridLines-sT3zdCs6.cjs.map → YTicksAndGridLines-C7glLI5b.cjs.map} +1 -1
- package/dist/{YTicksAndGridLines-BbujwxOB.js → YTicksAndGridLines-wtuAKNeT.js} +10 -9
- package/dist/{YTicksAndGridLines-BbujwxOB.js.map → YTicksAndGridLines-wtuAKNeT.js.map} +1 -1
- package/dist/checkIfMultiple-BIEQDuA3.cjs +2 -0
- package/dist/checkIfMultiple-BIEQDuA3.cjs.map +1 -0
- package/dist/checkIfMultiple-D2tgEnYM.js +11 -0
- package/dist/checkIfMultiple-D2tgEnYM.js.map +1 -0
- package/dist/compiler-runtime-oPPev21o.cjs +11 -0
- package/dist/compiler-runtime-oPPev21o.cjs.map +1 -0
- package/dist/compiler-runtime-qHgugrLy.js +297 -0
- package/dist/compiler-runtime-qHgugrLy.js.map +1 -0
- package/dist/customArea-BCGIYDQa.cjs +2 -0
- package/dist/{customArea-BAcQ3pBM.cjs.map → customArea-BCGIYDQa.cjs.map} +1 -1
- package/dist/{customArea-D89lETG0.js → customArea-Dixg0NtQ.js} +10 -9
- package/dist/{customArea-D89lETG0.js.map → customArea-Dixg0NtQ.js.map} +1 -1
- package/dist/{fetchAndParseData-BAXhgTDM.js → fetchAndParseData-CDjQZ1fL.js} +5 -5
- package/dist/{fetchAndParseData-BAXhgTDM.js.map → fetchAndParseData-CDjQZ1fL.js.map} +1 -1
- package/dist/fetchAndParseData.js +1 -1
- package/dist/getSliderMarks-Bj_JJTtX.cjs +2 -0
- package/dist/getSliderMarks-Bj_JJTtX.cjs.map +1 -0
- package/dist/getSliderMarks-DSxFGb1f.js +21 -0
- package/dist/getSliderMarks-DSxFGb1f.js.map +1 -0
- package/dist/index-5BQWR1Z8.cjs +10 -0
- package/dist/{index-FXfr51ZM.cjs.map → index-5BQWR1Z8.cjs.map} +1 -1
- package/dist/index-BaXzoD4r.cjs +2 -0
- package/dist/{index-BuhBhuCq.cjs.map → index-BaXzoD4r.cjs.map} +1 -1
- package/dist/{index-Cv_5q6Rb.js → index-CNUlPiEL.js} +3 -3
- package/dist/{index-Cv_5q6Rb.js.map → index-CNUlPiEL.js.map} +1 -1
- package/dist/{index-DHVGV8Df.js → index-CmkqqFRG.js} +3 -3
- package/dist/{index-DHVGV8Df.js.map → index-CmkqqFRG.js.map} +1 -1
- package/dist/index-D_ls5oK8.js +142 -0
- package/dist/index-D_ls5oK8.js.map +1 -0
- package/dist/index-DbSnila_.cjs +2 -0
- package/dist/index-DbSnila_.cjs.map +1 -0
- package/dist/{index-BPyj_6hG.js → index-_w-CQAbR.js} +113 -112
- package/dist/{index-BPyj_6hG.js.map → index-_w-CQAbR.js.map} +1 -1
- package/dist/index-dN3wiQgD.cjs +2 -0
- package/dist/{index-DuLvdHo2.cjs.map → index-dN3wiQgD.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +181 -180
- package/dist/index.js.map +1 -1
- package/dist/{proxy-BsxtcZKa.js → proxy-D31SA_aE.js} +2 -2
- package/dist/{proxy-BsxtcZKa.js.map → proxy-D31SA_aE.js.map} +1 -1
- package/dist/proxy-QMeVVqam.cjs +2 -0
- package/dist/{proxy-CqH8m8IQ.cjs.map → proxy-QMeVVqam.cjs.map} +1 -1
- package/dist/style.css +1 -1
- package/dist/transformData.js +2 -2
- package/dist/{transformDataForGraphFromFile-dt9sHTVy.js → transformDataForGraphFromFile-COZC6A0_.js} +4 -4
- package/dist/{transformDataForGraphFromFile-dt9sHTVy.js.map → transformDataForGraphFromFile-COZC6A0_.js.map} +1 -1
- package/dist/{use-in-view-KOXq5Kmc.js → use-in-view-Co5SmzfT.js} +2 -2
- package/dist/{use-in-view-KOXq5Kmc.js.map → use-in-view-Co5SmzfT.js.map} +1 -1
- package/dist/use-in-view-DjR_gqJP.cjs +2 -0
- package/dist/{use-in-view-dnRv_qqF.cjs.map → use-in-view-DjR_gqJP.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/Axis-BTaS9oPQ.cjs +0 -2
- package/dist/AxisTitle-CyLCqpW6.js +0 -29
- package/dist/AxisTitle-CyLCqpW6.js.map +0 -1
- package/dist/AxisTitle-DP_evhbe.cjs +0 -2
- package/dist/DetailsModal-Du8Fr1QD.cjs +0 -2
- package/dist/DropdownSelect-CX1yMemd.cjs +0 -5
- package/dist/DropdownSelect-CX1yMemd.cjs.map +0 -1
- package/dist/DropdownSelect-Dz7imdTB.js +0 -4191
- package/dist/DropdownSelect-Dz7imdTB.js.map +0 -1
- package/dist/EmptyState-CFmiFPHz.cjs +0 -2
- package/dist/GraphContainer-B8ZqOzKI.js.map +0 -1
- package/dist/GraphContainer-Cul9b74X.cjs +0 -2
- package/dist/GraphEl-BgkDbq50.cjs +0 -2
- package/dist/Modal-BIErPPKT.cjs +0 -46
- package/dist/Modal-BIErPPKT.cjs.map +0 -1
- package/dist/Modal-CrUYln5V.js +0 -1047
- package/dist/Modal-CrUYln5V.js.map +0 -1
- package/dist/ReferenceLine-CpU4G01Y.cjs +0 -2
- package/dist/ReferenceLine-D41VuUhE.js.map +0 -1
- package/dist/RegressionLine-BFoBiVJk.cjs +0 -2
- package/dist/RegressionLine-CuwB42I6.js +0 -87
- package/dist/RegressionLine-CuwB42I6.js.map +0 -1
- package/dist/Source-PKuwZOn3.cjs +0 -2
- package/dist/Source-PKuwZOn3.cjs.map +0 -1
- package/dist/Source-QGk8vhkS.js +0 -78
- package/dist/Source-QGk8vhkS.js.map +0 -1
- package/dist/Spinner-B2IIKg9r.js +0 -47
- package/dist/Spinner-B2IIKg9r.js.map +0 -1
- package/dist/Spinner-WHzzloYQ.cjs +0 -2
- package/dist/Spinner-WHzzloYQ.cjs.map +0 -1
- package/dist/Tooltip-C9F3uYG0.cjs +0 -2
- package/dist/Typography-BO0gQDIT.js +0 -270
- package/dist/Typography-BO0gQDIT.js.map +0 -1
- package/dist/Typography-BqmyF1gP.cjs +0 -2
- package/dist/Typography-BqmyF1gP.cjs.map +0 -1
- package/dist/XAxesLabels-B9gkjUiC.js.map +0 -1
- package/dist/XAxesLabels-C03jHniq.cjs +0 -2
- package/dist/XTicksAndGridLines-B4UhDVyU.cjs +0 -2
- package/dist/YAxesLabels-DeENFC2M.cjs +0 -2
- package/dist/YAxesLabels-hWEUCTvs.js.map +0 -1
- package/dist/YTicksAndGridLines-sT3zdCs6.cjs +0 -2
- package/dist/checkIfMultiple-CH5tqj4q.cjs +0 -2
- package/dist/checkIfMultiple-CH5tqj4q.cjs.map +0 -1
- package/dist/checkIfMultiple-Dpyy6BUP.js +0 -938
- package/dist/checkIfMultiple-Dpyy6BUP.js.map +0 -1
- package/dist/customArea-BAcQ3pBM.cjs +0 -2
- package/dist/getSliderMarks-BzrpHrHS.cjs +0 -2
- package/dist/getSliderMarks-BzrpHrHS.cjs.map +0 -1
- package/dist/getSliderMarks-X-_goqH9.js +0 -1027
- package/dist/getSliderMarks-X-_goqH9.js.map +0 -1
- package/dist/index-ApTBN0kp.js +0 -196
- package/dist/index-ApTBN0kp.js.map +0 -1
- package/dist/index-BhI7mBJx.cjs +0 -2
- package/dist/index-BhI7mBJx.cjs.map +0 -1
- package/dist/index-BuhBhuCq.cjs +0 -2
- package/dist/index-CHPV5EwG-BzibaIRc.js +0 -3360
- package/dist/index-CHPV5EwG-BzibaIRc.js.map +0 -1
- package/dist/index-CHPV5EwG-D4pAp7u0.cjs +0 -20
- package/dist/index-CHPV5EwG-D4pAp7u0.cjs.map +0 -1
- package/dist/index-DuLvdHo2.cjs +0 -2
- package/dist/index-FXfr51ZM.cjs +0 -10
- package/dist/index-Scxs_wcm-BAjU0Cob.js +0 -49
- package/dist/index-Scxs_wcm-BAjU0Cob.js.map +0 -1
- package/dist/index-Scxs_wcm-DUDU-Gll.cjs +0 -2
- package/dist/index-Scxs_wcm-DUDU-Gll.cjs.map +0 -1
- package/dist/index-w64Zl8io-DrMm5QSb.cjs +0 -2
- package/dist/index-w64Zl8io-DrMm5QSb.cjs.map +0 -1
- package/dist/index-w64Zl8io-ihagHOdP.js +0 -459
- package/dist/index-w64Zl8io-ihagHOdP.js.map +0 -1
- package/dist/proxy-CqH8m8IQ.cjs +0 -2
- package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs +0 -4
- package/dist/toConsumableArray-DiWOvh_d-DcLaZvDq.cjs.map +0 -1
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js +0 -145
- package/dist/toConsumableArray-DiWOvh_d-DlpOlgap.js.map +0 -1
- package/dist/use-in-view-dnRv_qqF.cjs +0 -2
- package/dist/x-BXShoIAM-BC2sxios.cjs +0 -2
- package/dist/x-BXShoIAM-BC2sxios.cjs.map +0 -1
- package/dist/x-BXShoIAM-D6VWO6z5.js +0 -74
- package/dist/x-BXShoIAM-D6VWO6z5.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"klBAsDMA,EAAcC,GACEA,EAAQC,IAAIC,GAAKA,EAAEC,aAAe,CAAC,EAC/BC,OAAO,CAACC,EAAKC,IAAQD,EAAMC,EAAK,CAAC,EAIrDC,EAAuC,CAC3C,WACA,gBACA,yBACA,gBACA,SAAS,EAGJ,SAASC,EAAoBC,EAAc,CAChD,KAAM,CACJC,YAAAA,EACAC,gBAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,MAAAA,EAAQ,QACRC,eAAAA,EACAC,YAAAA,EACAC,kBAAAA,EAAoB,EACpBC,eAAAA,EACAC,OAAAA,EAAS,SACTC,YAAAA,EACAC,gBAAAA,CAAAA,EACEb,EAEE,CAACc,EAAcC,CAAe,EAAIC,EAAAA,SAAcC,MAAS,EAEzD,CAACC,EAAMC,CAAO,EAAIH,EAAAA,SAAcC,MAAS,EACzC,CAACG,EAAgBC,CAAiB,EAAIL,EAAAA,SAAmC,CAAA,CAAE,EAE3EM,EAAe,CACnBC,WAAY,GACZC,cAAe,GACfC,KAAM,EAAA,EAGFC,EAAqBC,EAAAA,eAAe,IAAM,CAC9C,MAAMC,GAAsBxB,GAAW,CAAA,GAAIZ,IAAIqC,IAAO,CACpDC,OAAQD,EAAGE,OACXC,MAAOH,EAAGG,OAAS,aAAaH,EAAGE,MAAM,GACzCE,aAAcJ,EAAGI,aACjBC,UAAWL,EAAGK,UACdC,GAAIN,EAAGM,GACPC,aAAcC,EAAAA,sBAAsBR,EAAGO,YAAY,EACnDE,MAAOD,EAAAA,sBAAsBR,EAAGO,YAAY,EAC5CG,gBAAiBC,EAAAA,aAAatB,EAAMW,EAAGE,MAAM,EAC1CD,OAAOW,GAAK,CAACZ,EAAGa,eAAeC,SAAS,GAAGF,CAAC,EAAE,CAAC,EAC/CjD,IAAIiD,IAAM,CAAEH,MAAOG,EAAGT,MAAOS,CAAAA,EAAI,EACpCG,eAAgBf,EAAGe,eACnBC,MAAOhB,EAAGgB,KAAAA,EACV,EACFxB,EAAkBO,CAAkB,CACtC,CAAC,EAEKkB,EAAoBnB,EAAAA,eAAe,IAAM,CAC7C,GAAI,CAACT,GAAQE,EAAe2B,SAAW,IAAmB7B,CAAI,MACzD,CAEH,MAAM8B,EAAS9B,EAAKY,OAAQmB,GAC1B7B,EAAe8B,MAAMpB,GACnBA,EAAOQ,OAASa,EAAAA,YAAY,CAACrB,EAAOQ,KAAK,CAAC,EAAES,OAAS,EACjDK,eACED,EAAAA,YAAY,CAACF,EAAKnB,EAAOA,MAAM,CAAC,CAAC,EACjCqB,cAAY,CAACrB,EAAOQ,KAAK,CAAC,EAAE9C,IAAIqC,GAAMA,EAAGS,KAAK,CAChD,EAAES,OAAS,EACX,EACN,CACF,EACAhC,EAAgBiC,CAAM,CACxB,CACF,CAAC,EACDK,EAAAA,UAAU,IAAM,CACdP,EAAAA,CACF,EAAG,CAAC1B,EAAgBF,CAAI,CAAC,EAEzBmC,EAAAA,UAAU,IAAM,EACI,SAAY,CAC5B,GAAI,CACF,MAAMC,EAAenD,EAAaoD,QAC9B,OAAOpD,EAAaoD,SAAY,SAC9BpD,EAAaqD,WAAa,OACxB,MAAMC,EAAAA,kBACJtD,EAAaoD,QACbpD,EAAauD,eACbvD,EAAawD,mBACbtD,CACF,EACAF,EAAaqD,WAAa,MACxB,MAAMI,EAAAA,6BACJzD,EAAaoD,QACbpD,EAAa0D,WACb1D,EAAauD,eACbvD,EAAawD,mBACbtD,CACF,EACA,MAAMyD,EAAAA,iBACJ3D,EAAaoD,QACbpD,EAAawD,mBACbxD,EAAauD,eACbrD,EACAF,EAAa4D,UACb,EACF,EACJ,MAAMC,EAAAA,iCACJ7D,EAAaoD,QACbpD,EAAa8D,aACf,EACF,MAAMC,EAAAA,wBAAwB/D,EAAae,KAAMf,EAAauD,cAAc,EAChFvC,EAAQmC,CAAY,CACtB,OAASa,EAAO,CACdC,QAAQD,MAAM,uBAAwBA,CAAK,CAC7C,CACF,GACAE,EACA3C,EAAAA,CACF,EAAG,CAACvB,EAAcE,CAAS,CAAC,EAE5BgD,EAAAA,UAAU,IAAM,CACd3B,EAAAA,CACF,EAAG,CAACtB,EAASc,CAAI,CAAC,EAElB,MAAMoD,EAAqBA,CAACxC,EAAgByC,IAAgB,CAC1DlD,KAA0BmD,EAAKhF,IAAIiF,GAAMA,EAAE3C,SAAWA,EAAS,CAAE,GAAG2C,EAAGnC,MAAOiC,CAAAA,EAAWE,CAAE,CAAC,CAC9F,EACA,gCACGC,iBAAA,CACC,GAAIzE,EACJ,aAAW,sBACX,gBAAiBC,EAAgByE,iBAAmB,GACpD,MAAOrE,GAAS,QAChB,SAAUJ,EAAgB0E,UAAY,KACtC,QAAS1E,EAAgB2E,QAExB3E,SAAAA,CAAAA,EAAgB4E,OAAS5E,EAAgB6E,YACxCC,EAAAA,kBAAAA,IAACC,EAAAA,YAAA,CACC,WAAY/E,EAAgB4E,MAC5B,iBAAkB5E,EAAgB6E,YAClC,YAAW,GAAA,EAEX,KACJG,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,uBACZ9D,SAAAA,CAAAA,EAAe2B,SAAW,EACzBiC,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,0BACV,MAAO,CACLnC,MAAOnC,IAAmB,OAAS,QAAU,MAAA,EAG/C,SAAAsE,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,uDACZ5D,SAAAA,GAAgB5B,IAAI,CAACC,EAAG0F,IACvBD,EAAAA,kBAAAA,KAAC,MAAA,CACC,MAAO,CACLrC,MACEpD,EAAEoD,OACF,QAAQ,IAAMpC,CAAiB,QAC5BA,EAAoB,GAAKA,CAAiB,OAE/C2E,SAAU3F,EAAEoD,MAAQ,EAAI,EACxBwC,WAAY5F,EAAE0C,KAAO,SAAW1C,EAAEoD,MAAQ,EAAI,EAC9CyC,SAAU,OAAA,EAIZ,SAAA,CAAAN,EAAAA,kBAAAA,IAACO,EAAAA,EAAA,CAAM,UAAU,OAAQ9F,SAAAA,EAAEuC,MAAM,EAChCvC,EAAEwC,aACDxC,EAAE0C,KAAO,QACP6C,EAAAA,kBAAAA,IAACQ,EAAAA,GAAA,CACC,QAAS/F,EAAE8C,gBACX,QAAS5B,EACT,YAAalB,EAAEyC,YAAcjB,OAAY,GAAOxB,EAAEyC,UAClD,aAAY,GACZ,yBAAwB,GACxB,aAAcuD,EAAAA,GAAanE,CAAY,EACvC,SAAUO,GAAM,CACdyC,EAAmB7E,EAAEqC,OAAQD,CAAE,CACjC,EACA,MAAOpC,EAAE6C,MACT,aAAc7C,EAAE2C,YAAAA,CAAa,EAG/B4C,EAAAA,kBAAAA,IAACU,EAAAA,GAAA,CACC,QAAS/E,EACT,aAAelB,EAAE2C,aAAkDE,MACnE,cAAeT,GAAM,CACnByC,EACE7E,EAAEqC,OACFrC,EAAE8C,gBAAgBT,OAAOW,GAAKA,EAAEH,QAAUT,CAAE,CAC9C,CACF,EAECpC,WAAE8C,gBAAgB/C,IAAI,CAACqC,EAAI8D,IAC1BX,EAAAA,kBAAAA,IAACY,EAAAA,GAAA,CAAe,MAAO,GAAG/D,EAAGG,KAAK,GAAI,MAAO,GAAGH,EAAGS,KAAK,IAASqD,CAAE,CACpE,CAAA,CACH,EAGFT,EAAAA,kBAAAA,KAAAW,EAAAA,kBAAAA,SAAA,CACGpG,SAAAA,CAAAA,EAAE0C,KAAO,QACR6C,EAAAA,kBAAAA,IAACQ,EAAAA,GAAA,CACC,QAAS/F,EAAE8C,gBACX,QAAS5B,EACT,KAAK,KACL,QAAO,GACP,YAAalB,EAAEyC,YAAcjB,OAAY,GAAOxB,EAAEyC,UAClD,aAAY,GACZ,yBAAwB,GACxB,aAAcuD,EAAAA,GAAanE,CAAY,EACvC,SAAUO,GAAM,CACdyC,EAAmB7E,EAAEqC,OAAQD,CAAE,CACjC,EACA,MAAOpC,EAAE6C,MACT,aAAc7C,EAAE2C,aAAa,EAG/B4C,wBAACc,EAAAA,EAAA,CACC,QAASnF,EACT,aACElB,EAAE2C,aAEI3C,EAAE2C,aAIF5C,IAAIqC,GAAM,GAAGA,EAAGS,KAAK,EAAE,EACzB,CAAA,EAEN,MACE7C,EAAE6C,MAEI7C,EAAE6C,MAIF9C,IAAIqC,GAAM,GAAGA,EAAGS,KAAK,EAAE,EACzBrB,OAEN,cAAeY,GAAM,CACnByC,EACE7E,EAAEqC,OACFrC,EAAE8C,gBAAgBT,OAAOW,GAAKZ,EAAGkE,QAAQ,GAAGtD,EAAEH,KAAK,EAAE,IAAM,EAAE,CAC/D,CACF,EAEC7C,WAAE8C,gBAAgB/C,IAAI,CAACqC,EAAI8D,4BACzBK,EAAAA,EAAA,CACC,MAAO,GAAGnE,EAAGG,KAAK,GAClB,MAAO,GAAGH,EAAGS,KAAK,EAAA,EACbqD,CAAE,CAEV,CAAA,CACH,EAEDlG,EAAEmD,eACDoC,EAAAA,kBAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,mGACV,QAAS,IAAM,CACbV,EAAmB7E,EAAEqC,OAAQrC,EAAE8C,eAAe,CAChD,EACD,8BAED,EACE,IAAA,CAAA,CACN,CAAA,CAAA,EAtGG4C,CAwGP,CACD,EACH,CAAA,CACF,EACE,KACJH,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,6DACV,MAAO,CACLnC,MAAOnC,IAAmB,OAAS,4BAA8B,MAAA,EAGlER,SAAAA,EAAgB+F,KAAKzG,IAAI,CAACC,EAAG0F,IAC5BH,EAAAA,kBAAAA,IAAC,MAAA,CAEC,UAAU,mDACV,MAAO,CACLkB,UAAW,GAAGzG,EAAE0G,QAAU,CAAC,IAAA,EAG5B1G,SAAAA,EAAEF,QAAQC,IAAI,CAACqC,EAAI8D,IAClBX,EAAAA,kBAAAA,IAAC,MAAA,CAEC,UAAU,oCACV,MAAO,CACLnC,MAAO,QAAS,KAAOhB,EAAGnC,aAAe,GAAMJ,EAAWG,EAAEF,OAAO,CAAC,QACjED,EAAWG,EAAEF,OAAO,GAAKsC,EAAGnC,aAAe,IAAMJ,EAAWG,EAAEF,OAAO,CAAC,OAEzE2G,UAAW,SAAA,EAGb,SAAAlB,EAAAA,kBAAAA,IAACoB,EAAAA,qBAAA,CACC,UAAWvE,EAAGwE,UACd,YAAaxE,EAAGrB,YAChB,OAAAG,EACA,cAAe,CACb,GAAIkB,EAAGyE,UAAY,CAAA,EACnBzD,MAAO5B,OACPkF,OAAQlF,OACRiF,UAAWjF,OACXsF,eAAgBtF,OAChBuF,4BAA6B3E,EAAG4E,eAC5B,GACA5E,EAAGyE,UAAUE,4BACjBE,OAAQ7E,EAAGyE,UAAUI,QAAU9F,EAC/B+F,WAAY9E,EAAGyE,UAAUK,YAAc9F,EACvC+F,OAAQ/E,EAAGwE,YAAc,aAAepF,OAAYY,EAAGyE,UAAUM,OACjEC,KAAMhF,EAAGwE,YAAc,YAAcxE,EAAGyE,UAAUO,KAAO5F,OACzD2D,SAAU/C,EAAGyE,UAAU1B,UAAY1E,EAAgB0E,SACnDtE,MAAOuB,EAAGyE,UAAUhG,OAASA,CAAAA,EAE/B,aAAc,CACZY,KAAMJ,EAAegG,EAAAA,WAAWhG,EAAcN,GAAe,CAAA,CAAE,EAAIS,MAAAA,EAErE,cACEY,EAAG4E,gBACH3G,EAAwBiG,QAAQlE,EAAGwE,SAAS,IAAM,IAClDjF,EAAe2F,aAAetC,EAAE3C,SAAWD,EAAG4E,cAAc,IAAM,GAC9DO,GAAY,CACV,MAAMC,EAAO7F,EAAe2F,aACrBtC,EAAE3C,SAAWD,EAAG4E,cACvB,EACMnE,EAAQ0E,EACV5F,EAAe6F,CAAI,EAAEhF,aACnB,CAAEK,MAAO0E,EAAUhF,MAAOgF,CAAAA,EAC1B,CAAC,CAAE1E,MAAO0E,EAAUhF,MAAOgF,CAAAA,CAAU,EACvC/F,OACJqD,EAAmBzC,EAAG4E,eAA0BnE,CAAK,CACvD,EACArB,OAEN,cAAeY,EAAGqF,cAClB,qBAAsBrF,EAAGsF,qBACzB,6BAA8BtF,EAAGuF,6BACjC,uBAAwBvF,EAAGwF,uBAC3B,UAAAhH,EACA,eAAgBE,GAAkB,CAAA,CAAA,CAAG,CAAA,EAtDlCoF,CAwDP,CACD,GAjEIR,CAkEP,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"usBAsDMA,EAAcC,GACEA,EAAQC,IAAIC,GAAKA,EAAEC,aAAe,CAAC,EAC/BC,OAAO,CAACC,EAAKC,IAAQD,EAAMC,EAAK,CAAC,EAIrDC,EAAuC,CAC3C,WACA,gBACA,yBACA,gBACA,SAAS,EAGJ,SAASC,EAAoBC,EAAc,CAChD,KAAM,CACJC,YAAAA,EACAC,gBAAAA,EACAC,aAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,MAAAA,EAAQ,QACRC,eAAAA,EACAC,YAAAA,EACAC,kBAAAA,EAAoB,EACpBC,eAAAA,EACAC,OAAAA,EAAS,SACTC,YAAAA,EACAC,gBAAAA,CAAAA,EACEb,EAEE,CAACc,EAAcC,CAAe,EAAIC,EAAAA,SAAcC,MAAS,EAEzD,CAACC,EAAMC,CAAO,EAAIH,EAAAA,SAAcC,MAAS,EACzC,CAACG,EAAgBC,CAAiB,EAAIL,EAAAA,SAAmC,CAAA,CAAE,EAE3EM,EAAe,CACnBC,WAAY,GACZC,cAAe,GACfC,KAAM,EAAA,EAGFC,EAAqBC,EAAAA,eAAe,IAAM,CAC9C,MAAMC,GAAsBxB,GAAW,CAAA,GAAIZ,IAAIqC,IAAO,CACpDC,OAAQD,EAAGE,OACXC,MAAOH,EAAGG,OAAS,aAAaH,EAAGE,MAAM,GACzCE,aAAcJ,EAAGI,aACjBC,UAAWL,EAAGK,UACdC,GAAIN,EAAGM,GACPC,aAAcC,EAAAA,sBAAsBR,EAAGO,YAAY,EACnDE,MAAOD,EAAAA,sBAAsBR,EAAGO,YAAY,EAC5CG,gBAAiBC,EAAAA,aAAatB,EAAMW,EAAGE,MAAM,EAC1CD,OAAOW,GAAK,CAACZ,EAAGa,eAAeC,SAAS,GAAGF,CAAC,EAAE,CAAC,EAC/CjD,IAAIiD,IAAM,CAAEH,MAAOG,EAAGT,MAAOS,CAAAA,EAAI,EACpCG,eAAgBf,EAAGe,eACnBC,MAAOhB,EAAGgB,KAAAA,EACV,EACFxB,EAAkBO,CAAkB,CACtC,CAAC,EAEKkB,EAAoBnB,EAAAA,eAAe,IAAM,CAC7C,GAAI,CAACT,GAAQE,EAAe2B,SAAW,IAAmB7B,CAAI,MACzD,CAEH,MAAM8B,EAAS9B,EAAKY,OAAQmB,GAC1B7B,EAAe8B,MAAMpB,GACnBA,EAAOQ,OAASa,EAAAA,YAAY,CAACrB,EAAOQ,KAAK,CAAC,EAAES,OAAS,EACjDK,eACED,EAAAA,YAAY,CAACF,EAAKnB,EAAOA,MAAM,CAAC,CAAC,EACjCqB,cAAY,CAACrB,EAAOQ,KAAK,CAAC,EAAE9C,IAAIqC,GAAMA,EAAGS,KAAK,CAChD,EAAES,OAAS,EACX,EACN,CACF,EACAhC,EAAgBiC,CAAM,CACxB,CACF,CAAC,EACDK,EAAAA,UAAU,IAAM,CACdP,EAAAA,CACF,EAAG,CAAC1B,EAAgBF,CAAI,CAAC,EAEzBmC,EAAAA,UAAU,IAAM,EACI,SAAY,CAC5B,GAAI,CACF,MAAMC,EAAenD,EAAaoD,QAC9B,OAAOpD,EAAaoD,SAAY,SAC9BpD,EAAaqD,WAAa,OACxB,MAAMC,EAAAA,kBACJtD,EAAaoD,QACbpD,EAAauD,eACbvD,EAAawD,mBACbtD,CACF,EACAF,EAAaqD,WAAa,MACxB,MAAMI,EAAAA,6BACJzD,EAAaoD,QACbpD,EAAa0D,WACb1D,EAAauD,eACbvD,EAAawD,mBACbtD,CACF,EACA,MAAMyD,EAAAA,iBACJ3D,EAAaoD,QACbpD,EAAawD,mBACbxD,EAAauD,eACbrD,EACAF,EAAa4D,UACb,EACF,EACJ,MAAMC,EAAAA,iCACJ7D,EAAaoD,QACbpD,EAAa8D,aACf,EACF,MAAMC,EAAAA,wBAAwB/D,EAAae,KAAMf,EAAauD,cAAc,EAChFvC,EAAQmC,CAAY,CACtB,OAASa,EAAO,CACdC,QAAQD,MAAM,uBAAwBA,CAAK,CAC7C,CACF,GACAE,EACA3C,EAAAA,CACF,EAAG,CAACvB,EAAcE,CAAS,CAAC,EAE5BgD,EAAAA,UAAU,IAAM,CACd3B,EAAAA,CACF,EAAG,CAACtB,EAASc,CAAI,CAAC,EAElB,MAAMoD,EAAqBA,CAACxC,EAAgByC,IAAgB,CAC1DlD,KAA0BmD,EAAKhF,IAAIiF,GAAMA,EAAE3C,SAAWA,EAAS,CAAE,GAAG2C,EAAGnC,MAAOiC,CAAAA,EAAWE,CAAE,CAAC,CAC9F,EACA,gCACGC,iBAAA,CACC,GAAIzE,EACJ,aAAW,sBACX,gBAAiBC,EAAgByE,iBAAmB,GACpD,MAAOrE,GAAS,QAChB,SAAUJ,EAAgB0E,UAAY,KACtC,QAAS1E,EAAgB2E,QAExB3E,SAAAA,CAAAA,EAAgB4E,OAAS5E,EAAgB6E,YACxCC,EAAAA,kBAAAA,IAACC,EAAAA,YAAA,CACC,WAAY/E,EAAgB4E,MAC5B,iBAAkB5E,EAAgB6E,YAClC,YAAW,GAAA,EAEX,KACJG,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,uBACZ9D,SAAAA,CAAAA,EAAe2B,SAAW,EACzBiC,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,0BACV,MAAO,CACLnC,MAAOnC,IAAmB,OAAS,QAAU,MAAA,EAG/C,SAAAsE,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,uDACZ5D,SAAAA,GAAgB5B,IAAI,CAACC,EAAG0F,IACvBD,EAAAA,kBAAAA,KAAC,MAAA,CACC,MAAO,CACLrC,MACEpD,EAAEoD,OACF,QAAQ,IAAMpC,CAAiB,QAC5BA,EAAoB,GAAKA,CAAiB,OAE/C2E,SAAU3F,EAAEoD,MAAQ,EAAI,EACxBwC,WAAY5F,EAAE0C,KAAO,SAAW1C,EAAEoD,MAAQ,EAAI,EAC9CyC,SAAU,OAAA,EAIZ,SAAA,CAAAN,EAAAA,kBAAAA,IAACO,EAAAA,MAAA,CAAM,UAAU,OAAQ9F,SAAAA,EAAEuC,MAAM,EAChCvC,EAAEwC,aACDxC,EAAE0C,KAAO,QACP6C,EAAAA,kBAAAA,IAACQ,EAAAA,eAAA,CACC,QAAS/F,EAAE8C,gBACX,QAAS5B,EACT,YAAalB,EAAEyC,YAAcjB,OAAY,GAAOxB,EAAEyC,UAClD,aAAY,GACZ,yBAAwB,GACxB,aAAcuD,EAAAA,aAAanE,CAAY,EACvC,SAAUO,GAAM,CACdyC,EAAmB7E,EAAEqC,OAAQD,CAAE,CACjC,EACA,MAAOpC,EAAE6C,MACT,aAAc7C,EAAE2C,YAAAA,CAAa,EAG/B4C,EAAAA,kBAAAA,IAACU,EAAAA,WAAA,CACC,QAAS/E,EACT,aAAelB,EAAE2C,aAAkDE,MACnE,cAAeT,GAAM,CACnByC,EACE7E,EAAEqC,OACFrC,EAAE8C,gBAAgBT,OAAOW,GAAKA,EAAEH,QAAUT,CAAE,CAC9C,CACF,EAECpC,WAAE8C,gBAAgB/C,IAAI,CAACqC,EAAI8D,IAC1BX,EAAAA,kBAAAA,IAACY,EAAAA,eAAA,CAAe,MAAO,GAAG/D,EAAGG,KAAK,GAAI,MAAO,GAAGH,EAAGS,KAAK,IAASqD,CAAE,CACpE,CAAA,CACH,EAGFT,EAAAA,kBAAAA,KAAAW,EAAAA,kBAAAA,SAAA,CACGpG,SAAAA,CAAAA,EAAE0C,KAAO,QACR6C,EAAAA,kBAAAA,IAACQ,EAAAA,eAAA,CACC,QAAS/F,EAAE8C,gBACX,QAAS5B,EACT,KAAK,KACL,QAAO,GACP,YAAalB,EAAEyC,YAAcjB,OAAY,GAAOxB,EAAEyC,UAClD,aAAY,GACZ,yBAAwB,GACxB,aAAcuD,EAAAA,aAAanE,CAAY,EACvC,SAAUO,GAAM,CACdyC,EAAmB7E,EAAEqC,OAAQD,CAAE,CACjC,EACA,MAAOpC,EAAE6C,MACT,aAAc7C,EAAE2C,aAAa,EAG/B4C,wBAACc,EAAAA,cAAA,CACC,QAASnF,EACT,aACElB,EAAE2C,aAEI3C,EAAE2C,aAIF5C,IAAIqC,GAAM,GAAGA,EAAGS,KAAK,EAAE,EACzB,CAAA,EAEN,MACE7C,EAAE6C,MAEI7C,EAAE6C,MAIF9C,IAAIqC,GAAM,GAAGA,EAAGS,KAAK,EAAE,EACzBrB,OAEN,cAAeY,GAAM,CACnByC,EACE7E,EAAEqC,OACFrC,EAAE8C,gBAAgBT,OAAOW,GAAKZ,EAAGkE,QAAQ,GAAGtD,EAAEH,KAAK,EAAE,IAAM,EAAE,CAC/D,CACF,EAEC7C,WAAE8C,gBAAgB/C,IAAI,CAACqC,EAAI8D,4BACzBK,EAAAA,kBAAA,CACC,MAAO,GAAGnE,EAAGG,KAAK,GAClB,MAAO,GAAGH,EAAGS,KAAK,EAAA,EACbqD,CAAE,CAEV,CAAA,CACH,EAEDlG,EAAEmD,eACDoC,EAAAA,kBAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAU,mGACV,QAAS,IAAM,CACbV,EAAmB7E,EAAEqC,OAAQrC,EAAE8C,eAAe,CAChD,EACD,8BAED,EACE,IAAA,CAAA,CACN,CAAA,CAAA,EAtGG4C,CAwGP,CACD,EACH,CAAA,CACF,EACE,KACJH,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAU,6DACV,MAAO,CACLnC,MAAOnC,IAAmB,OAAS,4BAA8B,MAAA,EAGlER,SAAAA,EAAgB+F,KAAKzG,IAAI,CAACC,EAAG0F,IAC5BH,EAAAA,kBAAAA,IAAC,MAAA,CAEC,UAAU,mDACV,MAAO,CACLkB,UAAW,GAAGzG,EAAE0G,QAAU,CAAC,IAAA,EAG5B1G,SAAAA,EAAEF,QAAQC,IAAI,CAACqC,EAAI8D,IAClBX,EAAAA,kBAAAA,IAAC,MAAA,CAEC,UAAU,oCACV,MAAO,CACLnC,MAAO,QAAS,KAAOhB,EAAGnC,aAAe,GAAMJ,EAAWG,EAAEF,OAAO,CAAC,QACjED,EAAWG,EAAEF,OAAO,GAAKsC,EAAGnC,aAAe,IAAMJ,EAAWG,EAAEF,OAAO,CAAC,OAEzE2G,UAAW,SAAA,EAGb,SAAAlB,EAAAA,kBAAAA,IAACoB,EAAAA,qBAAA,CACC,UAAWvE,EAAGwE,UACd,YAAaxE,EAAGrB,YAChB,OAAAG,EACA,cAAe,CACb,GAAIkB,EAAGyE,UAAY,CAAA,EACnBzD,MAAO5B,OACPkF,OAAQlF,OACRiF,UAAWjF,OACXsF,eAAgBtF,OAChBuF,4BAA6B3E,EAAG4E,eAC5B,GACA5E,EAAGyE,UAAUE,4BACjBE,OAAQ7E,EAAGyE,UAAUI,QAAU9F,EAC/B+F,WAAY9E,EAAGyE,UAAUK,YAAc9F,EACvC+F,OAAQ/E,EAAGwE,YAAc,aAAepF,OAAYY,EAAGyE,UAAUM,OACjEC,KAAMhF,EAAGwE,YAAc,YAAcxE,EAAGyE,UAAUO,KAAO5F,OACzD2D,SAAU/C,EAAGyE,UAAU1B,UAAY1E,EAAgB0E,SACnDtE,MAAOuB,EAAGyE,UAAUhG,OAASA,CAAAA,EAE/B,aAAc,CACZY,KAAMJ,EAAegG,EAAAA,WAAWhG,EAAcN,GAAe,CAAA,CAAE,EAAIS,MAAAA,EAErE,cACEY,EAAG4E,gBACH3G,EAAwBiG,QAAQlE,EAAGwE,SAAS,IAAM,IAClDjF,EAAe2F,aAAetC,EAAE3C,SAAWD,EAAG4E,cAAc,IAAM,GAC9DO,GAAY,CACV,MAAMC,EAAO7F,EAAe2F,aACrBtC,EAAE3C,SAAWD,EAAG4E,cACvB,EACMnE,EAAQ0E,EACV5F,EAAe6F,CAAI,EAAEhF,aACnB,CAAEK,MAAO0E,EAAUhF,MAAOgF,CAAAA,EAC1B,CAAC,CAAE1E,MAAO0E,EAAUhF,MAAOgF,CAAAA,CAAU,EACvC/F,OACJqD,EAAmBzC,EAAG4E,eAA0BnE,CAAK,CACvD,EACArB,OAEN,cAAeY,EAAGqF,cAClB,qBAAsBrF,EAAGsF,qBACzB,6BAA8BtF,EAAGuF,6BACjC,uBAAwBvF,EAAGwF,uBAC3B,UAAAhH,EACA,eAAgBE,GAAkB,CAAA,CAAA,CAAG,CAAA,EAtDlCoF,CAwDP,CACD,GAjEIR,CAkEP,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,37 +1,39 @@
|
|
|
1
|
-
import { j as
|
|
1
|
+
import { j as r } from "./compiler-runtime-qHgugrLy.js";
|
|
2
2
|
import { useState as g, useEffectEvent as F, useEffect as v } from "react";
|
|
3
3
|
import { i as U } from "./index-BuwmuDFJ.js";
|
|
4
4
|
import { f as b } from "./index-EArKRVKg.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { DropdownSelect as A, createFilter as $ } from "@undp/design-system-react/DropdownSelect";
|
|
6
|
+
import { Label as E } from "@undp/design-system-react/Label";
|
|
7
|
+
import { CheckboxGroup as I, CheckboxGroupItem as z } from "@undp/design-system-react/CheckboxGroup";
|
|
8
|
+
import { RadioGroup as q, RadioGroupItem as J } from "@undp/design-system-react/RadioGroup";
|
|
9
|
+
import { G as B } from "./GraphContainer-DcOM2CI6.js";
|
|
8
10
|
import { SingleGraphDashboard as K } from "./SingleGraphDashboard.js";
|
|
9
|
-
import {
|
|
11
|
+
import { b as Q, d as X, f as Y, c as Z, t as _ } from "./fetchAndParseData-CDjQZ1fL.js";
|
|
10
12
|
import { g as aa } from "./getUniqValue-DsqSii6M.js";
|
|
11
13
|
import { GraphHeader as ea } from "./GraphHeader.js";
|
|
12
14
|
import { f as ta } from "./filterData-DsAiFzKY.js";
|
|
13
15
|
import { t as N } from "./transformDataForSelect-D8AuvYdf.js";
|
|
14
|
-
const x = (
|
|
15
|
-
function
|
|
16
|
+
const x = (p) => p.map((t) => t.columnWidth || 1).reduce((t, m) => t + m, 0), la = ["barChart", "choroplethMap", "biVariateChoroplethMap", "circlePacking", "treeMap"];
|
|
17
|
+
function xa(p) {
|
|
16
18
|
const {
|
|
17
19
|
dashboardID: w,
|
|
18
20
|
dashboardLayout: s,
|
|
19
21
|
dataSettings: t,
|
|
20
22
|
filters: m,
|
|
21
23
|
debugMode: d,
|
|
22
|
-
theme:
|
|
24
|
+
theme: S = "light",
|
|
23
25
|
readableHeader: O,
|
|
24
26
|
dataFilters: R,
|
|
25
|
-
noOfFiltersPerRow:
|
|
26
|
-
filterPosition:
|
|
27
|
+
noOfFiltersPerRow: f = 4,
|
|
28
|
+
filterPosition: y,
|
|
27
29
|
uiMode: h = "normal",
|
|
28
|
-
graphStyles:
|
|
29
|
-
graphClassNames:
|
|
30
|
-
} =
|
|
30
|
+
graphStyles: G,
|
|
31
|
+
graphClassNames: k
|
|
32
|
+
} = p, [V, D] = g(void 0), [u, H] = g(void 0), [o, C] = g([]), T = {
|
|
31
33
|
ignoreCase: !0,
|
|
32
34
|
ignoreAccents: !0,
|
|
33
35
|
trim: !0
|
|
34
|
-
},
|
|
36
|
+
}, j = F(() => {
|
|
35
37
|
const e = (m || []).map((l) => ({
|
|
36
38
|
filter: l.column,
|
|
37
39
|
label: l.label || `Filter by ${l.column}`,
|
|
@@ -47,97 +49,97 @@ function va(f) {
|
|
|
47
49
|
allowSelectAll: l.allowSelectAll,
|
|
48
50
|
width: l.width
|
|
49
51
|
}));
|
|
50
|
-
|
|
51
|
-
}),
|
|
52
|
-
if (!u ||
|
|
52
|
+
C(e);
|
|
53
|
+
}), L = F(() => {
|
|
54
|
+
if (!u || o.length === 0) D(u);
|
|
53
55
|
else {
|
|
54
|
-
const e = u.filter((l) =>
|
|
56
|
+
const e = u.filter((l) => o.every((a) => a.value && b([a.value]).length > 0 ? U(b([l[a.filter]]), b([a.value]).map((i) => i.value)).length > 0 : !0));
|
|
55
57
|
D(e);
|
|
56
58
|
}
|
|
57
59
|
});
|
|
58
60
|
v(() => {
|
|
59
|
-
|
|
60
|
-
}, [
|
|
61
|
+
L();
|
|
62
|
+
}, [o, u]), v(() => {
|
|
61
63
|
(async () => {
|
|
62
64
|
try {
|
|
63
65
|
const l = t.dataURL ? typeof t.dataURL == "string" ? t.fileType === "json" ? await Q(t.dataURL, t.columnsToArray, t.dataTransformation, d) : t.fileType === "api" ? await X(t.dataURL, t.apiHeaders, t.columnsToArray, t.dataTransformation, d) : await Y(t.dataURL, t.dataTransformation, t.columnsToArray, d, t.delimiter, !0) : await Z(t.dataURL, t.idColumnTitle) : await _(t.data, t.columnsToArray);
|
|
64
|
-
|
|
66
|
+
H(l);
|
|
65
67
|
} catch (l) {
|
|
66
68
|
console.error("Data fetching error:", l);
|
|
67
69
|
}
|
|
68
|
-
})(),
|
|
70
|
+
})(), j();
|
|
69
71
|
}, [t, d]), v(() => {
|
|
70
|
-
|
|
72
|
+
j();
|
|
71
73
|
}, [m, u]);
|
|
72
74
|
const c = (e, l) => {
|
|
73
|
-
|
|
74
|
-
...
|
|
75
|
+
C((a) => a.map((i) => i.filter === e ? {
|
|
76
|
+
...i,
|
|
75
77
|
value: l
|
|
76
|
-
} :
|
|
78
|
+
} : i));
|
|
77
79
|
};
|
|
78
|
-
return /* @__PURE__ */
|
|
79
|
-
s.title || s.description ? /* @__PURE__ */
|
|
80
|
-
/* @__PURE__ */
|
|
81
|
-
|
|
82
|
-
width:
|
|
83
|
-
}, children: /* @__PURE__ */
|
|
84
|
-
width: e.width || `calc(${100 /
|
|
80
|
+
return /* @__PURE__ */ r.jsxs(B, { id: w, "aria-label": "This is a dashboard", backgroundColor: s.backgroundColor ?? !1, theme: S || "light", language: s.language || "en", padding: s.padding, children: [
|
|
81
|
+
s.title || s.description ? /* @__PURE__ */ r.jsx(ea, { graphTitle: s.title, graphDescription: s.description, isDashboard: !0 }) : null,
|
|
82
|
+
/* @__PURE__ */ r.jsxs("div", { className: "flex gap-4 flex-wrap", children: [
|
|
83
|
+
o.length !== 0 ? /* @__PURE__ */ r.jsx("div", { className: "flex-grow flex-shrink-0", style: {
|
|
84
|
+
width: y === "side" ? "280px" : "100%"
|
|
85
|
+
}, children: /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap items-start gap-4 w-full sticky top-4", children: o?.map((e, l) => /* @__PURE__ */ r.jsxs("div", { style: {
|
|
86
|
+
width: e.width || `calc(${100 / f}% - ${(f - 1) / f}rem)`,
|
|
85
87
|
flexGrow: e.width ? 0 : 1,
|
|
86
88
|
flexShrink: e.ui !== "radio" || e.width ? 0 : 1,
|
|
87
89
|
minWidth: "240px"
|
|
88
90
|
}, children: [
|
|
89
|
-
/* @__PURE__ */
|
|
90
|
-
e.singleSelect ? e.ui !== "radio" ? /* @__PURE__ */
|
|
91
|
+
/* @__PURE__ */ r.jsx(E, { className: "mb-2", children: e.label }),
|
|
92
|
+
e.singleSelect ? e.ui !== "radio" ? /* @__PURE__ */ r.jsx(A, { options: e.availableValues, variant: h, isClearable: e.clearable === void 0 ? !0 : e.clearable, isSearchable: !0, controlShouldRenderValue: !0, filterOption: $(T), onChange: (a) => {
|
|
91
93
|
c(e.filter, a);
|
|
92
|
-
}, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */
|
|
93
|
-
c(e.filter, e.availableValues.filter((
|
|
94
|
-
}, children: e.availableValues.map((a,
|
|
95
|
-
e.ui !== "radio" ? /* @__PURE__ */
|
|
94
|
+
}, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */ r.jsx(q, { variant: h, defaultValue: e.defaultValue.value, onValueChange: (a) => {
|
|
95
|
+
c(e.filter, e.availableValues.filter((i) => i.value === a));
|
|
96
|
+
}, children: e.availableValues.map((a, i) => /* @__PURE__ */ r.jsx(J, { label: `${a.label}`, value: `${a.value}` }, i)) }) : /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
|
|
97
|
+
e.ui !== "radio" ? /* @__PURE__ */ r.jsx(A, { options: e.availableValues, variant: h, size: "sm", isMulti: !0, isClearable: e.clearable === void 0 ? !0 : e.clearable, isSearchable: !0, controlShouldRenderValue: !0, filterOption: $(T), onChange: (a) => {
|
|
96
98
|
c(e.filter, a);
|
|
97
|
-
}, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */
|
|
98
|
-
c(e.filter, e.availableValues.filter((
|
|
99
|
-
}, children: e.availableValues.map((a,
|
|
100
|
-
e.allowSelectAll ? /* @__PURE__ */
|
|
99
|
+
}, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */ r.jsx(I, { variant: h, defaultValue: e.defaultValue ? e.defaultValue.map((a) => `${a.value}`) : [], value: e.value ? e.value.map((a) => `${a.value}`) : void 0, onValueChange: (a) => {
|
|
100
|
+
c(e.filter, e.availableValues.filter((i) => a.indexOf(`${i.value}`) !== -1));
|
|
101
|
+
}, children: e.availableValues.map((a, i) => /* @__PURE__ */ r.jsx(z, { label: `${a.label}`, value: `${a.value}` }, i)) }),
|
|
102
|
+
e.allowSelectAll ? /* @__PURE__ */ r.jsx("button", { type: "button", className: "bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400", onClick: () => {
|
|
101
103
|
c(e.filter, e.availableValues);
|
|
102
104
|
}, children: "Select all options" }) : null
|
|
103
105
|
] })
|
|
104
106
|
] }, l)) }) }) : null,
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
-
width:
|
|
107
|
-
}, children: s.rows.map((e, l) => /* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]", style: {
|
|
108
|
+
width: y === "side" ? "calc(100% - 280px - 1rem)" : "100%"
|
|
109
|
+
}, children: s.rows.map((e, l) => /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap items-stretch gap-4 w-full h-auto", style: {
|
|
108
110
|
minHeight: `${e.height || 0}px`
|
|
109
|
-
}, children: e.columns.map((a,
|
|
111
|
+
}, children: e.columns.map((a, i) => /* @__PURE__ */ r.jsx("div", { className: "flex bg-transparent grow min-w-60", style: {
|
|
110
112
|
width: `calc(${100 * (a.columnWidth || 1) / x(e.columns)}% - ${(x(e.columns) - (a.columnWidth || 1)) / x(e.columns)}rem)`,
|
|
111
113
|
minHeight: "inherit"
|
|
112
|
-
}, children: /* @__PURE__ */
|
|
114
|
+
}, children: /* @__PURE__ */ r.jsx(K, { graphType: a.graphType, dataFilters: a.dataFilters, uiMode: h, graphSettings: {
|
|
113
115
|
...a.settings || {},
|
|
114
116
|
width: void 0,
|
|
115
117
|
height: void 0,
|
|
116
118
|
minHeight: void 0,
|
|
117
119
|
relativeHeight: void 0,
|
|
118
120
|
resetSelectionOnDoubleClick: a.attachedFilter ? !1 : a.settings?.resetSelectionOnDoubleClick,
|
|
119
|
-
styles: a.settings?.styles ||
|
|
120
|
-
classNames: a.settings?.classNames ||
|
|
121
|
+
styles: a.settings?.styles || G,
|
|
122
|
+
classNames: a.settings?.classNames || k,
|
|
121
123
|
radius: a.graphType === "donutChart" ? void 0 : a.settings?.radius,
|
|
122
124
|
size: a.graphType === "unitChart" ? a.settings?.size : void 0,
|
|
123
125
|
language: a.settings?.language || s.language,
|
|
124
|
-
theme: a.settings?.theme ||
|
|
126
|
+
theme: a.settings?.theme || S
|
|
125
127
|
}, dataSettings: {
|
|
126
128
|
data: V ? ta(V, R || []) : void 0
|
|
127
|
-
}, updateFilters: a.attachedFilter && la.indexOf(a.graphType) !== -1 &&
|
|
128
|
-
const
|
|
129
|
-
value:
|
|
130
|
-
label:
|
|
129
|
+
}, updateFilters: a.attachedFilter && la.indexOf(a.graphType) !== -1 && o.findIndex((n) => n.filter === a.attachedFilter) !== -1 ? (n) => {
|
|
130
|
+
const M = o.findIndex((P) => P.filter === a.attachedFilter), W = n ? o[M].singleSelect ? {
|
|
131
|
+
value: n,
|
|
132
|
+
label: n
|
|
131
133
|
} : [{
|
|
132
|
-
value:
|
|
133
|
-
label:
|
|
134
|
+
value: n,
|
|
135
|
+
label: n
|
|
134
136
|
}] : void 0;
|
|
135
|
-
c(a.attachedFilter,
|
|
136
|
-
} : void 0, dataTransform: a.dataTransform, dataSelectionOptions: a.dataSelectionOptions, advancedDataSelectionOptions: a.advancedDataSelectionOptions, graphDataConfiguration: a.graphDataConfiguration, debugMode: d, readableHeader: O || [] }) },
|
|
137
|
+
c(a.attachedFilter, W);
|
|
138
|
+
} : void 0, dataTransform: a.dataTransform, dataSelectionOptions: a.dataSelectionOptions, advancedDataSelectionOptions: a.advancedDataSelectionOptions, graphDataConfiguration: a.graphDataConfiguration, debugMode: d, readableHeader: O || [] }) }, i)) }, l)) })
|
|
137
139
|
] })
|
|
138
140
|
] });
|
|
139
141
|
}
|
|
140
142
|
export {
|
|
141
|
-
|
|
143
|
+
xa as MultiGraphDashboard
|
|
142
144
|
};
|
|
143
145
|
//# sourceMappingURL=MultiGraphDashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: d.width ? 0 : 1,\r\n flexShrink: d.ui !== 'radio' || d.width ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./compiler-runtime-oPPev21o.cjs"),n=require("react"),h=require("@undp/design-system-react/Spinner"),c=require("./MultiGraphDashboard.cjs"),g=require("./fetchAndParseData-QTF6tjij.cjs");function b(u){const t=d.compilerRuntimeExports.c(18),{config:a}=u,[e,l]=n.useState(void 0);let s,i;if(t[0]!==a?(s=()=>{(async()=>{if(typeof a=="string"){const f=await g.fetchAndParseJSON(a);l(f)}else l(a)})()},i=[a],t[0]=a,t[1]=s,t[2]=i):(s=t[1],i=t[2]),n.useEffect(s,i),!e){let r;return t[3]===Symbol.for("react.memo_cache_sentinel")?(r=d.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center p-4",children:d.jsxRuntimeExports.jsx(h.Spinner,{})}),t[3]=r):r=t[3],r}let o;return t[4]!==e.dashboardID||t[5]!==e.dashboardLayout||t[6]!==e.dataFilters||t[7]!==e.dataSettings||t[8]!==e.debugMode||t[9]!==e.filterPosition||t[10]!==e.filters||t[11]!==e.graphClassNames||t[12]!==e.graphStyles||t[13]!==e.noOfFiltersPerRow||t[14]!==e.readableHeader||t[15]!==e.theme||t[16]!==e.uiMode?(o=d.jsxRuntimeExports.jsx(c.MultiGraphDashboard,{dashboardID:e.dashboardID,dashboardLayout:e.dashboardLayout,dataSettings:e.dataSettings,filters:e.filters,debugMode:e.debugMode,theme:e.theme,readableHeader:e.readableHeader,dataFilters:e.dataFilters,noOfFiltersPerRow:e.noOfFiltersPerRow,filterPosition:e.filterPosition,uiMode:e.uiMode,graphStyles:e.graphStyles,graphClassNames:e.graphClassNames}),t[4]=e.dashboardID,t[5]=e.dashboardLayout,t[6]=e.dataFilters,t[7]=e.dataSettings,t[8]=e.debugMode,t[9]=e.filterPosition,t[10]=e.filters,t[11]=e.graphClassNames,t[12]=e.graphStyles,t[13]=e.noOfFiltersPerRow,t[14]=e.readableHeader,t[15]=e.theme,t[16]=e.uiMode,t[17]=o):o=t[17],o}exports.MultiGraphDashboardFromConfig=b;
|
|
2
2
|
//# sourceMappingURL=MultiGraphDashboardFromConfig.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboardFromConfig.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboardFromConfig.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { MultiGraphDashboard } from './MultiGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterUiSettingsDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\n\r\ninterface ConfigObject {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n filterPosition?: 'top' | 'side';\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\ninterface Props {\r\n config: string | ConfigObject;\r\n}\r\n\r\nexport function MultiGraphDashboardFromConfig(props: Props) {\r\n const { config } = props;\r\n const [configSettings, setConfigSettings] = useState<ConfigObject | undefined>(undefined);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (typeof config === 'string') {\r\n const data = await fetchAndParseJSON(config);\r\n setConfigSettings(data);\r\n } else {\r\n setConfigSettings(config);\r\n }\r\n };\r\n fetchData();\r\n }, [config]);\r\n if (!configSettings)\r\n return (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n );\r\n return (\r\n <MultiGraphDashboard\r\n dashboardID={configSettings.dashboardID}\r\n dashboardLayout={configSettings.dashboardLayout}\r\n dataSettings={configSettings.dataSettings}\r\n filters={configSettings.filters}\r\n debugMode={configSettings.debugMode}\r\n theme={configSettings.theme}\r\n readableHeader={configSettings.readableHeader}\r\n dataFilters={configSettings.dataFilters}\r\n noOfFiltersPerRow={configSettings.noOfFiltersPerRow}\r\n filterPosition={configSettings.filterPosition}\r\n uiMode={configSettings.uiMode}\r\n graphStyles={configSettings.graphStyles}\r\n graphClassNames={configSettings.graphClassNames}\r\n />\r\n );\r\n}\r\n"],"names":["MultiGraphDashboardFromConfig","props","$","_c","config","configSettings","setConfigSettings","useState","undefined","t0","t1","data","fetchAndParseJSON","fetchData","useEffect","t2","Symbol","for","jsx","Spinner","dashboardID","dashboardLayout","dataFilters","dataSettings","debugMode","filterPosition","filters","graphClassNames","graphStyles","noOfFiltersPerRow","readableHeader","theme","uiMode","MultiGraphDashboard"],"mappings":"
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboardFromConfig.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboardFromConfig.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\n\r\nimport { MultiGraphDashboard } from './MultiGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterUiSettingsDataType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport { fetchAndParseJSON } from '@/Utils/fetchAndParseData';\r\n\r\ninterface ConfigObject {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n filterPosition?: 'top' | 'side';\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataFilters?: DataFilterDataType[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\ninterface Props {\r\n config: string | ConfigObject;\r\n}\r\n\r\nexport function MultiGraphDashboardFromConfig(props: Props) {\r\n const { config } = props;\r\n const [configSettings, setConfigSettings] = useState<ConfigObject | undefined>(undefined);\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n if (typeof config === 'string') {\r\n const data = await fetchAndParseJSON(config);\r\n setConfigSettings(data);\r\n } else {\r\n setConfigSettings(config);\r\n }\r\n };\r\n fetchData();\r\n }, [config]);\r\n if (!configSettings)\r\n return (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n );\r\n return (\r\n <MultiGraphDashboard\r\n dashboardID={configSettings.dashboardID}\r\n dashboardLayout={configSettings.dashboardLayout}\r\n dataSettings={configSettings.dataSettings}\r\n filters={configSettings.filters}\r\n debugMode={configSettings.debugMode}\r\n theme={configSettings.theme}\r\n readableHeader={configSettings.readableHeader}\r\n dataFilters={configSettings.dataFilters}\r\n noOfFiltersPerRow={configSettings.noOfFiltersPerRow}\r\n filterPosition={configSettings.filterPosition}\r\n uiMode={configSettings.uiMode}\r\n graphStyles={configSettings.graphStyles}\r\n graphClassNames={configSettings.graphClassNames}\r\n />\r\n );\r\n}\r\n"],"names":["MultiGraphDashboardFromConfig","props","$","_c","config","configSettings","setConfigSettings","useState","undefined","t0","t1","data","fetchAndParseJSON","fetchData","useEffect","t2","Symbol","for","jsx","Spinner","dashboardID","dashboardLayout","dataFilters","dataSettings","debugMode","filterPosition","filters","graphClassNames","graphStyles","noOfFiltersPerRow","readableHeader","theme","uiMode","MultiGraphDashboard"],"mappings":"0RAsCO,SAAAA,EAAAC,EAAA,CAAA,MAAAC,EAAAC,EAAAA,uBAAAA,EAAA,EAAA,EACL,CAAAC,OAAAA,CAAAA,EAAmBH,EACnB,CAAAI,EAAAC,CAAA,EAA4CC,EAAAA,SAAmCC,MAAS,EAAE,IAAAC,EAAAC,EAY1F,GAZ0FR,OAAAE,GAChFK,EAAAA,IAAA,EACU,SAAA,CAChB,GAAI,OAAOL,GAAW,SAAQ,CAC5B,MAAAO,EAAa,MAAMC,EAAAA,kBAAkBR,CAAM,EAC3CE,EAAkBK,CAAI,CAAC,MAEvBL,EAAkBF,CAAM,CACzB,GAEHS,CAAW,EACVH,EAAA,CAACN,CAAM,EAACF,KAAAE,EAAAF,KAAAO,EAAAP,KAAAQ,IAAAD,EAAAP,EAAA,CAAA,EAAAQ,EAAAR,EAAA,CAAA,GAVXY,EAAAA,UAAUL,EAUPC,CAAQ,EACP,CAACL,EAAc,CAAA,IAAAU,EAAA,OAAAb,EAAA,CAAA,IAAAc,OAAAC,IAAA,2BAAA,GAEfF,EAAAG,EAAAA,kBAAAA,IAAA,MAAA,CAAe,UAAA,iCACb,SAAAA,wBAACC,EAAAA,UAAO,EACV,EAAMjB,KAAAa,GAAAA,EAAAb,EAAA,CAAA,EAFNa,CAEM,CACN,IAAAA,EAAA,OAAAb,EAAA,CAAA,IAAAG,EAAAe,aAAAlB,EAAA,CAAA,IAAAG,EAAAgB,iBAAAnB,EAAA,CAAA,IAAAG,EAAAiB,aAAApB,EAAA,CAAA,IAAAG,EAAAkB,cAAArB,OAAAG,EAAAmB,WAAAtB,EAAA,CAAA,IAAAG,EAAAoB,gBAAAvB,EAAA,EAAA,IAAAG,EAAAqB,SAAAxB,EAAA,EAAA,IAAAG,EAAAsB,iBAAAzB,EAAA,EAAA,IAAAG,EAAAuB,aAAA1B,QAAAG,EAAAwB,mBAAA3B,EAAA,EAAA,IAAAG,EAAAyB,gBAAA5B,EAAA,EAAA,IAAAG,EAAA0B,OAAA7B,EAAA,EAAA,IAAAG,EAAA2B,QAEFjB,0BAACkB,EAAAA,oBAAA,CACc,YAAA5B,EAAce,YACV,gBAAAf,EAAcgB,gBACjB,aAAAhB,EAAckB,aACnB,QAAAlB,EAAcqB,QACZ,UAAArB,EAAcmB,UAClB,MAAAnB,EAAc0B,MACL,eAAA1B,EAAcyB,eACjB,YAAAzB,EAAciB,YACR,kBAAAjB,EAAcwB,kBACjB,eAAAxB,EAAcoB,eACtB,OAAApB,EAAc2B,OACT,YAAA3B,EAAcuB,YACV,gBAAAvB,EAAcsB,gBAAgB,EAC/CzB,EAAA,CAAA,EAAAG,EAAAe,YAAAlB,EAAA,CAAA,EAAAG,EAAAgB,gBAAAnB,EAAA,CAAA,EAAAG,EAAAiB,YAAApB,EAAA,CAAA,EAAAG,EAAAkB,aAAArB,EAAA,CAAA,EAAAG,EAAAmB,UAAAtB,EAAA,CAAA,EAAAG,EAAAoB,eAAAvB,EAAA,EAAA,EAAAG,EAAAqB,QAAAxB,EAAA,EAAA,EAAAG,EAAAsB,gBAAAzB,EAAA,EAAA,EAAAG,EAAAuB,YAAA1B,EAAA,EAAA,EAAAG,EAAAwB,kBAAA3B,EAAA,EAAA,EAAAG,EAAAyB,eAAA5B,EAAA,EAAA,EAAAG,EAAA0B,MAAA7B,EAAA,EAAA,EAAAG,EAAA2B,OAAA9B,MAAAa,GAAAA,EAAAb,EAAA,EAAA,EAdFa,CAcE"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { c as h, j as d } from "./
|
|
1
|
+
import { c as h, j as d } from "./compiler-runtime-qHgugrLy.js";
|
|
2
2
|
import { useState as m, useEffect as g } from "react";
|
|
3
|
-
import {
|
|
3
|
+
import { Spinner as u } from "@undp/design-system-react/Spinner";
|
|
4
4
|
import { MultiGraphDashboard as c } from "./MultiGraphDashboard.js";
|
|
5
|
-
import {
|
|
6
|
-
function P(
|
|
5
|
+
import { b as p } from "./fetchAndParseData-CDjQZ1fL.js";
|
|
6
|
+
function P(n) {
|
|
7
7
|
const t = h.c(18), {
|
|
8
8
|
config: a
|
|
9
|
-
} =
|
|
9
|
+
} = n, [e, l] = m(void 0);
|
|
10
10
|
let r, o;
|
|
11
11
|
if (t[0] !== a ? (r = () => {
|
|
12
12
|
(async () => {
|
|
13
13
|
if (typeof a == "string") {
|
|
14
|
-
const
|
|
15
|
-
l(
|
|
14
|
+
const f = await p(a);
|
|
15
|
+
l(f);
|
|
16
16
|
} else
|
|
17
17
|
l(a);
|
|
18
18
|
})();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./compiler-runtime-oPPev21o.cjs"),n=require("react"),D=require("@undp/design-system-react/DropdownSelect"),W=require("@undp/design-system-react/Label"),k=require("@undp/design-system-react/Spinner"),q=require("./SingleGraphDashboard.cjs"),h=require("./fetchAndParseData-QTF6tjij.cjs"),A=require("./GraphHeader.cjs"),V=require("./filterData-T5DQBE9b.cjs");function G(u,d,e,t){const s=[];return u.forEach(c=>{Object.entries(c).forEach(([l,p])=>{if(l!==d){const g={indicator:e.findIndex(m=>m.value===l)!==-1?e[e.findIndex(m=>m.value===l)].label:l,value:p};g[d]=c[d],s.push(g)}})}),t&&console.log(s),s}const x=u=>u.map(t=>t.columnWidth||1).reduce((t,s)=>t+s,0);function H(u){const{dashboardID:d,dashboardLayout:e,dataSettings:t,debugMode:s,theme:c="light",readableHeader:l,dataFilters:p,uiMode:g="normal",graphStyles:m,graphClassNames:w}=u,C={ignoreCase:!0,ignoreAccents:!0,trim:!0},[v,E]=n.useState(void 0),[R,S]=n.useState([]),[f,j]=n.useState(void 0),[b,T]=n.useState(void 0),[F,I]=n.useState(void 0),y=n.useEffectEvent(()=>{const r=V.filterData(F,p||[]);S(r.map(a=>a[t.keyColumn])),j(r[0][t.keyColumn]);const o=G(r,t.keyColumn,l||[],s);T(o)}),L=n.useEffectEvent(()=>{if(b){const r=b.filter(o=>o[t.keyColumn]===f);E(r)}});return n.useEffect(()=>{L()},[f,t.keyColumn]),n.useEffect(()=>{(async()=>{try{const o=t.dataURL?typeof t.dataURL=="string"?t.fileType==="json"?await h.fetchAndParseJSON(t.dataURL,void 0,t.dataTransformation,s):t.fileType==="api"?await h.fetchAndTransformDataFromAPI(t.dataURL,t.apiHeaders,void 0,t.dataTransformation,s):await h.fetchAndParseCSV(t.dataURL,t.dataTransformation,void 0,s,t.delimiter,!0):await h.fetchAndParseMultipleDataSources(t.dataURL,t.idColumnTitle):await h.transformColumnsToArray(t.data,void 0);I(o),y()}catch(o){console.error("Data fetching error:",o)}})()},[t,s]),n.useEffect(()=>{y()},[p,l]),i.jsxRuntimeExports.jsx("div",{className:`${c||"light"} flex grow`,dir:e.language==="he"||e.language==="ar"?"rtl":void 0,children:i.jsxRuntimeExports.jsx("div",{className:`${e?.backgroundColor?e?.backgroundColor===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}flex flex-col w-full ml-auto mr-auto grow gap-4 ${e?.language||"en"}`,style:{...e?.backgroundColor&&e?.backgroundColor!==!0?{backgroundColor:e?.backgroundColor}:{}},id:d,children:i.jsxRuntimeExports.jsx("div",{className:"flex grow",style:{padding:e.backgroundColor?e.padding||"1rem":e.padding||0},children:i.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[e.title||e.description?i.jsxRuntimeExports.jsx(A.GraphHeader,{graphTitle:e.title,graphDescription:e.description,isDashboard:!0}):null,v?i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap",alignItems:"flex-start",width:"100%"},children:i.jsxRuntimeExports.jsxs("div",{style:{width:"100%",flexGrow:1,flexShrink:0,minWidth:"240px"},children:[e.dropdownLabel?i.jsxRuntimeExports.jsx(W.Label,{className:"mb-2",children:e.dropdownLabel}):null,i.jsxRuntimeExports.jsx(D.DropdownSelect,{options:R.map(r=>({value:r,label:r})),size:"sm",variant:g,isClearable:!1,isSearchable:!0,controlShouldRenderValue:!0,filterOption:D.createFilter(C),onChange:r=>{j(r?.value)},defaultValue:{value:f,label:f}})]})}),e.rows.map((r,o)=>i.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",alignItems:"stretch",minHeight:`${r.height||0}px`,height:"auto",width:"100%",flexWrap:"wrap"},children:r.columns.map((a,N)=>i.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent grow min-w-60",style:{width:`calc(${100*(a.columnWidth||1)/x(r.columns)}% - ${(x(r.columns)-(a.columnWidth||1))/x(r.columns)}rem)`,minHeight:"inherit"},children:i.jsxRuntimeExports.jsx(q.SingleGraphDashboard,{graphType:a.graphType,dataFilters:a.dataFilters,uiMode:g,graphSettings:{...a.settings||{},width:void 0,height:void 0,minHeight:void 0,relativeHeight:void 0,radius:a.graphType==="donutChart"?void 0:a.settings?.radius,size:a.graphType==="unitChart"?a.settings.size:void 0,language:a.settings?.language||e.language,theme:a.settings?.theme||c,styles:a.settings?.styles||m,classNames:a.settings?.classNames||w},dataSettings:{data:v},graphDataConfiguration:a.graphDataConfiguration?a.graphDataConfiguration:a.graphType==="unitChart"?[{columnId:"indicator",chartConfigId:"label"},{columnId:"value",chartConfigId:"value"}]:[{columnId:"indicator",chartConfigId:"label"},{columnId:"value",chartConfigId:"size"}],debugMode:s,readableHeader:l||[]})},N))},o))]}):i.jsxRuntimeExports.jsx("div",{className:"w-full flex justify-center p-4",children:i.jsxRuntimeExports.jsx(k.Spinner,{})})]})})})})}exports.MultiGraphDashboardWideToLongFormat=H;
|
|
2
2
|
//# sourceMappingURL=MultiGraphDashboardWideToLongFormat.cjs.map
|