@undp/data-viz 2.0.7 → 2.0.9

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.
Files changed (72) hide show
  1. package/dist/ChoroplethMap.cjs +1 -1
  2. package/dist/ChoroplethMap.js +1 -1
  3. package/dist/DataCards.cjs +1 -1
  4. package/dist/DataCards.js +1 -1
  5. package/dist/GriddedGraphs.cjs +1 -1
  6. package/dist/GriddedGraphs.cjs.map +1 -1
  7. package/dist/GriddedGraphs.d.ts +1 -0
  8. package/dist/GriddedGraphs.js +152 -140
  9. package/dist/GriddedGraphs.js.map +1 -1
  10. package/dist/GriddedGraphsFromConfig.d.ts +1 -0
  11. package/dist/HybridMap.cjs +1 -1
  12. package/dist/HybridMap.js +1 -1
  13. package/dist/MultiGraphDashboard.cjs +1 -1
  14. package/dist/MultiGraphDashboard.cjs.map +1 -1
  15. package/dist/MultiGraphDashboard.d.ts +1 -0
  16. package/dist/MultiGraphDashboard.js +88 -83
  17. package/dist/MultiGraphDashboard.js.map +1 -1
  18. package/dist/MultiGraphDashboardFromConfig.d.ts +1 -0
  19. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs +1 -1
  20. package/dist/PerformanceIntensiveMultiGraphDashboard.cjs.map +1 -1
  21. package/dist/PerformanceIntensiveMultiGraphDashboard.d.ts +1 -0
  22. package/dist/PerformanceIntensiveMultiGraphDashboard.js +74 -70
  23. package/dist/PerformanceIntensiveMultiGraphDashboard.js.map +1 -1
  24. package/dist/PerformanceIntensiveMultiGraphDashboardFromConfig.d.ts +1 -0
  25. package/dist/SingleGraphDashboard.cjs +1 -1
  26. package/dist/SingleGraphDashboard.cjs.map +1 -1
  27. package/dist/SingleGraphDashboard.d.ts +1 -0
  28. package/dist/SingleGraphDashboard.js +122 -119
  29. package/dist/SingleGraphDashboard.js.map +1 -1
  30. package/dist/SingleGraphDashboardFromConfig.d.ts +1 -0
  31. package/dist/SingleGraphDashboardThreeDGraphs.cjs +1 -1
  32. package/dist/SingleGraphDashboardThreeDGraphs.cjs.map +1 -1
  33. package/dist/SingleGraphDashboardThreeDGraphs.d.ts +1 -0
  34. package/dist/SingleGraphDashboardThreeDGraphs.js +126 -122
  35. package/dist/SingleGraphDashboardThreeDGraphs.js.map +1 -1
  36. package/dist/SingleGraphDashboardThreeDGraphsFromConfig.d.ts +1 -0
  37. package/dist/ThreeDGlobe.cjs +1 -1
  38. package/dist/ThreeDGlobe.js +1 -1
  39. package/dist/Types.d.ts +1 -0
  40. package/dist/{getGraphList-gf02xgT2.cjs → getGraphList-CA17dvFB.cjs} +2 -2
  41. package/dist/getGraphList-CA17dvFB.cjs.map +1 -0
  42. package/dist/{getGraphList-BpEWn1Tk.js → getGraphList-Dxwo9TDb.js} +7 -1
  43. package/dist/{getGraphList-BpEWn1Tk.js.map → getGraphList-Dxwo9TDb.js.map} +1 -1
  44. package/dist/getSchema.cjs +1 -1
  45. package/dist/getSchema.js +1 -1
  46. package/dist/getUniqValue-DsqSii6M.js +11 -0
  47. package/dist/getUniqValue-DsqSii6M.js.map +1 -0
  48. package/dist/getUniqValue-NX8DgwND.cjs +2 -0
  49. package/dist/getUniqValue-NX8DgwND.cjs.map +1 -0
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.js +4 -4
  53. package/dist/transformData.cjs +1 -1
  54. package/dist/transformData.js +2 -2
  55. package/dist/{transformDataForAggregation-CjwEAUOR.js → transformDataForAggregation-DEU__LUl.js} +2 -2
  56. package/dist/{transformDataForAggregation-CjwEAUOR.js.map → transformDataForAggregation-DEU__LUl.js.map} +1 -1
  57. package/dist/{transformDataForAggregation-DAGK2BZy.cjs → transformDataForAggregation-XNg0OGYE.cjs} +2 -2
  58. package/dist/{transformDataForAggregation-DAGK2BZy.cjs.map → transformDataForAggregation-XNg0OGYE.cjs.map} +1 -1
  59. package/dist/{transformDataForGraphFromFile-D5TMQYYd.js → transformDataForGraphFromFile-CSG24iF6.js} +2 -2
  60. package/dist/{transformDataForGraphFromFile-D5TMQYYd.js.map → transformDataForGraphFromFile-CSG24iF6.js.map} +1 -1
  61. package/dist/{transformDataForGraphFromFile-B1zJSPRP.cjs → transformDataForGraphFromFile-CzepNVGZ.cjs} +2 -2
  62. package/dist/{transformDataForGraphFromFile-B1zJSPRP.cjs.map → transformDataForGraphFromFile-CzepNVGZ.cjs.map} +1 -1
  63. package/dist/utils.cjs +1 -1
  64. package/dist/utils.js +2 -2
  65. package/dist/validateSchema.cjs +1 -1
  66. package/dist/validateSchema.js +1 -1
  67. package/package.json +1 -1
  68. package/dist/getGraphList-gf02xgT2.cjs.map +0 -1
  69. package/dist/getUniqValue-BKHCm3zE.js +0 -11
  70. package/dist/getUniqValue-BKHCm3zE.js.map +0 -1
  71. package/dist/getUniqValue-RViz8tTw.cjs +0 -2
  72. package/dist/getUniqValue-RViz8tTw.cjs.map +0 -1
@@ -1,110 +1,115 @@
1
- import { j as r } from "./index-CHPV5EwG-Curnpaqc.js";
2
- import { useState as g, useEffectEvent as V, useEffect as b } from "react";
3
- import { i as $ } from "./index-BuwmuDFJ.js";
4
- import { f as v } from "./index-EArKRVKg.js";
5
- import { j as A, D as O } from "./DropdownSelect-BbdPQa2k.js";
6
- import { b as E } from "./checkIfMultiple-Y9iKaV_u.js";
7
- import { G as z } from "./GraphContainer-CRqzdKu2.js";
8
- import { SingleGraphDashboard as I } from "./SingleGraphDashboard.js";
9
- import { f as q, a as J, b as B, c as K, t as Q } from "./fetchAndParseData-BpqkBPQL.js";
10
- import { g as X } from "./getUniqValue-BKHCm3zE.js";
11
- import { GraphHeader as Y } from "./GraphHeader.js";
12
- import { f as Z } from "./filterData-DsAiFzKY.js";
1
+ import { j as i } from "./index-CHPV5EwG-Curnpaqc.js";
2
+ import { useState as g, useEffectEvent as F, useEffect as v } from "react";
3
+ import { i as U } from "./index-BuwmuDFJ.js";
4
+ import { f as b } from "./index-EArKRVKg.js";
5
+ import { j as A, D as $ } from "./DropdownSelect-BbdPQa2k.js";
6
+ import { b as E, y as I, h as z, $ as q, P as J } from "./checkIfMultiple-Y9iKaV_u.js";
7
+ import { G as B } from "./GraphContainer-CRqzdKu2.js";
8
+ import { SingleGraphDashboard as K } from "./SingleGraphDashboard.js";
9
+ import { f as Q, a as X, b as Y, c as Z, t as _ } from "./fetchAndParseData-BpqkBPQL.js";
10
+ import { g as aa } from "./getUniqValue-DsqSii6M.js";
11
+ import { GraphHeader as ea } from "./GraphHeader.js";
12
+ import { f as ta } from "./filterData-DsAiFzKY.js";
13
13
  import { t as N } from "./transformDataForSelect-D8AuvYdf.js";
14
- const x = (m) => m.map((t) => t.columnWidth || 1).reduce((t, d) => t + d, 0), _ = ["barChart", "choroplethMap", "biVariateChoroplethMap", "circlePacking", "treeMap"];
15
- function ma(m) {
14
+ const x = (f) => f.map((t) => t.columnWidth || 1).reduce((t, m) => t + m, 0), la = ["barChart", "choroplethMap", "biVariateChoroplethMap", "circlePacking", "treeMap"];
15
+ function va(f) {
16
16
  const {
17
- dashboardID: S,
18
- dashboardLayout: l,
17
+ dashboardID: y,
18
+ dashboardLayout: s,
19
19
  dataSettings: t,
20
- filters: d,
21
- debugMode: c,
22
- theme: w = "light",
23
- readableHeader: M,
20
+ filters: m,
21
+ debugMode: d,
22
+ theme: S = "light",
23
+ readableHeader: O,
24
24
  dataFilters: R,
25
25
  noOfFiltersPerRow: p = 4,
26
- filterPosition: y,
27
- uiMode: f = "normal",
26
+ filterPosition: w,
27
+ uiMode: h = "normal",
28
28
  graphStyles: H,
29
- graphClassNames: W
30
- } = m, [D, T] = g(void 0), [u, k] = g(void 0), [s, j] = g([]), F = {
29
+ graphClassNames: M
30
+ } = f, [V, D] = g(void 0), [u, P] = g(void 0), [n, j] = g([]), T = {
31
31
  ignoreCase: !0,
32
32
  ignoreAccents: !0,
33
33
  trim: !0
34
- }, C = V(() => {
35
- const e = (d || []).map((i) => ({
36
- filter: i.column,
37
- label: i.label || `Filter by ${i.column}`,
38
- singleSelect: i.singleSelect,
39
- clearable: i.clearable,
40
- defaultValue: N(i.defaultValue),
41
- value: N(i.defaultValue),
42
- availableValues: X(u, i.column).filter((a) => !i.excludeValues?.includes(`${a}`)).map((a) => ({
34
+ }, C = F(() => {
35
+ const e = (m || []).map((l) => ({
36
+ filter: l.column,
37
+ label: l.label || `Filter by ${l.column}`,
38
+ singleSelect: l.singleSelect,
39
+ clearable: l.clearable,
40
+ ui: l.ui,
41
+ defaultValue: N(l.defaultValue),
42
+ value: N(l.defaultValue),
43
+ availableValues: aa(u, l.column).filter((a) => !l.excludeValues?.includes(`${a}`)).map((a) => ({
43
44
  value: a,
44
45
  label: a
45
46
  })),
46
- allowSelectAll: i.allowSelectAll,
47
- width: i.width
47
+ allowSelectAll: l.allowSelectAll,
48
+ width: l.width
48
49
  }));
49
50
  j(e);
50
- }), G = V(() => {
51
- if (!u || s.length === 0) T(u);
51
+ }), W = F(() => {
52
+ if (!u || n.length === 0) D(u);
52
53
  else {
53
- const e = u.filter((i) => s.every((a) => a.value && v([a.value]).length > 0 ? $(v([i[a.filter]]), v([a.value]).map((n) => n.value)).length > 0 : !0));
54
- T(e);
54
+ const e = u.filter((l) => n.every((a) => a.value && b([a.value]).length > 0 ? U(b([l[a.filter]]), b([a.value]).map((r) => r.value)).length > 0 : !0));
55
+ D(e);
55
56
  }
56
57
  });
57
- b(() => {
58
- G();
59
- }, [s, u]), b(() => {
58
+ v(() => {
59
+ W();
60
+ }, [n, u]), v(() => {
60
61
  (async () => {
61
62
  try {
62
- const i = t.dataURL ? typeof t.dataURL == "string" ? t.fileType === "json" ? await q(t.dataURL, t.columnsToArray, t.dataTransformation, c) : t.fileType === "api" ? await J(t.dataURL, t.apiHeaders, t.columnsToArray, t.dataTransformation, c) : await B(t.dataURL, t.dataTransformation, t.columnsToArray, c, t.delimiter, !0) : await K(t.dataURL, t.idColumnTitle) : await Q(t.data, t.columnsToArray);
63
- k(i);
64
- } catch (i) {
65
- console.error("Data fetching error:", i);
63
+ const l = t.dataURL ? typeof t.dataURL == "string" ? t.fileType === "json" ? await Q(t.dataURL, t.columnsToArray, t.dataTransformation, d) : t.fileType === "api" ? await X(t.dataURL, t.apiHeaders, t.columnsToArray, t.dataTransformation, d) : await Y(t.dataURL, t.dataTransformation, t.columnsToArray, d, t.delimiter, !0) : await Z(t.dataURL, t.idColumnTitle) : await _(t.data, t.columnsToArray);
64
+ P(l);
65
+ } catch (l) {
66
+ console.error("Data fetching error:", l);
66
67
  }
67
68
  })(), C();
68
- }, [t, c]), b(() => {
69
+ }, [t, d]), v(() => {
69
70
  C();
70
- }, [d]);
71
- const h = (e, i) => {
72
- j((a) => a.map((n) => n.filter === e ? {
73
- ...n,
74
- value: i
75
- } : n));
71
+ }, [m, u]);
72
+ const c = (e, l) => {
73
+ j((a) => a.map((r) => r.filter === e ? {
74
+ ...r,
75
+ value: l
76
+ } : r));
76
77
  };
77
- return /* @__PURE__ */ r.jsxs(z, { id: S, "aria-label": "This is a dashboard", backgroundColor: l.backgroundColor ?? !1, theme: w || "light", language: l.language || "en", padding: l.padding, children: [
78
- l.title || l.description ? /* @__PURE__ */ r.jsx(Y, { graphTitle: l.title, graphDescription: l.description, isDashboard: !0 }) : null,
79
- /* @__PURE__ */ r.jsxs("div", { className: "flex gap-4 flex-wrap", children: [
80
- s.length !== 0 ? /* @__PURE__ */ r.jsx("div", { className: "flex-grow flex-shrink-0", style: {
81
- width: y === "side" ? "280px" : "100%"
82
- }, children: /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap items-start gap-4 w-full sticky top-4", children: s?.map((e, i) => /* @__PURE__ */ r.jsxs("div", { style: {
78
+ return /* @__PURE__ */ i.jsxs(B, { id: y, "aria-label": "This is a dashboard", backgroundColor: s.backgroundColor ?? !1, theme: S || "light", language: s.language || "en", padding: s.padding, children: [
79
+ s.title || s.description ? /* @__PURE__ */ i.jsx(ea, { graphTitle: s.title, graphDescription: s.description, isDashboard: !0 }) : null,
80
+ /* @__PURE__ */ i.jsxs("div", { className: "flex gap-4 flex-wrap", children: [
81
+ n.length !== 0 ? /* @__PURE__ */ i.jsx("div", { className: "flex-grow flex-shrink-0", style: {
82
+ width: w === "side" ? "280px" : "100%"
83
+ }, children: /* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap items-start gap-4 w-full sticky top-4", children: n?.map((e, l) => /* @__PURE__ */ i.jsxs("div", { style: {
83
84
  width: e.width || `calc(${100 / p}% - ${(p - 1) / p}rem)`,
84
85
  flexGrow: 1,
85
86
  flexShrink: 0,
86
87
  minWidth: "240px"
87
88
  }, children: [
88
- /* @__PURE__ */ r.jsx(E, { className: "mb-2", children: e.label }),
89
- e.singleSelect ? /* @__PURE__ */ r.jsx(A, { options: e.availableValues, isClearable: e.clearable === void 0 ? !0 : e.clearable, size: "sm", variant: f, isMulti: !1, isSearchable: !0, filterOption: O(F), onChange: (a) => {
90
- h(e.filter, a);
91
- }, defaultValue: e.defaultValue, value: e.value }) : /* @__PURE__ */ r.jsxs(r.Fragment, { children: [
92
- /* @__PURE__ */ r.jsx(A, { options: e.availableValues, isMulti: !0, size: "sm", isClearable: e.clearable === void 0 ? !0 : e.clearable, variant: f, isSearchable: !0, controlShouldRenderValue: !0, closeMenuOnSelect: !1, hideSelectedOptions: !1, filterOption: O(F), onChange: (a) => {
93
- h(e.filter, a);
94
- }, value: e.value, defaultValue: e.defaultValue }),
95
- e.allowSelectAll ? /* @__PURE__ */ r.jsx("button", { type: "button", className: "bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400", onClick: () => {
96
- h(e.filter, e.availableValues);
89
+ /* @__PURE__ */ i.jsx(E, { className: "mb-2", children: e.label }),
90
+ e.singleSelect ? e.ui !== "radio" ? /* @__PURE__ */ i.jsx(A, { options: e.availableValues, variant: h, isClearable: e.clearable === void 0 ? !0 : e.clearable, isSearchable: !0, controlShouldRenderValue: !0, filterOption: $(T), onChange: (a) => {
91
+ c(e.filter, a);
92
+ }, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */ i.jsx(I, { variant: h, defaultValue: e.defaultValue.value, onValueChange: (a) => {
93
+ c(e.filter, e.availableValues.filter((r) => r.value === a));
94
+ }, children: e.availableValues.map((a, r) => /* @__PURE__ */ i.jsx(z, { label: `${a.label}`, value: `${a.value}` }, r)) }) : /* @__PURE__ */ i.jsxs(i.Fragment, { children: [
95
+ e.ui !== "radio" ? /* @__PURE__ */ i.jsx(A, { options: e.availableValues, variant: h, size: "sm", isMulti: !0, isClearable: e.clearable === void 0 ? !0 : e.clearable, isSearchable: !0, controlShouldRenderValue: !0, filterOption: $(T), onChange: (a) => {
96
+ c(e.filter, a);
97
+ }, value: e.value, defaultValue: e.defaultValue }) : /* @__PURE__ */ i.jsx(q, { variant: h, defaultValue: e.defaultValue ? e.defaultValue.map((a) => `${a.value}`) : [], value: e.value ? e.value.map((a) => `${a.value}`) : void 0, onValueChange: (a) => {
98
+ c(e.filter, e.availableValues.filter((r) => a.indexOf(`${r.value}`) !== -1));
99
+ }, children: e.availableValues.map((a, r) => /* @__PURE__ */ i.jsx(J, { label: `${a.label}`, value: `${a.value}` }, r)) }),
100
+ e.allowSelectAll ? /* @__PURE__ */ i.jsx("button", { type: "button", className: "bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400", onClick: () => {
101
+ c(e.filter, e.availableValues);
97
102
  }, children: "Select all options" }) : null
98
103
  ] })
99
- ] }, i)) }) }) : null,
100
- /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]", style: {
101
- width: y === "side" ? "calc(100% - 280px - 1rem)" : "100%"
102
- }, children: l.rows.map((e, i) => /* @__PURE__ */ r.jsx("div", { className: "flex flex-wrap items-stretch gap-4 w-full h-auto", style: {
104
+ ] }, l)) }) }) : null,
105
+ /* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]", style: {
106
+ width: w === "side" ? "calc(100% - 280px - 1rem)" : "100%"
107
+ }, children: s.rows.map((e, l) => /* @__PURE__ */ i.jsx("div", { className: "flex flex-wrap items-stretch gap-4 w-full h-auto", style: {
103
108
  minHeight: `${e.height || 0}px`
104
- }, children: e.columns.map((a, n) => /* @__PURE__ */ r.jsx("div", { className: "flex bg-transparent grow min-w-60", style: {
109
+ }, children: e.columns.map((a, r) => /* @__PURE__ */ i.jsx("div", { className: "flex bg-transparent grow min-w-60", style: {
105
110
  width: `calc(${100 * (a.columnWidth || 1) / x(e.columns)}% - ${(x(e.columns) - (a.columnWidth || 1)) / x(e.columns)}rem)`,
106
111
  minHeight: "inherit"
107
- }, children: /* @__PURE__ */ r.jsx(I, { graphType: a.graphType, dataFilters: a.dataFilters, uiMode: f, graphSettings: {
112
+ }, children: /* @__PURE__ */ i.jsx(K, { graphType: a.graphType, dataFilters: a.dataFilters, uiMode: h, graphSettings: {
108
113
  ...a.settings || {},
109
114
  width: void 0,
110
115
  height: void 0,
@@ -112,27 +117,27 @@ function ma(m) {
112
117
  relativeHeight: void 0,
113
118
  resetSelectionOnDoubleClick: a.attachedFilter ? !1 : a.settings?.resetSelectionOnDoubleClick,
114
119
  styles: a.settings?.styles || H,
115
- classNames: a.settings?.classNames || W,
120
+ classNames: a.settings?.classNames || M,
116
121
  radius: a.graphType === "donutChart" ? void 0 : a.settings?.radius,
117
122
  size: a.graphType === "unitChart" ? a.settings?.size : void 0,
118
- language: a.settings?.language || l.language,
119
- theme: a.settings?.theme || w
123
+ language: a.settings?.language || s.language,
124
+ theme: a.settings?.theme || S
120
125
  }, dataSettings: {
121
- data: D ? Z(D, R || []) : void 0
122
- }, updateFilters: a.attachedFilter && _.indexOf(a.graphType) !== -1 && s.findIndex((o) => o.filter === a.attachedFilter) !== -1 ? (o) => {
123
- const L = s.findIndex((U) => U.filter === a.attachedFilter), P = o ? s[L].singleSelect ? {
126
+ data: V ? ta(V, R || []) : void 0
127
+ }, updateFilters: a.attachedFilter && la.indexOf(a.graphType) !== -1 && n.findIndex((o) => o.filter === a.attachedFilter) !== -1 ? (o) => {
128
+ const k = n.findIndex((L) => L.filter === a.attachedFilter), G = o ? n[k].singleSelect ? {
124
129
  value: o,
125
130
  label: o
126
131
  } : [{
127
132
  value: o,
128
133
  label: o
129
134
  }] : void 0;
130
- h(a.attachedFilter, P);
131
- } : void 0, dataTransform: a.dataTransform, dataSelectionOptions: a.dataSelectionOptions, advancedDataSelectionOptions: a.advancedDataSelectionOptions, graphDataConfiguration: a.graphDataConfiguration, debugMode: c, readableHeader: M || [] }) }, n)) }, i)) })
135
+ c(a.attachedFilter, G);
136
+ } : void 0, dataTransform: a.dataTransform, dataSelectionOptions: a.dataSelectionOptions, advancedDataSelectionOptions: a.advancedDataSelectionOptions, graphDataConfiguration: a.graphDataConfiguration, debugMode: d, readableHeader: O || [] }) }, r)) }, l)) })
132
137
  ] })
133
138
  ] });
134
139
  }
135
140
  export {
136
- ma as MultiGraphDashboard
141
+ va as MultiGraphDashboard
137
142
  };
138
143
  //# sourceMappingURL=MultiGraphDashboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 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 className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","Fragment","rows","minHeight","height","j","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","indexOf","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
1
+ {"version":3,"file":"MultiGraphDashboard.js","sources":["../src/Components/Dashboard/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { GraphContainer } from '../Elements/GraphContainer';\r\n\r\nimport { SingleGraphDashboard } from './SingleGraphDashboard';\r\n\r\nimport {\r\n ClassNameObject,\r\n DashboardColumnDataType,\r\n DashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n} from '@/Types';\r\nimport {\r\n fetchAndParseCSV,\r\n fetchAndParseJSON,\r\n fetchAndParseMultipleDataSources,\r\n fetchAndTransformDataFromAPI,\r\n} from '@/Utils/fetchAndParseData';\r\nimport { getUniqValue } from '@/Utils/getUniqValue';\r\nimport { GraphHeader } from '@/Components/Elements/GraphHeader';\r\nimport { transformColumnsToArray } from '@/Utils/transformData/transformColumnsToArray';\r\nimport { filterData } from '@/Utils/transformData/filterData';\r\nimport { transformDefaultValue } from '@/Utils/transformDataForSelect';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: DashboardLayoutDataType;\r\n dataSettings: DataSettingsDataType;\r\n filters?: FilterUiSettingsDataType[];\r\n noOfFiltersPerRow?: number;\r\n dataFilters?: DataFilterDataType[];\r\n debugMode?: boolean;\r\n theme?: 'dark' | 'light';\r\n filterPosition?: 'top' | 'side';\r\n readableHeader?: {\r\n value: string;\r\n label: string;\r\n }[];\r\n uiMode?: 'light' | 'normal';\r\n graphStyles?: StyleObject;\r\n graphClassNames?: ClassNameObject;\r\n}\r\n\r\nconst TotalWidth = (columns: DashboardColumnDataType[]) => {\r\n const columnWidth = columns.map(d => d.columnWidth || 1);\r\n const sum = columnWidth.reduce((acc, cur) => acc + cur, 0);\r\n return sum;\r\n};\r\n\r\nconst GraphWithAttachedFilter: GraphType[] = [\r\n 'barChart',\r\n 'choroplethMap',\r\n 'biVariateChoroplethMap',\r\n 'circlePacking',\r\n 'treeMap',\r\n];\r\n\r\nexport function MultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n ui: el.ui,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 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 d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n <SingleGraphDashboard\r\n graphType={el.graphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData ? filterData(filteredData, dataFilters || []) : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType) !== -1 &&\r\n filterSettings.findIndex(f => f.filter === el.attachedFilter) !== -1\r\n ? dClicked => {\r\n const indx = filterSettings.findIndex(\r\n f => f.filter === el.attachedFilter,\r\n );\r\n const value = dClicked\r\n ? filterSettings[indx].singleSelect\r\n ? { value: dClicked, label: dClicked }\r\n : [{ value: dClicked, label: dClicked }]\r\n : undefined;\r\n handleFilterChange(el.attachedFilter as string, value);\r\n }\r\n : undefined\r\n }\r\n dataTransform={el.dataTransform}\r\n dataSelectionOptions={el.dataSelectionOptions}\r\n advancedDataSelectionOptions={el.advancedDataSelectionOptions}\r\n graphDataConfiguration={el.graphDataConfiguration}\r\n debugMode={debugMode}\r\n readableHeader={readableHeader || []}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","MultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","ui","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","fetchData","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","SingleGraphDashboard","graphType","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","findIndex","dClicked","indx","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration"],"mappings":"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"}
@@ -244,6 +244,7 @@ declare type FilterUiSettingsDataType = {
244
244
  excludeValues?: string[];
245
245
  allowSelectAll?: boolean;
246
246
  width?: string;
247
+ ui?: 'select' | 'radio';
247
248
  };
248
249
 
249
250
  declare interface FogDataType {
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-CHPV5EwG-CTPQjnHt.cjs"),l=require("react"),L=require("./index-CyZ1lmi_.cjs"),j=require("./index-BS2TADPj.cjs"),b=require("./DropdownSelect-Doz3mCrM.cjs"),U=require("./checkIfMultiple-wg6hJLXy.cjs"),$=require("./SingleGraphDashboard.cjs"),I=require("./SingleGraphDashboardThreeDGraphs.cjs"),J=require("./SingleGraphDashboardGeoHubMaps.cjs"),p=require("./fetchAndParseData-l5HGMAEs.cjs"),B=require("./getUniqValue-RViz8tTw.cjs"),K=require("./GraphHeader.cjs"),M=require("./filterData-T5DQBE9b.cjs"),q=require("./transformDataForSelect-YmStusCI.cjs"),Q=require("./GraphContainer-d8A46BK2.cjs"),T=v=>v.map(a=>a.columnWidth||1).reduce((a,g)=>a+g,0),X=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function Y(v){const{dashboardID:w,dashboardLayout:r,dataSettings:a,filters:g,debugMode:o,theme:m="light",readableHeader:C,dataFilters:E,noOfFiltersPerRow:S=4,filterPosition:R,uiMode:d="normal",graphStyles:D,graphClassNames:y}=v,[f,F]=l.useState(void 0),[h,H]=l.useState(void 0),[n,O]=l.useState([]),A=["threeDGlobe"],N=["geoHubCompareMap","geoHubMap","geoHubMapWithLayerSelection"],G={ignoreCase:!0,ignoreAccents:!0,trim:!0},V=l.useEffectEvent(()=>{const t=(g||[]).map(s=>({filter:s.column,label:s.label||`Filter by ${s.column}`,singleSelect:s.singleSelect,clearable:s.clearable,defaultValue:q.transformDefaultValue(s.defaultValue),value:q.transformDefaultValue(s.defaultValue),availableValues:B.getUniqValue(h,s.column).filter(e=>!s.excludeValues?.includes(`${e}`)).map(e=>({value:e,label:e})),allowSelectAll:s.allowSelectAll,width:s.width}));O(t)}),k=l.useEffectEvent(()=>{if(!h||n.length===0)F(h);else{const t=h.filter(s=>n.every(e=>e.value&&j.flattenDeep([e.value]).length>0?L.intersection(j.flattenDeep([s[e.filter]]),j.flattenDeep([e.value]).map(u=>u.value)).length>0:!0));F(t)}});l.useEffect(()=>{k()},[n,h]),l.useEffect(()=>{(async()=>{try{const s=a.dataURL?typeof a.dataURL=="string"?a.fileType==="json"?await p.fetchAndParseJSON(a.dataURL,a.columnsToArray,a.dataTransformation,o):a.fileType==="api"?await p.fetchAndTransformDataFromAPI(a.dataURL,a.apiHeaders,a.columnsToArray,a.dataTransformation,o):await p.fetchAndParseCSV(a.dataURL,a.dataTransformation,a.columnsToArray,o,a.delimiter,!0):await p.fetchAndParseMultipleDataSources(a.dataURL,a.idColumnTitle):await p.transformColumnsToArray(a.data,a.columnsToArray);H(s)}catch(s){console.error("Data fetching error:",s)}})(),V()},[a,o]),l.useEffect(()=>{V()},[g]);const x=(t,s)=>{O(e=>e.map(u=>u.filter===t?{...u,value:s}:u))};return i.jsxRuntimeExports.jsxs(Q.GraphContainer,{id:w,"aria-label":"This is a dashboard",backgroundColor:r.backgroundColor??!1,theme:m||"light",language:r.language||"en",padding:r.padding,children:[r.title||r.description?i.jsxRuntimeExports.jsx(K.GraphHeader,{graphTitle:r.title,graphDescription:r.description,isDashboard:!0}):null,i.jsxRuntimeExports.jsxs("div",{className:"flex gap-4 flex-wrap",children:[n.length!==0?i.jsxRuntimeExports.jsx("div",{className:"flex-grow flex-shrink-0",style:{width:R==="side"?"280px":"100%"},children:i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-start gap-4 w-full sticky top-4",children:n?.map((t,s)=>i.jsxRuntimeExports.jsxs("div",{style:{width:t.width||`calc(${100/S}% - ${(S-1)/S}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[i.jsxRuntimeExports.jsx(U.b,{className:"mb-2",children:t.label}),t.singleSelect?i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isClearable:t.clearable===void 0?!0:t.clearable,size:"sm",variant:d,isMulti:!1,isSearchable:!0,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},defaultValue:t.defaultValue,value:t.value}):i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[i.jsxRuntimeExports.jsx(b.ja,{options:t.availableValues,isMulti:!0,size:"sm",isClearable:t.clearable===void 0?!0:t.clearable,variant:d,isSearchable:!0,controlShouldRenderValue:!0,closeMenuOnSelect:!1,hideSelectedOptions:!1,filterOption:b.Du(G),onChange:e=>{x(t.filter,e)},value:t.value,defaultValue:t.defaultValue}),t.allowSelectAll?i.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:()=>{x(t.filter,t.availableValues)},children:"Select all options"}):null]})]},s))})}):null,i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]",style:{width:R==="side"?"calc(100% - 280px - 1rem)":"100%"},children:r.rows.map((t,s)=>i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-stretch gap-4 w-full h-auto",style:{minHeight:`${t.height||0}px`},children:t.columns.map((e,u)=>i.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/T(t.columns)}% - ${(T(t.columns)-(e.columnWidth||1))/T(t.columns)}rem)`,minHeight:"inherit"},children:A.includes(e.graphType)?i.jsxRuntimeExports.jsx(I.SingleGraphDashboardThreeDGraphs,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,minHeight:void 0,relativeHeight:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]}):N.includes(e.graphType)?i.jsxRuntimeExports.jsx(J.SingleGraphDashboardGeoHubMaps,{graphType:e.graphType,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},debugMode:o}):i.jsxRuntimeExports.jsx($.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:d,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||D,classNames:e.settings?.classNames||y,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||r.language,theme:e.settings?.theme||m},dataSettings:{data:f?M.filterData(f,E||[]):void 0},updateFilters:e.attachedFilter&&X.indexOf(e.graphType)!==-1&&n.findIndex(c=>c.filter===e.attachedFilter)!==-1?c=>{const P=n.findIndex(z=>z.filter===e.attachedFilter),W=c?n[P].singleSelect?{value:c,label:c}:[{value:c,label:c}]:void 0;x(e.attachedFilter,W)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:o,readableHeader:C||[]})},u))},s))})]})]})}exports.PerformanceIntensiveMultiGraphDashboard=Y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./index-CHPV5EwG-CTPQjnHt.cjs"),o=require("react"),U=require("./index-CyZ1lmi_.cjs"),T=require("./index-BS2TADPj.cjs"),b=require("./DropdownSelect-Doz3mCrM.cjs"),g=require("./checkIfMultiple-wg6hJLXy.cjs"),z=require("./SingleGraphDashboard.cjs"),I=require("./SingleGraphDashboardThreeDGraphs.cjs"),J=require("./SingleGraphDashboardGeoHubMaps.cjs"),m=require("./fetchAndParseData-l5HGMAEs.cjs"),B=require("./getUniqValue-NX8DgwND.cjs"),K=require("./GraphHeader.cjs"),H=require("./filterData-T5DQBE9b.cjs"),M=require("./transformDataForSelect-YmStusCI.cjs"),Q=require("./GraphContainer-d8A46BK2.cjs"),w=S=>S.map(t=>t.columnWidth||1).reduce((t,f)=>t+f,0),X=["barChart","choroplethMap","biVariateChoroplethMap","circlePacking","treeMap"];function Y(S){const{dashboardID:C,dashboardLayout:n,dataSettings:t,filters:f,debugMode:u,theme:x="light",readableHeader:E,dataFilters:V,noOfFiltersPerRow:D=4,filterPosition:R,uiMode:c="normal",graphStyles:y,graphClassNames:j}=S,[v,F]=o.useState(void 0),[d,A]=o.useState(void 0),[l,G]=o.useState([]),N=["threeDGlobe"],$=["geoHubCompareMap","geoHubMap","geoHubMapWithLayerSelection"],O={ignoreCase:!0,ignoreAccents:!0,trim:!0},q=o.useEffectEvent(()=>{const a=(f||[]).map(s=>({filter:s.column,label:s.label||`Filter by ${s.column}`,singleSelect:s.singleSelect,clearable:s.clearable,defaultValue:M.transformDefaultValue(s.defaultValue),value:M.transformDefaultValue(s.defaultValue),availableValues:B.getUniqValue(d,s.column).filter(e=>!s.excludeValues?.includes(`${e}`)).map(e=>({value:e,label:e})),allowSelectAll:s.allowSelectAll,width:s.width}));G(a)}),P=o.useEffectEvent(()=>{if(!d||l.length===0)F(d);else{const a=d.filter(s=>l.every(e=>e.value&&T.flattenDeep([e.value]).length>0?U.intersection(T.flattenDeep([s[e.filter]]),T.flattenDeep([e.value]).map(r=>r.value)).length>0:!0));F(a)}});o.useEffect(()=>{P()},[l,d]),o.useEffect(()=>{(async()=>{try{const s=t.dataURL?typeof t.dataURL=="string"?t.fileType==="json"?await m.fetchAndParseJSON(t.dataURL,t.columnsToArray,t.dataTransformation,u):t.fileType==="api"?await m.fetchAndTransformDataFromAPI(t.dataURL,t.apiHeaders,t.columnsToArray,t.dataTransformation,u):await m.fetchAndParseCSV(t.dataURL,t.dataTransformation,t.columnsToArray,u,t.delimiter,!0):await m.fetchAndParseMultipleDataSources(t.dataURL,t.idColumnTitle):await m.transformColumnsToArray(t.data,t.columnsToArray);A(s)}catch(s){console.error("Data fetching error:",s)}})(),q()},[t,u]),o.useEffect(()=>{q()},[f,d]);const p=(a,s)=>{G(e=>e.map(r=>r.filter===a?{...r,value:s}:r))};return i.jsxRuntimeExports.jsxs(Q.GraphContainer,{id:C,"aria-label":"This is a dashboard",backgroundColor:n.backgroundColor??!1,theme:x||"light",language:n.language||"en",padding:n.padding,children:[n.title||n.description?i.jsxRuntimeExports.jsx(K.GraphHeader,{graphTitle:n.title,graphDescription:n.description,isDashboard:!0}):null,i.jsxRuntimeExports.jsxs("div",{className:"flex gap-4 flex-wrap",children:[l.length!==0?i.jsxRuntimeExports.jsx("div",{className:"flex-grow flex-shrink-0",style:{width:R==="side"?"280px":"100%"},children:i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-start gap-4 w-full sticky top-4",children:l?.map((a,s)=>i.jsxRuntimeExports.jsxs("div",{style:{width:a.width||`calc(${100/D}% - ${(D-1)/D}rem)`,flexGrow:1,flexShrink:0,minWidth:"240px"},children:[i.jsxRuntimeExports.jsx(g.b,{className:"mb-2",children:a.label}),a.singleSelect?a.ui!=="radio"?i.jsxRuntimeExports.jsx(b.ja,{options:a.availableValues,variant:c,isClearable:a.clearable===void 0?!0:a.clearable,isSearchable:!0,controlShouldRenderValue:!0,filterOption:b.Du(O),onChange:e=>{p(a.filter,e)},value:a.value,defaultValue:a.defaultValue}):i.jsxRuntimeExports.jsx(g.ye,{variant:c,defaultValue:a.defaultValue.value,onValueChange:e=>{p(a.filter,a.availableValues.filter(r=>r.value===e))},children:a.availableValues.map((e,r)=>i.jsxRuntimeExports.jsx(g.he,{label:`${e.label}`,value:`${e.value}`},r))}):i.jsxRuntimeExports.jsxs(i.jsxRuntimeExports.Fragment,{children:[a.ui!=="radio"?i.jsxRuntimeExports.jsx(b.ja,{options:a.availableValues,variant:c,size:"sm",isMulti:!0,isClearable:a.clearable===void 0?!0:a.clearable,isSearchable:!0,controlShouldRenderValue:!0,filterOption:b.Du(O),onChange:e=>{p(a.filter,e)},value:a.value,defaultValue:a.defaultValue}):i.jsxRuntimeExports.jsx(g.$,{variant:c,defaultValue:a.defaultValue?a.defaultValue.map(e=>`${e.value}`):[],value:a.value?a.value.map(e=>`${e.value}`):void 0,onValueChange:e=>{p(a.filter,a.availableValues.filter(r=>e.indexOf(`${r.value}`)!==-1))},children:a.availableValues.map((e,r)=>i.jsxRuntimeExports.jsx(g.P,{label:`${e.label}`,value:`${e.value}`},r))}),a.allowSelectAll?i.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:()=>{p(a.filter,a.availableValues)},children:"Select all options"}):null]})]},s))})}):null,i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]",style:{width:R==="side"?"calc(100% - 280px - 1rem)":"100%"},children:n.rows.map((a,s)=>i.jsxRuntimeExports.jsx("div",{className:"flex flex-wrap items-stretch gap-4 w-full h-auto",style:{minHeight:`${a.height||0}px`},children:a.columns.map((e,r)=>i.jsxRuntimeExports.jsx("div",{className:"flex bg-transparent grow min-w-60",style:{width:`calc(${100*(e.columnWidth||1)/w(a.columns)}% - ${(w(a.columns)-(e.columnWidth||1))/w(a.columns)}rem)`,minHeight:"inherit"},children:N.includes(e.graphType)?i.jsxRuntimeExports.jsx(I.SingleGraphDashboardThreeDGraphs,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:c,graphSettings:{...e.settings||{},width:void 0,height:void 0,minHeight:void 0,relativeHeight:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||y,classNames:e.settings?.classNames||j,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||n.language,theme:e.settings?.theme||x},dataSettings:{data:v?H.filterData(v,V||[]):void 0},dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:u,readableHeader:E||[]}):$.includes(e.graphType)?i.jsxRuntimeExports.jsx(J.SingleGraphDashboardGeoHubMaps,{graphType:e.graphType,uiMode:c,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||y,classNames:e.settings?.classNames||j,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||n.language,theme:e.settings?.theme||x},debugMode:u}):i.jsxRuntimeExports.jsx(z.SingleGraphDashboard,{graphType:e.graphType,dataFilters:e.dataFilters,uiMode:c,graphSettings:{...e.settings||{},width:void 0,height:void 0,resetSelectionOnDoubleClick:e.attachedFilter?!1:e.settings?.resetSelectionOnDoubleClick,styles:e.settings?.styles||y,classNames:e.settings?.classNames||j,radius:e.graphType==="donutChart"?void 0:e.settings?.radius,size:e.graphType==="unitChart"?e.settings?.size:void 0,language:e.settings?.language||n.language,theme:e.settings?.theme||x},dataSettings:{data:v?H.filterData(v,V||[]):void 0},updateFilters:e.attachedFilter&&X.indexOf(e.graphType)!==-1&&l.findIndex(h=>h.filter===e.attachedFilter)!==-1?h=>{const k=l.findIndex(L=>L.filter===e.attachedFilter),W=h?l[k].singleSelect?{value:h,label:h}:[{value:h,label:h}]:void 0;p(e.attachedFilter,W)}:void 0,dataTransform:e.dataTransform,dataSelectionOptions:e.dataSelectionOptions,advancedDataSelectionOptions:e.advancedDataSelectionOptions,graphDataConfiguration:e.graphDataConfiguration,debugMode:u,readableHeader:E||[]})},r))},s))})]})]})}exports.PerformanceIntensiveMultiGraphDashboard=Y;
2
2
  //# sourceMappingURL=PerformanceIntensiveMultiGraphDashboard.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerformanceIntensiveMultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/PerformanceIntensive/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\n\r\nimport { SingleGraphDashboard } from '../SingleGraphDashboard';\r\n\r\nimport { SingleGraphDashboardThreeDGraphs } from './SingleGraphDashboardThreeDGraphs';\r\nimport { SingleGraphDashboardGeoHubMaps } from './SingleGraphDashboardGeoHubMaps';\r\n\r\nimport {\r\n ClassNameObject,\r\n PerformanceIntensiveDashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n PerformanceIntensiveDashboardColumnDataType,\r\n ThreeDGraphType,\r\n GeoHubGraphType,\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\nimport { GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: PerformanceIntensiveDashboardLayoutDataType;\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: PerformanceIntensiveDashboardColumnDataType[]) => {\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 PerformanceIntensiveMultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const threeDGraphs = ['threeDGlobe'];\r\n const geoHubMaps = ['geoHubCompareMap', 'geoHubMap', 'geoHubMapWithLayerSelection'];\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 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 className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n {threeDGraphs.includes(el.graphType) ? (\r\n <SingleGraphDashboardThreeDGraphs\r\n graphType={el.graphType as ThreeDGraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\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 ) : geoHubMaps.includes(el.graphType) ? (\r\n <SingleGraphDashboardGeoHubMaps\r\n graphType={el.graphType as GeoHubGraphType}\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 debugMode={debugMode}\r\n />\r\n ) : (\r\n <SingleGraphDashboard\r\n graphType={el.graphType as 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: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType as 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 )}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","PerformanceIntensiveMultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","threeDGraphs","geoHubMaps","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","DropdownSelect","createFilter","Fragment","rows","minHeight","height","j","graphType","SingleGraphDashboardThreeDGraphs","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration","SingleGraphDashboardGeoHubMaps","SingleGraphDashboard","indexOf","findIndex","dClicked","indx"],"mappings":"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"}
1
+ {"version":3,"file":"PerformanceIntensiveMultiGraphDashboard.cjs","sources":["../src/Components/Dashboard/PerformanceIntensive/MultiGraphDashboard.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\r\nimport intersection from 'lodash.intersection';\r\nimport flattenDeep from 'lodash.flattendeep';\r\nimport { createFilter, DropdownSelect } from '@undp/design-system-react/DropdownSelect';\r\nimport { Label } from '@undp/design-system-react/Label';\r\nimport { CheckboxGroup, CheckboxGroupItem } from '@undp/design-system-react/CheckboxGroup';\r\nimport { RadioGroup, RadioGroupItem } from '@undp/design-system-react/RadioGroup';\r\n\r\nimport { SingleGraphDashboard } from '../SingleGraphDashboard';\r\n\r\nimport { SingleGraphDashboardThreeDGraphs } from './SingleGraphDashboardThreeDGraphs';\r\nimport { SingleGraphDashboardGeoHubMaps } from './SingleGraphDashboardGeoHubMaps';\r\n\r\nimport {\r\n ClassNameObject,\r\n PerformanceIntensiveDashboardLayoutDataType,\r\n DataFilterDataType,\r\n DataSettingsDataType,\r\n FilterSettingsDataType,\r\n FilterUiSettingsDataType,\r\n GraphType,\r\n StyleObject,\r\n PerformanceIntensiveDashboardColumnDataType,\r\n ThreeDGraphType,\r\n GeoHubGraphType,\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\nimport { GraphContainer } from '@/Components/Elements/GraphContainer';\r\n\r\ninterface Props {\r\n dashboardID?: string;\r\n dashboardLayout: PerformanceIntensiveDashboardLayoutDataType;\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: PerformanceIntensiveDashboardColumnDataType[]) => {\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 PerformanceIntensiveMultiGraphDashboard(props: Props) {\r\n const {\r\n dashboardID,\r\n dashboardLayout,\r\n dataSettings,\r\n filters,\r\n debugMode,\r\n theme = 'light',\r\n readableHeader,\r\n dataFilters,\r\n noOfFiltersPerRow = 4,\r\n filterPosition,\r\n uiMode = 'normal',\r\n graphStyles,\r\n graphClassNames,\r\n } = props;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [filteredData, setFilteredData] = useState<any>(undefined);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const [data, setData] = useState<any>(undefined);\r\n const [filterSettings, setFilterSettings] = useState<FilterSettingsDataType[]>([]);\r\n\r\n const threeDGraphs = ['threeDGlobe'];\r\n const geoHubMaps = ['geoHubCompareMap', 'geoHubMap', 'geoHubMapWithLayerSelection'];\r\n const filterConfig = {\r\n ignoreCase: true,\r\n ignoreAccents: true,\r\n trim: true,\r\n };\r\n\r\n const updateFiltersEvent = useEffectEvent(() => {\r\n const filterSettingsTemp = (filters || []).map(el => ({\r\n filter: el.column,\r\n label: el.label || `Filter by ${el.column}`,\r\n singleSelect: el.singleSelect,\r\n clearable: el.clearable,\r\n defaultValue: transformDefaultValue(el.defaultValue),\r\n value: transformDefaultValue(el.defaultValue),\r\n availableValues: getUniqValue(data, el.column)\r\n .filter(v => !el.excludeValues?.includes(`${v}`))\r\n .map(v => ({ value: v, label: v })),\r\n allowSelectAll: el.allowSelectAll,\r\n width: el.width,\r\n }));\r\n setFilterSettings(filterSettingsTemp);\r\n });\r\n const filteredDataEvent = useEffectEvent(() => {\r\n if (!data || filterSettings.length === 0) setFilteredData(data);\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const result = data.filter((item: any) =>\r\n filterSettings.every(filter =>\r\n filter.value && flattenDeep([filter.value]).length > 0\r\n ? intersection(\r\n flattenDeep([item[filter.filter]]),\r\n flattenDeep([filter.value]).map(el => el.value),\r\n ).length > 0\r\n : true,\r\n ),\r\n );\r\n setFilteredData(result);\r\n }\r\n });\r\n useEffect(() => {\r\n filteredDataEvent();\r\n }, [filterSettings, data]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const dataFromFile = dataSettings.dataURL\r\n ? typeof dataSettings.dataURL === 'string'\r\n ? dataSettings.fileType === 'json'\r\n ? await fetchAndParseJSON(\r\n dataSettings.dataURL,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : dataSettings.fileType === 'api'\r\n ? await fetchAndTransformDataFromAPI(\r\n dataSettings.dataURL,\r\n dataSettings.apiHeaders,\r\n dataSettings.columnsToArray,\r\n dataSettings.dataTransformation,\r\n debugMode,\r\n )\r\n : await fetchAndParseCSV(\r\n dataSettings.dataURL,\r\n dataSettings.dataTransformation,\r\n dataSettings.columnsToArray,\r\n debugMode,\r\n dataSettings.delimiter,\r\n true,\r\n )\r\n : await fetchAndParseMultipleDataSources(\r\n dataSettings.dataURL,\r\n dataSettings.idColumnTitle,\r\n )\r\n : await transformColumnsToArray(dataSettings.data, dataSettings.columnsToArray);\r\n setData(dataFromFile);\r\n } catch (error) {\r\n console.error('Data fetching error:', error);\r\n }\r\n };\r\n fetchData();\r\n updateFiltersEvent();\r\n }, [dataSettings, debugMode]);\r\n\r\n useEffect(() => {\r\n updateFiltersEvent();\r\n }, [filters, data]);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const handleFilterChange = (filter: string, values: any) => {\r\n setFilterSettings(prev => prev.map(f => (f.filter === filter ? { ...f, value: values } : f)));\r\n };\r\n return (\r\n <GraphContainer\r\n id={dashboardID}\r\n aria-label='This is a dashboard'\r\n backgroundColor={dashboardLayout.backgroundColor ?? false}\r\n theme={theme || 'light'}\r\n language={dashboardLayout.language || 'en'}\r\n padding={dashboardLayout.padding}\r\n >\r\n {dashboardLayout.title || dashboardLayout.description ? (\r\n <GraphHeader\r\n graphTitle={dashboardLayout.title}\r\n graphDescription={dashboardLayout.description}\r\n isDashboard\r\n />\r\n ) : null}\r\n <div className='flex gap-4 flex-wrap'>\r\n {filterSettings.length !== 0 ? (\r\n <div\r\n className='flex-grow flex-shrink-0'\r\n style={{\r\n width: filterPosition === 'side' ? '280px' : '100%',\r\n }}\r\n >\r\n <div className='flex flex-wrap items-start gap-4 w-full sticky top-4'>\r\n {filterSettings?.map((d, i) => (\r\n <div\r\n style={{\r\n width:\r\n d.width ||\r\n `calc(${100 / noOfFiltersPerRow}% - ${\r\n (noOfFiltersPerRow - 1) / noOfFiltersPerRow\r\n }rem)`,\r\n flexGrow: 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 d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <RadioGroup\r\n variant={uiMode}\r\n defaultValue={(d.defaultValue as { value: string; label: string }).value}\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => v.value === el),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <RadioGroupItem label={`${el.label}`} value={`${el.value}`} key={j} />\r\n ))}\r\n </RadioGroup>\r\n )\r\n ) : (\r\n <>\r\n {d.ui !== 'radio' ? (\r\n <DropdownSelect\r\n options={d.availableValues}\r\n variant={uiMode}\r\n size='sm'\r\n isMulti\r\n isClearable={d.clearable === undefined ? true : d.clearable}\r\n isSearchable\r\n controlShouldRenderValue\r\n filterOption={createFilter(filterConfig)}\r\n onChange={el => {\r\n handleFilterChange(d.filter, el);\r\n }}\r\n value={d.value}\r\n defaultValue={d.defaultValue}\r\n />\r\n ) : (\r\n <CheckboxGroup\r\n variant={uiMode}\r\n defaultValue={\r\n d.defaultValue\r\n ? (\r\n d.defaultValue as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : []\r\n }\r\n value={\r\n d.value\r\n ? (\r\n d.value as {\r\n value: string | number;\r\n label: string | number;\r\n }[]\r\n ).map(el => `${el.value}`)\r\n : undefined\r\n }\r\n onValueChange={el => {\r\n handleFilterChange(\r\n d.filter,\r\n d.availableValues.filter(v => el.indexOf(`${v.value}`) !== -1),\r\n );\r\n }}\r\n >\r\n {d.availableValues.map((el, j) => (\r\n <CheckboxGroupItem\r\n label={`${el.label}`}\r\n value={`${el.value}`}\r\n key={j}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n )}\r\n {d.allowSelectAll ? (\r\n <button\r\n type='button'\r\n className='bg-transparent border-0 p-0 mt-2 cursor-pointer text-primary-blue-600 dark:text-primary-blue-400'\r\n onClick={() => {\r\n handleFilterChange(d.filter, d.availableValues);\r\n }}\r\n >\r\n Select all options\r\n </button>\r\n ) : null}\r\n </>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n ) : null}\r\n <div\r\n className='flex flex-wrap gap-4 flex-grow flex-shrink-0 min-w-[280px]'\r\n style={{\r\n width: filterPosition === 'side' ? 'calc(100% - 280px - 1rem)' : '100%',\r\n }}\r\n >\r\n {dashboardLayout.rows.map((d, i) => (\r\n <div\r\n key={i}\r\n className='flex flex-wrap items-stretch gap-4 w-full h-auto'\r\n style={{\r\n minHeight: `${d.height || 0}px`,\r\n }}\r\n >\r\n {d.columns.map((el, j) => (\r\n <div\r\n key={j}\r\n className='flex bg-transparent grow min-w-60'\r\n style={{\r\n width: `calc(${(100 * (el.columnWidth || 1)) / TotalWidth(d.columns)}% - ${\r\n (TotalWidth(d.columns) - (el.columnWidth || 1)) / TotalWidth(d.columns)\r\n }rem)`,\r\n minHeight: 'inherit',\r\n }}\r\n >\r\n {threeDGraphs.includes(el.graphType) ? (\r\n <SingleGraphDashboardThreeDGraphs\r\n graphType={el.graphType as ThreeDGraphType}\r\n dataFilters={el.dataFilters}\r\n uiMode={uiMode}\r\n graphSettings={{\r\n ...(el.settings || {}),\r\n width: undefined,\r\n height: undefined,\r\n minHeight: undefined,\r\n relativeHeight: undefined,\r\n resetSelectionOnDoubleClick: el.attachedFilter\r\n ? false\r\n : el.settings?.resetSelectionOnDoubleClick,\r\n styles: el.settings?.styles || graphStyles,\r\n classNames: el.settings?.classNames || graphClassNames,\r\n radius: el.graphType === 'donutChart' ? undefined : el.settings?.radius,\r\n size: el.graphType === 'unitChart' ? el.settings?.size : undefined,\r\n language: el.settings?.language || dashboardLayout.language,\r\n theme: el.settings?.theme || theme,\r\n }}\r\n dataSettings={{\r\n data: filteredData\r\n ? filterData(filteredData, dataFilters || [])\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 ) : geoHubMaps.includes(el.graphType) ? (\r\n <SingleGraphDashboardGeoHubMaps\r\n graphType={el.graphType as GeoHubGraphType}\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 debugMode={debugMode}\r\n />\r\n ) : (\r\n <SingleGraphDashboard\r\n graphType={el.graphType as 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: filteredData\r\n ? filterData(filteredData, dataFilters || [])\r\n : undefined,\r\n }}\r\n updateFilters={\r\n el.attachedFilter &&\r\n GraphWithAttachedFilter.indexOf(el.graphType as 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 )}\r\n </div>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </GraphContainer>\r\n );\r\n}\r\n"],"names":["TotalWidth","columns","map","d","columnWidth","reduce","acc","cur","GraphWithAttachedFilter","PerformanceIntensiveMultiGraphDashboard","props","dashboardID","dashboardLayout","dataSettings","filters","debugMode","theme","readableHeader","dataFilters","noOfFiltersPerRow","filterPosition","uiMode","graphStyles","graphClassNames","filteredData","setFilteredData","useState","undefined","data","setData","filterSettings","setFilterSettings","threeDGraphs","geoHubMaps","filterConfig","ignoreCase","ignoreAccents","trim","updateFiltersEvent","useEffectEvent","filterSettingsTemp","el","filter","column","label","singleSelect","clearable","defaultValue","transformDefaultValue","value","availableValues","getUniqValue","v","excludeValues","includes","allowSelectAll","width","filteredDataEvent","length","result","item","every","flattenDeep","intersection","useEffect","dataFromFile","dataURL","fileType","fetchAndParseJSON","columnsToArray","dataTransformation","fetchAndTransformDataFromAPI","apiHeaders","fetchAndParseCSV","delimiter","fetchAndParseMultipleDataSources","idColumnTitle","transformColumnsToArray","error","console","fetchData","handleFilterChange","values","prev","f","GraphContainer","backgroundColor","language","padding","title","description","jsx","GraphHeader","jsxs","i","flexGrow","flexShrink","minWidth","Label","ui","DropdownSelect","createFilter","RadioGroup","j","RadioGroupItem","Fragment","CheckboxGroup","indexOf","CheckboxGroupItem","rows","minHeight","height","graphType","SingleGraphDashboardThreeDGraphs","settings","relativeHeight","resetSelectionOnDoubleClick","attachedFilter","styles","classNames","radius","size","filterData","dataTransform","dataSelectionOptions","advancedDataSelectionOptions","graphDataConfiguration","SingleGraphDashboardGeoHubMaps","SingleGraphDashboard","findIndex","dClicked","indx"],"mappings":"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"}
@@ -214,6 +214,7 @@ declare type FilterUiSettingsDataType = {
214
214
  excludeValues?: string[];
215
215
  allowSelectAll?: boolean;
216
216
  width?: string;
217
+ ui?: 'select' | 'radio';
217
218
  };
218
219
 
219
220
  declare interface FogDataType {