@hisptz/dhis2-analytics 2.1.23 → 2.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
- package/dist/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -1
- package/dist/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -1
- package/dist/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -1
- package/dist/components/DHIS2PivotTable/components/Table/index.js.map +1 -1
- package/dist/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
- package/dist/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
- package/dist/components/DHIS2PivotTable/state/engine.js.map +1 -1
- package/dist/components/Map/DHIS2Map.js +2 -4
- package/dist/components/Map/DHIS2Map.js.map +1 -1
- package/dist/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -1
- package/dist/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -1
- package/dist/components/Map/components/MapArea/index.js.map +1 -1
- package/dist/components/Map/components/MapControls/components/CustomControl/index.js +13 -2
- package/dist/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -1
- package/dist/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/LegendArea/index.js +10 -11
- package/dist/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
- package/dist/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
- package/dist/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
- package/dist/components/Map/components/MapProvider/index.js.map +1 -1
- package/dist/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
- package/dist/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
- package/dist/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
- package/dist/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
- package/dist/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
- package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
- package/dist/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
- package/dist/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
- package/dist/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
- package/dist/components/Visualization/components/LayoutProvider/index.js.map +1 -1
- package/dist/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
- package/dist/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
- package/dist/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
- package/dist/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
- package/dist/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/DHIS2Chart.js.map +1 -1
- package/dist/esm/components/ChartAnalytics/components/DownloadMenu/index.js.map +1 -1
- package/dist/esm/components/CircularProgressDashboard/CircularProgressIndicator.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/DHIS2PivotTable.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/components/Table/index.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/components/TableBody/index.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/components/TableHeaders/index.js.map +1 -1
- package/dist/esm/components/DHIS2PivotTable/state/engine.js.map +1 -1
- package/dist/esm/components/Map/DHIS2Map.js +2 -4
- package/dist/esm/components/Map/DHIS2Map.js.map +1 -1
- package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/Name.js.map +1 -1
- package/dist/esm/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.js.map +1 -1
- package/dist/esm/components/Map/components/MapArea/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js +13 -2
- package/dist/esm/components/Map/components/MapControls/components/CustomControl/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapControls/components/FullscreenControl/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/GoogleEngineLayer/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js +4 -4
- package/dist/esm/components/Map/components/MapLayer/components/LegendArea/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.js.map +1 -1
- package/dist/esm/components/Map/components/MapProvider/components/MapLayerProvider/index.js.map +1 -1
- package/dist/esm/components/Map/components/MapProvider/index.js.map +1 -1
- package/dist/esm/components/Map/components/ThematicLayerConfiguration/ThematicLayerConfiguration.js.map +1 -1
- package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/ColorScaleSelect/index.js.map +1 -1
- package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/IndicatorSelectorModal/index.js.map +1 -1
- package/dist/esm/components/Map/components/ThematicLayerConfiguration/components/LegendSetSelector/index.js.map +1 -1
- package/dist/esm/components/SingleValueContainer/SingleValueVisualizer.js.map +1 -1
- package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.js.map +1 -1
- package/dist/esm/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.js.map +1 -1
- package/dist/esm/components/Visualization/components/AnalyticsDataProvider/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/DimensionsProvider/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/LayoutProvider/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/VisualizationDimensionSelector/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/VisualizationProvider/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/VisualizationSelector/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/VisualizationTypeProvider/index.js.map +1 -1
- package/dist/esm/components/Visualization/components/VisualizationTypeSelector/index.js.map +1 -1
- package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts +3 -3
- package/dist/types/components/ChartAnalytics/DHIS2Chart.d.ts.map +1 -1
- package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts +2 -2
- package/dist/types/components/ChartAnalytics/components/DownloadMenu/index.d.ts.map +1 -1
- package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts +2 -2
- package/dist/types/components/CircularProgressDashboard/CircularProgressIndicator.d.ts.map +1 -1
- package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts +2 -2
- package/dist/types/components/DHIS2PivotTable/components/Table/index.d.ts.map +1 -1
- package/dist/types/components/DHIS2PivotTable/state/engine.d.ts.map +1 -1
- package/dist/types/components/Map/DHIS2Map.d.ts +3 -3
- package/dist/types/components/Map/DHIS2Map.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapArea/index.d.ts +1 -2
- package/dist/types/components/Map/components/MapArea/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts +2 -2
- package/dist/types/components/Map/components/MapControls/components/CustomControl/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts +2 -1
- package/dist/types/components/Map/components/MapControls/components/FullscreenControl/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts +2 -3
- package/dist/types/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/LegendArea/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts +1 -2
- package/dist/types/components/Map/components/MapLayer/components/PointLayer/components/PointLegend/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts +1 -2
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/components/Bubbles.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts +2 -3
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Bubble/components/BubbleLegend/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts +2 -3
- package/dist/types/components/Map/components/MapLayer/components/ThematicLayer/components/Choropleth/components/ChoroplethLegend.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts +2 -2
- package/dist/types/components/Map/components/MapProvider/components/MapLayerProvider/index.d.ts.map +1 -1
- package/dist/types/components/Map/components/MapProvider/index.d.ts.map +1 -1
- package/dist/types/components/Map/interfaces/index.d.ts +2 -2
- package/dist/types/components/Map/interfaces/index.d.ts.map +1 -1
- package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts +2 -2
- package/dist/types/components/SingleValueContainer/SingleValueVisualizer.d.ts.map +1 -1
- package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts +2 -2
- package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValueItem.d.ts.map +1 -1
- package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts +2 -2
- package/dist/types/components/SingleValueContainer/components/SingleValueItem/SingleValuePercentage.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts +2 -2
- package/dist/types/components/Visualization/components/AnalyticsDataProvider/index.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts +4 -4
- package/dist/types/components/Visualization/components/DimensionsProvider/index.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts +3 -3
- package/dist/types/components/Visualization/components/LayoutProvider/index.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts +2 -2
- package/dist/types/components/Visualization/components/VisualizationProvider/index.d.ts.map +1 -1
- package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts +6 -6
- package/dist/types/components/Visualization/components/VisualizationTypeProvider/index.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":["useRef","uid","useChart","jsx","HighchartsReact","Highcharts","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,SAAS,uBAAwB,CAAA;AAAA,EAChC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,EAAK,GAAAA,YAAA,CAAO,CAAG,EAAAC,cAAA,EAAK,CAAa,WAAA,CAAA,CAAA;AACvC,EAAM,MAAA,EAAE,KAAM,EAAA,GAAIC,oBAAS,CAAA,EAAE,IAAI,EAAG,CAAA,OAAA,EAAS,SAAW,EAAA,MAAA,EAAQ,CAAA;AAEhE,EAAA,IAAI,CAAC,KAAO,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAER,EACC,uBAAAC,cAAA;AAAA,IAACC,gCAAA;AAAA,IAAA;AAAA,MACA,SAAS,EAAA,IAAA;AAAA,MACT,GAAK,EAAA,MAAA;AAAA,MACL,cAAgB,EAAA;AAAA,QACf,IAAI,EAAG,CAAA,OAAA;AAAA,QACP,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO,EAAA;AAAA,QACvC,GAAI,kBAAkB;AAAC,OACxB;AAAA,MACA,UAAY,EAAAC,qBAAA;AAAA,MACZ,OAAA,EAAS,EAAE,GAAG,KAAM;AAAA;AAAA,GACrB;AAEF;AAgBO,MAAM,UACZ,GAAAC,gBAAA;AAAA,EACC;AACD;AAKM,MAAM,cAAiB,GAAA","file":"DHIS2Chart.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport * as Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ChartAnalytics/DHIS2Chart.tsx"],"names":["useRef","uid","useChart","jsx","HighchartsReact","Highcharts","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,SAAS,uBAAwB,CAAA;AAAA,EAChC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA;AAAA,EACA;AACD,CAAwB,EAAA;AACvB,EAAA,MAAM,EAAK,GAAAA,YAAA,CAAO,CAAG,EAAAC,cAAA,EAAK,CAAa,WAAA,CAAA,CAAA;AACvC,EAAM,MAAA,EAAE,KAAM,EAAA,GAAIC,oBAAS,CAAA,EAAE,IAAI,EAAG,CAAA,OAAA,EAAS,SAAW,EAAA,MAAA,EAAQ,CAAA;AAEhE,EAAA,IAAI,CAAC,KAAO,EAAA;AACX,IAAO,OAAA,IAAA;AAAA;AAER,EACC,uBAAAC,cAAA;AAAA,IAACC,gCAAA;AAAA,IAAA;AAAA,MACA,SAAS,EAAA,IAAA;AAAA,MACT,GAAK,EAAA,MAAA;AAAA,MACL,cAAgB,EAAA;AAAA,QACf,IAAI,EAAG,CAAA,OAAA;AAAA,QACP,KAAO,EAAA,EAAE,KAAO,EAAA,MAAA,EAAQ,QAAQ,MAAO,EAAA;AAAA,QACvC,GAAI,kBAAkB;AAAC,OACxB;AAAA,MACA,UAAY,EAAAC,qBAAA;AAAA,MACZ,OAAA,EAAS,EAAE,GAAG,KAAM;AAAA;AAAA,GACrB;AAEF;AAgBO,MAAM,UACZ,GAAAC,gBAAA;AAAA,EACC;AACD;AAKM,MAAM,cAAiB,GAAA","file":"DHIS2Chart.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport * as Highcharts from \"highcharts\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { forwardRef, type ForwardRefExoticComponent, useRef } from \"react\";\nimport { useChart } from \"./hooks/useChart.js\";\nimport \"./styles/custom-highchart.css\";\nimport \"highcharts/modules/exporting\";\nimport \"highcharts/modules/export-data\";\nimport \"highcharts/modules/full-screen\";\nimport \"highcharts/highcharts-more\";\nimport \"highcharts/modules/solid-gauge\";\nimport \"highcharts/modules/accessibility\";\nimport { ChartAnalyticsProps } from \"./types/props.js\";\n\nexport * from \"./services/export.js\";\nexport * from \"./types/props.js\";\nexport * from \"./components/DownloadMenu/index.js\";\n\nfunction ChartAnalyticsComponent({\n\tanalytics,\n\tconfig,\n\tcontainerProps,\n\tsetRef,\n}: ChartAnalyticsProps) {\n\tconst id = useRef(`${uid()}-chart-item`);\n\tconst { chart } = useChart({ id: id.current, analytics, config });\n\n\tif (!chart) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<HighchartsReact\n\t\t\timmutable\n\t\t\tref={setRef}\n\t\t\tcontainerProps={{\n\t\t\t\tid: id.current,\n\t\t\t\tstyle: { width: \"100%\", height: \"100%\" },\n\t\t\t\t...(containerProps ?? {}),\n\t\t\t}}\n\t\t\thighcharts={Highcharts}\n\t\t\toptions={{ ...chart }}\n\t\t/>\n\t);\n}\n\n/**\n * The `DHIS2Chart` component allows you to render a chart visualization from DHIS2 analytics data.\n * It accepts the DHIS2 analytics payload as well as configuration on how to visualize the data.\n *\n * @component\n *\n * @param {ChartAnalyticsProps} props\n * @param {Analytics} [props.analytics] - Analytics data from DHIS2\n * @param {ChartConfig} [props.config] - Visualization configuration. See stories for more information\n * @param {Record<string, any>} [props.containerProps] - Props that will be passed to the chart container\n * @param {forwardRef} forwardRef - A function that creates a higher order component that forwards the ref through the component tree.\n *\n * @returns {React.ForwardRefExoticComponent<ChartAnalyticsProps>} - The DHIS2 chart component with forward ref support.\n */\nexport const DHIS2Chart: ForwardRefExoticComponent<ChartAnalyticsProps> =\n\tforwardRef<HighchartsReact.RefObject, ChartAnalyticsProps>(\n\t\tChartAnalyticsComponent,\n\t);\n\n/**\n * @deprecated since `v2`. Use `DHIS2Chart` instead\n * */\nexport const ChartAnalytics = DHIS2Chart;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":["useRef","useState","onImageDownload","onCSVDownload","onPDFDownload","onViewAsTable","onFullScreenView","jsxs","Fragment","jsx","IconMore24","ChartMenu"],"mappings":";;;;;;;;AAaO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAM,MAAA,aAAA,GAAgBA,aAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,YAAY,IAAM,EAAA;AACrB,MAAA,UAAA,CAAW,cAAc,OAAO,CAAA;AAAA,KAC1B,MAAA;AACN,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AAChB,GACD;AAEA,EAAA,MAAM,KAAQ,GAAA,QAAA;AAEd,EAAM,MAAA,WAAA,GAAc,CAAC,MAAmB,KAAA;AACvC,IAAA,IAAI,KAAO,EAAA;AACV,MAAA,QAAQ,MAAQ;AAAA,QACf,KAAK,KAAA;AACJ,UAAAC,yBAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,UAAA;AAAA,QACD,KAAK,MAAA;AACJ,UAAAA,yBAAA,CAAgB,OAAO,MAAM,CAAA;AAC7B,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAA,yBAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAC,uBAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAC,uBAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,OAAA;AACJ,UAAAC,uBAAA,CAAc,OAAO,IAAI,CAAA;AACzB,UAAA;AAAA,QACD,KAAK,aAAA;AACJ,UAAAC,0BAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA;AACF;AACD,GACD;AAEA,EAAA,uBAEEC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UAAY,EAAA,GAAA,EAAK,eAC7B,QAAQ,EAAA,IAAA,oBAAAA,cAAA,CAACC,iBAAW,CACtB,EAAA,CAAA;AAAA,IACC,OACA,oBAAAD,cAAA;AAAA,MAACE,iBAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,UAAA;AAAA,QACT;AAAA;AAAA;AACD,GAEF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconMore24 } from \"@dhis2/ui\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/ChartAnalytics/components/DownloadMenu/index.tsx"],"names":["useRef","useState","onImageDownload","onCSVDownload","onPDFDownload","onViewAsTable","onFullScreenView","jsxs","Fragment","jsx","IconMore24","ChartMenu"],"mappings":";;;;;;;;AAaO,SAAS,iBAAkB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAM,MAAA,aAAA,GAAgBA,aAA8B,IAAI,CAAA;AACxD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,eAAgC,IAAI,CAAA;AAClE,EAAA,MAAM,aAAa,MAAM;AACxB,IAAA,IAAI,YAAY,IAAM,EAAA;AACrB,MAAA,UAAA,CAAW,cAAc,OAAO,CAAA;AAAA,KAC1B,MAAA;AACN,MAAA,UAAA,CAAW,IAAI,CAAA;AAAA;AAChB,GACD;AAEA,EAAA,MAAM,KAAQ,GAAA,QAAA;AAEd,EAAM,MAAA,WAAA,GAAc,CAAC,MAAmB,KAAA;AACvC,IAAA,IAAI,KAAO,EAAA;AACV,MAAA,QAAQ,MAAQ;AAAA,QACf,KAAK,KAAA;AACJ,UAAAC,yBAAA,CAAgB,OAAO,KAAK,CAAA;AAC5B,UAAA;AAAA,QACD,KAAK,MAAA;AACJ,UAAAA,yBAAA,CAAgB,OAAO,MAAM,CAAA;AAC7B,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAA,yBAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAC,uBAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,KAAA;AACJ,UAAAC,uBAAA,CAAc,KAAK,CAAA;AACnB,UAAA;AAAA,QACD,KAAK,OAAA;AACJ,UAAAC,uBAAA,CAAc,OAAO,IAAI,CAAA;AACzB,UAAA;AAAA,QACD,KAAK,aAAA;AACJ,UAAAC,0BAAA,CAAiB,KAAK,CAAA;AACtB,UAAA;AAAA;AACF;AACD,GACD;AAEA,EAAA,uBAEEC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAA,KAAA,EAAA,EAAI,SAAS,UAAY,EAAA,GAAA,EAAK,eAC7B,QAAQ,EAAA,IAAA,oBAAAA,cAAA,CAACC,iBAAW,CACtB,EAAA,CAAA;AAAA,IACC,OACA,oBAAAD,cAAA;AAAA,MAACE,iBAAA;AAAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,OAAS,EAAA,UAAA;AAAA,QACT;AAAA;AAAA;AACD,GAEF,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { IconMore24 } from \"@dhis2/ui\";\nimport HighchartsReact from \"highcharts-react-official\";\nimport { type ReactNode, useRef, useState } from \"react\";\nimport {\n\tonCSVDownload,\n\tonFullScreenView,\n\tonImageDownload,\n\tonPDFDownload,\n\tonViewAsTable,\n} from \"../../services/export.js\";\nimport { ChartMenu } from \"./components/Menu.js\";\nimport { ChartExportMenuItem } from \"./interfaces/menu.js\";\n\nexport function ChartDownloadMenu({\n\tchartRef,\n\texclude,\n\ticon,\n}: {\n\tchartRef: HighchartsReact.RefObject | null;\n\texclude?: ChartExportMenuItem[];\n\ticon?: ReactNode;\n}) {\n\tconst menuButtonRef = useRef<HTMLDivElement | null>(null);\n\tconst [menuRef, setMenuRef] = useState<HTMLDivElement | null>(null);\n\tconst toggleMenu = () => {\n\t\tif (menuRef === null) {\n\t\t\tsetMenuRef(menuButtonRef.current);\n\t\t} else {\n\t\t\tsetMenuRef(null);\n\t\t}\n\t};\n\n\tconst chart = chartRef;\n\n\tconst onMenuClick = (action: string) => {\n\t\tif (chart) {\n\t\t\tswitch (action) {\n\t\t\t\tcase \"png\":\n\t\t\t\t\tonImageDownload(chart, \"png\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"jpeg\":\n\t\t\t\t\tonImageDownload(chart, \"jpeg\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"svg\":\n\t\t\t\t\tonImageDownload(chart, \"svg+xml\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"csv\":\n\t\t\t\t\tonCSVDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"pdf\":\n\t\t\t\t\tonPDFDownload(chart);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"table\":\n\t\t\t\t\tonViewAsTable(chart, true);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"full-screen\":\n\t\t\t\t\tonFullScreenView(chart);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<div onClick={toggleMenu} ref={menuButtonRef}>\n\t\t\t\t{icon ?? <IconMore24 />}\n\t\t\t</div>\n\t\t\t{menuRef && (\n\t\t\t\t<ChartMenu\n\t\t\t\t\texclude={exclude}\n\t\t\t\t\tonClick={onMenuClick}\n\t\t\t\t\tonClose={toggleMenu}\n\t\t\t\t\tmenuRef={menuRef}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":["useMemo","jsx","CircularProgressbarWithChildren","colors","jsxs"],"mappings":";;;;;;;;AAOO,SAAS,0BAA2B,CAAA;AAAA,EAC1C,SAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/CircularProgressDashboard/CircularProgressIndicator.tsx"],"names":["useMemo","jsx","CircularProgressbarWithChildren","colors","jsxs"],"mappings":";;;;;;;;AAOO,SAAS,0BAA2B,CAAA;AAAA,EAC1C,SAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACD,CAAyC,EAAA;AACxC,EAAM,MAAA,6BAAA,GAAgCA,cAAQ,MAAM;AACnD,IAAO,OAAA,KAAA,KAAU,SACd,KACA,GAAA,IAAA,CAAK,OAAQ,SAAa,IAAA,CAAA,KAAM,WAAe,IAAA,CAAA,CAAA,GAAM,GAAG,CAAA;AAAA,GACzD,EAAA,CAAC,SAAW,EAAA,WAAA,EAAa,KAAK,CAAC,CAAA;AAClC,EACC,uBAAAC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA;AAAA,QACN,eAAiB,EAAA,aAAA;AAAA,QACjB,KAAO,EAAA;AAAA,OACR;AAAA,MAEA,QAAA,kBAAAA,cAAA;AAAA,QAACC,wDAAA;AAAA,QAAA;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,IAAM,EAAA;AAAA,cACL,MAAA,EAAQ,WAAa,EAAA,KAAA,IAASC,SAAO,CAAA;AAAA;AACtC,WACD;AAAA,UACA,WAAa,EAAA,CAAA;AAAA,UACb,KAAO,EAAA,6BAAA;AAAA,UAEP,QAAA,kBAAAF,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACA,KAAO,EAAA;AAAA,gBACN,GAAI,aAAa,EAAC;AAAA,gBAClB,UACE,SAAW,EAAA,QAAA,IAAY,OAAO,IAAS,KAAA,QAAA,GACrC,MAAO,IACP,GAAA,MAAA;AAAA,gBACJ,SAAW,EAAA;AAAA,eACZ;AAAA,cAEA,QAAA,kBAAAG,eAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACA,KAAO,EAAA;AAAA,oBACN,KACC,EAAA,SAAA,EAAW,KACX,IAAA,WAAA,EAAa,SACbD,SAAO,CAAA;AAAA,mBACT;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,6BAAA;AAAA,oBAA8B;AAAA;AAAA;AAAA;AAChC;AAAA;AACD;AAAA;AACD;AAAA,GACD;AAEF;AAEO,MAAM,yBAA4B,GAAA","file":"CircularProgressIndicator.js","sourcesContent":["import { colors } from \"@dhis2/ui\";\nimport { type ReactElement, useMemo } from \"react\";\nimport { CircularProgressbarWithChildren } from \"react-circular-progressbar\";\nimport { CircularDashboardProps } from \"./types/props.js\";\n\nexport * from \"./types/props.js\";\n\nexport function CircularProgressVisualizer({\n\tnumerator,\n\tsize,\n\tdenominator,\n\tvalue,\n\ttextStyle,\n\tstrokeStyle,\n}: CircularDashboardProps): ReactElement {\n\tconst filledSectionFieldsPercentage = useMemo(() => {\n\t\treturn value !== undefined\n\t\t\t? value\n\t\t\t: Math.floor(((numerator ?? 0) / (denominator ?? 1)) * 100);\n\t}, [numerator, denominator, value]);\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\twidth: size,\n\t\t\t}}\n\t\t>\n\t\t\t<CircularProgressbarWithChildren\n\t\t\t\tstyles={{\n\t\t\t\t\tpath: {\n\t\t\t\t\t\tstroke: strokeStyle?.color ?? colors.blue700,\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\tstrokeWidth={7}\n\t\t\t\tvalue={filledSectionFieldsPercentage}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t...(textStyle ?? {}),\n\t\t\t\t\t\tfontSize:\n\t\t\t\t\t\t\t(textStyle?.fontSize ?? typeof size === \"number\")\n\t\t\t\t\t\t\t\t? 0.3 * (size as number)\n\t\t\t\t\t\t\t\t: \"100%\",\n\t\t\t\t\t\tmarginTop: -11,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<strong\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\ttextStyle?.color ??\n\t\t\t\t\t\t\t\tstrokeStyle?.color ??\n\t\t\t\t\t\t\t\tcolors.blue700,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{filledSectionFieldsPercentage}%\n\t\t\t\t\t</strong>\n\t\t\t\t</div>\n\t\t\t</CircularProgressbarWithChildren>\n\t\t</div>\n\t);\n}\n\nexport const CircularProgressDashboard = CircularProgressVisualizer;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/DHIS2PivotTable/DHIS2PivotTable.tsx"],"names":["useMemo","DHIS2PivotTableEngine","DHIS2PivotTableEngineProvider","jsxs","PivotTable","jsx","TableHeaders","CustomPivotTableBody"],"mappings":";;;;;;;;;;AA6BO,SAAS,eAAgB,CAAA;AAAA,EAC/B,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAyB,EAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,aAAA;AAAA,IACd,MAAM,IAAIC,+BAAA,CAAsB,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,GACnB;AAEA,EAAA,sCACEC,yCAA8B,EAAA,EAAA,MAAA,EAC9B,QAAC,kBAAAC,eAAA,CAAAC,gBAAA,EAAA,EAAW,QAAgB,UAC3B,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,yBAAa,EAAA,EAAA,CAAA;AAAA,mCACbC,8BAAqB,EAAA,EAAA;AAAA,GAAA,EACvB,CACD,EAAA,CAAA;AAEF","file":"DHIS2PivotTable.js","sourcesContent":["import { Analytics, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { DHIS2PivotTableEngine, type EngineConfig } from \"./services/engine.js\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/components/DHIS2PivotTable/DHIS2PivotTable.tsx"],"names":["useMemo","DHIS2PivotTableEngine","DHIS2PivotTableEngineProvider","jsxs","PivotTable","jsx","TableHeaders","CustomPivotTableBody"],"mappings":";;;;;;;;;;AA6BO,SAAS,eAAgB,CAAA;AAAA,EAC/B,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAyB,EAAA;AACxB,EAAA,MAAM,MAAS,GAAAA,aAAA;AAAA,IACd,MAAM,IAAIC,+BAAA,CAAsB,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,IACrD,CAAC,WAAW,MAAM;AAAA,GACnB;AAEA,EAAA,sCACEC,yCAA8B,EAAA,EAAA,MAAA,EAC9B,QAAC,kBAAAC,eAAA,CAAAC,gBAAA,EAAA,EAAW,QAAgB,UAC3B,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,yBAAa,EAAA,EAAA,CAAA;AAAA,mCACbC,8BAAqB,EAAA,EAAA;AAAA,GAAA,EACvB,CACD,EAAA,CAAA;AAEF","file":"DHIS2PivotTable.js","sourcesContent":["import { Analytics, LegendSet } from \"@hisptz/dhis2-utils\";\nimport { DHIS2PivotTableEngine, type EngineConfig } from \"./services/engine.js\";\nimport { useMemo } from \"react\";\nimport { DHIS2PivotTableEngineProvider } from \"./state/engine.js\";\nimport { PivotTable } from \"./components/Table\";\nimport { TableHeaders } from \"./components/TableHeaders\";\nimport { CustomPivotTableBody } from \"./components/TableBody\";\nimport { DataTableProps } from \"@dhis2/ui\";\n\nexport interface DHIS2PivotTableOptions {\n\tlegendSets?: LegendSet[];\n\thideEmptyColumns?: boolean;\n\thideEmptyRows?: boolean;\n\tshowRowTotals?: boolean;\n\tshowColumnTotals?: boolean;\n\tshowRowSubtotals?: boolean;\n\tshowColumnSubtotals?: boolean;\n\tfixColumnHeaders?: boolean;\n\tfixRowHeaders?: boolean;\n\tshowFilterAsTitle?: boolean;\n}\n\nexport interface DHIS2PivotTableProps {\n\tanalytics: Analytics;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n\tconfig: EngineConfig;\n}\n\nexport function DHIS2PivotTable({\n\tanalytics,\n\tconfig,\n\ttableProps,\n\tsetRef,\n}: DHIS2PivotTableProps) {\n\tconst engine = useMemo(\n\t\t() => new DHIS2PivotTableEngine({ analytics, config }),\n\t\t[analytics, config],\n\t);\n\n\treturn (\n\t\t<DHIS2PivotTableEngineProvider engine={engine}>\n\t\t\t<PivotTable setRef={setRef} tableProps={tableProps}>\n\t\t\t\t<TableHeaders />\n\t\t\t\t<CustomPivotTableBody />\n\t\t\t</PivotTable>\n\t\t</DHIS2PivotTableEngineProvider>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/Table/index.tsx"],"names":["jsx","Fragment","DataTable"],"mappings":";;;;;AAWO,SAAS,UAAW,CAAA,EAAE,UAAY,EAAA,QAAA,EAAU,QAA2B,EAAA;AAC7E,EACC,uBAAAA,cAAA,CAAAC,mBAAA,EAAA,EAGC,QAAC,kBAAAD,cAAA,CAAAE,YAAA,EAAA,EAAU,GAAK,EAAA,MAAA,EAAgB,GAAI,UAAc,IAAA,EAChD,EAAA,QAAA,EACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/Table/index.tsx"],"names":["jsx","Fragment","DataTable"],"mappings":";;;;;AAWO,SAAS,UAAW,CAAA,EAAE,UAAY,EAAA,QAAA,EAAU,QAA2B,EAAA;AAC7E,EACC,uBAAAA,cAAA,CAAAC,mBAAA,EAAA,EAGC,QAAC,kBAAAD,cAAA,CAAAE,YAAA,EAAA,EAAU,GAAK,EAAA,MAAA,EAAgB,GAAI,UAAc,IAAA,EAChD,EAAA,QAAA,EACF,CACD,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { DataTable, DataTableProps } from \"@dhis2/ui\";\nimport type { ReactNode } from \"react\";\n\nexport type PivotTableLayoutProps = DataTableProps;\n\nexport interface PivotTableProps {\n\tchildren: ReactNode;\n\ttableProps?: DataTableProps;\n\tsetRef?: (ref: HTMLTableElement) => void;\n}\n\nexport function PivotTable({ tableProps, children, setRef }: PivotTableProps) {\n\treturn (\n\t\t<>\n\t\t\t{/*\n// @ts-ignore */}\n\t\t\t<DataTable ref={setRef as any} {...(tableProps ?? {})}>\n\t\t\t\t{children}\n\t\t\t</DataTable>\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","getTextColorFromBackgroundColor","useRef","useResizeObserver","slice","isEmpty","jsxs","DataTableRow","classes","TableBody"],"mappings":";;;;;;;;;;;;;;;AAWA,SAAS,eAAgB,CAAA;AAAA,EACxB,MAAA;AAAA,EACA,IAAA;AAAA,EACA;AACD,CAIG,EAAA;AACF,EAAA,MAAM,SAASA,mCAA0B,EAAA;AAEzC,EAAA,MAAM,gBAAgB,MAAQ,EAAA,SAAA;AAC9B,EAAA,MAAM,cAAiB,GAAA,aAAA,EAAe,GAAI,CAAA,CAAC,GAAS,MAAA;AAAA,IACnD,GAAG,GAAA;AAAA,IACH,GAAG,MAAA;AAAA,IACH,CAAC,SAAS,GAAG,IAAK,CAAA;AAAA,GACjB,CAAA,CAAA;AAEF,EAAA,uBAEGC,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAgB,GAAI,CAAA,CAACC,OAAW,KAAA;AAChC,IAAM,MAAA,MAAA,GAAS,MAAQ,EAAA,kBAAA,CAAmBA,OAAM,CAAA;AAEhD,IACC,uBAAAF,cAAA;AAAA,MAACG,gBAAA;AAAA,MAAA;AAAA,QACA,KAAO,EAAA;AAAA,UACN,UACC,EAAA,MAAA,EAAQ,KAAU,KAAA,MAAA,GACf,QAAQ,KACR,GAAA,MAAA;AAAA,UACJ,KAAA,EACC,MAAQ,EAAA,KAAA,KAAU,MACf,GAAAC,qCAAA;AAAA,YACA,MAAQ,EAAA;AAAA,WAER,GAAA,MAAA,EAAQ,KAAU,KAAA,MAAA,GACjB,OAAO,KACP,GAAA;AAAA,SACN;AAAA,QAEA,KAAM,EAAA,QAAA;AAAA,QACN,QAAQ,EAAA,IAAA;AAAA,QAEP,QAAA,EAAA,MAAA,EAAQ,QAASF,CAAAA,OAAM,CAAK,IAAA;AAAA,OAAA;AAAA,MAJxB,GAAG,MAAO,CAAA,MAAA,CAAOA,OAAM,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,MAAA;AAAA,KAKxC;AAAA,GAED,CACF,EAAA,CAAA;AAEF;AAEA,SAAS,WAAY,CAAA;AAAA,EACpB,GAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAQ,EAAE,IAAA,EAAM,OAAS,EAAA,MAAA,EAAQ,WAAW,aAAc;AAC3D,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableBody/index.tsx"],"names":["useCustomPivotTableEngine","jsx","Fragment","mapper","DataTableCell","getTextColorFromBackgroundColor","useRef","useResizeObserver","slice","isEmpty","jsxs","DataTableRow","classes","TableBody"],"mappings":"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","file":"index.js","sourcesContent":["import { Header } from \"../../services/engine\";\nimport { isEmpty, slice } from \"lodash\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableCell, DataTableRow, TableBody } from \"@dhis2/ui\";\nimport { Fragment, type ReactElement, ReactNode, useRef } from \"react\";\nimport { AnalyticsItem } from \"@hisptz/dhis2-utils\";\nimport classes from \"./TableBody.module.css\";\nimport { DHIS2Dimension } from \"../../interfaces\";\nimport { useResizeObserver } from \"usehooks-ts\";\nimport { getTextColorFromBackgroundColor } from \"../../utils/color\";\n\nfunction DataRowRenderer({\n\tmapper,\n\titem,\n\tdimension,\n}: {\n\tmapper?: { [key: string]: any };\n\titem: AnalyticsItem;\n\tdimension: DHIS2Dimension;\n}) {\n\tconst engine = useCustomPivotTableEngine();\n\n\tconst columnMappers = engine?.columnMap;\n\tconst completeMapper = columnMappers?.map((map) => ({\n\t\t...map,\n\t\t...mapper,\n\t\t[dimension]: item.uid,\n\t}));\n\n\treturn (\n\t\t<>\n\t\t\t{completeMapper?.map((mapper) => {\n\t\t\t\tconst legend = engine?.getItemValueLegend(mapper);\n\n\t\t\t\treturn (\n\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tbackground:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? legend?.color\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\tlegend?.style === \"FILL\"\n\t\t\t\t\t\t\t\t\t? getTextColorFromBackgroundColor(\n\t\t\t\t\t\t\t\t\t\t\tlegend?.color,\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: legend?.style === \"TEXT\"\n\t\t\t\t\t\t\t\t\t\t? legend.color\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={`${Object.values(mapper).join(\"-\")}-value`}\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tbordered\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine?.getValue(mapper) ?? \"\"}\n\t\t\t\t\t</DataTableCell>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nfunction RowRenderer({\n\trow,\n\tindex,\n\tconfig: { rows, columns, mapper, prevWidth, fixRowHeaders },\n}: {\n\trow: Header;\n\tindex: number;\n\tconfig: {\n\t\trows: Header[];\n\t\tcolumns?: Header[];\n\t\tmapper?: { [key: string]: string | undefined };\n\t\tprevWidth?: number;\n\t\tfixRowHeaders?: boolean;\n\t};\n}): ReactElement | null {\n\tconst cellRef = useRef<HTMLElement | null>(null);\n\tconst { width } = useResizeObserver({\n\t\tref: cellRef,\n\t});\n\n\tconst rowSpan = slice(rows, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\tconst hasSubRows = !isEmpty(rows[index + 1]);\n\tconst nextRow = rows[index + 1];\n\n\treturn (\n\t\t<>\n\t\t\t{row?.items?.map((item) => {\n\t\t\t\treturn (\n\t\t\t\t\t<Fragment key={`${item.name}-${row.dimension}-fragment`}>\n\t\t\t\t\t\t<DataTableRow key={`${item.name}-${row.dimension}-row`}>\n\t\t\t\t\t\t\t<DataTableCell\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\tref={cellRef}\n\t\t\t\t\t\t\t\tfixed={fixRowHeaders}\n\t\t\t\t\t\t\t\tleft={`${prevWidth}px` as unknown as boolean}\n\t\t\t\t\t\t\t\tclassName={classes[\"header-cell\"]}\n\t\t\t\t\t\t\t\ttag=\"th\"\n\t\t\t\t\t\t\t\tbordered\n\t\t\t\t\t\t\t\trowSpan={(\n\t\t\t\t\t\t\t\t\trowSpan + (hasSubRows ? 1 : 0)\n\t\t\t\t\t\t\t\t).toString()}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{item.name as unknown as string | ReactNode}\n\t\t\t\t\t\t\t</DataTableCell>\n\t\t\t\t\t\t\t{!hasSubRows ? (\n\t\t\t\t\t\t\t\t<DataRowRenderer\n\t\t\t\t\t\t\t\t\tdimension={row.dimension}\n\t\t\t\t\t\t\t\t\tmapper={mapper}\n\t\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</DataTableRow>\n\t\t\t\t\t\t{hasSubRows ? (\n\t\t\t\t\t\t\t<RowRenderer\n\t\t\t\t\t\t\t\trow={nextRow}\n\t\t\t\t\t\t\t\tindex={index + 1}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\t\t\tprevWidth: width,\n\t\t\t\t\t\t\t\t\tmapper: {\n\t\t\t\t\t\t\t\t\t\t...mapper,\n\t\t\t\t\t\t\t\t\t\t[row.dimension]:\n\t\t\t\t\t\t\t\t\t\t\titem.uid as unknown as string,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</Fragment>\n\t\t\t\t);\n\t\t\t})}\n\t\t</>\n\t);\n}\n\nexport function CustomPivotTableBody() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst rows = engine?.rowHeaders;\n\tconst columns = engine?.columnHeaders;\n\tconst fixRowHeaders = engine?.fixRowHeaders;\n\n\tif (!rows || isEmpty(rows)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableBody>\n\t\t\t<RowRenderer\n\t\t\t\trow={rows[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ rows, columns, fixRowHeaders }}\n\t\t\t/>\n\t\t</TableBody>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["useRef","useResizeObserver","slice","column","isEmpty","jsxs","Fragment","DataTableRow","jsx","DataTableColumnHeader","classes","times","useCustomPivotTableEngine","TableHead"],"mappings":";;;;;;;;;;;;;;AAQA,SAAS,cAAe,CAAA;AAAA,EACvB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAQ,EAAE,gBAAA,EAAkB,YAAY,UAAa,GAAA,CAAA,EAAG,SAAS,MAAO;AACzE,
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/DHIS2PivotTable/components/TableHeaders/index.tsx"],"names":["useRef","useResizeObserver","slice","column","isEmpty","jsxs","Fragment","DataTableRow","jsx","DataTableColumnHeader","classes","times","useCustomPivotTableEngine","TableHead"],"mappings":"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","file":"index.js","sourcesContent":["import { type ReactElement, useRef } from \"react\";\nimport { useCustomPivotTableEngine } from \"../../state/engine.js\";\nimport { DataTableColumnHeader, DataTableRow, TableHead } from \"@dhis2/ui\";\nimport { isEmpty, slice, times } from \"lodash\";\nimport { DHIS2PivotTableEngine, Header } from \"../../services/engine.js\";\nimport classes from \"./TableHeaders.module.css\";\nimport { useResizeObserver } from \"usehooks-ts\";\n\nfunction ColumnRenderer({\n\tcolumn,\n\tindex,\n\tconfig: { fixColumnHeaders, rowHeaders, prevHeight = 0, columns, engine },\n}: {\n\tcolumn: Header;\n\tindex: number;\n\tconfig: {\n\t\tcolumns: Header[];\n\t\trowHeaders?: Header[];\n\t\tprevHeight?: number;\n\t\tfixColumnHeaders?: boolean;\n\t\tengine: DHIS2PivotTableEngine;\n\t};\n}): ReactElement | null {\n\tconst ref = useRef<HTMLElement | null>(null);\n\tconst { height } = useResizeObserver({\n\t\tref,\n\t});\n\n\tif (!column) {\n\t\treturn null;\n\t}\n\tconst colSpan = slice(columns, index + 1).reduce((acc, column) => {\n\t\treturn acc * (column.items?.length ?? 1);\n\t}, 1);\n\n\tconst hasSubColumns = !isEmpty(columns[index + 1]);\n\tconst nextColumn = columns[index + 1];\n\n\tconst multiplicationFactor = slice(columns, 0, index).reduce(\n\t\t(acc, column) => {\n\t\t\treturn acc * (column.items?.length ?? 1);\n\t\t},\n\t\t1,\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{engine?.showTitle && (\n\t\t\t\t<DataTableRow>\n\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tcolSpan={engine.titleSpan.toString()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{engine.title ?? \"\"}\n\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t</DataTableRow>\n\t\t\t)}\n\t\t\t<DataTableRow>\n\t\t\t\t{index === 0 &&\n\t\t\t\t\trowHeaders?.map((header) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\t\ttop={\"0\"}\n\t\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\t\trowSpan={columns.length.toString()}\n\t\t\t\t\t\t\t\tkey={`${header.dimension}-header-column`}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{header.label ?? \"\"}\n\t\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t{times(multiplicationFactor, (colNo) => {\n\t\t\t\t\treturn column.items?.map((item) => (\n\t\t\t\t\t\t<DataTableColumnHeader\n\t\t\t\t\t\t\tfixed={fixColumnHeaders}\n\t\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\t\ttop={`${prevHeight.toString()}px`}\n\t\t\t\t\t\t\tref={index === 0 ? ref : undefined}\n\t\t\t\t\t\t\tclassName={classes[\"table-header\"]}\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tcolSpan={colSpan.toString()}\n\t\t\t\t\t\t\tkey={`${colNo}-${item.name}-column-header`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{item.name as unknown as string}\n\t\t\t\t\t\t</DataTableColumnHeader>\n\t\t\t\t\t));\n\t\t\t\t})}\n\t\t\t</DataTableRow>\n\t\t\t{hasSubColumns ? (\n\t\t\t\t<ColumnRenderer\n\t\t\t\t\tcolumn={nextColumn}\n\t\t\t\t\tindex={index + 1}\n\t\t\t\t\tconfig={{\n\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\trowHeaders,\n\t\t\t\t\t\tprevHeight: height,\n\t\t\t\t\t\tfixColumnHeaders,\n\t\t\t\t\t\tengine,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</>\n\t);\n}\n\nexport function TableHeaders() {\n\tconst engine = useCustomPivotTableEngine();\n\tconst columns = engine?.columnHeaders;\n\tconst rowHeaders = engine?.rowHeaders;\n\tconst fixColumnHeaders = engine?.fixColumnHeaders;\n\n\tif (!columns || isEmpty(columns)) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<TableHead>\n\t\t\t<ColumnRenderer\n\t\t\t\tcolumn={columns[0]}\n\t\t\t\tindex={0}\n\t\t\t\tconfig={{ engine, rowHeaders, columns, fixColumnHeaders }}\n\t\t\t/>\n\t\t</TableHead>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/DHIS2PivotTable/state/engine.tsx"],"names":["createContext","useContext"],"mappings":";;;;;AAGA,MAAM,4BAAA,GACLA,oBAA4C,IAAI,CAAA;AAE1C,SAAS,yBAA4B,GAAA;AAC3C,EAAA,OAAOC,iBAAW,4BAA4B,CAAA;AAC/C;AAEO,SAAS,6BAA8B,CAAA;AAAA,EAC7C,QAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,sCACE,4BAA6B,CAAA,QAAA,EAA7B,EAAsC,KAAA,EAAO,QAC5C,QACF,EAAA,CAAA;AAEF","file":"engine.js","sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DHIS2PivotTable/state/engine.tsx"],"names":["createContext","useContext"],"mappings":";;;;;AAGA,MAAM,4BAAA,GACLA,oBAA4C,IAAI,CAAA;AAE1C,SAAS,yBAA4B,GAAA;AAC3C,EAAA,OAAOC,iBAAW,4BAA4B,CAAA;AAC/C;AAEO,SAAS,6BAA8B,CAAA;AAAA,EAC7C,QAAA;AAAA,EACA;AACD,CAGG,EAAA;AACF,EAAA,sCACE,4BAA6B,CAAA,QAAA,EAA7B,EAAsC,KAAA,EAAO,QAC5C,QACF,EAAA,CAAA;AAEF","file":"engine.js","sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { DHIS2PivotTableEngine } from \"../services/engine.js\";\n\nconst DHIS2PivotTableEngineContext =\n\tcreateContext<DHIS2PivotTableEngine | null>(null);\n\nexport function useCustomPivotTableEngine() {\n\treturn useContext(DHIS2PivotTableEngineContext);\n}\n\nexport function DHIS2PivotTableEngineProvider({\n\tchildren,\n\tengine,\n}: {\n\tchildren: ReactNode;\n\tengine: DHIS2PivotTableEngine;\n}) {\n\treturn (\n\t\t<DHIS2PivotTableEngineContext.Provider value={engine}>\n\t\t\t{children}\n\t\t</DHIS2PivotTableEngineContext.Provider>\n\t);\n}\n"]}
|
|
@@ -4,13 +4,11 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var MapArea = require('./components/MapArea/index.js');
|
|
5
5
|
var MapProvider = require('./components/MapProvider');
|
|
6
6
|
require('leaflet/dist/leaflet.css');
|
|
7
|
-
var reactQuery = require('@tanstack/react-query');
|
|
8
7
|
|
|
9
8
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
9
|
|
|
11
10
|
var MapArea__default = /*#__PURE__*/_interopDefault(MapArea);
|
|
12
11
|
|
|
13
|
-
const queryClient = new reactQuery.QueryClient();
|
|
14
12
|
const MapComponent = ({
|
|
15
13
|
orgUnitSelection,
|
|
16
14
|
pointLayer,
|
|
@@ -43,7 +41,7 @@ const MapComponent = ({
|
|
|
43
41
|
enabled: boundaryLayer?.enabled ?? false
|
|
44
42
|
}
|
|
45
43
|
];
|
|
46
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
47
45
|
MapProvider.MapProvider,
|
|
48
46
|
{
|
|
49
47
|
periodSelection,
|
|
@@ -70,7 +68,7 @@ const MapComponent = ({
|
|
|
70
68
|
key
|
|
71
69
|
)
|
|
72
70
|
}
|
|
73
|
-
)
|
|
71
|
+
);
|
|
74
72
|
};
|
|
75
73
|
const DHIS2Map = MapComponent;
|
|
76
74
|
const Map = DHIS2Map;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Map/DHIS2Map.tsx"],"names":["jsx","MapProvider","MapArea"],"mappings":";;;;;;;;;;;AAUA,MAAM,eAAe,CAAC;AAAA,EACrB,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACD,CAAgB,KAAA;AACf,EAAA,MAAM,oBAA2C,GAAA;AAAA,IAChD;AAAA,MACC,IAAM,EAAA,OAAA;AAAA,MACN,EAAI,EAAA,OAAA;AAAA,MACJ,OAAA,EAAS,YAAY,OAAW,IAAA,KAAA;AAAA,MAChC,GAAG;AAAA;AACJ,GACD;AACA,EAAA,MAAM,uBAAiD,GAAA;AAAA,IACtD;AAAA,MACC,GAAG,aAAA;AAAA,MACH,IAAM,EAAA,SAAA;AAAA,MACN,EAAI,EAAA,UAAA;AAAA,MACJ,OAAA,EAAS,eAAe,OAAW,IAAA;AAAA;AACpC,GACD;AAEA,EACC,uBAAAA,cAAA;AAAA,IAACC,uBAAA;AAAA,IAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MAEA,QAAA,kBAAAD,cAAA;AAAA,QAACE,wBAAA;AAAA,QAAA;AAAA,UACA,IAAM,EAAA;AAAA,YACL,GAAG;AAAA,WACJ;AAAA,UACA,MAAQ,EAAA;AAAA,YACP,cAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAgB,EAAA,uBAAA;AAAA,YAChB,WAAa,EAAA;AAAA,WACd;AAAA,UACA,eAAA;AAAA,UACA,gBAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAA;AAAA,UAEA,GAAK,EAAA,MAAA;AAAA,UACL;AAAA,SAAA;AAAA,QAFK;AAAA;AAGN;AAAA,GACD;AAEF,CAAA;AACO,MAAM,QAAyB,GAAA;AAK/B,MAAM,GAAM,GAAA","file":"DHIS2Map.js","sourcesContent":["import MapArea from \"./components/MapArea/index.js\";\nimport {\n\tCustomBoundaryLayer,\n\tCustomPointLayer,\n} from \"./components/MapLayer/interfaces\";\nimport { MapProvider } from \"./components/MapProvider\";\nimport { MapProps } from \"./interfaces\";\nimport \"leaflet/dist/leaflet.css\";\nimport type { FC } from \"react\";\n\nconst MapComponent = ({\n\torgUnitSelection,\n\tpointLayer,\n\tboundaryLayer,\n\tthematicLayers,\n\tearthEngineLayers,\n\tperiodSelection,\n\tmapOptions,\n\tkey,\n\tcontrols,\n\tshowPeriodTitle,\n\tlegends,\n\tsetRef,\n\tanalyticsOptions,\n\tbase,\n}: MapProps) => {\n\tconst sanitizedPointLayers: CustomPointLayer[] = [\n\t\t{\n\t\t\ttype: \"point\",\n\t\t\tid: \"point\",\n\t\t\tenabled: pointLayer?.enabled ?? false,\n\t\t\t...pointLayer,\n\t\t},\n\t];\n\tconst sanitizedBoundaryLayers: CustomBoundaryLayer[] = [\n\t\t{\n\t\t\t...boundaryLayer,\n\t\t\ttype: \"overlay\",\n\t\t\tid: \"boundary\",\n\t\t\tenabled: boundaryLayer?.enabled ?? false,\n\t\t},\n\t];\n\n\treturn (\n\t\t<MapProvider\n\t\t\tperiodSelection={periodSelection}\n\t\t\torgUnitSelection={orgUnitSelection}\n\t\t>\n\t\t\t<MapArea\n\t\t\t\tbase={{\n\t\t\t\t\t...base,\n\t\t\t\t}}\n\t\t\t\tlayers={{\n\t\t\t\t\tthematicLayers,\n\t\t\t\t\tearthEngineLayers,\n\t\t\t\t\tboundaryLayers: sanitizedBoundaryLayers,\n\t\t\t\t\tpointLayers: sanitizedPointLayers,\n\t\t\t\t}}\n\t\t\t\tshowPeriodTitle={showPeriodTitle}\n\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\tlegends={legends}\n\t\t\t\tcontrols={controls}\n\t\t\t\tkey={key}\n\t\t\t\tref={setRef}\n\t\t\t\tmapOptions={mapOptions}\n\t\t\t/>\n\t\t</MapProvider>\n\t);\n};\nexport const DHIS2Map: FC<MapProps> = MapComponent;\n\n/**\n * @deprecated since `v2`. Use `DHIS2Map` instead\n * */\nexport const Map = DHIS2Map;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/Name.tsx"],"names":["useType","useFormContext","useEffect","jsx","Controller","i18n","InputField"],"mappings":";;;;;;;;;;;;;AAMO,SAAS,IAAO,GAAA;AACtB,EAAA,MAAM,SAASA,eAAQ,EAAA;AACvB,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,4BAAe,EAAA;AACpC,EAAAC,eAAA,CAAU,MAAM;AACf,IAAS,QAAA,CAAA,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAC7B,IAAS,QAAA,CAAA,IAAA,EAAM,QAAQ,EAAE,CAAA;AAAA,GAC1B,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EACC,uBAAAC,cAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,MAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAUC,qBAAK,CAAA,CAAA,CAAE,kBAAkB;AAAA,OACpC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAAF,cAAA;AAAA,QAACG,aAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAOD,qBAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,UAC1B,IAAK,EAAA,MAAA;AAAA,UACL,QAAQ,EAAA,IAAA;AAAA,UACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,UAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,UAClC,QAAU,EAAA,CAAC,EAAE,KAAA,EAAgC,KAAA;AAC5C,YAAA,IAAI,CAAC,KAAO,EAAA;AACZ,YAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,WACrB;AAAA,UACA,OAAO,KAAM,CAAA;AAAA;AAAA;AACd;AAAA,GAEF;AAEF","file":"Name.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/Name.tsx"],"names":["useType","useFormContext","useEffect","jsx","Controller","i18n","InputField"],"mappings":";;;;;;;;;;;;;AAMO,SAAS,IAAO,GAAA;AACtB,EAAA,MAAM,SAASA,eAAQ,EAAA;AACvB,EAAM,MAAA,EAAE,QAAS,EAAA,GAAIC,4BAAe,EAAA;AACpC,EAAAC,eAAA,CAAU,MAAM;AACf,IAAS,QAAA,CAAA,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAC7B,IAAS,QAAA,CAAA,IAAA,EAAM,QAAQ,EAAE,CAAA;AAAA,GAC1B,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EACC,uBAAAC,cAAA;AAAA,IAACC,wBAAA;AAAA,IAAA;AAAA,MACA,IAAK,EAAA,MAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACN,QAAA,EAAUC,qBAAK,CAAA,CAAA,CAAE,kBAAkB;AAAA,OACpC;AAAA,MACA,MAAQ,EAAA,CAAC,EAAE,KAAA,EAAO,YACjB,qBAAAF,cAAA;AAAA,QAACG,aAAA;AAAA,QAAA;AAAA,UACA,KAAA,EAAOD,qBAAK,CAAA,CAAA,CAAE,YAAY,CAAA;AAAA,UAC1B,IAAK,EAAA,MAAA;AAAA,UACL,QAAQ,EAAA,IAAA;AAAA,UACR,KAAA,EAAO,OAAQ,CAAA,UAAA,CAAW,KAAK,CAAA;AAAA,UAC/B,cAAA,EAAgB,WAAW,KAAO,EAAA,OAAA;AAAA,UAClC,QAAU,EAAA,CAAC,EAAE,KAAA,EAAgC,KAAA;AAC5C,YAAA,IAAI,CAAC,KAAO,EAAA;AACZ,YAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,WACrB;AAAA,UACA,OAAO,KAAM,CAAA;AAAA;AAAA;AACd;AAAA,GAEF;AAEF","file":"Name.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport { useEffect } from \"react\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { InputField } from \"@dhis2/ui\";\nimport { useType } from \"../hooks/data.js\";\n\nexport function Name() {\n\tconst config = useType();\n\tconst { setValue } = useFormContext();\n\tuseEffect(() => {\n\t\tsetValue(\"name\", config?.name);\n\t\tsetValue(\"id\", config?.id);\n\t}, [config]);\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"name\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Name is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<InputField\n\t\t\t\t\tlabel={i18n.t(\"Layer name\")}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\trequired\n\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\tonChange={({ value }: { value?: string }) => {\n\t\t\t\t\t\tif (!value) return;\n\t\t\t\t\t\tfield.onChange(value);\n\t\t\t\t\t}}\n\t\t\t\t\tvalue={field.value}\n\t\t\t\t/>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.tsx"],"names":["useType","useFormContext","useDatasetInfo","useEffect","isEmpty","head","Center","jsx","Controller","i18n","jsxs","SingleSelectField","SingleSelectOption","CircularLoader"],"mappings":"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","file":"PeriodSelector.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/components/Map/components/EarthEngineLayerConfiguration/components/PeriodSelector.tsx"],"names":["useType","useFormContext","useDatasetInfo","useEffect","isEmpty","head","Center","jsx","Controller","i18n","jsxs","SingleSelectField","SingleSelectOption","CircularLoader"],"mappings":"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","file":"PeriodSelector.js","sourcesContent":["import { Controller, useFormContext } from \"react-hook-form\";\nimport { useEffect } from \"react\";\nimport { head, isEmpty } from \"lodash\";\nimport {\n\tCenter,\n\tCircularLoader,\n\tSingleSelectField,\n\tSingleSelectOption,\n} from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { useDatasetInfo, useType } from \"../hooks/data.js\";\n\nexport function PeriodSelector() {\n\tconst config = useType();\n\tconst { setValue, getValues } = useFormContext();\n\tconst filters = config?.filters ?? [];\n\tconst hasPeriodFilter = filters.includes(\"period\");\n\tconst { loading, error, periods } = useDatasetInfo(hasPeriodFilter, config);\n\tconst initialPeriod = getValues(\"filters.period\");\n\n\tuseEffect(() => {\n\t\tif (!isEmpty(periods) && !initialPeriod) {\n\t\t\tsetValue(\"filters.period\", head(periods));\n\t\t}\n\t}, [periods]);\n\n\tif (!hasPeriodFilter) {\n\t\treturn null;\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div style={{ minWidth: \"100%\", minHeight: 100 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<p>{error?.message ?? error?.toString()}</p>\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Controller\n\t\t\tname=\"filters.period\"\n\t\t\trules={{\n\t\t\t\trequired: i18n.t(\"Period is required\"),\n\t\t\t}}\n\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t<div style={{ gap: 4 }} className=\"row align-items-center\">\n\t\t\t\t\t<div style={{ flex: 1 }}>\n\t\t\t\t\t\t<SingleSelectField\n\t\t\t\t\t\t\thelpText={i18n.t(\n\t\t\t\t\t\t\t\t\"Available periods are set by the source data\",\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tfilterable\n\t\t\t\t\t\t\tlabel={i18n.t(\"Period\")}\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t\terror={Boolean(fieldState.error)}\n\t\t\t\t\t\t\tvalidationText={fieldState.error?.message}\n\t\t\t\t\t\t\tonChange={({ selected }: { selected: string }) =>\n\t\t\t\t\t\t\t\tfield.onChange(parseInt(selected))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tselected={\n\t\t\t\t\t\t\t\tperiods?.includes(field.value)\n\t\t\t\t\t\t\t\t\t? field.value?.toString()\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{periods?.map((period: number) => (\n\t\t\t\t\t\t\t\t<SingleSelectOption\n\t\t\t\t\t\t\t\t\tkey={`${period}-option`}\n\t\t\t\t\t\t\t\t\tvalue={period.toString()}\n\t\t\t\t\t\t\t\t\tlabel={period.toString()}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</SingleSelectField>\n\t\t\t\t\t</div>\n\t\t\t\t\t{loading && <CircularLoader extrasmall />}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/Map/components/MapArea/index.tsx"],"names":["useMapLayers","jsxs","Fragment","jsx","TileLayer","MapControl","isEmpty","LayersControl","MapLayer","LegendArea","useMapBounds","useRef","uid","MapContainer","MapPeriodTitle","MapUpdater","MapLayersProvider","forwardRef"],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/Map/components/MapArea/index.tsx"],"names":["useMapLayers","jsxs","Fragment","jsx","TileLayer","MapControl","isEmpty","LayersControl","MapLayer","LegendArea","useMapBounds","useRef","uid","MapContainer","MapPeriodTitle","MapUpdater","MapLayersProvider","forwardRef"],"mappings":"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","file":"index.js","sourcesContent":["import { uid } from \"@hisptz/dhis2-utils\";\nimport { Map as LeafletMap } from \"leaflet\";\nimport { isEmpty } from \"lodash\";\nimport { forwardRef, type Ref, useRef } from \"react\";\nimport { LayersControl, MapContainer, TileLayer } from \"react-leaflet\";\nimport { useMapBounds } from \"../../hooks/map.js\";\nimport MapControl from \"../MapControls/index.js\";\nimport MapLayer from \"../MapLayer/index.js\";\nimport LegendArea from \"../MapLayer/components/LegendArea/index.js\";\nimport { CustomThematicLayer } from \"../MapLayer/interfaces/index.js\";\nimport { MapLayersProvider } from \"../MapProvider/components/MapLayerProvider/index.js\";\nimport { useMapLayers } from \"../MapProvider/hooks/index.js\";\nimport {\n\tMapAreaProps,\n\tMapControls,\n\tMapLegendConfig,\n} from \"./interfaces/index.js\";\nimport MapUpdater from \"../MapUpdater/index.js\";\nimport { MapPeriodTitle } from \"../MapTitle\";\n\nfunction MapLayerArea({\n\tid,\n\tbase = { enabled: true },\n\tcontrols,\n\tlegends,\n}: {\n\tid: string;\n\tbase?: {\n\t\turl?: string;\n\t\tattribution?: string;\n\t\tenabled?: boolean;\n\t};\n\tcontrols?: MapControls[];\n\tlegends?: MapLegendConfig;\n}) {\n\tconst { layers } = useMapLayers();\n\n\treturn (\n\t\t<>\n\t\t\t{base?.enabled && (\n\t\t\t\t<TileLayer\n\t\t\t\t\tid={id}\n\t\t\t\t\tattribution={\n\t\t\t\t\t\tbase?.attribution ??\n\t\t\t\t\t\t'© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> | © <a href=\"https://carto.com/attribution\">CARTO</a>'\n\t\t\t\t\t}\n\t\t\t\t\turl={\n\t\t\t\t\t\tbase?.url ??\n\t\t\t\t\t\t\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{controls?.map((control) => (\n\t\t\t\t<MapControl\n\t\t\t\t\tmapId={id}\n\t\t\t\t\tkey={`${control.type}-control`}\n\t\t\t\t\t{...control}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LayersControl hideSingleBase position={\"topleft\"}>\n\t\t\t\t\t{(layers as CustomThematicLayer[]).map(\n\t\t\t\t\t\t(layer: CustomThematicLayer, index) => (\n\t\t\t\t\t\t\t<MapLayer\n\t\t\t\t\t\t\t\tkey={layer.id}\n\t\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</LayersControl>\n\t\t\t)}\n\t\t\t{!isEmpty(layers) && (\n\t\t\t\t<LegendArea\n\t\t\t\t\tlegends={legends}\n\t\t\t\t\tlayers={layers as CustomThematicLayer[]}\n\t\t\t\t\tposition={\"topright\"}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nconst MapArea = (\n\t{\n\t\tbase,\n\t\tcontrols,\n\t\tmapOptions,\n\t\tshowPeriodTitle,\n\t\tkey,\n\t\tlegends,\n\t\tlayers,\n\t\tanalyticsOptions,\n\t}: MapAreaProps,\n\tref: Ref<LeafletMap> | undefined,\n) => {\n\tconst { center, bounds } = useMapBounds();\n\tconst { current: id } = useRef<string>(uid());\n\tconst containerRef = useRef<HTMLDivElement | null>(null);\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tid={`${id}-\"map-container`}\n\t\t\tstyle={{ height: \"100%\", width: \"100%\" }}\n\t\t>\n\t\t\t<MapContainer\n\t\t\t\tattributionControl\n\t\t\t\tref={ref}\n\t\t\t\tid={id}\n\t\t\t\tcenter={center}\n\t\t\t\tbounceAtZoomLimits\n\t\t\t\tbounds={bounds}\n\t\t\t\tstyle={{ height: \"100%\", width: \"100%\", minHeight: 500 }}\n\t\t\t\tkey={key}\n\t\t\t\ttrackResize\n\t\t\t\t{...mapOptions}\n\t\t\t>\n\t\t\t\t<>\n\t\t\t\t\t{showPeriodTitle && <MapPeriodTitle />}\n\t\t\t\t\t<MapUpdater containerRef={containerRef} bounds={bounds} />\n\t\t\t\t\t<MapLayersProvider\n\t\t\t\t\t\tanalyticsOptions={analyticsOptions}\n\t\t\t\t\t\tlayers={layers}\n\t\t\t\t\t>\n\t\t\t\t\t\t<MapLayerArea\n\t\t\t\t\t\t\tbase={base}\n\t\t\t\t\t\t\tid={id}\n\t\t\t\t\t\t\tcontrols={controls}\n\t\t\t\t\t\t\tlegends={legends}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MapLayersProvider>\n\t\t\t\t</>\n\t\t\t</MapContainer>\n\t\t</div>\n\t);\n};\n\nexport default forwardRef(MapArea);\n"]}
|
|
@@ -8,9 +8,20 @@ const POSITION_CLASSES = {
|
|
|
8
8
|
topleft: "leaflet-top leaflet-left",
|
|
9
9
|
topright: "leaflet-top leaflet-right"
|
|
10
10
|
};
|
|
11
|
-
function CustomControl({
|
|
11
|
+
function CustomControl({
|
|
12
|
+
children,
|
|
13
|
+
position,
|
|
14
|
+
...options
|
|
15
|
+
}) {
|
|
12
16
|
const positionClass = position && POSITION_CLASSES[position] || POSITION_CLASSES.topright;
|
|
13
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...options, className: `${positionClass}`, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...options, className: `${positionClass}`, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
+
"div",
|
|
19
|
+
{
|
|
20
|
+
style: { overflow: "hidden", border: "none" },
|
|
21
|
+
className: "leaflet-control leaflet-bar",
|
|
22
|
+
children
|
|
23
|
+
}
|
|
24
|
+
) });
|
|
14
25
|
}
|
|
15
26
|
|
|
16
27
|
exports.CustomControl = CustomControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapControls/components/CustomControl/index.tsx"],"names":["jsx"],"mappings":";;;;AAGA,MAAM,gBAAmB,GAAA;AAAA,EACxB,UAAY,EAAA,6BAAA;AAAA,EACZ,WAAa,EAAA,8BAAA;AAAA,EACb,OAAS,EAAA,0BAAA;AAAA,EACT,QAAU,EAAA;AACX,CAAA;AAMO,SAAS,
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapControls/components/CustomControl/index.tsx"],"names":["jsx"],"mappings":";;;;AAGA,MAAM,gBAAmB,GAAA;AAAA,EACxB,UAAY,EAAA,6BAAA;AAAA,EACZ,WAAa,EAAA,8BAAA;AAAA,EACb,OAAS,EAAA,0BAAA;AAAA,EACT,QAAU,EAAA;AACX,CAAA;AAMO,SAAS,aAAc,CAAA;AAAA,EAC7B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACJ,CAAyB,EAAA;AACxB,EAAA,MAAM,aACJ,GAAA,QAAA,IAAY,gBAAiB,CAAA,QAAQ,KAAM,gBAAiB,CAAA,QAAA;AAC9D,EAAA,sCACE,KAAK,EAAA,EAAA,GAAG,SAAS,SAAW,EAAA,CAAA,EAAG,aAAa,CAC5C,CAAA,EAAA,QAAA,kBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,KAAO,EAAA,EAAE,QAAU,EAAA,QAAA,EAAU,QAAQ,MAAO,EAAA;AAAA,MAC5C,SAAU,EAAA,6BAAA;AAAA,MAET;AAAA;AAAA,GAEH,EAAA,CAAA;AAEF","file":"index.js","sourcesContent":["import { ControlOptions } from \"leaflet\";\nimport { type ReactNode } from \"react\";\n\nconst POSITION_CLASSES = {\n\tbottomleft: \"leaflet-bottom leaflet-left\",\n\tbottomright: \"leaflet-bottom leaflet-right\",\n\ttopleft: \"leaflet-top leaflet-left\",\n\ttopright: \"leaflet-top leaflet-right\",\n};\n\ninterface CustomControlOptions extends ControlOptions {\n\tchildren: ReactNode;\n}\n\nexport function CustomControl({\n\tchildren,\n\tposition,\n\t...options\n}: CustomControlOptions) {\n\tconst positionClass =\n\t\t(position && POSITION_CLASSES[position]) || POSITION_CLASSES.topright;\n\treturn (\n\t\t<div {...options} className={`${positionClass}`}>\n\t\t\t<div\n\t\t\t\tstyle={{ overflow: \"hidden\", border: \"none\" }}\n\t\t\t\tclassName=\"leaflet-control leaflet-bar\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"]}
|
package/dist/components/Map/components/MapControls/components/FullscreenControl/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapControls/components/FullscreenControl/index.tsx"],"names":["createControlComponent","control"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapControls/components/FullscreenControl/index.tsx"],"names":["createControlComponent","control"],"mappings":";;;;;;;AAMA,MAAM,oBAEFA,2BAAuB,CAAA,CAAC,UAAWC,eAAgB,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACxE,IAAO,yBAAQ,GAAA","file":"index.js","sourcesContent":["import { createControlComponent } from \"@react-leaflet/core\";\nimport { control, type ControlOptions } from \"leaflet\";\nimport \"leaflet.fullscreen\";\nimport \"leaflet.fullscreen/Control.FullScreen.css\";\nimport type { ForwardRefExoticComponent, RefAttributes } from \"react\";\n\nconst FullscreenControl: ForwardRefExoticComponent<\n\tControlOptions & RefAttributes<any>\n> = createControlComponent((props) => (control as any).fullscreen(props));\nexport default FullscreenControl;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx"],"names":["jsxs","jsx","min","max","LegendCardHeader","Divider","isEmpty","i18n","forwardRef"],"mappings":";;;;;;;;;;;;;;;;AAOO,SAAS,UAAW,CAAA;AAAA,EAC1B;AACD,CAEG,EAAA;AACF,EACC,uBAAAA,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAU,EAAA,mBAAA;AAAA,QACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,CAAO,KAAM;AAAA;AAAA,KACxC;AAAA,IACC,MAAA,CAAO,uBACNA,cAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,IAAI,CAAA,CAAA,EAAG,oBAEpDA,cAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,GAAG,CAAA,GAAA,EAAM,MAAO,CAAA,GAAG,CAAG,CAAA,EAAA;AAAA,GAEtE,EAAA,CAAA;AAEF;AAEA,SAAS,qBAAqB,MAI3B,EAAA;AACF,EAAI,IAAA,CAAC,MAAQ,EAAA,OAAO,EAAC;AAErB,EAAA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA;AAC9B,EAAM,MAAA,gBAAA,GAAmB,MAAM,OAAQ,CAAA,OAAO,IAC3C,OACA,GAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACpB,EAAA,MAAM,UAAU,gBAAiB,CAAA,MAAA;AACjC,EAAA,MAAM,aAAa,GAAM,GAAA,GAAA;AACzB,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,KAAM,CAAA,UAAA,GAAa,OAAO,CAAA;AAChD,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AACjC,IAAA,MAAMC,OAAM,CAAI,GAAA,QAAA;AAChB,IAAA,MAAMC,OAAMD,IAAM,GAAA,QAAA;AAElB,IAAA,MAAM,OAAO,CAAM,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,EAAA,EAAKA,IAAG,CAAK,CAAA,GAAA,MAAA;AAE9C,IAAA,OAAA,CAAQ,IAAK,CAAA;AAAA,MACZ,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAAA,MACzB,GAAAA,EAAAA,IAAAA;AAAA,MACA,GAAAC,EAAAA,IAAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA;AAGF,EAAO,OAAA,OAAA;AACR;AAEA,SAAS,iBACR,CAAA;AAAA,EACC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAMA,GACC,EAAA;AACD,EAAM,MAAA,EAAE,SAAY,GAAA,KAAA;AACpB,EAAA,MAAM,UACL,OAAS,EAAA,MAAA,EAAQ,KAAS,IAAA,oBAAA,CAAqB,SAAS,MAAM,CAAA;AAE/D,EACC,uBAAAH,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,QAAA,EAAU,KAAK,UAAY,EAAA,OAAA,EAAS,KAAK,CAAE,EAAA;AAAA,MACpD,SAAU,EAAA,aAAA;AAAA,MACV,GAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAACG,iCAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,WAAA;AAAA,YACA;AAAA;AAAA,SACD;AAAA,wBACAH,cAAA,CAACI,UAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,wBACtBJ,cAAA,CAAC,OAAE,KAAO,EAAA,EAAE,QAAQ,CAAE,EAAA,EAAI,QAAS,EAAA,OAAA,EAAA,WAAA,IAAe,EAAG,EAAA,CAAA;AAAA,QACpD,CAACK,eAAQ,OAAO,CAAA,mCAAM,GAAG,EAAA,EAAA,QAAA,EAAA,OAAA,EAAS,QAAQ,EAAG,EAAA,CAAA;AAAA,uCAC7C,KAAI,EAAA,EAAA,SAAA,EAAU,eACb,QAAS,EAAA,OAAA,EAAA,GAAA,CAAI,CAAC,MACd,qBAAAL,cAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEA;AAAA,WAAA;AAAA,UADK,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,SAGtB,CACF,EAAA,CAAA;AAAA,QACC,OAAS,EAAA,MAAA,oBACRD,eAAA,CAAA,KAAA,EAAA,EAAI,WAAU,WACb,EAAA,QAAA,EAAA;AAAA,UAAAO,qBAAA,CAAK,EAAE,QAAQ,CAAA;AAAA,UAAE,GAAA;AAAA,0BAClBN,cAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACA,SAAU,EAAA,YAAA;AAAA,cACV,MAAO,EAAA,QAAA;AAAA,cACP,cAAe,EAAA,aAAA;AAAA,cACf,MAAM,OAAS,EAAA,SAAA;AAAA,cAEd,mBAAS,MAAU,IAAA;AAAA;AAAA;AACrB,SACD,EAAA;AAAA;AAAA;AAAA,GAEF;AAEF;AAEO,IAAA,yBAAA,GAAQO,iBAAW,iBAAiB","file":"EarthEngineLegend.js","sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/components/EarthEngineLegend.tsx"],"names":["jsxs","jsx","min","max","LegendCardHeader","Divider","isEmpty","i18n","forwardRef"],"mappings":";;;;;;;;;;;;;;;;AAOO,SAAS,UAAW,CAAA;AAAA,EAC1B;AACD,CAEG,EAAA;AACF,EACC,uBAAAA,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,aACd,EAAA,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACA,SAAU,EAAA,mBAAA;AAAA,QACV,KAAO,EAAA,EAAE,eAAiB,EAAA,MAAA,CAAO,KAAM;AAAA;AAAA,KACxC;AAAA,IACC,MAAA,CAAO,uBACNA,cAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,IAAI,CAAA,CAAA,EAAG,oBAEpDA,cAAA,CAAA,KAAA,EAAA,EAAI,WAAU,mBAAqB,EAAA,QAAA,EAAA,CAAA,EAAG,OAAO,GAAG,CAAA,GAAA,EAAM,MAAO,CAAA,GAAG,CAAG,CAAA,EAAA;AAAA,GAEtE,EAAA,CAAA;AAEF;AAEA,SAAS,qBAAqB,MAI3B,EAAA;AACF,EAAI,IAAA,CAAC,MAAQ,EAAA,OAAO,EAAC;AAErB,EAAA,MAAM,EAAE,OAAA,EAAS,GAAK,EAAA,GAAA,EAAQ,GAAA,MAAA;AAC9B,EAAM,MAAA,gBAAA,GAAmB,MAAM,OAAQ,CAAA,OAAO,IAC3C,OACA,GAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACpB,EAAA,MAAM,UAAU,gBAAiB,CAAA,MAAA;AACjC,EAAA,MAAM,aAAa,GAAM,GAAA,GAAA;AACzB,EAAA,MAAM,QAAW,GAAA,IAAA,CAAK,KAAM,CAAA,UAAA,GAAa,OAAO,CAAA;AAChD,EAAA,MAAM,UAAU,EAAC;AACjB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,EAAS,CAAK,EAAA,EAAA;AACjC,IAAA,MAAMC,OAAM,CAAI,GAAA,QAAA;AAChB,IAAA,MAAMC,OAAMD,IAAM,GAAA,QAAA;AAElB,IAAA,MAAM,OAAO,CAAM,KAAA,OAAA,GAAU,CAAI,GAAA,CAAA,EAAA,EAAKA,IAAG,CAAK,CAAA,GAAA,MAAA;AAE9C,IAAA,OAAA,CAAQ,IAAK,CAAA;AAAA,MACZ,EAAA,EAAI,iBAAiB,CAAC,CAAA;AAAA,MACtB,KAAA,EAAO,iBAAiB,CAAC,CAAA;AAAA,MACzB,GAAAA,EAAAA,IAAAA;AAAA,MACA,GAAAC,EAAAA,IAAAA;AAAA,MACA;AAAA,KACA,CAAA;AAAA;AAGF,EAAO,OAAA,OAAA;AACR;AAEA,SAAS,iBACR,CAAA;AAAA,EACC,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA;AACD,CAAA,EAMA,GACC,EAAA;AACD,EAAM,MAAA,EAAE,SAAY,GAAA,KAAA;AACpB,EAAA,MAAM,UACL,OAAS,EAAA,MAAA,EAAQ,KAAS,IAAA,oBAAA,CAAqB,SAAS,MAAM,CAAA;AAE/D,EACC,uBAAAH,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACA,OAAO,EAAE,QAAA,EAAU,KAAK,UAAY,EAAA,OAAA,EAAS,KAAK,CAAE,EAAA;AAAA,MACpD,SAAU,EAAA,aAAA;AAAA,MACV,GAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAACG,iCAAA;AAAA,UAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,WAAA;AAAA,YACA;AAAA;AAAA,SACD;AAAA,wBACAH,cAAA,CAACI,UAAQ,EAAA,EAAA,MAAA,EAAQ,GAAK,EAAA,CAAA;AAAA,wBACtBJ,cAAA,CAAC,OAAE,KAAO,EAAA,EAAE,QAAQ,CAAE,EAAA,EAAI,QAAS,EAAA,OAAA,EAAA,WAAA,IAAe,EAAG,EAAA,CAAA;AAAA,QACpD,CAACK,eAAQ,OAAO,CAAA,mCAAM,GAAG,EAAA,EAAA,QAAA,EAAA,OAAA,EAAS,QAAQ,EAAG,EAAA,CAAA;AAAA,uCAC7C,KAAI,EAAA,EAAA,SAAA,EAAU,eACb,QAAS,EAAA,OAAA,EAAA,GAAA,CAAI,CAAC,MACd,qBAAAL,cAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YAEA;AAAA,WAAA;AAAA,UADK,CAAA,EAAG,QAAQ,KAAK,CAAA,YAAA;AAAA,SAGtB,CACF,EAAA,CAAA;AAAA,QACC,OAAS,EAAA,MAAA,oBACRD,eAAA,CAAA,KAAA,EAAA,EAAI,WAAU,WACb,EAAA,QAAA,EAAA;AAAA,UAAAO,qBAAA,CAAK,EAAE,QAAQ,CAAA;AAAA,UAAE,GAAA;AAAA,0BAClBN,cAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACA,SAAU,EAAA,YAAA;AAAA,cACV,MAAO,EAAA,QAAA;AAAA,cACP,cAAe,EAAA,aAAA;AAAA,cACf,MAAM,OAAS,EAAA,SAAA;AAAA,cAEd,mBAAS,MAAU,IAAA;AAAA;AAAA;AACrB,SACD,EAAA;AAAA;AAAA;AAAA,GAEF;AAEF;AAEO,IAAA,yBAAA,GAAQO,iBAAW,iBAAiB","file":"EarthEngineLegend.js","sourcesContent":["import { forwardRef, type LegacyRef } from \"react\";\nimport LegendCardHeader from \"../../LegendArea/components/LegendCardHeader/index.js\";\nimport { CustomGoogleEngineLayer } from \"../../../interfaces/index.js\";\nimport { Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { isEmpty } from \"lodash\";\n\nexport function LegendItem({\n\tlegend,\n}: {\n\tlegend: { min: number; max: number; color: string; name?: string };\n}) {\n\treturn (\n\t\t<div className=\"legend-item\">\n\t\t\t<div\n\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\tstyle={{ backgroundColor: legend.color }}\n\t\t\t/>\n\t\t\t{legend.name ? (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.name}`}</div>\n\t\t\t) : (\n\t\t\t\t<div className=\"legend-item-label\">{`${legend.min} - ${legend.max}`}</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction getLegendsFromParams(params?: {\n\tmin: number;\n\tmax: number;\n\tpalette: string | string[];\n}) {\n\tif (!params) return [];\n\n\tconst { palette, min, max } = params;\n\tconst sanitizedPalette = Array.isArray(palette)\n\t\t? palette\n\t\t: palette.split(\",\");\n\tconst classes = sanitizedPalette.length;\n\tconst difference = max - min;\n\tconst interval = Math.round(difference / classes);\n\tconst legends = [];\n\tfor (let i = 0; i < classes; i++) {\n\t\tconst min = i * interval;\n\t\tconst max = min + interval;\n\n\t\tconst name = i === classes - 1 ? `> ${min}` : undefined;\n\n\t\tlegends.push({\n\t\t\tid: sanitizedPalette[i],\n\t\t\tcolor: sanitizedPalette[i],\n\t\t\tmin,\n\t\t\tmax,\n\t\t\tname,\n\t\t});\n\t}\n\n\treturn legends;\n}\n\nfunction EarthEngineLegend(\n\t{\n\t\tlayer,\n\t\tcollapsible,\n\t\tonCollapse,\n\t\tname,\n\t}: {\n\t\tlayer: CustomGoogleEngineLayer;\n\t\tcollapsible?: boolean;\n\t\tonCollapse?: () => void;\n\t\tname: string;\n\t},\n\tref: LegacyRef<HTMLDivElement>,\n) {\n\tconst { options } = layer;\n\tconst legends =\n\t\toptions?.legend?.items ?? getLegendsFromParams(options?.params);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{ maxWidth: 200, alignItems: \"start\", gap: 8 }}\n\t\t\tclassName=\"legend-card\"\n\t\t\tref={ref}\n\t\t>\n\t\t\t<LegendCardHeader\n\t\t\t\ttitle={name}\n\t\t\t\tcollapsible={collapsible}\n\t\t\t\tonCollapse={onCollapse}\n\t\t\t/>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<p style={{ margin: 0 }}>{options?.description ?? \"\"}</p>\n\t\t\t{!isEmpty(legends) && <b>{options?.unit ?? \"\"}</b>}\n\t\t\t<div className=\"legend-list\">\n\t\t\t\t{legends?.map((legend: any) => (\n\t\t\t\t\t<LegendItem\n\t\t\t\t\t\tkey={`${legend?.color}-legend-list`}\n\t\t\t\t\t\tlegend={legend}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t{options?.source && (\n\t\t\t\t<div className=\"row gap-8\">\n\t\t\t\t\t{i18n.t(\"Source\")}:\n\t\t\t\t\t<a\n\t\t\t\t\t\tclassName=\"source-url\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\treferrerPolicy=\"no-referrer\"\n\t\t\t\t\t\thref={options?.sourceUrl}\n\t\t\t\t\t>\n\t\t\t\t\t\t{options?.source ?? \"\"}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default forwardRef(EarthEngineLegend);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":["find","jsxs","jsx","capitalize","head","useMemo","isEmpty","sortBy","Center","CircularLoader","Divider","i18n","useRef","GeoJSON","highlightFeature","highlightStyle","resetHighlight","defaultStyle","Tooltip","Popup","useGoogleEngineLayer","useQuery","useBoundaryData","LayersControl","LayerGroup","TileLayer"],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport React, { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/GoogleEngineLayer/index.tsx"],"names":["find","jsxs","jsx","capitalize","head","useMemo","isEmpty","sortBy","Center","CircularLoader","Divider","i18n","useRef","GeoJSON","highlightFeature","highlightStyle","resetHighlight","defaultStyle","Tooltip","Popup","useGoogleEngineLayer","useQuery","useBoundaryData","LayersControl","LayerGroup","TileLayer"],"mappings":"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","file":"index.js","sourcesContent":["import { capitalize, find, head, isEmpty, sortBy } from \"lodash\";\nimport { useMemo, useRef } from \"react\";\nimport {\n\tGeoJSON,\n\tLayerGroup,\n\tLayersControl,\n\tPopup,\n\tTileLayer,\n\tTooltip,\n} from \"react-leaflet\";\nimport { useBoundaryData } from \"../BoundaryLayer/hooks/useBoundaryData.js\";\nimport useGoogleEngineLayer from \"./hooks/index.js\";\nimport { MapOrgUnit } from \"../../../../interfaces/index.js\";\nimport { highlightFeature, resetHighlight } from \"../../../../utils/map.js\";\nimport { defaultStyle, highlightStyle } from \"../BoundaryLayer/index.js\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { Center, CircularLoader, Divider } from \"@dhis2/ui\";\nimport i18n from \"@dhis2/d2-i18n\";\nimport { CustomGoogleEngineLayer } from \"../../interfaces/index.js\";\n\nfunction formatValues(value: number): string {\n\treturn Intl.NumberFormat(\"en-GB\", { maximumFractionDigits: 2 }).format(\n\t\tvalue,\n\t);\n}\n\nfunction getUnit(unit?: string) {\n\tif (unit === \"percentage\") {\n\t\treturn \"%\";\n\t}\n}\n\nfunction Legend({\n\theader,\n\tlegends,\n\tvalue,\n\tunit,\n}: {\n\theader: number;\n\tlegends: { id: number | string; color: string; name: string }[];\n\tvalue: number;\n\tunit?: string;\n}) {\n\tconst legend = find(legends, [\"id\", header]);\n\n\treturn (\n\t\t<div className=\"row gap-8 space-between\">\n\t\t\t<div className=\"row gap-8\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"legend-item-color\"\n\t\t\t\t\tstyle={{ backgroundColor: legend?.color }}\n\t\t\t\t/>\n\t\t\t\t<div>{legend?.name}</div>\n\t\t\t</div>\n\t\t\t<span>\n\t\t\t\t{formatValues(value)}\n\t\t\t\t{getUnit(unit)}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nfunction AggregationView({ header, value }: { header: string; value: number }) {\n\treturn (\n\t\t<div className=\"row space-between\">\n\t\t\t<span>{capitalize(header.toString())}</span>\n\t\t\t<span>{formatValues(value)}</span>\n\t\t</div>\n\t);\n}\n\nfunction EarthEnginePopup({\n\tlayer,\n\torgUnit,\n\tloading,\n\terror,\n}: {\n\tlayer?: CustomGoogleEngineLayer;\n\torgUnit: MapOrgUnit;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst engine = layer?.engine;\n\tconst legends = layer?.engine?.options?.legend?.items;\n\tconst data = engine?.getAggregation(orgUnit)?.data;\n\tconst unit =\n\t\tlayer?.engine?.options?.unit ??\n\t\thead(layer?.engine?.options.aggregations);\n\n\tconst aggregations = useMemo(() => {\n\t\tif (!isEmpty(legends)) {\n\t\t\treturn sortBy(\n\t\t\t\tObject.keys(data ?? {}).map((key) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: parseInt(key),\n\t\t\t\t\t\tvalue: data[key],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t\t[\"value\"],\n\t\t\t).reverse();\n\t\t}\n\t\treturn data ?? {};\n\t}, [data]);\n\n\tif (loading) {\n\t\treturn (\n\t\t\t<div style={{ width: 200, height: 200 }}>\n\t\t\t\t<Center>\n\t\t\t\t\t<CircularLoader extrasmall />\n\t\t\t\t</Center>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tif (error) {\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t\t<Divider margin={\"0\"} />\n\t\t\t\t<div className=\"column gap-8\">\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t\t<div>{layer?.options?.unit}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t<p>{i18n.t(\"Could not get aggregate data\")}</p>\n\t\t\t\t\t\t<p>{error}</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div>\n\t\t\t<h3 style={{ margin: \"0\" }}>{orgUnit.name}</h3>\n\t\t\t<Divider margin={\"0\"} />\n\t\t\t<div className=\"column gap-8\">\n\t\t\t\t<div className=\"column\">\n\t\t\t\t\t<b>{layer?.options?.name}</b>\n\t\t\t\t\t<div>{layer?.options?.unit ?? unit}</div>\n\t\t\t\t</div>\n\t\t\t\t{data && (\n\t\t\t\t\t<div className=\"column\">\n\t\t\t\t\t\t{Array.isArray(aggregations)\n\t\t\t\t\t\t\t? aggregations?.map(({ id, value }) => (\n\t\t\t\t\t\t\t\t\t<Legend\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-legend-details-${id}`}\n\t\t\t\t\t\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\t\t\theader={id}\n\t\t\t\t\t\t\t\t\t\tunit={unit}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t: Object.keys(aggregations)?.map((key) => (\n\t\t\t\t\t\t\t\t\t<AggregationView\n\t\t\t\t\t\t\t\t\t\tkey={`${orgUnit.id}-aggregate-details-${key}`}\n\t\t\t\t\t\t\t\t\t\theader={key}\n\t\t\t\t\t\t\t\t\t\tvalue={aggregations[key]}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nfunction EarthEngineArea({\n\tarea,\n\tlayer,\n\tloading,\n\terror,\n}: {\n\tarea: MapOrgUnit;\n\tlayer?: CustomGoogleEngineLayer;\n\tloading: boolean;\n\terror?: string;\n}) {\n\tconst ref = useRef<any>();\n\n\treturn (\n\t\t<GeoJSON\n\t\t\tref={ref}\n\t\t\tdata={area.geoJSON}\n\t\t\tinteractive\n\t\t\teventHandlers={{\n\t\t\t\tmouseover: (e) => highlightFeature(e, highlightStyle),\n\t\t\t\tmouseout: (e) => resetHighlight(e, defaultStyle),\n\t\t\t}}\n\t\t\tkey={`${area.id}-polygon`}\n\t\t\tpathOptions={defaultStyle}\n\t\t>\n\t\t\t<Tooltip>{area.name}</Tooltip>\n\t\t\t<Popup minWidth={100}>\n\t\t\t\t<EarthEnginePopup\n\t\t\t\t\terror={error}\n\t\t\t\t\tlayer={layer}\n\t\t\t\t\torgUnit={area}\n\t\t\t\t\tloading={loading}\n\t\t\t\t/>\n\t\t\t</Popup>\n\t\t</GeoJSON>\n\t);\n}\n\nexport default function GoogleEngineLayer({ layerId }: { layerId: string }) {\n\tconst layer = useGoogleEngineLayer(layerId);\n\tconst { name, type, enabled, url, options, engine } = layer ?? {};\n\tconst { isLoading: loadingAggregateData, error } = useQuery(\n\t\t[engine],\n\t\tasync () => engine?.getAggregations(),\n\t\t{\n\t\t\tsuspense: false,\n\t\t},\n\t);\n\tconst orgUnits = useBoundaryData();\n\n\tif (!url) return null;\n\n\treturn (\n\t\t<LayersControl.Overlay\n\t\t\tchecked={enabled}\n\t\t\tname={name ?? capitalize(type)}\n\t\t>\n\t\t\t<LayerGroup>\n\t\t\t\t<TileLayer id={options?.id} url={url} />\n\t\t\t\t{orgUnits?.map((area: MapOrgUnit) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<EarthEngineArea\n\t\t\t\t\t\t\terror={\n\t\t\t\t\t\t\t\t(error as any)?.toString() as string | undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tloading={loadingAggregateData}\n\t\t\t\t\t\t\tkey={`${area.id}-polygon`}\n\t\t\t\t\t\t\tarea={area}\n\t\t\t\t\t\t\tlayer={layer}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</LayerGroup>\n\t\t</LayersControl.Overlay>\n\t);\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var ui = require('@dhis2/ui');
|
|
5
5
|
var lodash = require('lodash');
|
|
6
|
-
var
|
|
6
|
+
var react = require('react');
|
|
7
7
|
var CustomControl = require('../../../MapControls/components/CustomControl');
|
|
8
8
|
var index_js = require('../../interfaces/index.js');
|
|
9
9
|
var PointLegend = require('../PointLayer/components/PointLegend/index.js');
|
|
@@ -15,7 +15,6 @@ var map_js = require('../../../../hooks/map.js');
|
|
|
15
15
|
|
|
16
16
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
|
|
18
|
-
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
19
18
|
var PointLegend__default = /*#__PURE__*/_interopDefault(PointLegend);
|
|
20
19
|
var BubbleLegend__default = /*#__PURE__*/_interopDefault(BubbleLegend);
|
|
21
20
|
var ChoroplethLegend__default = /*#__PURE__*/_interopDefault(ChoroplethLegend);
|
|
@@ -73,10 +72,10 @@ function CollapsedLegendIcon({
|
|
|
73
72
|
}) {
|
|
74
73
|
const openDelay = 200;
|
|
75
74
|
const closeDelay = 200;
|
|
76
|
-
const [openTooltip, setOpenTooltip] =
|
|
77
|
-
const openTimerRef =
|
|
78
|
-
const closeTimerRef =
|
|
79
|
-
const ref =
|
|
75
|
+
const [openTooltip, setOpenTooltip] = react.useState(false);
|
|
76
|
+
const openTimerRef = react.useRef(null);
|
|
77
|
+
const closeTimerRef = react.useRef(null);
|
|
78
|
+
const ref = react.useRef(null);
|
|
80
79
|
const hideModifier = { name: "hide" };
|
|
81
80
|
const offsetModifier = {
|
|
82
81
|
name: "offset",
|
|
@@ -100,7 +99,7 @@ function CollapsedLegendIcon({
|
|
|
100
99
|
setOpenTooltip(false);
|
|
101
100
|
}, closeDelay);
|
|
102
101
|
};
|
|
103
|
-
|
|
102
|
+
react.useEffect(
|
|
104
103
|
() => () => {
|
|
105
104
|
clearTimeout(openTimerRef.current);
|
|
106
105
|
clearTimeout(closeTimerRef.current);
|
|
@@ -153,18 +152,18 @@ function Legend({
|
|
|
153
152
|
children,
|
|
154
153
|
collapsible
|
|
155
154
|
}) {
|
|
156
|
-
const [collapsed, setCollapsed] =
|
|
155
|
+
const [collapsed, setCollapsed] = react.useState(collapsible);
|
|
157
156
|
const inPrintMode = map_js.usePrintMedia();
|
|
158
157
|
const onCollapse = () => {
|
|
159
158
|
if (collapsible) {
|
|
160
159
|
setCollapsed((prevState) => !prevState);
|
|
161
160
|
}
|
|
162
161
|
};
|
|
163
|
-
const name = lodash.head(
|
|
162
|
+
const name = lodash.head(react.Children.toArray(children))?.props.name;
|
|
164
163
|
const shouldCollapse = collapsed && !inPrintMode;
|
|
165
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-100", children: shouldCollapse ? /* @__PURE__ */ jsxRuntime.jsx(CollapsedLegendIcon, { name, onCollapse }) :
|
|
164
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-100", children: shouldCollapse ? /* @__PURE__ */ jsxRuntime.jsx(CollapsedLegendIcon, { name, onCollapse }) : react.Children.map(
|
|
166
165
|
children,
|
|
167
|
-
(child) =>
|
|
166
|
+
(child) => react.cloneElement(child, { collapsible, onCollapse })
|
|
168
167
|
) });
|
|
169
168
|
}
|
|
170
169
|
function LegendArea({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":["jsx","PointLegend","SUPPORTED_EARTH_ENGINE_LAYERS","EarthEngineLegend","BubbleLegend","head","ChoroplethLegend","useState","useRef","useEffect","jsxs","IconLegend24","Portal","classes","Popper","colors","usePrintMedia","React","compact","CustomControl"],"mappings":"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","file":"index.js","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: React.ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(React.Children.toArray(children) as React.ReactElement[])\n\t\t?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tReact.Children.map(children, (child) =>\n\t\t\t\t\tReact.cloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 16,\n\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/components/Map/components/MapLayer/components/LegendArea/index.tsx"],"names":["jsx","PointLegend","SUPPORTED_EARTH_ENGINE_LAYERS","EarthEngineLegend","BubbleLegend","head","ChoroplethLegend","useState","useRef","useEffect","jsxs","IconLegend24","Portal","classes","Popper","colors","usePrintMedia","Children","cloneElement","compact","CustomControl"],"mappings":"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","file":"index.js","sourcesContent":["import { colors, IconLegend24, Popper, Portal } from \"@dhis2/ui\";\nimport { ControlPosition } from \"leaflet\";\nimport { compact, head } from \"lodash\";\nimport {\n\tChildren,\n\tcloneElement,\n\ttype ReactElement,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport { MapLegendConfig } from \"../../../MapArea/interfaces/index.js\";\nimport { CustomControl } from \"../../../MapControls/components/CustomControl\";\nimport {\n\tCustomBubbleLayer,\n\tCustomGoogleEngineLayer,\n\tCustomPointLayer,\n\tCustomThematicLayer,\n\tSUPPORTED_EARTH_ENGINE_LAYERS,\n} from \"../../interfaces/index.js\";\nimport PointLegend from \"../PointLayer/components/PointLegend/index.js\";\nimport BubbleLegend from \"../ThematicLayer/components/Bubble/components/BubbleLegend/index.js\";\nimport ChoroplethLegend from \"../ThematicLayer/components/Choropleth/components/ChoroplethLegend.js\";\nimport EarthEngineLegend from \"../GoogleEngineLayer/components/EarthEngineLegend.js\";\nimport classes from \"./LegendArea.module.css\";\nimport { usePrintMedia } from \"../../../../hooks/map.js\";\n\nconst TOOLTIP_OFFSET = 4;\n\nfunction getLegendComponent(\n\tlayer: CustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer,\n) {\n\tif (layer.type === \"point\") {\n\t\treturn <PointLegend name={layer.label} />;\n\t}\n\n\tif (SUPPORTED_EARTH_ENGINE_LAYERS.includes(layer.type)) {\n\t\treturn (\n\t\t\t<EarthEngineLegend\n\t\t\t\tname={layer.name ?? \"\"}\n\t\t\t\tlayer={layer as CustomGoogleEngineLayer}\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst { type, enabled, control, dataItem, name, data, legends } =\n\t\t(layer as CustomThematicLayer) ?? {};\n\n\tif (!enabled || !control) {\n\t\treturn null;\n\t}\n\tswitch (type) {\n\t\tcase \"bubble\":\n\t\t\treturn (\n\t\t\t\t<BubbleLegend\n\t\t\t\t\tradius={\n\t\t\t\t\t\t(layer as CustomBubbleLayer)?.radius ?? {\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 50,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase \"choropleth\":\n\t\t\treturn (\n\t\t\t\t<ChoroplethLegend\n\t\t\t\t\tlegends={legends ?? []}\n\t\t\t\t\tname={name ?? dataItem.displayName}\n\t\t\t\t\tdata={data}\n\t\t\t\t\tdataItem={head(data)?.dataItem ?? dataItem}\n\t\t\t\t/>\n\t\t\t);\n\t}\n}\n\nfunction CollapsedLegendIcon({\n\tonCollapse,\n\tname,\n}: {\n\tname: string;\n\tonCollapse: () => void;\n}) {\n\tconst openDelay = 200;\n\tconst closeDelay = 200;\n\tconst [openTooltip, setOpenTooltip] = useState(false);\n\tconst openTimerRef = useRef<any>(null);\n\tconst closeTimerRef = useRef<any>(null);\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst hideModifier = { name: \"hide\" };\n\tconst offsetModifier = {\n\t\tname: \"offset\",\n\t\toptions: {\n\t\t\toffset: [0, TOOLTIP_OFFSET],\n\t\t},\n\t};\n\n\tconst flipModifier = {\n\t\tname: \"flip\",\n\t\toptions: { altBoundary: true },\n\t};\n\n\tconst onMouseOver = () => {\n\t\tclearTimeout(closeTimerRef.current);\n\n\t\topenTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(true);\n\t\t}, openDelay);\n\t};\n\n\tconst onMouseOut = () => {\n\t\tclearTimeout(openTimerRef.current);\n\n\t\tcloseTimerRef.current = setTimeout(() => {\n\t\t\tsetOpenTooltip(false);\n\t\t}, closeDelay);\n\t};\n\n\tuseEffect(\n\t\t() => () => {\n\t\t\tclearTimeout(openTimerRef.current);\n\t\t\tclearTimeout(closeTimerRef.current);\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tonMouseOver={onMouseOver}\n\t\t\tonMouseOut={onMouseOut}\n\t\t\tonClick={onCollapse}\n\t\t\tstyle={{ width: 28, height: 28 }}\n\t\t\tclassName=\"legend-card collapsed\"\n\t\t>\n\t\t\t<IconLegend24 />\n\t\t\t{openTooltip && (\n\t\t\t\t<Portal\n\t\t\t\t\t/*\n\t\t\t // @ts-ignore */\n\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t>\n\t\t\t\t\t<Popper\n\t\t\t\t\t\tclassName={classes[\"map-tooltip\"]}\n\t\t\t\t\t\treference={ref}\n\t\t\t\t\t\t/*\n // @ts-ignore */\n\t\t\t\t\t\tmodifiers={[offsetModifier, flipModifier, hideModifier]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tbackgroundColor: `${colors.grey900}`,\n\t\t\t\t\t\t\t\tborderRadius: 3,\n\t\t\t\t\t\t\t\tcolor: `${colors.white}`,\n\t\t\t\t\t\t\t\tpadding: \"4px 6px\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdata-test={`content`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{name}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Popper>\n\t\t\t\t</Portal>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nfunction Legend({\n\tchildren,\n\tcollapsible,\n}: {\n\tchildren: ReactElement;\n\tcollapsible: boolean;\n}) {\n\tconst [collapsed, setCollapsed] = useState(collapsible);\n\tconst inPrintMode = usePrintMedia();\n\tconst onCollapse = () => {\n\t\tif (collapsible) {\n\t\t\tsetCollapsed((prevState) => !prevState);\n\t\t}\n\t};\n\n\tconst name = head(Children.toArray(children) as ReactElement[])?.props.name;\n\n\tconst shouldCollapse = collapsed && !inPrintMode;\n\n\treturn (\n\t\t<div className=\"w-100\">\n\t\t\t{shouldCollapse ? (\n\t\t\t\t<CollapsedLegendIcon name={name} onCollapse={onCollapse} />\n\t\t\t) : (\n\t\t\t\tChildren.map(children, (child) =>\n\t\t\t\t\tcloneElement(child, { collapsible, onCollapse }),\n\t\t\t\t)\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default function LegendArea({\n\tlayers,\n\tlegends: legendConfig,\n}: {\n\tlayers: Array<\n\t\tCustomThematicLayer | CustomPointLayer | CustomGoogleEngineLayer\n\t>;\n\tposition: ControlPosition;\n\tlegends?: MapLegendConfig;\n}) {\n\tconst legends: JSX.Element[] = compact(\n\t\tlayers.filter((layer) => layer.enabled).map(getLegendComponent),\n\t);\n\tconst { position, collapsible } = legendConfig ?? {};\n\n\treturn (\n\t\t<CustomControl position={position}>\n\t\t\t<div\n\t\t\t\tstyle={{\n\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\tflexDirection: \"column\",\n\t\t\t\t\tgap: 16,\n\t\t\t\t\talignItems: \"flex-end\",\n\t\t\t\t\tmaxWidth: 200,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{legends?.map((legend: any, index) => (\n\t\t\t\t\t<Legend\n\t\t\t\t\t\tcollapsible={collapsible ?? true}\n\t\t\t\t\t\tkey={`${index}-map-legend`}\n\t\t\t\t\t>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Legend>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</CustomControl>\n\t);\n}\n"]}
|