@undp/data-viz 2.0.0 → 2.0.1
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/BarGraph.cjs +1 -1
- package/dist/BarGraph.cjs.map +1 -1
- package/dist/BarGraph.js +957 -957
- package/dist/BarGraph.js.map +1 -1
- package/dist/BasicStatCard.cjs +1 -1
- package/dist/BasicStatCard.cjs.map +1 -1
- package/dist/BasicStatCard.js +45 -47
- package/dist/BasicStatCard.js.map +1 -1
- package/dist/BeeSwarmChart.cjs +1 -1
- package/dist/BeeSwarmChart.cjs.map +1 -1
- package/dist/BeeSwarmChart.js +76 -56
- package/dist/BeeSwarmChart.js.map +1 -1
- package/dist/BiVariateChoroplethMap.cjs +1 -1
- package/dist/BiVariateChoroplethMap.cjs.map +1 -1
- package/dist/BiVariateChoroplethMap.js +157 -157
- package/dist/BiVariateChoroplethMap.js.map +1 -1
- package/dist/ChoroplethMap.cjs +1 -1
- package/dist/ChoroplethMap.cjs.map +1 -1
- package/dist/ChoroplethMap.js +185 -185
- package/dist/ChoroplethMap.js.map +1 -1
- package/dist/CirclePackingGraph.cjs +1 -1
- package/dist/CirclePackingGraph.js +2 -4
- package/dist/CirclePackingGraph.js.map +1 -1
- package/dist/Data/barChart.json +70 -0
- package/dist/Data/basic.csv +20 -0
- package/dist/DifferenceLineChart.cjs +1 -1
- package/dist/DifferenceLineChart.cjs.map +1 -1
- package/dist/DifferenceLineChart.js +224 -223
- package/dist/DifferenceLineChart.js.map +1 -1
- package/dist/DotDensityMap.cjs +1 -1
- package/dist/DotDensityMap.cjs.map +1 -1
- package/dist/DotDensityMap.js +156 -156
- package/dist/DotDensityMap.js.map +1 -1
- package/dist/DualAxisLineChart.cjs +1 -1
- package/dist/DualAxisLineChart.cjs.map +1 -1
- package/dist/DualAxisLineChart.js +326 -325
- package/dist/DualAxisLineChart.js.map +1 -1
- package/dist/GeoHubCompareMaps.cjs +1 -1
- package/dist/GeoHubCompareMaps.cjs.map +1 -1
- package/dist/GeoHubCompareMaps.js +183 -183
- package/dist/GeoHubCompareMaps.js.map +1 -1
- package/dist/{GraphEl-DzRon4cb.js → GraphEl-BZne2JIx.js} +3 -3
- package/dist/{GraphEl-DzRon4cb.js.map → GraphEl-BZne2JIx.js.map} +1 -1
- package/dist/{GraphEl-BkyLYXG5.cjs → GraphEl-D5MUfp45.cjs} +2 -2
- package/dist/{GraphEl-BkyLYXG5.cjs.map → GraphEl-D5MUfp45.cjs.map} +1 -1
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.js +1 -1
- package/dist/Histogram.cjs +1 -1
- package/dist/Histogram.js +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs +1 -1
- package/dist/LineChartWithConfidenceInterval.cjs.map +1 -1
- package/dist/LineChartWithConfidenceInterval.js +133 -132
- package/dist/LineChartWithConfidenceInterval.js.map +1 -1
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.cjs.map +1 -1
- package/dist/MultiGraphDashboard.js +52 -50
- package/dist/MultiGraphDashboard.js.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.cjs.map +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js +11 -9
- package/dist/MultiGraphDashboardWideToLongFormat.js.map +1 -1
- package/dist/MultiLineAltChart.cjs +1 -1
- package/dist/MultiLineAltChart.cjs.map +1 -1
- package/dist/MultiLineAltChart.js +149 -148
- package/dist/MultiLineAltChart.js.map +1 -1
- package/dist/MultiLineChart.cjs +1 -1
- package/dist/MultiLineChart.cjs.map +1 -1
- package/dist/MultiLineChart.js +182 -181
- package/dist/MultiLineChart.js.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +14 -12
- package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
- package/dist/SimpleLineChart.cjs +1 -1
- package/dist/SimpleLineChart.cjs.map +1 -1
- package/dist/SimpleLineChart.js +123 -122
- package/dist/SimpleLineChart.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.cjs.map +1 -1
- package/dist/SingleGraphDashboard.js +83 -79
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.cjs +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.cjs.map +1 -1
- package/dist/SingleGraphDashboardGeoHubMaps.js +49 -45
- package/dist/SingleGraphDashboardGeoHubMaps.js.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
- package/dist/SingleGraphDashboardThreeDGraphs.js +56 -52
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
- package/dist/StatCardFromData.cjs +1 -1
- package/dist/StatCardFromData.cjs.map +1 -1
- package/dist/StatCardFromData.js +44 -46
- package/dist/StatCardFromData.js.map +1 -1
- package/dist/ThreeDGlobe.cjs +1 -1
- package/dist/ThreeDGlobe.cjs.map +1 -1
- package/dist/ThreeDGlobe.js +134 -134
- package/dist/ThreeDGlobe.js.map +1 -1
- package/dist/getNoOfTicks-C_1CFXv_.cjs +2 -0
- package/dist/getNoOfTicks-C_1CFXv_.cjs.map +1 -0
- package/dist/getNoOfTicks-CpmRjcRF.js +7 -0
- package/dist/getNoOfTicks-CpmRjcRF.js.map +1 -0
- package/dist/index-C6LorfZ-.cjs +2 -0
- package/dist/index-C6LorfZ-.cjs.map +1 -0
- package/dist/index-Ceppbd8C.js +342 -0
- package/dist/index-Ceppbd8C.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/index-DoY3Ga3W.cjs +0 -2
- package/dist/index-DoY3Ga3W.cjs.map +0 -1
- package/dist/index-leTnKT2q.js +0 -329
- package/dist/index-leTnKT2q.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleGraphDashboard.cjs","sources":["../src/Components/Dashboard/SingleGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport isEqual from 'fast-deep-equal';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport GraphEl from './GraphEl';\r\n\r\nimport {\r\n AdvancedDataSelectionDataType,\r\n AggregationSettingsDataType,\r\n DataFilterDataType,\r\n DataSelectionDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphConfigurationDataType,\r\n GraphSettingsDataType,\r\n GraphType,\r\n HighlightDataPointSettingsDataType,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { transformDataForGraph } from '@/Utils/transformData/transformDataForGraph';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDataForAggregation } from '@/Utils/transformData/transformDataForAggregation';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { graphList } from '@/Utils/getGraphList';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n graphSettings?: GraphSettingsDataType;\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n highlightDataPointSettings?: HighlightDataPointSettingsDataType;\r\n noOfFiltersPerRow?: number;\r\n graphType: GraphType;\r\n dataTransform?: {\r\n keyColumn: string;\r\n aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n };\r\n dataFilters?: DataFilterDataType[];\r\n graphDataConfiguration?: GraphConfigurationDataType[];\r\n dataSelectionOptions?: DataSelectionDataType[];\r\n advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n debugMode?: boolean;\r\n uiMode?: 'light' | 'normal';\r\n updateFilters?: (_d: string) => void;\r\n}\r\n\r\nconst addMinAndMax = (config: GraphConfigurationDataType[]) => {\r\n if (\r\n config.findIndex(d => d.chartConfigId === 'yMin') !== -1 &&\r\n config.findIndex(d => d.chartConfigId === 'yMax') !== -1\r\n )\r\n return config;\r\n const configTemp = [...config];\r\n if (config.findIndex(d => d.chartConfigId === 'yMin') === -1) {\r\n configTemp.push({\r\n chartConfigId: 'yMin',\r\n columnId: `${config[config.findIndex(d => d.chartConfigId === 'y')].columnId}Min`,\r\n });\r\n }\r\n if (config.findIndex(d => d.chartConfigId === 'yMax') === -1) {\r\n configTemp.push({\r\n chartConfigId: 'yMax',\r\n columnId: `${config[config.findIndex(d => d.chartConfigId === 'y')].columnId}Max`,\r\n });\r\n }\r\n return configTemp;\r\n};\r\n\r\nconst getGraphSettings = (\r\n dataSelectionOptions: DataSelectionDataType[],\r\n updatedConfig?: GraphConfigurationDataType[],\r\n) => {\r\n const updatedSettings =\r\n updatedConfig?.map(c => {\r\n const indx = dataSelectionOptions?.findIndex(opt => opt.chartConfigId === c.chartConfigId);\r\n if (indx === -1) return {};\r\n const allowedValIndx = dataSelectionOptions[indx]?.allowedColumnIds?.findIndex(\r\n col => col.value === c.columnId,\r\n );\r\n if (allowedValIndx === -1) return {};\r\n return dataSelectionOptions[indx].allowedColumnIds[allowedValIndx].graphSettings || {};\r\n }) || [];\r\n return Object.assign({}, ...updatedSettings);\r\n};\r\n\r\nexport function SingleGraphDashboard(props: Props) {\r\n const {\r\n graphSettings,\r\n dataSettings,\r\n filters,\r\n graphType,\r\n dataTransform,\r\n graphDataConfiguration,\r\n dataFilters,\r\n debugMode,\r\n dataSelectionOptions,\r\n advancedDataSelectionOptions,\r\n readableHeader,\r\n noOfFiltersPerRow = 4,\r\n updateFilters,\r\n uiMode = 'normal',\r\n highlightDataPointSettings,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n const [highlightedDataPointList, setHighlightedDataPointList] = useState<\r\n (string | number)[] | undefined\r\n >(undefined);\r\n const [highlightedDataPointOptions, setHighlightedDataPointOption] = useState<\r\n { label: string | number; value: string | number }[]\r\n >([]);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n const prevGraphDataConfigRef = useRef<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n if (dataSelectionOptions)\r\n // eslint-disable-next-line react-hooks/set-state-in-effect\r\n setAdvancedGraphSettings(getGraphSettings(dataSelectionOptions, graphDataConfiguration));\r\n }, [dataSelectionOptions, graphDataConfiguration]);\r\n\r\n const updateHighlightedDataPointOptions = useEffectEvent(() => {\r\n if (highlightDataPointSettings?.column && filteredData)\r\n setHighlightedDataPointOption(\r\n getUniqValue(filteredData, highlightDataPointSettings.column)\r\n .filter(v => !highlightDataPointSettings?.excludeValues?.includes(`${v}`))\r\n .map(d => ({ value: d, label: d })),\r\n );\r\n });\r\n\r\n useEffect(() => {\r\n updateHighlightedDataPointOptions();\r\n }, [highlightDataPointSettings]);\r\n\r\n useEffect(() => {\r\n if (!isEqual(prevGraphDataConfigRef.current, graphDataConfiguration)) {\r\n // eslint-disable-next-line react-hooks/set-state-in-effect\r\n setGraphConfig(graphDataConfiguration);\r\n prevGraphDataConfigRef.current = graphDataConfiguration;\r\n }\r\n }, [graphDataConfiguration]);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n\r\n const graphData = !data\r\n ? undefined\r\n : transformDataForGraph(\r\n dataTransform\r\n ? transformDataForAggregation(\r\n filterData(data, dataFilters || []),\r\n dataTransform.keyColumn,\r\n dataTransform.aggregationColumnsSetting,\r\n )\r\n : filterData(data, dataFilters || []),\r\n graphType,\r\n graphType === 'lineChartWithConfidenceInterval' && graphConfig\r\n ? addMinAndMax(graphConfig)\r\n : graphConfig,\r\n );\r\n return (\r\n <GraphContainer\r\n className={graphSettings?.classNames?.graphContainer}\r\n style={graphSettings?.styles?.graphContainer}\r\n id={graphSettings?.graphID}\r\n ref={graphParentDiv}\r\n aria-label={graphSettings?.ariaLabel}\r\n backgroundColor={graphSettings?.backgroundColor ?? false}\r\n theme={graphSettings?.theme || 'light'}\r\n language={graphSettings?.language || 'en'}\r\n width={graphSettings?.width}\r\n height={graphSettings?.height}\r\n padding={graphSettings?.padding}\r\n >\r\n {data ||\r\n graphList\r\n .filter(el => el.geoHubMapPresentation)\r\n .map(el => el.graphID)\r\n .indexOf(graphType) !== -1 ? (\r\n <>\r\n {advancedGraphSettings?.graphTitle ||\r\n advancedGraphSettings?.graphDescription ||\r\n graphSettings?.graphTitle ||\r\n graphSettings?.graphDescription ||\r\n graphSettings?.graphDownload ||\r\n graphSettings?.dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: advancedGraphSettings?.styles?.title || graphSettings?.styles?.title,\r\n description:\r\n advancedGraphSettings?.styles?.description || graphSettings?.styles?.description,\r\n }}\r\n classNames={{\r\n title: advancedGraphSettings?.classNames?.title || graphSettings?.classNames?.title,\r\n description:\r\n advancedGraphSettings?.classNames?.description ||\r\n graphSettings?.classNames?.description,\r\n }}\r\n graphTitle={advancedGraphSettings?.graphTitle || graphSettings?.graphTitle}\r\n graphDescription={\r\n advancedGraphSettings?.graphDescription || graphSettings?.graphDescription\r\n }\r\n width={advancedGraphSettings?.width || graphSettings?.width}\r\n graphDownload={graphSettings?.graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n graphSettings?.dataDownload && data ? (data.length > 0 ? data : null) : null\r\n }\r\n />\r\n ) : null}\r\n {filterSettings.length !== 0 ||\r\n (dataSelectionOptions || []).length !== 0 ||\r\n (advancedDataSelectionOptions || []).length !== 0 ||\r\n highlightDataPointSettings ? (\r\n <div className='flex flex-wrap items-start gap-x-4 gap-y-0 w-full'>\r\n {advancedDataSelectionOptions?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: d.ui !== 'radio' ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label || 'Graph by'}</Label>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.options.map(opt => ({\r\n ...opt,\r\n value: opt.label,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n d.defaultValue\r\n ? {\r\n ...d.defaultValue,\r\n value: d.defaultValue?.label,\r\n }\r\n : {\r\n ...d.options[0],\r\n value: d.options[0].label,\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setAdvancedGraphSettings(el?.graphSettings || {});\r\n setGraphConfig(el?.dataConfiguration);\r\n }}\r\n />\r\n ) : (\r\n <RadioGroup\r\n defaultValue={d.defaultValue?.label || d.options[0].label}\r\n variant={uiMode}\r\n onValueChange={el => {\r\n const selectedOption =\r\n d.options[d.options.findIndex(opt => opt.label === el)];\r\n setAdvancedGraphSettings(selectedOption.graphSettings || {});\r\n setGraphConfig(selectedOption.dataConfiguration);\r\n }}\r\n >\r\n {d.options.map((el, j) => (\r\n <RadioGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )}\r\n </div>\r\n ))}\r\n {dataSelectionOptions?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: d.ui !== 'radio' ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label || `Visualize ${d.chartConfigId} by`}</Label>\r\n {!checkIfMultiple(d.chartConfigId, graphConfig || []) ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n size='sm'\r\n isClearable={false}\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n graphDataConfiguration\r\n ? d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(\r\n j =>\r\n j.value ===\r\n (graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string),\r\n )\r\n ]\r\n : undefined\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n const newGraphConfig = {\r\n columnId: el?.value as string,\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setAdvancedGraphSettings(\r\n getGraphSettings(dataSelectionOptions, updatedConfig),\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={\r\n graphDataConfiguration\r\n ? d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(\r\n j =>\r\n j.value ===\r\n (graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string),\r\n )\r\n ].label\r\n : ''\r\n }\r\n onValueChange={el => {\r\n const selectedOption =\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(opt => opt.label === el)\r\n ];\r\n const newGraphConfig = {\r\n columnId: selectedOption.value,\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setAdvancedGraphSettings(\r\n getGraphSettings(dataSelectionOptions, updatedConfig),\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n >\r\n {d.allowedColumnIds.map((el, j) => (\r\n <RadioGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n size='sm'\r\n isMulti\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n graphDataConfiguration\r\n ? (\r\n graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string[]\r\n ).map(\r\n el =>\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(j => j.value === el)\r\n ],\r\n )\r\n : undefined\r\n }\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n const newGraphConfig = {\r\n columnId: (el || []).map(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) => item.value,\r\n ) as string[],\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n graphDataConfiguration\r\n ? (\r\n graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string[]\r\n )\r\n .map(\r\n el =>\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(j => j.value === el)\r\n ],\r\n )\r\n .map(el => el.value)\r\n : []\r\n }\r\n onValueChange={el => {\r\n const newGraphConfig = {\r\n columnId: el || [],\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n >\r\n {d.allowedColumnIds.map((el, j) => (\r\n <CheckboxGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n </div>\r\n ))}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n {highlightDataPointSettings ? (\r\n <div\r\n style={{\r\n width:\r\n highlightDataPointSettings.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n >\r\n <Label className='mb-2'>\r\n {highlightDataPointSettings.label || 'Highlight data'}\r\n </Label>\r\n <DropdownSelect\r\n options={highlightedDataPointOptions}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setHighlightedDataPointList(el?.map((d: any) => d.value));\r\n }}\r\n value={highlightedDataPointList?.map(d => ({\r\n label: d,\r\n value: d,\r\n }))}\r\n defaultValue={highlightDataPointSettings.defaultValues?.map(d => ({\r\n label: d,\r\n value: d,\r\n }))}\r\n />\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n <GraphEl\r\n graph={graphType}\r\n graphData={graphData}\r\n graphDataConfiguration={graphConfig}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n updateFilters={updateFilters}\r\n settings={{\r\n ...(graphSettings || {}),\r\n ...advancedGraphSettings,\r\n graphTitle: undefined,\r\n graphDescription: undefined,\r\n graphDownload: false,\r\n dataDownload: false,\r\n backgroundColor: undefined,\r\n padding: '0',\r\n theme: graphSettings?.theme,\r\n ...(highlightedDataPointList\r\n ? {\r\n highlightedDataPoints: highlightedDataPointList,\r\n highlightedIds: highlightedDataPointList?.map(d => `${d}`),\r\n highlightedLines: highlightedDataPointList?.map(d => d),\r\n }\r\n : {}),\r\n }}\r\n />\r\n </>\r\n ) : (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n )}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["addMinAndMax","config","findIndex","d","chartConfigId","configTemp","push","columnId","getGraphSettings","dataSelectionOptions","updatedConfig","updatedSettings","map","c","indx","opt","allowedValIndx","allowedColumnIds","col","value","graphSettings","Object","assign","SingleGraphDashboard","props","dataSettings","filters","graphType","dataTransform","graphDataConfiguration","dataFilters","debugMode","advancedDataSelectionOptions","readableHeader","noOfFiltersPerRow","updateFilters","uiMode","highlightDataPointSettings","filteredData","setFilteredData","useState","undefined","data","setData","graphConfig","setGraphConfig","advancedGraphSettings","setAdvancedGraphSettings","highlightedDataPointList","setHighlightedDataPointList","highlightedDataPointOptions","setHighlightedDataPointOption","graphParentDiv","useRef","prevGraphDataConfigRef","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","filteredDataEvent","length","result","item","every","flattenDeep","intersection","updateHighlightedDataPointOptions","isEqual","current","handleFilterChange","values","prev","f","graphData","transformDataForGraph","transformDataForAggregation","filterData","keyColumn","aggregationColumnsSetting","jsx","GraphContainer","classNames","graphContainer","styles","graphID","ariaLabel","backgroundColor","theme","language","height","padding","graphList","geoHubMapPresentation","indexOf","jsxs","Fragment","graphTitle","graphDescription","graphDownload","dataDownload","GraphHeader","title","description","i","flexGrow","flexShrink","ui","minWidth","Label","DropdownSelect","options","dataConfiguration","RadioGroup","selectedOption","j","RadioGroupItem","checkIfMultiple","createFilter","newGraphConfig","CheckboxGroup","CheckboxGroupItem","defaultValues","GraphEl","highlightedDataPoints","highlightedIds","highlightedLines","Spinner"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleGraphDashboard.cjs","sources":["../src/Components/Dashboard/SingleGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useRef, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport isEqual from 'fast-deep-equal';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport GraphEl from './GraphEl';\r\n\r\nimport {\r\n AdvancedDataSelectionDataType,\r\n AggregationSettingsDataType,\r\n DataFilterDataType,\r\n DataSelectionDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphConfigurationDataType,\r\n GraphSettingsDataType,\r\n GraphType,\r\n HighlightDataPointSettingsDataType,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { transformDataForGraph } from '@/Utils/transformData/transformDataForGraph';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { transformDataForAggregation } from '@/Utils/transformData/transformDataForAggregation';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { graphList } from '@/Utils/getGraphList';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n graphSettings?: GraphSettingsDataType;\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n highlightDataPointSettings?: HighlightDataPointSettingsDataType;\r\n noOfFiltersPerRow?: number;\r\n graphType: GraphType;\r\n dataTransform?: {\r\n keyColumn: string;\r\n aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n };\r\n dataFilters?: DataFilterDataType[];\r\n graphDataConfiguration?: GraphConfigurationDataType[];\r\n dataSelectionOptions?: DataSelectionDataType[];\r\n advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n debugMode?: boolean;\r\n uiMode?: 'light' | 'normal';\r\n updateFilters?: (_d: string) => void;\r\n}\r\n\r\nconst addMinAndMax = (config: GraphConfigurationDataType[]) => {\r\n if (\r\n config.findIndex(d => d.chartConfigId === 'yMin') !== -1 &&\r\n config.findIndex(d => d.chartConfigId === 'yMax') !== -1\r\n )\r\n return config;\r\n const configTemp = [...config];\r\n if (config.findIndex(d => d.chartConfigId === 'yMin') === -1) {\r\n configTemp.push({\r\n chartConfigId: 'yMin',\r\n columnId: `${config[config.findIndex(d => d.chartConfigId === 'y')].columnId}Min`,\r\n });\r\n }\r\n if (config.findIndex(d => d.chartConfigId === 'yMax') === -1) {\r\n configTemp.push({\r\n chartConfigId: 'yMax',\r\n columnId: `${config[config.findIndex(d => d.chartConfigId === 'y')].columnId}Max`,\r\n });\r\n }\r\n return configTemp;\r\n};\r\n\r\nconst getGraphSettings = (\r\n dataSelectionOptions: DataSelectionDataType[],\r\n updatedConfig?: GraphConfigurationDataType[],\r\n) => {\r\n const updatedSettings =\r\n updatedConfig?.map(c => {\r\n const indx = dataSelectionOptions?.findIndex(opt => opt.chartConfigId === c.chartConfigId);\r\n if (indx === -1) return {};\r\n const allowedValIndx = dataSelectionOptions[indx]?.allowedColumnIds?.findIndex(\r\n col => col.value === c.columnId,\r\n );\r\n if (allowedValIndx === -1) return {};\r\n return dataSelectionOptions[indx].allowedColumnIds[allowedValIndx].graphSettings || {};\r\n }) || [];\r\n return Object.assign({}, ...updatedSettings);\r\n};\r\n\r\nexport function SingleGraphDashboard(props: Props) {\r\n const {\r\n graphSettings,\r\n dataSettings,\r\n filters,\r\n graphType,\r\n dataTransform,\r\n graphDataConfiguration,\r\n dataFilters,\r\n debugMode,\r\n dataSelectionOptions,\r\n advancedDataSelectionOptions,\r\n readableHeader,\r\n noOfFiltersPerRow = 4,\r\n updateFilters,\r\n uiMode = 'normal',\r\n highlightDataPointSettings,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n const [highlightedDataPointList, setHighlightedDataPointList] = useState<\r\n (string | number)[] | undefined\r\n >(undefined);\r\n const [highlightedDataPointOptions, setHighlightedDataPointOption] = useState<\r\n { label: string | number; value: string | number }[]\r\n >([]);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n\r\n const prevGraphDataConfigRef = useRef<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n if (dataSelectionOptions)\r\n // eslint-disable-next-line react-hooks/set-state-in-effect\r\n setAdvancedGraphSettings(getGraphSettings(dataSelectionOptions, graphDataConfiguration));\r\n }, [dataSelectionOptions, graphDataConfiguration]);\r\n\r\n const updateHighlightedDataPointOptions = useEffectEvent(() => {\r\n if (highlightDataPointSettings?.column && filteredData)\r\n setHighlightedDataPointOption(\r\n getUniqValue(filteredData, highlightDataPointSettings.column)\r\n .filter(v => !highlightDataPointSettings?.excludeValues?.includes(`${v}`))\r\n .map(d => ({ value: d, label: d })),\r\n );\r\n });\r\n\r\n useEffect(() => {\r\n updateHighlightedDataPointOptions();\r\n }, [highlightDataPointSettings]);\r\n\r\n useEffect(() => {\r\n if (!isEqual(prevGraphDataConfigRef.current, graphDataConfiguration)) {\r\n // eslint-disable-next-line react-hooks/set-state-in-effect\r\n setGraphConfig(graphDataConfiguration);\r\n prevGraphDataConfigRef.current = graphDataConfiguration;\r\n }\r\n }, [graphDataConfiguration]);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n\r\n const graphData = !data\r\n ? undefined\r\n : transformDataForGraph(\r\n dataTransform\r\n ? transformDataForAggregation(\r\n filterData(data, dataFilters || []),\r\n dataTransform.keyColumn,\r\n dataTransform.aggregationColumnsSetting,\r\n )\r\n : filterData(data, dataFilters || []),\r\n graphType,\r\n graphType === 'lineChartWithConfidenceInterval' && graphConfig\r\n ? addMinAndMax(graphConfig)\r\n : graphConfig,\r\n );\r\n return (\r\n <GraphContainer\r\n className={graphSettings?.classNames?.graphContainer}\r\n style={graphSettings?.styles?.graphContainer}\r\n id={graphSettings?.graphID}\r\n ref={graphParentDiv}\r\n aria-label={graphSettings?.ariaLabel}\r\n backgroundColor={graphSettings?.backgroundColor ?? false}\r\n theme={graphSettings?.theme || 'light'}\r\n language={graphSettings?.language || 'en'}\r\n width={graphSettings?.width}\r\n height={graphSettings?.height}\r\n padding={graphSettings?.padding}\r\n minHeight={graphSettings?.minHeight}\r\n relativeHeight={graphSettings?.relativeHeight}\r\n >\r\n {data ||\r\n graphList\r\n .filter(el => el.geoHubMapPresentation)\r\n .map(el => el.graphID)\r\n .indexOf(graphType) !== -1 ? (\r\n <>\r\n {advancedGraphSettings?.graphTitle ||\r\n advancedGraphSettings?.graphDescription ||\r\n graphSettings?.graphTitle ||\r\n graphSettings?.graphDescription ||\r\n graphSettings?.graphDownload ||\r\n graphSettings?.dataDownload ? (\r\n <GraphHeader\r\n styles={{\r\n title: advancedGraphSettings?.styles?.title || graphSettings?.styles?.title,\r\n description:\r\n advancedGraphSettings?.styles?.description || graphSettings?.styles?.description,\r\n }}\r\n classNames={{\r\n title: advancedGraphSettings?.classNames?.title || graphSettings?.classNames?.title,\r\n description:\r\n advancedGraphSettings?.classNames?.description ||\r\n graphSettings?.classNames?.description,\r\n }}\r\n graphTitle={advancedGraphSettings?.graphTitle || graphSettings?.graphTitle}\r\n graphDescription={\r\n advancedGraphSettings?.graphDescription || graphSettings?.graphDescription\r\n }\r\n width={advancedGraphSettings?.width || graphSettings?.width}\r\n graphDownload={graphSettings?.graphDownload ? graphParentDiv : undefined}\r\n dataDownload={\r\n graphSettings?.dataDownload && data ? (data.length > 0 ? data : null) : null\r\n }\r\n />\r\n ) : null}\r\n {filterSettings.length !== 0 ||\r\n (dataSelectionOptions || []).length !== 0 ||\r\n (advancedDataSelectionOptions || []).length !== 0 ||\r\n highlightDataPointSettings ? (\r\n <div className='flex flex-wrap items-start gap-x-4 gap-y-0 w-full'>\r\n {advancedDataSelectionOptions?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: d.ui !== 'radio' ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label || 'Graph by'}</Label>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.options.map(opt => ({\r\n ...opt,\r\n value: opt.label,\r\n }))}\r\n size='sm'\r\n isClearable={false}\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n d.defaultValue\r\n ? {\r\n ...d.defaultValue,\r\n value: d.defaultValue?.label,\r\n }\r\n : {\r\n ...d.options[0],\r\n value: d.options[0].label,\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n setAdvancedGraphSettings(el?.graphSettings || {});\r\n setGraphConfig(el?.dataConfiguration);\r\n }}\r\n />\r\n ) : (\r\n <RadioGroup\r\n defaultValue={d.defaultValue?.label || d.options[0].label}\r\n variant={uiMode}\r\n onValueChange={el => {\r\n const selectedOption =\r\n d.options[d.options.findIndex(opt => opt.label === el)];\r\n setAdvancedGraphSettings(selectedOption.graphSettings || {});\r\n setGraphConfig(selectedOption.dataConfiguration);\r\n }}\r\n >\r\n {d.options.map((el, j) => (\r\n <RadioGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )}\r\n </div>\r\n ))}\r\n {dataSelectionOptions?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: d.ui !== 'radio' ? 0 : 1,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label || `Visualize ${d.chartConfigId} by`}</Label>\r\n {!checkIfMultiple(d.chartConfigId, graphConfig || []) ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n size='sm'\r\n isClearable={false}\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n graphDataConfiguration\r\n ? d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(\r\n j =>\r\n j.value ===\r\n (graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string),\r\n )\r\n ]\r\n : undefined\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n const newGraphConfig = {\r\n columnId: el?.value as string,\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setAdvancedGraphSettings(\r\n getGraphSettings(dataSelectionOptions, updatedConfig),\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={\r\n graphDataConfiguration\r\n ? d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(\r\n j =>\r\n j.value ===\r\n (graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string),\r\n )\r\n ].label\r\n : ''\r\n }\r\n onValueChange={el => {\r\n const selectedOption =\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(opt => opt.label === el)\r\n ];\r\n const newGraphConfig = {\r\n columnId: selectedOption.value,\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setAdvancedGraphSettings(\r\n getGraphSettings(dataSelectionOptions, updatedConfig),\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n >\r\n {d.allowedColumnIds.map((el, j) => (\r\n <RadioGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n size='sm'\r\n isMulti\r\n isSearchable\r\n variant={uiMode}\r\n controlShouldRenderValue\r\n defaultValue={\r\n graphDataConfiguration\r\n ? (\r\n graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string[]\r\n ).map(\r\n el =>\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(j => j.value === el)\r\n ],\r\n )\r\n : undefined\r\n }\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n const newGraphConfig = {\r\n columnId: (el || []).map(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (item: any) => item.value,\r\n ) as string[],\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n graphDataConfiguration\r\n ? (\r\n graphDataConfiguration[\r\n graphDataConfiguration.findIndex(\r\n el => el.chartConfigId === d.chartConfigId,\r\n )\r\n ].columnId as string[]\r\n )\r\n .map(\r\n el =>\r\n d.allowedColumnIds[\r\n d.allowedColumnIds.findIndex(j => j.value === el)\r\n ],\r\n )\r\n .map(el => el.value)\r\n : []\r\n }\r\n onValueChange={el => {\r\n const newGraphConfig = {\r\n columnId: el || [],\r\n chartConfigId: d.chartConfigId,\r\n };\r\n const updatedConfig = graphConfig?.map(item =>\r\n item.chartConfigId === newGraphConfig.chartConfigId\r\n ? newGraphConfig\r\n : item,\r\n );\r\n setGraphConfig(updatedConfig);\r\n }}\r\n >\r\n {d.allowedColumnIds.map((el, j) => (\r\n <CheckboxGroupItem label={el.label} value={el.label} key={j} />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n </div>\r\n ))}\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n {highlightDataPointSettings ? (\r\n <div\r\n style={{\r\n width:\r\n highlightDataPointSettings.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n minWidth: '240px',\r\n }}\r\n className='pb-4'\r\n >\r\n <Label className='mb-2'>\r\n {highlightDataPointSettings.label || 'Highlight data'}\r\n </Label>\r\n <DropdownSelect\r\n options={highlightedDataPointOptions}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n onChange={(el: any) => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setHighlightedDataPointList(el?.map((d: any) => d.value));\r\n }}\r\n value={highlightedDataPointList?.map(d => ({\r\n label: d,\r\n value: d,\r\n }))}\r\n defaultValue={highlightDataPointSettings.defaultValues?.map(d => ({\r\n label: d,\r\n value: d,\r\n }))}\r\n />\r\n </div>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n <GraphEl\r\n graph={graphType}\r\n graphData={graphData}\r\n graphDataConfiguration={graphConfig}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n updateFilters={updateFilters}\r\n settings={{\r\n ...(graphSettings || {}),\r\n ...advancedGraphSettings,\r\n graphTitle: undefined,\r\n graphDescription: undefined,\r\n graphDownload: false,\r\n dataDownload: false,\r\n backgroundColor: undefined,\r\n width: undefined,\r\n height: undefined,\r\n relativeHeight: undefined,\r\n minHeight: undefined,\r\n padding: '0',\r\n theme: graphSettings?.theme,\r\n ...(highlightedDataPointList\r\n ? {\r\n highlightedDataPoints: highlightedDataPointList,\r\n highlightedIds: highlightedDataPointList?.map(d => `${d}`),\r\n highlightedLines: highlightedDataPointList?.map(d => d),\r\n }\r\n : {}),\r\n }}\r\n />\r\n </>\r\n ) : (\r\n <div className='w-full flex justify-center p-4'>\r\n <Spinner />\r\n </div>\r\n )}\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["addMinAndMax","config","findIndex","d","chartConfigId","configTemp","push","columnId","getGraphSettings","dataSelectionOptions","updatedConfig","updatedSettings","map","c","indx","opt","allowedValIndx","allowedColumnIds","col","value","graphSettings","Object","assign","SingleGraphDashboard","props","dataSettings","filters","graphType","dataTransform","graphDataConfiguration","dataFilters","debugMode","advancedDataSelectionOptions","readableHeader","noOfFiltersPerRow","updateFilters","uiMode","highlightDataPointSettings","filteredData","setFilteredData","useState","undefined","data","setData","graphConfig","setGraphConfig","advancedGraphSettings","setAdvancedGraphSettings","highlightedDataPointList","setHighlightedDataPointList","highlightedDataPointOptions","setHighlightedDataPointOption","graphParentDiv","useRef","prevGraphDataConfigRef","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","filteredDataEvent","length","result","item","every","flattenDeep","intersection","updateHighlightedDataPointOptions","isEqual","current","handleFilterChange","values","prev","f","graphData","transformDataForGraph","transformDataForAggregation","filterData","keyColumn","aggregationColumnsSetting","jsx","GraphContainer","classNames","graphContainer","styles","graphID","ariaLabel","backgroundColor","theme","language","height","padding","minHeight","relativeHeight","graphList","geoHubMapPresentation","indexOf","jsxs","Fragment","graphTitle","graphDescription","graphDownload","dataDownload","GraphHeader","title","description","i","flexGrow","flexShrink","ui","minWidth","Label","DropdownSelect","options","dataConfiguration","RadioGroup","selectedOption","j","RadioGroupItem","checkIfMultiple","createFilter","newGraphConfig","CheckboxGroup","CheckboxGroupItem","defaultValues","GraphEl","highlightedDataPoints","highlightedIds","highlightedLines","Spinner"],"mappings":"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"}
|
|
@@ -5,53 +5,53 @@ import { f as F } from "./index-EArKRVKg.js";
|
|
|
5
5
|
import { i as da } from "./index-Bwrro8-q.js";
|
|
6
6
|
import { j as D, D as M } from "./DropdownSelect-BbdPQa2k.js";
|
|
7
7
|
import { b as A, y as J, h as B, c as ua, $ as K, P as Q } from "./checkIfMultiple-Y9iKaV_u.js";
|
|
8
|
-
import { w as
|
|
9
|
-
import { G as
|
|
10
|
-
import { G as fa } from "./GraphEl-
|
|
11
|
-
import { f as
|
|
12
|
-
import { a as
|
|
8
|
+
import { w as ha } from "./Spinner-D7rnnwnA.js";
|
|
9
|
+
import { G as ca } from "./GraphContainer-CRqzdKu2.js";
|
|
10
|
+
import { G as fa } from "./GraphEl-BZne2JIx.js";
|
|
11
|
+
import { f as ga, a as pa, b as ma, c as Ca, t as va } from "./fetchAndParseData-BpqkBPQL.js";
|
|
12
|
+
import { a as Ia, t as ba } from "./transformDataForAggregation-CE3bAlHU.js";
|
|
13
13
|
import { g as X } from "./getUniqValue-BKHCm3zE.js";
|
|
14
14
|
import { GraphHeader as xa } from "./GraphHeader.js";
|
|
15
15
|
import { f as Y } from "./filterData-DsAiFzKY.js";
|
|
16
16
|
import { g as wa } from "./getGraphList-BpEWn1Tk.js";
|
|
17
17
|
import { t as Z } from "./transformDataForSelect-D8AuvYdf.js";
|
|
18
18
|
const Da = (s) => {
|
|
19
|
-
if (s.findIndex((
|
|
19
|
+
if (s.findIndex((l) => l.chartConfigId === "yMin") !== -1 && s.findIndex((l) => l.chartConfigId === "yMax") !== -1) return s;
|
|
20
20
|
const i = [...s];
|
|
21
|
-
return s.findIndex((
|
|
21
|
+
return s.findIndex((l) => l.chartConfigId === "yMin") === -1 && i.push({
|
|
22
22
|
chartConfigId: "yMin",
|
|
23
|
-
columnId: `${s[s.findIndex((
|
|
24
|
-
}), s.findIndex((
|
|
23
|
+
columnId: `${s[s.findIndex((l) => l.chartConfigId === "y")].columnId}Min`
|
|
24
|
+
}), s.findIndex((l) => l.chartConfigId === "yMax") === -1 && i.push({
|
|
25
25
|
chartConfigId: "yMax",
|
|
26
|
-
columnId: `${s[s.findIndex((
|
|
26
|
+
columnId: `${s[s.findIndex((l) => l.chartConfigId === "y")].columnId}Max`
|
|
27
27
|
}), i;
|
|
28
|
-
},
|
|
29
|
-
const
|
|
28
|
+
}, H = (s, i) => {
|
|
29
|
+
const l = i?.map((V) => {
|
|
30
30
|
const C = s?.findIndex((o) => o.chartConfigId === V.chartConfigId);
|
|
31
31
|
if (C === -1) return {};
|
|
32
32
|
const x = s[C]?.allowedColumnIds?.findIndex((o) => o.value === V.columnId);
|
|
33
33
|
return x === -1 ? {} : s[C].allowedColumnIds[x].graphSettings || {};
|
|
34
34
|
}) || [];
|
|
35
|
-
return Object.assign({}, ...
|
|
35
|
+
return Object.assign({}, ...l);
|
|
36
36
|
};
|
|
37
37
|
function Ea(s) {
|
|
38
38
|
const {
|
|
39
39
|
graphSettings: i,
|
|
40
|
-
dataSettings:
|
|
40
|
+
dataSettings: l,
|
|
41
41
|
filters: V,
|
|
42
42
|
graphType: C,
|
|
43
43
|
dataTransform: x,
|
|
44
44
|
graphDataConfiguration: o,
|
|
45
|
-
dataFilters:
|
|
45
|
+
dataFilters: O,
|
|
46
46
|
debugMode: y,
|
|
47
|
-
dataSelectionOptions:
|
|
48
|
-
advancedDataSelectionOptions:
|
|
47
|
+
dataSelectionOptions: v,
|
|
48
|
+
advancedDataSelectionOptions: P,
|
|
49
49
|
readableHeader: _,
|
|
50
50
|
noOfFiltersPerRow: u = 4,
|
|
51
51
|
updateFilters: aa,
|
|
52
52
|
uiMode: f = "normal",
|
|
53
|
-
highlightDataPointSettings:
|
|
54
|
-
} = s, [
|
|
53
|
+
highlightDataPointSettings: p
|
|
54
|
+
} = s, [k, L] = b(void 0), [h, ea] = b(void 0), [m, I] = b(o), [g, S] = b({}), [j, ta] = b(void 0), [la, ia] = b([]), E = q(null), U = q(o), [T, z] = b([]), G = {
|
|
55
55
|
ignoreCase: !0,
|
|
56
56
|
ignoreAccents: !0,
|
|
57
57
|
trim: !0
|
|
@@ -63,7 +63,7 @@ function Ea(s) {
|
|
|
63
63
|
clearable: r.clearable,
|
|
64
64
|
defaultValue: Z(r.defaultValue),
|
|
65
65
|
value: Z(r.defaultValue),
|
|
66
|
-
availableValues: X(
|
|
66
|
+
availableValues: X(h, r.column).filter((e) => !r.excludeValues?.includes(`${e}`)).map((e) => ({
|
|
67
67
|
value: e,
|
|
68
68
|
label: e
|
|
69
69
|
})),
|
|
@@ -75,54 +75,54 @@ function Ea(s) {
|
|
|
75
75
|
w(() => {
|
|
76
76
|
(async () => {
|
|
77
77
|
try {
|
|
78
|
-
const r =
|
|
78
|
+
const r = l.dataURL ? typeof l.dataURL == "string" ? l.fileType === "json" ? await ga(l.dataURL, l.columnsToArray, l.dataTransformation, y) : l.fileType === "api" ? await pa(l.dataURL, l.apiHeaders, l.columnsToArray, l.dataTransformation, y) : await ma(l.dataURL, l.dataTransformation, l.columnsToArray, y, l.delimiter, !0) : await Ca(l.dataURL, l.idColumnTitle) : await va(l.data, l.columnsToArray);
|
|
79
79
|
ea(r);
|
|
80
80
|
} catch (r) {
|
|
81
81
|
console.error("Data fetching error:", r);
|
|
82
82
|
}
|
|
83
83
|
})(), W();
|
|
84
|
-
}, [
|
|
84
|
+
}, [l, y]), w(() => {
|
|
85
85
|
W();
|
|
86
86
|
}, [V]);
|
|
87
|
-
const
|
|
88
|
-
if (!
|
|
87
|
+
const na = R(() => {
|
|
88
|
+
if (!h || T.length === 0) L(h);
|
|
89
89
|
else {
|
|
90
|
-
const a =
|
|
91
|
-
|
|
90
|
+
const a = h.filter((r) => T.every((e) => e.value && F([e.value]).length > 0 ? sa(F([r[e.filter]]), F([e.value]).map((t) => t.value)).length > 0 : !0));
|
|
91
|
+
L(a);
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
94
|
w(() => {
|
|
95
|
-
|
|
96
|
-
}, [T,
|
|
97
|
-
|
|
98
|
-
}, [
|
|
95
|
+
na();
|
|
96
|
+
}, [T, h]), w(() => {
|
|
97
|
+
v && S(H(v, o));
|
|
98
|
+
}, [v, o]);
|
|
99
99
|
const ra = R(() => {
|
|
100
|
-
|
|
100
|
+
p?.column && k && ia(X(k, p.column).filter((a) => !p?.excludeValues?.includes(`${a}`)).map((a) => ({
|
|
101
101
|
value: a,
|
|
102
102
|
label: a
|
|
103
103
|
})));
|
|
104
104
|
});
|
|
105
105
|
w(() => {
|
|
106
106
|
ra();
|
|
107
|
-
}, [
|
|
108
|
-
da(U.current, o) || (
|
|
107
|
+
}, [p]), w(() => {
|
|
108
|
+
da(U.current, o) || (I(o), U.current = o);
|
|
109
109
|
}, [o]);
|
|
110
110
|
const $ = (a, r) => {
|
|
111
|
-
z((e) => e.map((
|
|
112
|
-
...
|
|
111
|
+
z((e) => e.map((t) => t.filter === a ? {
|
|
112
|
+
...t,
|
|
113
113
|
value: r
|
|
114
|
-
} :
|
|
115
|
-
}, oa =
|
|
116
|
-
return /* @__PURE__ */ n.jsx(
|
|
117
|
-
|
|
118
|
-
title:
|
|
119
|
-
description:
|
|
114
|
+
} : t));
|
|
115
|
+
}, oa = h ? Ia(x ? ba(Y(h, O || []), x.keyColumn, x.aggregationColumnsSetting) : Y(h, O || []), C, C === "lineChartWithConfidenceInterval" && m ? Da(m) : m) : void 0;
|
|
116
|
+
return /* @__PURE__ */ n.jsx(ca, { className: i?.classNames?.graphContainer, style: i?.styles?.graphContainer, id: i?.graphID, ref: E, "aria-label": i?.ariaLabel, backgroundColor: i?.backgroundColor ?? !1, theme: i?.theme || "light", language: i?.language || "en", width: i?.width, height: i?.height, padding: i?.padding, minHeight: i?.minHeight, relativeHeight: i?.relativeHeight, children: h || wa.filter((a) => a.geoHubMapPresentation).map((a) => a.graphID).indexOf(C) !== -1 ? /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
|
|
117
|
+
g?.graphTitle || g?.graphDescription || i?.graphTitle || i?.graphDescription || i?.graphDownload || i?.dataDownload ? /* @__PURE__ */ n.jsx(xa, { styles: {
|
|
118
|
+
title: g?.styles?.title || i?.styles?.title,
|
|
119
|
+
description: g?.styles?.description || i?.styles?.description
|
|
120
120
|
}, classNames: {
|
|
121
|
-
title:
|
|
122
|
-
description:
|
|
123
|
-
}, graphTitle:
|
|
124
|
-
T.length !== 0 || (
|
|
125
|
-
|
|
121
|
+
title: g?.classNames?.title || i?.classNames?.title,
|
|
122
|
+
description: g?.classNames?.description || i?.classNames?.description
|
|
123
|
+
}, graphTitle: g?.graphTitle || i?.graphTitle, graphDescription: g?.graphDescription || i?.graphDescription, width: g?.width || i?.width, graphDownload: i?.graphDownload ? E : void 0, dataDownload: i?.dataDownload && h && h.length > 0 ? h : null }) : null,
|
|
124
|
+
T.length !== 0 || (v || []).length !== 0 || (P || []).length !== 0 || p ? /* @__PURE__ */ n.jsxs("div", { className: "flex flex-wrap items-start gap-x-4 gap-y-0 w-full", children: [
|
|
125
|
+
P?.map((a, r) => /* @__PURE__ */ n.jsxs("div", { style: {
|
|
126
126
|
width: a.width || `calc(${100 / u}% - ${(u - 1) / u}rem)`,
|
|
127
127
|
flexGrow: 1,
|
|
128
128
|
flexShrink: a.ui !== "radio" ? 0 : 1,
|
|
@@ -149,15 +149,15 @@ function Ea(s) {
|
|
|
149
149
|
value: a.options[0].label
|
|
150
150
|
},
|
|
151
151
|
onChange: (e) => {
|
|
152
|
-
S(e?.graphSettings || {}),
|
|
152
|
+
S(e?.graphSettings || {}), I(e?.dataConfiguration);
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
155
|
) : /* @__PURE__ */ n.jsx(J, { defaultValue: a.defaultValue?.label || a.options[0].label, variant: f, onValueChange: (e) => {
|
|
156
|
-
const
|
|
157
|
-
S(
|
|
158
|
-
}, children: a.options.map((e,
|
|
156
|
+
const t = a.options[a.options.findIndex((c) => c.label === e)];
|
|
157
|
+
S(t.graphSettings || {}), I(t.dataConfiguration);
|
|
158
|
+
}, children: a.options.map((e, t) => /* @__PURE__ */ n.jsx(B, { label: e.label, value: e.label }, t)) })
|
|
159
159
|
] }, r)),
|
|
160
|
-
|
|
160
|
+
v?.map((a, r) => /* @__PURE__ */ n.jsxs("div", { style: {
|
|
161
161
|
width: a.width || `calc(${100 / u}% - ${(u - 1) / u}rem)`,
|
|
162
162
|
flexGrow: 1,
|
|
163
163
|
flexShrink: a.ui !== "radio" ? 0 : 1,
|
|
@@ -173,26 +173,26 @@ function Ea(s) {
|
|
|
173
173
|
isSearchable: !0,
|
|
174
174
|
variant: f,
|
|
175
175
|
controlShouldRenderValue: !0,
|
|
176
|
-
defaultValue: o ? o[o.findIndex((e) => e.chartConfigId === a.chartConfigId)].columnId.map((e) => a.allowedColumnIds[a.allowedColumnIds.findIndex((
|
|
176
|
+
defaultValue: o ? o[o.findIndex((e) => e.chartConfigId === a.chartConfigId)].columnId.map((e) => a.allowedColumnIds[a.allowedColumnIds.findIndex((t) => t.value === e)]) : void 0,
|
|
177
177
|
filterOption: M(G),
|
|
178
178
|
onChange: (e) => {
|
|
179
|
-
const
|
|
179
|
+
const t = {
|
|
180
180
|
columnId: (e || []).map(
|
|
181
181
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
182
182
|
(d) => d.value
|
|
183
183
|
),
|
|
184
184
|
chartConfigId: a.chartConfigId
|
|
185
|
-
},
|
|
186
|
-
|
|
185
|
+
}, c = m?.map((d) => d.chartConfigId === t.chartConfigId ? t : d);
|
|
186
|
+
I(c);
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
) : /* @__PURE__ */ n.jsx(K, { variant: f, defaultValue: o ? o[o.findIndex((e) => e.chartConfigId === a.chartConfigId)].columnId.map((e) => a.allowedColumnIds[a.allowedColumnIds.findIndex((
|
|
190
|
-
const
|
|
189
|
+
) : /* @__PURE__ */ n.jsx(K, { variant: f, defaultValue: o ? o[o.findIndex((e) => e.chartConfigId === a.chartConfigId)].columnId.map((e) => a.allowedColumnIds[a.allowedColumnIds.findIndex((t) => t.value === e)]).map((e) => e.value) : [], onValueChange: (e) => {
|
|
190
|
+
const t = {
|
|
191
191
|
columnId: e || [],
|
|
192
192
|
chartConfigId: a.chartConfigId
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
}, children: a.allowedColumnIds.map((e,
|
|
193
|
+
}, c = m?.map((d) => d.chartConfigId === t.chartConfigId ? t : d);
|
|
194
|
+
I(c);
|
|
195
|
+
}, children: a.allowedColumnIds.map((e, t) => /* @__PURE__ */ n.jsx(Q, { label: e.label, value: e.label }, t)) }) : a.ui !== "radio" ? /* @__PURE__ */ n.jsx(
|
|
196
196
|
D,
|
|
197
197
|
{
|
|
198
198
|
options: a.allowedColumnIds,
|
|
@@ -201,22 +201,22 @@ function Ea(s) {
|
|
|
201
201
|
isSearchable: !0,
|
|
202
202
|
variant: f,
|
|
203
203
|
controlShouldRenderValue: !0,
|
|
204
|
-
defaultValue: o ? a.allowedColumnIds[a.allowedColumnIds.findIndex((e) => e.value === o[o.findIndex((
|
|
204
|
+
defaultValue: o ? a.allowedColumnIds[a.allowedColumnIds.findIndex((e) => e.value === o[o.findIndex((t) => t.chartConfigId === a.chartConfigId)].columnId)] : void 0,
|
|
205
205
|
onChange: (e) => {
|
|
206
|
-
const
|
|
206
|
+
const t = {
|
|
207
207
|
columnId: e?.value,
|
|
208
208
|
chartConfigId: a.chartConfigId
|
|
209
|
-
},
|
|
210
|
-
S(
|
|
209
|
+
}, c = m?.map((d) => d.chartConfigId === t.chartConfigId ? t : d);
|
|
210
|
+
S(H(v, c)), I(c);
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
|
-
) : /* @__PURE__ */ n.jsx(J, { variant: f, defaultValue: o ? a.allowedColumnIds[a.allowedColumnIds.findIndex((e) => e.value === o[o.findIndex((
|
|
214
|
-
const
|
|
213
|
+
) : /* @__PURE__ */ n.jsx(J, { variant: f, defaultValue: o ? a.allowedColumnIds[a.allowedColumnIds.findIndex((e) => e.value === o[o.findIndex((t) => t.chartConfigId === a.chartConfigId)].columnId)].label : "", onValueChange: (e) => {
|
|
214
|
+
const c = {
|
|
215
215
|
columnId: a.allowedColumnIds[a.allowedColumnIds.findIndex((N) => N.label === e)].value,
|
|
216
216
|
chartConfigId: a.chartConfigId
|
|
217
|
-
}, d = m?.map((N) => N.chartConfigId ===
|
|
218
|
-
S(
|
|
219
|
-
}, children: a.allowedColumnIds.map((e,
|
|
217
|
+
}, d = m?.map((N) => N.chartConfigId === c.chartConfigId ? c : N);
|
|
218
|
+
S(H(v, d)), I(d);
|
|
219
|
+
}, children: a.allowedColumnIds.map((e, t) => /* @__PURE__ */ n.jsx(B, { label: e.label, value: e.label }, t)) })
|
|
220
220
|
] }, r)),
|
|
221
221
|
T?.map((a, r) => /* @__PURE__ */ n.jsxs("div", { style: {
|
|
222
222
|
width: a.width || `calc(${100 / u}% - ${(u - 1) / u}rem)`,
|
|
@@ -231,24 +231,24 @@ function Ea(s) {
|
|
|
231
231
|
a.ui !== "radio" ? /* @__PURE__ */ n.jsx(D, { options: a.availableValues, variant: f, size: "sm", isMulti: !0, isClearable: a.clearable === void 0 ? !0 : a.clearable, isSearchable: !0, controlShouldRenderValue: !0, filterOption: M(G), onChange: (e) => {
|
|
232
232
|
$(a.filter, e);
|
|
233
233
|
}, value: a.value, defaultValue: a.defaultValue }) : /* @__PURE__ */ n.jsx(K, { variant: f, defaultValue: a.defaultValue ? a.defaultValue.map((e) => `${e.value}`) : [], value: a.value ? a.value.map((e) => `${e.value}`) : void 0, onValueChange: (e) => {
|
|
234
|
-
$(a.filter, a.availableValues.filter((
|
|
235
|
-
}, children: a.availableValues.map((e,
|
|
234
|
+
$(a.filter, a.availableValues.filter((t) => e.indexOf(`${t.value}`) !== -1));
|
|
235
|
+
}, children: a.availableValues.map((e, t) => /* @__PURE__ */ n.jsx(Q, { label: `${e.label}`, value: `${e.value}` }, t)) }),
|
|
236
236
|
a.allowSelectAll ? /* @__PURE__ */ n.jsx("button", { type: "button", className: "bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400", onClick: () => {
|
|
237
237
|
$(a.filter, a.availableValues);
|
|
238
238
|
}, children: "Select all options" }) : null
|
|
239
239
|
] })
|
|
240
240
|
] }, r)),
|
|
241
|
-
|
|
242
|
-
width:
|
|
241
|
+
p ? /* @__PURE__ */ n.jsxs("div", { style: {
|
|
242
|
+
width: p.width || `calc(${100 / u}% - ${(u - 1) / u}rem)`,
|
|
243
243
|
flexGrow: 1,
|
|
244
244
|
flexShrink: 0,
|
|
245
245
|
minWidth: "240px"
|
|
246
246
|
}, className: "pb-4", children: [
|
|
247
|
-
/* @__PURE__ */ n.jsx(A, { className: "mb-2", children:
|
|
247
|
+
/* @__PURE__ */ n.jsx(A, { className: "mb-2", children: p.label || "Highlight data" }),
|
|
248
248
|
/* @__PURE__ */ n.jsx(
|
|
249
249
|
D,
|
|
250
250
|
{
|
|
251
|
-
options:
|
|
251
|
+
options: la,
|
|
252
252
|
variant: f,
|
|
253
253
|
size: "sm",
|
|
254
254
|
isMulti: !0,
|
|
@@ -257,13 +257,13 @@ function Ea(s) {
|
|
|
257
257
|
controlShouldRenderValue: !0,
|
|
258
258
|
filterOption: M(G),
|
|
259
259
|
onChange: (a) => {
|
|
260
|
-
|
|
260
|
+
ta(a?.map((r) => r.value));
|
|
261
261
|
},
|
|
262
262
|
value: j?.map((a) => ({
|
|
263
263
|
label: a,
|
|
264
264
|
value: a
|
|
265
265
|
})),
|
|
266
|
-
defaultValue:
|
|
266
|
+
defaultValue: p.defaultValues?.map((a) => ({
|
|
267
267
|
label: a,
|
|
268
268
|
value: a
|
|
269
269
|
}))
|
|
@@ -273,12 +273,16 @@ function Ea(s) {
|
|
|
273
273
|
] }) : null,
|
|
274
274
|
/* @__PURE__ */ n.jsx(fa, { graph: C, graphData: oa, graphDataConfiguration: m, debugMode: y, readableHeader: _ || [], updateFilters: aa, settings: {
|
|
275
275
|
...i || {},
|
|
276
|
-
...
|
|
276
|
+
...g,
|
|
277
277
|
graphTitle: void 0,
|
|
278
278
|
graphDescription: void 0,
|
|
279
279
|
graphDownload: !1,
|
|
280
280
|
dataDownload: !1,
|
|
281
281
|
backgroundColor: void 0,
|
|
282
|
+
width: void 0,
|
|
283
|
+
height: void 0,
|
|
284
|
+
relativeHeight: void 0,
|
|
285
|
+
minHeight: void 0,
|
|
282
286
|
padding: "0",
|
|
283
287
|
theme: i?.theme,
|
|
284
288
|
...j ? {
|
|
@@ -287,7 +291,7 @@ function Ea(s) {
|
|
|
287
291
|
highlightedLines: j?.map((a) => a)
|
|
288
292
|
} : {}
|
|
289
293
|
} })
|
|
290
|
-
] }) : /* @__PURE__ */ n.jsx("div", { className: "w-full flex justify-center p-4", children: /* @__PURE__ */ n.jsx(
|
|
294
|
+
] }) : /* @__PURE__ */ n.jsx("div", { className: "w-full flex justify-center p-4", children: /* @__PURE__ */ n.jsx(ha, {}) }) });
|
|
291
295
|
}
|
|
292
296
|
export {
|
|
293
297
|
Ea as SingleGraphDashboard
|