datastake-daf 0.6.99 → 0.6.100

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 (56) hide show
  1. package/.vscode/settings.json +13 -0
  2. package/dist/components/index.js +114 -54
  3. package/dist/style/datastake/_index.css +5 -0
  4. package/dist/style/datastake/datastake.css +5081 -0
  5. package/dist/style/datastake/fonts/Outfit-Black.ttf +0 -0
  6. package/dist/style/datastake/fonts/Outfit-Bold.ttf +0 -0
  7. package/dist/style/datastake/fonts/Outfit-ExtraBold.ttf +0 -0
  8. package/dist/style/datastake/fonts/Outfit-ExtraLight.ttf +0 -0
  9. package/dist/style/datastake/fonts/Outfit-Light.ttf +0 -0
  10. package/dist/style/datastake/fonts/Outfit-Medium.ttf +0 -0
  11. package/dist/style/datastake/fonts/Outfit-Regular.ttf +0 -0
  12. package/dist/style/datastake/fonts/Outfit-SemiBold.ttf +0 -0
  13. package/dist/style/datastake/fonts/Outfit-Thin.ttf +0 -0
  14. package/dist/style/datastake/fonts/outfit.css +62 -0
  15. package/dist/style/datastake/fonts/sf-ui-display-black-58646a6b80d5a.woff +0 -0
  16. package/dist/style/datastake/fonts/sf-ui-display-bold-58646a511e3d9.woff +0 -0
  17. package/dist/style/datastake/fonts/sf-ui-display-heavy-586470160b9e5.woff +0 -0
  18. package/dist/style/datastake/fonts/sf-ui-display-light-58646b33e0551.woff +0 -0
  19. package/dist/style/datastake/fonts/sf-ui-display-medium-58646be638f96.woff +0 -0
  20. package/dist/style/datastake/fonts/sf-ui-display-semibold-58646eddcae92.woff +0 -0
  21. package/dist/style/datastake/fonts/sf-ui-display-thin-58646e9b26e8b.woff +0 -0
  22. package/dist/style/datastake/fonts/sf-ui-display-ultralight-58646b19bf205.woff +0 -0
  23. package/dist/style/datastake/fonts/sfDisplay.css +59 -0
  24. package/dist/style/datastake/leaflet.css +671 -0
  25. package/dist/style/datastake/leaflet.markercluster.css +60 -0
  26. package/dist/style/style.css +1 -0
  27. package/package.json +1 -1
  28. package/rollup.config.js +83 -41
  29. package/src/@daf/core/components/Dashboard/Map/helper.js +439 -434
  30. package/src/@daf/core/components/Dashboard/Map/storyConfig1.js +233 -230
  31. package/src/helpers/Map.js +82 -6
  32. package/src/styles/_index.scss +1 -1
  33. package/src/styles/datastake/_index.css +5 -0
  34. package/src/styles/datastake/datastake.css +5081 -0
  35. package/src/styles/datastake/fonts/Outfit-Black.ttf +0 -0
  36. package/src/styles/datastake/fonts/Outfit-Bold.ttf +0 -0
  37. package/src/styles/datastake/fonts/Outfit-ExtraBold.ttf +0 -0
  38. package/src/styles/datastake/fonts/Outfit-ExtraLight.ttf +0 -0
  39. package/src/styles/datastake/fonts/Outfit-Light.ttf +0 -0
  40. package/src/styles/datastake/fonts/Outfit-Medium.ttf +0 -0
  41. package/src/styles/datastake/fonts/Outfit-Regular.ttf +0 -0
  42. package/src/styles/datastake/fonts/Outfit-SemiBold.ttf +0 -0
  43. package/src/styles/datastake/fonts/Outfit-Thin.ttf +0 -0
  44. package/src/styles/datastake/fonts/outfit.css +62 -0
  45. package/src/styles/datastake/fonts/sf-ui-display-black-58646a6b80d5a.woff +0 -0
  46. package/src/styles/datastake/fonts/sf-ui-display-bold-58646a511e3d9.woff +0 -0
  47. package/src/styles/datastake/fonts/sf-ui-display-heavy-586470160b9e5.woff +0 -0
  48. package/src/styles/datastake/fonts/sf-ui-display-light-58646b33e0551.woff +0 -0
  49. package/src/styles/datastake/fonts/sf-ui-display-medium-58646be638f96.woff +0 -0
  50. package/src/styles/datastake/fonts/sf-ui-display-semibold-58646eddcae92.woff +0 -0
  51. package/src/styles/datastake/fonts/sf-ui-display-thin-58646e9b26e8b.woff +0 -0
  52. package/src/styles/datastake/fonts/sf-ui-display-ultralight-58646b19bf205.woff +0 -0
  53. package/src/styles/datastake/fonts/sfDisplay.css +59 -0
  54. package/src/styles/datastake/leaflet.css +671 -0
  55. package/src/styles/datastake/leaflet.markercluster.css +60 -0
  56. package/src/styles/datastake.scss +1 -4454
@@ -5,238 +5,241 @@ import MoreTags from "../../Table/MoreTags";
5
5
  const isMineSite = true;
6
6
 
7
7
  export const storyConfig = {
8
- data: [
9
- {
10
- gps: {
11
- latitude: -1.545726158025555,
12
- longitude: 28.875630614904935,
13
- },
14
- name: "Rubaya",
15
- datastakeId: "LOC-00000000241",
16
- data: [
17
- {
18
- _id: "68af116e2cb57a4e3dd2e056",
19
- createdBy: "4274fdb4-2798-46ea-a0a6-b4af5d92566e",
20
- form: "event",
21
- id: "91c3176a-d312-4259-9ddf-9d286ff6df87",
22
- datastakeId: "EV-000000000150",
23
- name: "Eboulement",
24
- authorId: "7e17f076-09e7-4668-927c-11c12ccd1346",
25
- collectId: "d78271301d04f76dfe0f70ce3c9e114ffe4dc4e0",
26
- country: "CD",
27
- date: "2025-08-25",
28
- typeOfEvent: "incident",
29
- implementers: [],
30
- associatedSubjects: [],
31
- testimonialsSource: [],
32
- pictures: [],
33
- documents: [],
34
- channels: ["NAS-00000000105"],
35
- published: true,
36
- version: 1,
37
- identifiedPerpetrators: [],
38
- identifiedVictims: [],
39
- assistedVictims: [],
40
- mitigationMeasures: [],
41
- createdAt: "2025-08-27T00:00:00.000Z",
42
- updatedAt: "2025-08-27T14:12:21.395Z",
43
- __v: 0,
44
- percentageCompletion: 40,
45
- eventCategory: "conflict",
46
- incindentType: null,
47
- initiative: null,
48
- meta: null,
49
- namespace: "incident",
50
- primarySource: null,
51
- severity: "moderate",
52
- sources: ["7e17f076-09e7-4668-927c-11c12ccd1346"],
53
- type: "minor_incident",
54
- },
55
- {
56
- _id: "68af1fb6b52f86d82f57e945",
57
- createdBy: "b1e3f288-01a2-4cea-95d2-03f65dfede99",
58
- form: "event",
59
- id: "5bee0d0f-39da-4bd1-85a4-e66276c82303",
60
- datastakeId: "EV-000000000153",
61
- name: "Request of security equipment",
62
- authorId: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
63
- collectId: "2142bd9f3306c9ec3c823f63bbbbb8fe3ebad7fa",
64
- country: "CD",
65
- date: "2025-08-11",
66
- typeOfEvent: "testimonials",
67
- implementers: [],
68
- typeOfTestimonials: "request",
69
- associatedSubjects: [],
70
- testimonialsSource: [],
71
- pictures: [],
72
- documents: [],
73
- channels: [],
74
- published: true,
75
- version: 1,
76
- identifiedPerpetrators: [],
77
- identifiedVictims: [],
78
- assistedVictims: [],
79
- mitigationMeasures: [],
80
- createdAt: "2025-08-27T00:00:00.000Z",
81
- updatedAt: "2025-08-27T15:10:00.619Z",
82
- __v: 0,
83
- percentageCompletion: 50,
84
- meta: null,
85
- namespace: "testimonials",
86
- sources: ["fc4ca5c6-f46d-424f-a948-d66b031a82c3"],
87
- type: "correctiveActions",
88
- },
89
- {
90
- _id: "68af5d45b52f86d82f580fc8",
91
- createdBy: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
92
- form: "event",
93
- id: "97348b4c-f7cf-4124-9b70-0f6891a40a15",
94
- datastakeId: "EV-000000000161",
95
- name: "76867485768",
96
- authorId: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
97
- collectId: "33b9aea707761a7a735aee81ebd29d5656f049fa",
98
- country: "CD",
99
- date: "2025-08-11",
100
- typeOfEvent: "incident",
101
- implementers: [],
102
- associatedSubjects: [],
103
- testimonialsSource: [],
104
- pictures: [],
105
- documents: [],
106
- channels: [],
107
- published: false,
108
- version: 1,
109
- identifiedPerpetrators: [],
110
- identifiedVictims: [],
111
- assistedVictims: [],
112
- mitigationMeasures: [],
113
- createdAt: "2025-08-27T00:00:00.000Z",
114
- updatedAt: "2025-08-27T00:00:00.000Z",
115
- __v: 0,
116
- percentageCompletion: 40,
117
- eventCategory: null,
118
- initiative: null,
119
- meta: null,
120
- namespace: "incident",
121
- primarySource: null,
122
- severity: "major",
123
- sources: ["fc4ca5c6-f46d-424f-a948-d66b031a82c3"],
124
- type: "major_incident",
125
- },
126
- ],
127
- type: "Mine site",
128
- total: 5,
129
- sources: 2,
130
- },
131
- ],
132
- filtersConfig: [
133
- {
134
- label: "Location type",
135
- placeholder: "Select",
136
- key: "type",
137
- type: "select",
138
- value: "A",
139
- options: [{ label: "Typ A", value: "A" }],
140
- },
141
- {
142
- label: "Location type",
143
- placeholder: "Select",
144
- key: "type2",
145
- type: "select",
146
- value: undefined,
147
- options: [{ label: "Typ A", value: "A" }],
148
- },
149
- ],
150
- onFilterChange: (v) => {
151
- console.log(v);
152
- },
153
- // tooltipAsText: true,
154
- primaryLink: true,
155
- renderSider: () =>
156
- isMineSite ? (
157
- <div className="body-list">
158
- <div className="body-row">
159
- <span className="label">Territory</span>
160
- <span>Territory</span>
161
- </div>
8
+ data: [
9
+ {
10
+ gps: {
11
+ latitude: -1.545726158025555,
12
+ longitude: 28.875630614904935,
13
+ },
14
+ name: "Rubaya",
15
+ datastakeId: "LOC-00000000241",
16
+ data: [
17
+ {
18
+ _id: "68af116e2cb57a4e3dd2e056",
19
+ createdBy: "4274fdb4-2798-46ea-a0a6-b4af5d92566e",
20
+ form: "event",
21
+ id: "91c3176a-d312-4259-9ddf-9d286ff6df87",
22
+ datastakeId: "EV-000000000150",
23
+ name: "Eboulement",
24
+ authorId: "7e17f076-09e7-4668-927c-11c12ccd1346",
25
+ collectId: "d78271301d04f76dfe0f70ce3c9e114ffe4dc4e0",
26
+ country: "CD",
27
+ date: "2025-08-25",
28
+ typeOfEvent: "incident",
29
+ implementers: [],
30
+ associatedSubjects: [],
31
+ testimonialsSource: [],
32
+ pictures: [],
33
+ documents: [],
34
+ channels: ["NAS-00000000105"],
35
+ published: true,
36
+ version: 1,
37
+ identifiedPerpetrators: [],
38
+ identifiedVictims: [],
39
+ assistedVictims: [],
40
+ mitigationMeasures: [],
41
+ createdAt: "2025-08-27T00:00:00.000Z",
42
+ updatedAt: "2025-08-27T14:12:21.395Z",
43
+ __v: 0,
44
+ percentageCompletion: 40,
45
+ eventCategory: "conflict",
46
+ incindentType: null,
47
+ initiative: null,
48
+ meta: null,
49
+ namespace: "incident",
50
+ primarySource: null,
51
+ severity: "moderate",
52
+ sources: ["7e17f076-09e7-4668-927c-11c12ccd1346"],
53
+ type: "minor_incident",
54
+ },
55
+ {
56
+ _id: "68af1fb6b52f86d82f57e945",
57
+ createdBy: "b1e3f288-01a2-4cea-95d2-03f65dfede99",
58
+ form: "event",
59
+ id: "5bee0d0f-39da-4bd1-85a4-e66276c82303",
60
+ datastakeId: "EV-000000000153",
61
+ name: "Request of security equipment",
62
+ authorId: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
63
+ collectId: "2142bd9f3306c9ec3c823f63bbbbb8fe3ebad7fa",
64
+ country: "CD",
65
+ date: "2025-08-11",
66
+ typeOfEvent: "testimonials",
67
+ implementers: [],
68
+ typeOfTestimonials: "request",
69
+ associatedSubjects: [],
70
+ testimonialsSource: [],
71
+ pictures: [],
72
+ documents: [],
73
+ channels: [],
74
+ published: true,
75
+ version: 1,
76
+ identifiedPerpetrators: [],
77
+ identifiedVictims: [],
78
+ assistedVictims: [],
79
+ mitigationMeasures: [],
80
+ createdAt: "2025-08-27T00:00:00.000Z",
81
+ updatedAt: "2025-08-27T15:10:00.619Z",
82
+ __v: 0,
83
+ percentageCompletion: 50,
84
+ meta: null,
85
+ namespace: "testimonials",
86
+ sources: ["fc4ca5c6-f46d-424f-a948-d66b031a82c3"],
87
+ type: "correctiveActions",
88
+ },
89
+ {
90
+ _id: "68af5d45b52f86d82f580fc8",
91
+ createdBy: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
92
+ form: "event",
93
+ id: "97348b4c-f7cf-4124-9b70-0f6891a40a15",
94
+ datastakeId: "EV-000000000161",
95
+ name: "76867485768",
96
+ authorId: "fc4ca5c6-f46d-424f-a948-d66b031a82c3",
97
+ collectId: "33b9aea707761a7a735aee81ebd29d5656f049fa",
98
+ country: "CD",
99
+ date: "2025-08-11",
100
+ typeOfEvent: "incident",
101
+ implementers: [],
102
+ associatedSubjects: [],
103
+ testimonialsSource: [],
104
+ pictures: [],
105
+ documents: [],
106
+ channels: [],
107
+ published: false,
108
+ version: 1,
109
+ identifiedPerpetrators: [],
110
+ identifiedVictims: [],
111
+ assistedVictims: [],
112
+ mitigationMeasures: [],
113
+ createdAt: "2025-08-27T00:00:00.000Z",
114
+ updatedAt: "2025-08-27T00:00:00.000Z",
115
+ __v: 0,
116
+ percentageCompletion: 40,
117
+ eventCategory: null,
118
+ initiative: null,
119
+ meta: null,
120
+ namespace: "incident",
121
+ primarySource: null,
122
+ severity: "major",
123
+ sources: ["fc4ca5c6-f46d-424f-a948-d66b031a82c3"],
124
+ type: "major_incident",
125
+ },
126
+ ],
127
+ type: "Mine site",
128
+ total: 5,
129
+ sources: 2,
130
+ },
131
+ ],
132
+ filtersConfig: [
133
+ {
134
+ label: "Location type",
135
+ placeholder: "Select",
136
+ key: "type",
137
+ type: "select",
138
+ value: "A",
139
+ options: [{ label: "Typ A", value: "A" }],
140
+ },
141
+ {
142
+ label: "Location type",
143
+ placeholder: "Select",
144
+ key: "type2",
145
+ type: "select",
146
+ value: undefined,
147
+ options: [{ label: "Typ A", value: "A" }],
148
+ },
149
+ ],
150
+ onFilterChange: (v) => {
151
+ console.log(v);
152
+ },
153
+ // tooltipAsText: true,
154
+ primaryLink: true,
155
+ renderSider: () =>
156
+ isMineSite ? (
157
+ <div className="body-list">
158
+ <div className="body-row">
159
+ <span className="label">Territory</span>
160
+ <span>Territory</span>
161
+ </div>
162
162
 
163
- <div className="body-row">
164
- <span className="label">Territory</span>
165
- <span>Territory</span>
166
- </div>
163
+ <div className="body-row">
164
+ <span className="label">Territory</span>
165
+ <span>Territory</span>
166
+ </div>
167
167
 
168
- <div className="body-row">
169
- <span className="label">Territory</span>
170
- <span>Territory</span>
171
- </div>
172
- </div>
173
- ) : (
174
- <div className="daf-table-wrapper extra-small">
175
- <DAFTable
176
- loading={false}
177
- scroll={{ y: 300 }}
178
- className="no-padding no-margin"
179
- data={[
180
- { worker: "Redis RIra", activity: "1234", key: 0 },
181
- { empty: true, key: 1 },
182
- { empty: true, key: 2 },
183
- { empty: true, key: 3 },
184
- { empty: true, key: 4 },
185
- { empty: true, key: 5 },
186
- { empty: true, key: 6 },
187
- { empty: true, key: 7 },
188
- { empty: true, key: 8 },
189
- ]}
190
- pagination={false}
191
- columns={[
192
- {
193
- title: "Worker",
194
- dataIndex: "worker",
195
- key: "worker",
196
- ellipsis: true,
197
- width: 90,
198
- },
199
- {
200
- title: "Activity",
201
- dataIndex: "activity",
202
- key: "activity",
203
- width: 90,
204
- render: (_, all) => {
205
- if (all.empty) {
206
- return <div className="daf-default-cell md" />;
207
- }
168
+ <div className="body-row">
169
+ <span className="label">Territory</span>
170
+ <span>Territory</span>
171
+ </div>
172
+ </div>
173
+ ) : (
174
+ <div className="daf-table-wrapper extra-small">
175
+ <DAFTable
176
+ loading={false}
177
+ scroll={{ y: 300 }}
178
+ className="no-padding no-margin"
179
+ data={[
180
+ { worker: "Redis RIra", activity: "1234", key: 0 },
181
+ { empty: true, key: 1 },
182
+ { empty: true, key: 2 },
183
+ { empty: true, key: 3 },
184
+ { empty: true, key: 4 },
185
+ { empty: true, key: 5 },
186
+ { empty: true, key: 6 },
187
+ { empty: true, key: 7 },
188
+ { empty: true, key: 8 },
189
+ ]}
190
+ pagination={false}
191
+ columns={[
192
+ {
193
+ title: "Worker",
194
+ dataIndex: "worker",
195
+ key: "worker",
196
+ ellipsis: true,
197
+ width: 90,
198
+ },
199
+ {
200
+ title: "Activity",
201
+ dataIndex: "activity",
202
+ key: "activity",
203
+ width: 90,
204
+ render: (_, all) => {
205
+ if (all.empty) {
206
+ return <div className="daf-default-cell md" />;
207
+ }
208
208
 
209
- return (
210
- <MoreTags values={[{ label: "DDdadsdas" }]} maxTextCont={40} />
211
- );
212
- },
213
- },
214
- {
215
- title: "",
216
- dataIndex: "action",
217
- key: "action",
218
- width: 34,
219
- render: (_, all) => {
220
- if (all.empty) {
221
- return <div className="daf-default-cell md" />;
222
- }
209
+ return (
210
+ <MoreTags
211
+ values={[{ label: "DDdadsdas" }]}
212
+ maxTextCont={40}
213
+ />
214
+ );
215
+ },
216
+ },
217
+ {
218
+ title: "",
219
+ dataIndex: "action",
220
+ key: "action",
221
+ width: 34,
222
+ render: (_, all) => {
223
+ if (all.empty) {
224
+ return <div className="daf-default-cell md" />;
225
+ }
223
226
 
224
- return <CustomIcon name="LinkNewTab" width={12} height={12} />;
225
- },
226
- },
227
- ]}
228
- rowKey="key"
229
- />
230
- </div>
231
- ),
232
- renderTooltip: (data) => {
233
- return [
234
- { label: "Workers", value: data?.administrativeLevel1 },
235
- { label: "Opinion", value: "RROFTE GERRDECI " },
236
- ];
237
- },
238
- link: true,
239
- onClickLink: (data) => {
240
- console.log(data);
241
- },
227
+ return <CustomIcon name="LinkNewTab" width={12} height={12} />;
228
+ },
229
+ },
230
+ ]}
231
+ rowKey="key"
232
+ />
233
+ </div>
234
+ ),
235
+ renderTooltip: (data) => {
236
+ return [
237
+ { label: "Workers", value: data?.administrativeLevel1 },
238
+ { label: "Opinion", value: "RROFTE GERRDECI " },
239
+ ];
240
+ },
241
+ link: true,
242
+ onClickLink: (data) => {
243
+ console.log(data);
244
+ },
242
245
  };
@@ -1,4 +1,10 @@
1
- import L from 'leaflet';
1
+ import L from "leaflet";
2
+ const EVENT_COLORS = {
3
+ MAJOR: "#cf1322", // Red for major incidents
4
+ MODERATE: "#fa8c16", // Orange for moderate incidents
5
+ MINOR: "#fadb14", // Yellow for minor incidents
6
+ CORRECTIVE: "#12b76a", // Green for corrective actions
7
+ };
2
8
 
3
9
  /**
4
10
  * Converts a latitude or longitude coordinate to degrees, minutes and seconds.
@@ -15,7 +21,7 @@ export const toDegreesMinutesAndSeconds = (coordinate) => {
15
21
  var minutes = Math.floor(minutesNotTruncated);
16
22
  var seconds = Math.floor((minutesNotTruncated - minutes) * 60);
17
23
  return degrees + "°" + minutes + "'" + seconds;
18
- }
24
+ };
19
25
 
20
26
  /**
21
27
  * Converts latitude and longitude coordinates in decimal degrees to degrees, minutes and seconds.
@@ -28,12 +34,82 @@ export const toDegreesMinutesAndSeconds = (coordinate) => {
28
34
  */
29
35
  export const convertDMS = (lat, lng) => {
30
36
  const latitude = toDegreesMinutesAndSeconds(lat);
31
- const latitudeCardinal = lat >= 0 ? 'N' : 'S';
37
+ const latitudeCardinal = lat >= 0 ? "N" : "S";
32
38
  const longitude = toDegreesMinutesAndSeconds(lng);
33
- const longitudeCardinal = lng >= 0 ? 'E' : 'W';
34
- return [(latitude + '"' + latitudeCardinal), (longitude + '"' + longitudeCardinal)];
35
- }
39
+ const longitudeCardinal = lng >= 0 ? "E" : "W";
40
+ return [
41
+ latitude + '"' + latitudeCardinal,
42
+ longitude + '"' + longitudeCardinal,
43
+ ];
44
+ };
36
45
 
37
46
  export const southWest = L.latLng(85, -180),
38
47
  northEast = L.latLng(-85, 180),
39
48
  maxBounds = L.latLngBounds(southWest, northEast);
49
+
50
+ export const getEventMarkerStyle = (data) => {
51
+ const incidents = data?.data || [];
52
+
53
+ const totals = {
54
+ major: incidents.filter((d) => d.type === "major_incident").length,
55
+ minor: incidents.filter((d) => d.type === "minor_incident").length,
56
+ moderate: incidents.filter((d) => d.type === "moderate_incident").length,
57
+ correctiveActions: incidents.filter((d) => d.type === "correctiveActions")
58
+ .length,
59
+ };
60
+
61
+ const total = incidents.length;
62
+ let background = "#f1f1f1";
63
+
64
+ if (total > 0) {
65
+ // Build a dynamic array of categories with colors & percentages
66
+ const categories = [
67
+ { key: "major", value: totals.major, color: EVENT_COLORS.MAJOR },
68
+ {
69
+ key: "moderate",
70
+ value: totals.moderate,
71
+ color: EVENT_COLORS.MODERATE,
72
+ },
73
+ { key: "minor", value: totals.minor, color: EVENT_COLORS.MINOR },
74
+ {
75
+ key: "corrective",
76
+ value: totals.correctiveActions,
77
+ color: EVENT_COLORS.CORRECTIVE,
78
+ },
79
+ ]
80
+ .filter((c) => c.value > 0)
81
+ .map((c) => ({ ...c, perc: (c.value / total) * 100 }));
82
+
83
+ if (categories.length === 1) {
84
+ background = categories[0].color;
85
+ } else {
86
+ let currentStop = 0;
87
+ const gradientStops = categories.map((cat, index) => {
88
+ const stop = categories
89
+ .slice(0, index)
90
+ .reduce((acc, c) => acc + c.perc, 0);
91
+
92
+ return `${cat.color} ${Math.round(stop)}%`;
93
+ });
94
+
95
+ background = `radial-gradient(circle, ${gradientStops.join(", ")})`;
96
+ }
97
+ }
98
+
99
+ let radius = 35;
100
+
101
+ if (data.total > 20) {
102
+ radius = 65;
103
+ } else if (data.total > 10) {
104
+ radius = 50;
105
+ } else {
106
+ radius = 40;
107
+ }
108
+
109
+ return {
110
+ radius,
111
+ background,
112
+ totals,
113
+ total,
114
+ };
115
+ };
@@ -6,7 +6,7 @@
6
6
  @import "./layout/index";
7
7
  @import "./pages/index";
8
8
  @import "./xyflow.scss";
9
- @import "./datastake.scss";
9
+ /* @import "./datastake.scss"; */
10
10
  // form classes
11
11
 
12
12
  .max-char-cont {
@@ -0,0 +1,5 @@
1
+ @import "./fonts/outfit.css";
2
+ @import "./fonts/sfDisplay.css";
3
+ @import "./datastake.css";
4
+ @import "./leaflet.css";
5
+ @import "./leaflet.markercluster.css";