@undp/data-viz 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DataCards.cjs +21 -1
- package/dist/DataCards.cjs.map +1 -1
- package/dist/DataCards.js +622 -12
- package/dist/DataCards.js.map +1 -1
- package/dist/GraphEl-B6SoGRFW.cjs +2 -0
- package/dist/GraphEl-B6SoGRFW.cjs.map +1 -0
- package/dist/{checkIfMultiple-BB7PlCNh.js → GraphEl-Cw2tDUb3.js} +129 -1163
- package/dist/GraphEl-Cw2tDUb3.js.map +1 -0
- package/dist/GriddedGraphs.cjs +1 -1
- package/dist/GriddedGraphs.cjs.map +1 -1
- package/dist/GriddedGraphs.d.ts +2 -4
- package/dist/GriddedGraphs.js +9 -8
- package/dist/GriddedGraphs.js.map +1 -1
- package/dist/GriddedGraphsFromConfig.d.ts +2 -4
- package/dist/MultiGraphDashboard.cjs +1 -1
- package/dist/MultiGraphDashboard.cjs.map +1 -1
- package/dist/MultiGraphDashboard.d.ts +16 -12
- package/dist/MultiGraphDashboard.js +2 -2
- package/dist/MultiGraphDashboardFromConfig.d.ts +16 -12
- package/dist/MultiGraphDashboardWideToLongFormat.cjs +1 -1
- package/dist/MultiGraphDashboardWideToLongFormat.js +1 -1
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +2 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +566 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.js +353 -0
- package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs +2 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.cjs.map +1 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +570 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js +38 -0
- package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.js.map +1 -0
- package/dist/PerformanceIntensiveScrollStory.cjs +2 -0
- package/dist/PerformanceIntensiveScrollStory.cjs.map +1 -0
- package/dist/PerformanceIntensiveScrollStory.d.ts +493 -0
- package/dist/PerformanceIntensiveScrollStory.js +122 -0
- package/dist/PerformanceIntensiveScrollStory.js.map +1 -0
- package/dist/ScrollStory.cjs.map +1 -1
- package/dist/ScrollStory.d.ts +3 -5
- package/dist/ScrollStory.js.map +1 -1
- package/dist/SingleGraphDashboard.cjs +1 -1
- package/dist/SingleGraphDashboard.cjs.map +1 -1
- package/dist/SingleGraphDashboard.d.ts +2 -5
- package/dist/SingleGraphDashboard.js +194 -194
- package/dist/SingleGraphDashboard.js.map +1 -1
- package/dist/SingleGraphDashboardFromConfig.d.ts +2 -4
- package/dist/SingleGraphDashboardGeoHubMaps.cjs +2 -0
- package/dist/SingleGraphDashboardGeoHubMaps.cjs.map +1 -0
- package/dist/SingleGraphDashboardGeoHubMaps.d.ts +428 -0
- package/dist/SingleGraphDashboardGeoHubMaps.js +185 -0
- package/dist/SingleGraphDashboardGeoHubMaps.js.map +1 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs +2 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.cjs.map +1 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.d.ts +432 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js +25 -0
- package/dist/SingleGraphDashboardGeoHubMapsFromConfig.js.map +1 -0
- package/dist/SingleGraphDashboardThreeDGraphs.cjs +2 -0
- package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -0
- package/dist/SingleGraphDashboardThreeDGraphs.d.ts +540 -0
- package/dist/SingleGraphDashboardThreeDGraphs.js +610 -0
- package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs +2 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.cjs.map +1 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +543 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js +35 -0
- package/dist/SingleGraphDashboardThreeDGraphsFromConfig.js.map +1 -0
- package/dist/Types.d.ts +38 -11
- package/dist/checkIfMultiple-CYp3vADF.js +912 -0
- package/dist/checkIfMultiple-CYp3vADF.js.map +1 -0
- package/dist/checkIfMultiple-Do4kADNr.cjs +12 -0
- package/dist/checkIfMultiple-Do4kADNr.cjs.map +1 -0
- package/dist/getSchema.cjs.map +1 -1
- package/dist/getSchema.d.ts +7 -5
- package/dist/getSchema.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +330 -163
- package/dist/index.js +150 -136
- package/dist/index.js.map +1 -1
- package/dist/transformData.cjs +1 -1
- package/dist/transformData.d.ts +5 -5
- package/dist/transformData.js +2 -2
- package/dist/{transformDataForAggregation-DAQJWGNL.js → transformDataForAggregation-CdcwlnNe.js} +2 -2
- package/dist/transformDataForAggregation-CdcwlnNe.js.map +1 -0
- package/dist/{transformDataForAggregation-BUGJnson.cjs → transformDataForAggregation-Du-Hei-W.cjs} +2 -2
- package/dist/transformDataForAggregation-Du-Hei-W.cjs.map +1 -0
- package/dist/{transformDataForGraphFromFile-DdNiOWeC.js → transformDataForGraphFromFile-CA0rw80A.js} +2 -2
- package/dist/{transformDataForGraphFromFile-DdNiOWeC.js.map → transformDataForGraphFromFile-CA0rw80A.js.map} +1 -1
- package/dist/{transformDataForGraphFromFile-CrntpaMU.cjs → transformDataForGraphFromFile-D9G3ToQf.cjs} +2 -2
- package/dist/{transformDataForGraphFromFile-CrntpaMU.cjs.map → transformDataForGraphFromFile-D9G3ToQf.cjs.map} +1 -1
- package/dist/transformDataForSelect-D8AuvYdf.js +14 -0
- package/dist/transformDataForSelect-D8AuvYdf.js.map +1 -0
- package/dist/transformDataForSelect-YmStusCI.cjs +2 -0
- package/dist/transformDataForSelect-YmStusCI.cjs.map +1 -0
- package/dist/validateSchema.d.ts +2 -4
- package/package.json +36 -1
- package/dist/checkIfMultiple-BB7PlCNh.js.map +0 -1
- package/dist/checkIfMultiple-D5ysrI7G.cjs +0 -12
- package/dist/checkIfMultiple-D5ysrI7G.cjs.map +0 -1
- package/dist/index-D9h2WYDS.cjs +0 -22
- package/dist/index-D9h2WYDS.cjs.map +0 -1
- package/dist/index-OCoyy1wG.js +0 -635
- package/dist/index-OCoyy1wG.js.map +0 -1
- package/dist/transformDataForAggregation-BUGJnson.cjs.map +0 -1
- package/dist/transformDataForAggregation-DAQJWGNL.js.map +0 -1
package/dist/GriddedGraphs.d.ts
CHANGED
|
@@ -175,8 +175,6 @@ declare type FilterUiSettingsDataType = {
|
|
|
175
175
|
width?: string;
|
|
176
176
|
};
|
|
177
177
|
|
|
178
|
-
declare type GeoHubGraphType = 'geoHubCompareMap' | 'geoHubMap' | 'geoHubMapWithLayerSelection';
|
|
179
|
-
|
|
180
178
|
declare interface GraphConfigurationDataType {
|
|
181
179
|
columnId: string | string[];
|
|
182
180
|
chartConfigId: string;
|
|
@@ -425,9 +423,9 @@ declare interface GraphSettingsDataType {
|
|
|
425
423
|
polygonAltitude?: number;
|
|
426
424
|
}
|
|
427
425
|
|
|
428
|
-
declare type GraphType = GraphTypeForGriddedGraph
|
|
426
|
+
declare type GraphType = GraphTypeForGriddedGraph;
|
|
429
427
|
|
|
430
|
-
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart'
|
|
428
|
+
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart';
|
|
431
429
|
|
|
432
430
|
export declare function GriddedGraphs(props: Props): JSX.Element;
|
|
433
431
|
|
package/dist/GriddedGraphs.js
CHANGED
|
@@ -2,20 +2,21 @@ import { j as o } from "./index-CHPV5EwG-BPSP-7Jg.js";
|
|
|
2
2
|
import { useState as m, useRef as oa, useMemo as q, useEffect as T, useCallback as z } from "react";
|
|
3
3
|
import { i as ra } from "./index-C1rRk_50.js";
|
|
4
4
|
import { f as G } from "./index-UV9hjG_S.js";
|
|
5
|
-
import { f as $, a as B, v as J, c as na, w as ia, G as sa
|
|
6
|
-
import { y as
|
|
5
|
+
import { f as $, a as B, v as J, c as na, w as ia, G as sa } from "./checkIfMultiple-CYp3vADF.js";
|
|
6
|
+
import { y as da } from "./Spinner-C85UF28E.js";
|
|
7
7
|
import { Z as x, H as A } from "./DropdownSelect-CDC9lEqU.js";
|
|
8
|
+
import { G as ca } from "./GraphEl-Cw2tDUb3.js";
|
|
8
9
|
import { f as ua, a as ha, b as ga, c as fa, t as pa } from "./fetchAndParseData-Bcmr659B.js";
|
|
9
10
|
import { Colors as ma } from "./Colors.js";
|
|
10
|
-
import { a as Ca, t as wa } from "./transformDataForAggregation-
|
|
11
|
+
import { a as Ca, t as wa } from "./transformDataForAggregation-CdcwlnNe.js";
|
|
11
12
|
import { g as K } from "./getUniqValue-BtUENB2H.js";
|
|
12
13
|
import { GraphHeader as ba } from "./GraphHeader.js";
|
|
13
14
|
import { GraphFooter as xa } from "./GraphFooter.js";
|
|
14
15
|
import { f as Q } from "./filterData-B8ocT57s.js";
|
|
15
16
|
import { ColorLegend as va } from "./ColorLegend.js";
|
|
16
17
|
import { c as Ia } from "./checkIfNullOrUndefined-DmfiKkNw.js";
|
|
17
|
-
import { t as X } from "./
|
|
18
|
-
function
|
|
18
|
+
import { t as X } from "./transformDataForSelect-D8AuvYdf.js";
|
|
19
|
+
function Wa(Y) {
|
|
19
20
|
const {
|
|
20
21
|
graphSettings: e,
|
|
21
22
|
dataSettings: n,
|
|
@@ -406,7 +407,7 @@ function Ua(Y) {
|
|
|
406
407
|
minWidth: Ia(H) ? "280px" : `${H}px`
|
|
407
408
|
},
|
|
408
409
|
children: /* @__PURE__ */ o.jsx(
|
|
409
|
-
|
|
410
|
+
ca,
|
|
410
411
|
{
|
|
411
412
|
graph: R,
|
|
412
413
|
graphDataConfiguration: g,
|
|
@@ -452,7 +453,7 @@ function Ua(Y) {
|
|
|
452
453
|
))
|
|
453
454
|
}
|
|
454
455
|
)
|
|
455
|
-
] }) : /* @__PURE__ */ o.jsx("div", { className: "w-full flex justify-center p-4", children: /* @__PURE__ */ o.jsx(
|
|
456
|
+
] }) : /* @__PURE__ */ o.jsx("div", { className: "w-full flex justify-center p-4", children: /* @__PURE__ */ o.jsx(da, {}) }),
|
|
456
457
|
e?.sources || e?.footNote ? /* @__PURE__ */ o.jsx(
|
|
457
458
|
xa,
|
|
458
459
|
{
|
|
@@ -478,6 +479,6 @@ function Ua(Y) {
|
|
|
478
479
|
);
|
|
479
480
|
}
|
|
480
481
|
export {
|
|
481
|
-
|
|
482
|
+
Wa as GriddedGraphs
|
|
482
483
|
};
|
|
483
484
|
//# sourceMappingURL=GriddedGraphs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GriddedGraphs.js","sources":["../src/Components/Dashboard/GriddedGraphs.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\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} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\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 { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n noOfColumns?: number;\r\n columnGridBy: string;\r\n graphSettings?: GraphSettingsDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n graphType: Exclude<GraphType, 'geoHubMap' | 'geoHubCompareMap' | 'geoHubMapWithLayerSelection'>;\r\n dataTransform?: {\r\n keyColumn: string;\r\n aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n };\r\n showCommonColorScale?: boolean;\r\n dataFilters?: DataFilterDataType[];\r\n graphDataConfiguration?: GraphConfigurationDataType[];\r\n dataSelectionOptions?: DataSelectionDataType[];\r\n advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n minGraphHeight?: number;\r\n minGraphWidth?: number;\r\n debugMode?: boolean;\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n theme?: 'dark' | 'light';\r\n}\r\n\r\nexport function GriddedGraphs(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 noOfColumns,\r\n columnGridBy,\r\n dataFilters,\r\n showCommonColorScale,\r\n minGraphHeight,\r\n minGraphWidth,\r\n debugMode,\r\n dataSelectionOptions,\r\n advancedDataSelectionOptions,\r\n readableHeader,\r\n noOfFiltersPerRow = 4,\r\n uiMode = 'normal',\r\n theme = 'light',\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [gridOption, setGridOption] = useState<(string | number)[]>([]);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n const gridValue = getUniqValue(d, columnGridBy) as (string | number)[];\r\n setGridOption(gridValue);\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, debugMode, columnGridBy, filters]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n useEffect(() => {\r\n setGraphConfig(graphDataConfiguration);\r\n }, [graphDataConfiguration]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n }, []);\r\n return (\r\n <div\r\n className={`${theme || graphSettings?.theme || 'light'} flex ${\r\n graphSettings?.width ? 'w-fit grow-0' : 'w-full grow'\r\n }`}\r\n dir={graphSettings?.language === 'he' || graphSettings?.language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={`${\r\n !graphSettings?.backgroundColor\r\n ? 'bg-transparent '\r\n : graphSettings?.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${graphSettings?.language || 'en'}`}\r\n style={{\r\n ...(graphSettings?.backgroundColor && graphSettings?.backgroundColor !== true\r\n ? { backgroundColor: graphSettings?.backgroundColor }\r\n : {}),\r\n }}\r\n id={graphSettings?.graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n graphSettings?.ariaLabel ||\r\n `${\r\n graphSettings?.graphTitle ? `The graph shows ${graphSettings?.graphTitle}. ` : ''\r\n }This is a gridded chart.${\r\n graphSettings?.graphDescription ? ` ${graphSettings?.graphDescription}` : ''\r\n }`\r\n }\r\n >\r\n <div\r\n style={{\r\n padding: graphSettings?.backgroundColor\r\n ? graphSettings?.padding || '1rem'\r\n : graphSettings?.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\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 ||\r\n graphSettings?.styles?.description,\r\n }}\r\n classNames={{\r\n title:\r\n 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.current : undefined}\r\n dataDownload={\r\n graphSettings?.dataDownload && data ? (data.length > 0 ? data : null) : null\r\n }\r\n />\r\n ) : null}\r\n {data && gridOption.length > 0 ? (\r\n <>\r\n {filterSettings.length !== 0 ||\r\n (dataSelectionOptions || []).length !== 0 ||\r\n (advancedDataSelectionOptions || []).length !== 0 ? (\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n }}\r\n >\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 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 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 key={i}\r\n >\r\n <Label className='mb-2'>\r\n {d.label || `Visualize ${d.chartConfigId} by`}\r\n </Label>\r\n {!checkIfMultiple(d.chartConfigId, graphConfig || []) ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n isClearable={false}\r\n isSearchable\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 ]\r\n : undefined\r\n }\r\n controlShouldRenderValue\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(el?.graphSettings || {});\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(selectedOption.graphSettings || {});\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 isMulti\r\n variant={uiMode}\r\n isSearchable\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 isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\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 flexWrap: 'wrap',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n variant={uiMode}\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n }\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 defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n variant={uiMode}\r\n options={d.availableValues}\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 defaultValue={d.defaultValue}\r\n isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n }\r\n />\r\n {d.allowSelectAll ? (\r\n <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 type='button'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {showCommonColorScale !== false && graphSettings?.showColorScale !== false ? (\r\n <ColorLegend\r\n width={graphSettings?.width}\r\n colorLegendTitle={graphSettings?.colorLegendTitle}\r\n colors={\r\n (graphSettings?.colors as string[] | undefined) ||\r\n (graphSettings?.lineColors as string[] | undefined) ||\r\n Colors[(graphSettings?.theme as 'light' | 'dark' | undefined) || 'light']\r\n .categoricalColors.colors\r\n }\r\n colorDomain={graphSettings?.colorDomain || graphSettings?.labels || []}\r\n showNAColor={\r\n graphSettings?.showNAColor === undefined ||\r\n graphSettings?.showNAColor === null\r\n ? true\r\n : graphSettings?.showNAColor\r\n }\r\n />\r\n ) : null}\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '1rem',\r\n flexDirection:\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n ? 'row-reverse'\r\n : 'row',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {gridOption.map((el, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n width: `calc(${\r\n 100 /\r\n (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n }% - ${\r\n ((noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number)) -\r\n 1) /\r\n (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n }rem)`,\r\n minWidth: checkIfNullOrUndefined(minGraphWidth)\r\n ? '280px'\r\n : `${minGraphWidth}px`,\r\n }}\r\n >\r\n <GraphEl\r\n graph={graphType}\r\n graphDataConfiguration={graphConfig}\r\n graphData={\r\n transformDataForGraph(\r\n dataTransform\r\n ? transformDataForAggregation(\r\n filterData(data, dataFilters || []).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d: any) => d[columnGridBy] === el,\r\n ),\r\n dataTransform.keyColumn,\r\n dataTransform.aggregationColumnsSetting,\r\n )\r\n : filterData(data, dataFilters || []).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d: any) => d[columnGridBy] === el,\r\n ),\r\n graphType,\r\n graphConfig,\r\n ) || []\r\n }\r\n debugMode={debugMode}\r\n settings={{\r\n ...(graphSettings || {}),\r\n ...advancedGraphSettings,\r\n theme: graphSettings?.theme || theme,\r\n width: undefined,\r\n height: undefined,\r\n relativeHeight: graphSettings?.relativeHeight || 0.67,\r\n minHeight: minGraphHeight,\r\n graphTitle: `${el}`,\r\n graphDescription: undefined,\r\n graphDownload: false,\r\n dataDownload: false,\r\n backgroundColor: undefined,\r\n padding: '0',\r\n footNote: undefined,\r\n sources: undefined,\r\n showColorScale:\r\n graphSettings?.showColorScale === false\r\n ? false\r\n : showCommonColorScale === false,\r\n }}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\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 {graphSettings?.sources || graphSettings?.footNote ? (\r\n <GraphFooter\r\n styles={{\r\n footnote: graphSettings?.styles?.footnote,\r\n source: graphSettings?.styles?.source,\r\n }}\r\n classNames={{\r\n footnote: graphSettings?.classNames?.footnote,\r\n source: graphSettings?.classNames?.source,\r\n }}\r\n sources={graphSettings?.sources}\r\n footNote={graphSettings?.footNote}\r\n width={graphSettings?.width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["GriddedGraphs","props","graphSettings","dataSettings","filters","graphType","dataTransform","graphDataConfiguration","noOfColumns","columnGridBy","dataFilters","showCommonColorScale","minGraphHeight","minGraphWidth","debugMode","dataSelectionOptions","advancedDataSelectionOptions","readableHeader","noOfFiltersPerRow","uiMode","theme","data","setData","useState","dataFromFile","setDataFromFile","gridOption","setGridOption","graphParentDiv","useRef","graphConfig","setGraphConfig","filterSettings","setFilterSettings","advancedGraphSettings","setAdvancedGraphSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","gridValue","getUniqValue","newFilterSettings","transformDefaultValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","Fragment","d","i","Label","DropdownSelect","opt","RadioGroup","selectedOption","j","RadioGroupItem","checkIfMultiple","createFilter","newGraphConfig","updatedConfig","CheckboxGroup","CheckboxGroupItem","ColorLegend","Colors","checkIfNullOrUndefined","GraphEl","transformDataForGraph","transformDataForAggregation","filterData","Spinner","GraphFooter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GriddedGraphs.js","sources":["../src/Components/Dashboard/GriddedGraphs.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { Spinner } from '@undp/design-system-react/Spinner';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\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} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { Colors } from '@/Components/ColorPalette';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\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 { GraphFooter } from '@/Components/Elements/GraphFooter';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { ColorLegend } from '@/Components/Elements/ColorLegend';\r\nimport { checkIfNullOrUndefined } from '@/Utils/checkIfNullOrUndefined';\r\nimport { checkIfMultiple } from '@/Utils/checkIfMultiple';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n noOfColumns?: number;\r\n columnGridBy: string;\r\n graphSettings?: GraphSettingsDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n graphType: Exclude<GraphType, 'geoHubMap' | 'geoHubCompareMap' | 'geoHubMapWithLayerSelection'>;\r\n dataTransform?: {\r\n keyColumn: string;\r\n aggregationColumnsSetting?: AggregationSettingsDataType[];\r\n };\r\n showCommonColorScale?: boolean;\r\n dataFilters?: DataFilterDataType[];\r\n graphDataConfiguration?: GraphConfigurationDataType[];\r\n dataSelectionOptions?: DataSelectionDataType[];\r\n advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];\r\n minGraphHeight?: number;\r\n minGraphWidth?: number;\r\n debugMode?: boolean;\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n theme?: 'dark' | 'light';\r\n}\r\n\r\nexport function GriddedGraphs(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 noOfColumns,\r\n columnGridBy,\r\n dataFilters,\r\n showCommonColorScale,\r\n minGraphHeight,\r\n minGraphWidth,\r\n debugMode,\r\n dataSelectionOptions,\r\n advancedDataSelectionOptions,\r\n readableHeader,\r\n noOfFiltersPerRow = 4,\r\n uiMode = 'normal',\r\n theme = 'light',\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [gridOption, setGridOption] = useState<(string | number)[]>([]);\r\n const graphParentDiv = useRef<HTMLDivElement>(null);\r\n const [graphConfig, setGraphConfig] = useState<GraphConfigurationDataType[] | undefined>(\r\n graphDataConfiguration,\r\n );\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n const [advancedGraphSettings, setAdvancedGraphSettings] = useState<GraphSettingsDataType>({});\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n const gridValue = getUniqValue(d, columnGridBy) as (string | number)[];\r\n setGridOption(gridValue);\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, debugMode, columnGridBy, filters]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n useEffect(() => {\r\n setGraphConfig(graphDataConfiguration);\r\n }, [graphDataConfiguration]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n }, []);\r\n return (\r\n <div\r\n className={`${theme || graphSettings?.theme || 'light'} flex ${\r\n graphSettings?.width ? 'w-fit grow-0' : 'w-full grow'\r\n }`}\r\n dir={graphSettings?.language === 'he' || graphSettings?.language === 'ar' ? 'rtl' : undefined}\r\n >\r\n <div\r\n className={`${\r\n !graphSettings?.backgroundColor\r\n ? 'bg-transparent '\r\n : graphSettings?.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto flex flex-col grow h-inherit ${graphSettings?.language || 'en'}`}\r\n style={{\r\n ...(graphSettings?.backgroundColor && graphSettings?.backgroundColor !== true\r\n ? { backgroundColor: graphSettings?.backgroundColor }\r\n : {}),\r\n }}\r\n id={graphSettings?.graphID}\r\n ref={graphParentDiv}\r\n aria-label={\r\n graphSettings?.ariaLabel ||\r\n `${\r\n graphSettings?.graphTitle ? `The graph shows ${graphSettings?.graphTitle}. ` : ''\r\n }This is a gridded chart.${\r\n graphSettings?.graphDescription ? ` ${graphSettings?.graphDescription}` : ''\r\n }`\r\n }\r\n >\r\n <div\r\n style={{\r\n padding: graphSettings?.backgroundColor\r\n ? graphSettings?.padding || '1rem'\r\n : graphSettings?.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\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 ||\r\n graphSettings?.styles?.description,\r\n }}\r\n classNames={{\r\n title:\r\n 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.current : undefined}\r\n dataDownload={\r\n graphSettings?.dataDownload && data ? (data.length > 0 ? data : null) : null\r\n }\r\n />\r\n ) : null}\r\n {data && gridOption.length > 0 ? (\r\n <>\r\n {filterSettings.length !== 0 ||\r\n (dataSelectionOptions || []).length !== 0 ||\r\n (advancedDataSelectionOptions || []).length !== 0 ? (\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n }}\r\n >\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 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 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 key={i}\r\n >\r\n <Label className='mb-2'>\r\n {d.label || `Visualize ${d.chartConfigId} by`}\r\n </Label>\r\n {!checkIfMultiple(d.chartConfigId, graphConfig || []) ? (\r\n d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.allowedColumnIds}\r\n isClearable={false}\r\n isSearchable\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 ]\r\n : undefined\r\n }\r\n controlShouldRenderValue\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(el?.graphSettings || {});\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(selectedOption.graphSettings || {});\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 isMulti\r\n variant={uiMode}\r\n isSearchable\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 isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\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 flexWrap: 'wrap',\r\n }}\r\n key={i}\r\n >\r\n <Label className='mb-2'>{d.label}</Label>\r\n {d.singleSelect ? (\r\n <DropdownSelect\r\n variant={uiMode}\r\n options={d.availableValues}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n }\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 defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n variant={uiMode}\r\n options={d.availableValues}\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 defaultValue={d.defaultValue}\r\n isRtl={\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n }\r\n />\r\n {d.allowSelectAll ? (\r\n <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 type='button'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n ) : null}\r\n {showCommonColorScale !== false && graphSettings?.showColorScale !== false ? (\r\n <ColorLegend\r\n width={graphSettings?.width}\r\n colorLegendTitle={graphSettings?.colorLegendTitle}\r\n colors={\r\n (graphSettings?.colors as string[] | undefined) ||\r\n (graphSettings?.lineColors as string[] | undefined) ||\r\n Colors[(graphSettings?.theme as 'light' | 'dark' | undefined) || 'light']\r\n .categoricalColors.colors\r\n }\r\n colorDomain={graphSettings?.colorDomain || graphSettings?.labels || []}\r\n showNAColor={\r\n graphSettings?.showNAColor === undefined ||\r\n graphSettings?.showNAColor === null\r\n ? true\r\n : graphSettings?.showNAColor\r\n }\r\n />\r\n ) : null}\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n gap: '1rem',\r\n flexDirection:\r\n graphSettings?.language === 'ar' || graphSettings?.language === 'he'\r\n ? 'row-reverse'\r\n : 'row',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n {gridOption.map((el, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n width: `calc(${\r\n 100 /\r\n (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n }% - ${\r\n ((noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number)) -\r\n 1) /\r\n (noOfColumns || (Math.min(...[4, gridOption.length || 0]) as number))\r\n }rem)`,\r\n minWidth: checkIfNullOrUndefined(minGraphWidth)\r\n ? '280px'\r\n : `${minGraphWidth}px`,\r\n }}\r\n >\r\n <GraphEl\r\n graph={graphType}\r\n graphDataConfiguration={graphConfig}\r\n graphData={\r\n transformDataForGraph(\r\n dataTransform\r\n ? transformDataForAggregation(\r\n filterData(data, dataFilters || []).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d: any) => d[columnGridBy] === el,\r\n ),\r\n dataTransform.keyColumn,\r\n dataTransform.aggregationColumnsSetting,\r\n )\r\n : filterData(data, dataFilters || []).filter(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (d: any) => d[columnGridBy] === el,\r\n ),\r\n graphType,\r\n graphConfig,\r\n ) || []\r\n }\r\n debugMode={debugMode}\r\n settings={{\r\n ...(graphSettings || {}),\r\n ...advancedGraphSettings,\r\n theme: graphSettings?.theme || theme,\r\n width: undefined,\r\n height: undefined,\r\n relativeHeight: graphSettings?.relativeHeight || 0.67,\r\n minHeight: minGraphHeight,\r\n graphTitle: `${el}`,\r\n graphDescription: undefined,\r\n graphDownload: false,\r\n dataDownload: false,\r\n backgroundColor: undefined,\r\n padding: '0',\r\n footNote: undefined,\r\n sources: undefined,\r\n showColorScale:\r\n graphSettings?.showColorScale === false\r\n ? false\r\n : showCommonColorScale === false,\r\n }}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\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 {graphSettings?.sources || graphSettings?.footNote ? (\r\n <GraphFooter\r\n styles={{\r\n footnote: graphSettings?.styles?.footnote,\r\n source: graphSettings?.styles?.source,\r\n }}\r\n classNames={{\r\n footnote: graphSettings?.classNames?.footnote,\r\n source: graphSettings?.classNames?.source,\r\n }}\r\n sources={graphSettings?.sources}\r\n footNote={graphSettings?.footNote}\r\n width={graphSettings?.width}\r\n />\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["GriddedGraphs","props","graphSettings","dataSettings","filters","graphType","dataTransform","graphDataConfiguration","noOfColumns","columnGridBy","dataFilters","showCommonColorScale","minGraphHeight","minGraphWidth","debugMode","dataSelectionOptions","advancedDataSelectionOptions","readableHeader","noOfFiltersPerRow","uiMode","theme","data","setData","useState","dataFromFile","setDataFromFile","gridOption","setGridOption","graphParentDiv","useRef","graphConfig","setGraphConfig","filterSettings","setFilterSettings","advancedGraphSettings","setAdvancedGraphSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","gridValue","getUniqValue","newFilterSettings","transformDefaultValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","Fragment","d","i","Label","DropdownSelect","opt","RadioGroup","selectedOption","j","RadioGroupItem","checkIfMultiple","createFilter","newGraphConfig","updatedConfig","CheckboxGroup","CheckboxGroupItem","ColorLegend","Colors","checkIfNullOrUndefined","GraphEl","transformDataForGraph","transformDataForAggregation","filterData","Spinner","GraphFooter"],"mappings":"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"}
|
|
@@ -202,8 +202,6 @@ declare type FilterUiSettingsDataType = {
|
|
|
202
202
|
width?: string;
|
|
203
203
|
};
|
|
204
204
|
|
|
205
|
-
declare type GeoHubGraphType = 'geoHubCompareMap' | 'geoHubMap' | 'geoHubMapWithLayerSelection';
|
|
206
|
-
|
|
207
205
|
declare interface GraphConfigurationDataType {
|
|
208
206
|
columnId: string | string[];
|
|
209
207
|
chartConfigId: string;
|
|
@@ -452,9 +450,9 @@ declare interface GraphSettingsDataType {
|
|
|
452
450
|
polygonAltitude?: number;
|
|
453
451
|
}
|
|
454
452
|
|
|
455
|
-
declare type GraphType = GraphTypeForGriddedGraph
|
|
453
|
+
declare type GraphType = GraphTypeForGriddedGraph;
|
|
456
454
|
|
|
457
|
-
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart'
|
|
455
|
+
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart';
|
|
458
456
|
|
|
459
457
|
export declare function GriddedGraphsFromConfig(props: Props): JSX.Element;
|
|
460
458
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./index-CHPV5EwG-DDoeWRVt.cjs"),o=require("react"),$=require("./index-Ds0uHjK9.cjs"),v=require("./index-B0rbzOoC.cjs"),g=require("./DropdownSelect-0I2QxaVy.cjs"),N=require("./checkIfMultiple-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./index-CHPV5EwG-DDoeWRVt.cjs"),o=require("react"),$=require("./index-Ds0uHjK9.cjs"),v=require("./index-B0rbzOoC.cjs"),g=require("./DropdownSelect-0I2QxaVy.cjs"),N=require("./checkIfMultiple-Do4kADNr.cjs"),P=require("./SingleGraphDashboard.cjs"),d=require("./fetchAndParseData-DmgQtB9n.cjs"),U=require("./getUniqValue-CHqgSss5.cjs"),I=require("./GraphHeader.cjs"),L=require("./filterData-DN6py7y_.cjs"),T=require("./transformDataForSelect-YmStusCI.cjs"),y=f=>f.map(a=>a.columnWidth||1).reduce((a,p)=>a+p,0),z=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function Z(f){const{dashboardID:S,dashboardLayout:i,dataSettings:a,filters:p,debugMode:c,theme:j="light",readableHeader:V,dataFilters:k,noOfFiltersPerRow:x=4,filterPosition:w,uiMode:b="normal",graphStyles:A,graphClassNames:M}=f,[D,q]=o.useState(void 0),[h,O]=o.useState(void 0),[u,R]=o.useState([]),C=o.useMemo(()=>({ignoreCase:!0,ignoreAccents:!0,trim:!0}),[]),E=o.useMemo(()=>!h||u.length===0?h:h.filter(n=>u.every(e=>e.value&&v.flattenDeep([e.value]).length>0?$.intersection(v.flattenDeep([n[e.filter]]),v.flattenDeep([e.value]).map(r=>r.value)).length>0:!0)),[u,h]);o.useEffect(()=>{q(E)},[E]);const F=o.useCallback(async()=>{if(a)try{const n=await(a.dataURL?typeof a.dataURL=="string"?a.fileType==="json"?d.fetchAndParseJSON(a.dataURL,a.columnsToArray,a.dataTransformation,c):a.fileType==="api"?d.fetchAndTransformDataFromAPI(a.dataURL,a.apiHeaders,a.columnsToArray,a.dataTransformation,c):d.fetchAndParseCSV(a.dataURL,a.dataTransformation,a.columnsToArray,c,a.delimiter,!0):d.fetchAndParseMultipleDataSources(a.dataURL,a.idColumnTitle):d.transformColumnsToArray(a.data,a.columnsToArray));O(n);const e=(p||[]).map(r=>({filter:r.column,label:r.label||`Filter by ${r.column}`,singleSelect:r.singleSelect,clearable:r.clearable,defaultValue:T.transformDefaultValue(r.defaultValue),value:T.transformDefaultValue(r.defaultValue),availableValues:U.getUniqValue(n,r.column).filter(s=>!r.excludeValues?.includes(`${s}`)).map(s=>({value:s,label:s})),allowSelectAll:r.allowSelectAll,width:r.width}));R(e)}catch(t){console.error("Data fetching error:",t)}},[a,p,c]);o.useEffect(()=>{F()},[F]);const m=o.useCallback((t,n)=>{R(e=>e.map(r=>r.filter===t?{...r,value:n}:r))},[]);return l.jsxRuntimeExports.jsx("div",{className:`${j||"light"} flex grow`,dir:i.language==="he"||i.language==="ar"?"rtl":void 0,children:l.jsxRuntimeExports.jsx("div",{className:`${i.backgroundColor?i.backgroundColor===!0?"bg-primary-gray-200 dark:bg-primary-gray-650 ":"":"bg-transparent "}ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${i.language||"en"}`,style:{...i.backgroundColor&&i.backgroundColor!==!0?{backgroundColor:i.backgroundColor}:{}},id:S,children:l.jsxRuntimeExports.jsx("div",{style:{padding:i.backgroundColor?i.padding||"1rem":i.padding||0,flexGrow:1,display:"flex"},children:l.jsxRuntimeExports.jsxs("div",{className:"flex flex-col w-full gap-4 grow justify-between",children:[i.title||i.description?l.jsxRuntimeExports.jsx(I.GraphHeader,{graphTitle:i.title,graphDescription:i.description,isDashboard:!0}):null,l.jsxRuntimeExports.jsxs("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap"},children:[u.length!==0?l.jsxRuntimeExports.jsx("div",{style:{width:w==="side"?"280px":"100%",flexGrow:1,flexShrink:0},children:l.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",flexWrap:"wrap",alignItems:"flex-start",width:"100%",position:"sticky",top:"1rem"},children:u?.map((t,n)=>l.jsxRuntimeExports.jsxs("div",{style:{width:t.width||`calc(${100/x}% - ${(x-1)/x}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[l.jsxRuntimeExports.jsx(N.f,{className:"mb-2",children:t.label}),t.singleSelect?l.jsxRuntimeExports.jsx(g.Za,{options:t.availableValues,isClearable:t.clearable===void 0?!0:t.clearable,size:"sm",variant:b,isMulti:!1,isSearchable:!0,filterOption:g.Hu(C),onChange:e=>{m(t.filter,e)},defaultValue:t.defaultValue,value:t.value}):l.jsxRuntimeExports.jsxs(l.jsxRuntimeExports.Fragment,{children:[l.jsxRuntimeExports.jsx(g.Za,{options:t.availableValues,isMulti:!0,size:"sm",isClearable:t.clearable===void 0?!0:t.clearable,variant:b,isSearchable:!0,controlShouldRenderValue:!0,closeMenuOnSelect:!1,hideSelectedOptions:!1,filterOption:g.Hu(C),onChange:e=>{m(t.filter,e)},value:t.value,defaultValue:t.defaultValue}),t.allowSelectAll?l.jsxRuntimeExports.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:()=>{m(t.filter,t.availableValues)},children:"Select all options"}):null]})]},n))})}):null,l.jsxRuntimeExports.jsx("div",{style:{width:w==="side"?"calc(100% - 280px - 1rem)":"100%",minWidth:"280px",flexGrow:1,display:"flex",gap:"1rem",flexWrap:"wrap",flexShrink:"0"},children:i.rows.map((t,n)=>l.jsxRuntimeExports.jsx("div",{style:{display:"flex",gap:"1rem",alignItems:"stretch",minHeight:`${t.height||0}px`,height:"auto",width:"100%",flexWrap:"wrap"},children:t.columns.map((e,r)=>l.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent h-inherit grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/y(t.columns)}% - ${(y(t.columns)-(e.columnWidth||1))/y(t.columns)}rem)`,minHeight:"inherit"},children:l.jsxRuntimeExports.jsx(P.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:b,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||A,classNames:e.settings?.classNames||M,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||i.language,theme:e.settings?.theme||j},dataSettings:{data:D?L.filterData(D,k||[]):void 0},updateFilters:e.attachedFilter&&z.indexOf(e.graphType)!==-1&&u.findIndex(s=>s.filter===e.attachedFilter)!==-1?s=>{const W=u.findIndex(H=>H.filter===e.attachedFilter),G=s?u[W].singleSelect?{value:s,label:s}:[{value:s,label:s}]:void 0;m(e.attachedFilter,G)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:c,readableHeader:V||[]})},r))},n))})]})]})})})})}exports.MultiGraphDashboard=Z;
|
|
2
2
|
//# sourceMappingURL=MultiGraphDashboard.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, filters, debugMode]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n }, []);\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex grow`}\r\n dir={\r\n dashboardLayout.language === 'he' || dashboardLayout.language === 'ar' ? 'rtl' : undefined\r\n }\r\n >\r\n <div\r\n className={`${\r\n !dashboardLayout.backgroundColor\r\n ? 'bg-transparent '\r\n : dashboardLayout.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${\r\n dashboardLayout.language || 'en'\r\n }`}\r\n style={{\r\n ...(dashboardLayout.backgroundColor && dashboardLayout.backgroundColor !== true\r\n ? { backgroundColor: dashboardLayout.backgroundColor }\r\n : {}),\r\n }}\r\n id={dashboardID}\r\n >\r\n <div\r\n style={{\r\n padding: dashboardLayout.backgroundColor\r\n ? dashboardLayout.padding || '1rem'\r\n : dashboardLayout.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap' }}>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n position: 'sticky',\r\n top: '1rem',\r\n }}\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 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 isClearable={d.clearable === undefined ? true : d.clearable}\r\n size='sm'\r\n variant={uiMode}\r\n isMulti={false}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n defaultValue={d.defaultValue}\r\n value={d.value}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isMulti\r\n size='sm'\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n variant={uiMode}\r\n isSearchable\r\n controlShouldRenderValue\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\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 {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n minWidth: '280px',\r\n flexGrow: 1,\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n flexShrink: '0',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n alignItems: 'stretch',\r\n minHeight: `${d.height || 0}px`,\r\n height: 'auto',\r\n width: '100%',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent h-inherit grow min-w-60'\r\n style={{\r\n width: `calc(${\r\n (100 * (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: data ? filterData(data, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","data","setData","useState","dataFromFile","setDataFromFile","filterSettings","setFilterSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","newFilterSettings","transformDefaultValue","getUniqValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","i","Label","DropdownSelect","createFilter","Fragment","j","SingleGraphDashboard","filterData","dClicked","indx","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [dataFromFile, setDataFromFile] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = useMemo(\r\n () => ({\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n }),\r\n [],\r\n );\r\n\r\n const filteredData = useMemo(() => {\r\n if (!dataFromFile || filterSettings.length === 0) return dataFromFile;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = dataFromFile.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 return result;\r\n }, [filterSettings, dataFromFile]);\r\n useEffect(() => {\r\n setData(filteredData);\r\n }, [filteredData]);\r\n\r\n const fetchDataHandler = useCallback(async () => {\r\n if (dataSettings) {\r\n try {\r\n const fetchData = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? 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 ? fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : 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 : fetchAndParseMultipleDataSources(dataSettings.dataURL, dataSettings.idColumnTitle)\r\n : transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n\r\n const d = await fetchData;\r\n setDataFromFile(d);\r\n\r\n // Optimize filter settings generation\r\n const newFilterSettings = (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(d, 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\r\n setFilterSettings(newFilterSettings);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n }\r\n }, [dataSettings, filters, debugMode]);\r\n useEffect(() => {\r\n fetchDataHandler();\r\n }, [fetchDataHandler]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = useCallback((filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n }, []);\r\n return (\r\n <div\r\n className={`${theme || 'light'} flex grow`}\r\n dir={\r\n dashboardLayout.language === 'he' || dashboardLayout.language === 'ar' ? 'rtl' : undefined\r\n }\r\n >\r\n <div\r\n className={`${\r\n !dashboardLayout.backgroundColor\r\n ? 'bg-transparent '\r\n : dashboardLayout.backgroundColor === true\r\n ? 'bg-primary-gray-200 dark:bg-primary-gray-650 '\r\n : ''\r\n }ml-auto mr-auto gap-4 flex flex-col w-full grow h-inherit ${\r\n dashboardLayout.language || 'en'\r\n }`}\r\n style={{\r\n ...(dashboardLayout.backgroundColor && dashboardLayout.backgroundColor !== true\r\n ? { backgroundColor: dashboardLayout.backgroundColor }\r\n : {}),\r\n }}\r\n id={dashboardID}\r\n >\r\n <div\r\n style={{\r\n padding: dashboardLayout.backgroundColor\r\n ? dashboardLayout.padding || '1rem'\r\n : dashboardLayout.padding || 0,\r\n flexGrow: 1,\r\n display: 'flex',\r\n }}\r\n >\r\n <div className='flex flex-col w-full gap-4 grow justify-between'>\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div style={{ display: 'flex', gap: '1rem', flexWrap: 'wrap' }}>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n alignItems: 'flex-start',\r\n width: '100%',\r\n position: 'sticky',\r\n top: '1rem',\r\n }}\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 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 isClearable={d.clearable === undefined ? true : d.clearable}\r\n size='sm'\r\n variant={uiMode}\r\n isMulti={false}\r\n isSearchable\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n defaultValue={d.defaultValue}\r\n value={d.value}\r\n />\r\n ) : (\r\n <>\r\n <DropdownSelect\r\n options={d.availableValues}\r\n isMulti\r\n size='sm'\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n variant={uiMode}\r\n isSearchable\r\n controlShouldRenderValue\r\n closeMenuOnSelect={false}\r\n hideSelectedOptions={false}\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 {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n minWidth: '280px',\r\n flexGrow: 1,\r\n display: 'flex',\r\n gap: '1rem',\r\n flexWrap: 'wrap',\r\n flexShrink: '0',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n style={{\r\n display: 'flex',\r\n gap: '1rem',\r\n alignItems: 'stretch',\r\n minHeight: `${d.height || 0}px`,\r\n height: 'auto',\r\n width: '100%',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent h-inherit grow min-w-60'\r\n style={{\r\n width: `calc(${\r\n (100 * (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: data ? filterData(data, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","d","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","data","setData","useState","dataFromFile","setDataFromFile","filterSettings","setFilterSettings","filterConfig","useMemo","filteredData","item","filter","flattenDeep","intersection","el","useEffect","fetchDataHandler","useCallback","fetchAndParseJSON","fetchAndTransformDataFromAPI","fetchAndParseCSV","fetchAndParseMultipleDataSources","transformColumnsToArray","newFilterSettings","transformDefaultValue","getUniqValue","v","error","handleFilterChange","values","prev","f","jsx","jsxs","GraphHeader","i","Label","DropdownSelect","createFilter","Fragment","j","SingleGraphDashboard","filterData","dClicked","indx","value"],"mappings":"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"}
|
|
@@ -107,8 +107,11 @@ declare interface CustomLayerDataType {
|
|
|
107
107
|
layer: React.ReactNode;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
declare
|
|
110
|
+
declare interface DashboardColumnDataType extends DashboardColumnDataWithoutGraphType {
|
|
111
111
|
graphType: GraphType;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare interface DashboardColumnDataWithoutGraphType {
|
|
112
115
|
attachedFilter?: string;
|
|
113
116
|
columnWidth?: number;
|
|
114
117
|
dataTransform?: {
|
|
@@ -120,19 +123,22 @@ declare type DashboardColumnDataType = {
|
|
|
120
123
|
dataSelectionOptions?: DataSelectionDataType[];
|
|
121
124
|
advancedDataSelectionOptions?: AdvancedDataSelectionDataType[];
|
|
122
125
|
settings?: GraphSettingsDataType;
|
|
123
|
-
}
|
|
126
|
+
}
|
|
124
127
|
|
|
125
|
-
declare
|
|
128
|
+
declare interface DashboardLayoutDataType extends DashboardLayoutDataWithoutRowsType {
|
|
129
|
+
rows: {
|
|
130
|
+
columns: DashboardColumnDataType[];
|
|
131
|
+
height?: number;
|
|
132
|
+
}[];
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
declare interface DashboardLayoutDataWithoutRowsType {
|
|
126
136
|
title?: string;
|
|
127
137
|
description?: string;
|
|
128
138
|
padding?: string;
|
|
129
139
|
backgroundColor?: string | boolean;
|
|
130
140
|
language?: Languages;
|
|
131
|
-
|
|
132
|
-
columns: DashboardColumnDataType[];
|
|
133
|
-
height?: number;
|
|
134
|
-
}[];
|
|
135
|
-
};
|
|
141
|
+
}
|
|
136
142
|
|
|
137
143
|
declare interface DataFilterDataType {
|
|
138
144
|
column: string;
|
|
@@ -202,8 +208,6 @@ declare type FilterUiSettingsDataType = {
|
|
|
202
208
|
width?: string;
|
|
203
209
|
};
|
|
204
210
|
|
|
205
|
-
declare type GeoHubGraphType = 'geoHubCompareMap' | 'geoHubMap' | 'geoHubMapWithLayerSelection';
|
|
206
|
-
|
|
207
211
|
declare interface GraphConfigurationDataType {
|
|
208
212
|
columnId: string | string[];
|
|
209
213
|
chartConfigId: string;
|
|
@@ -452,9 +456,9 @@ declare interface GraphSettingsDataType {
|
|
|
452
456
|
polygonAltitude?: number;
|
|
453
457
|
}
|
|
454
458
|
|
|
455
|
-
declare type GraphType = GraphTypeForGriddedGraph
|
|
459
|
+
declare type GraphType = GraphTypeForGriddedGraph;
|
|
456
460
|
|
|
457
|
-
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart'
|
|
461
|
+
declare type GraphTypeForGriddedGraph = 'barChart' | 'stackedBarChart' | 'groupedBarChart' | 'lineChart' | 'dualAxisLineChart' | 'multiLineChart' | 'multiLineAltChart' | 'differenceLineChart' | 'stackedAreaChart' | 'choroplethMap' | 'biVariateChoroplethMap' | 'dotDensityMap' | 'donutChart' | 'slopeChart' | 'scatterPlot' | 'dumbbellChart' | 'treeMap' | 'circlePacking' | 'heatMap' | 'stripChart' | 'beeSwarmChart' | 'butterflyChart' | 'histogram' | 'sparkLine' | 'paretoChart' | 'dataTable' | 'statCard' | 'unitChart' | 'sankeyChart' | 'lineChartWithConfidenceInterval' | 'dataCards' | 'radarChart' | 'bulletChart';
|
|
458
462
|
|
|
459
463
|
declare interface HighlightAreaSettingsDataType {
|
|
460
464
|
coordinates: [number | string | null, number | string | null];
|
|
@@ -3,13 +3,13 @@ import { useState as g, useMemo as T, useEffect as V, useCallback as A } from "r
|
|
|
3
3
|
import { i as I } from "./index-C1rRk_50.js";
|
|
4
4
|
import { f as x } from "./index-UV9hjG_S.js";
|
|
5
5
|
import { Z as k, H as O } from "./DropdownSelect-CDC9lEqU.js";
|
|
6
|
-
import { f as z } from "./checkIfMultiple-
|
|
6
|
+
import { f as z } from "./checkIfMultiple-CYp3vADF.js";
|
|
7
7
|
import { SingleGraphDashboard as E } from "./SingleGraphDashboard.js";
|
|
8
8
|
import { f as Z, a as q, b as J, c as B, t as K } from "./fetchAndParseData-Bcmr659B.js";
|
|
9
9
|
import { g as Q } from "./getUniqValue-BtUENB2H.js";
|
|
10
10
|
import { GraphHeader as X } from "./GraphHeader.js";
|
|
11
11
|
import { f as Y } from "./filterData-B8ocT57s.js";
|
|
12
|
-
import { t as W } from "./
|
|
12
|
+
import { t as W } from "./transformDataForSelect-D8AuvYdf.js";
|
|
13
13
|
const b = (p) => p.map((t) => t.columnWidth || 1).reduce((t, d) => t + d, 0), _ = [
|
|
14
14
|
"barChart",
|
|
15
15
|
"choroplethMap",
|