datastake-daf 0.6.813 → 0.6.815
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/favicon.ico +0 -0
- package/build/logo192.png +0 -0
- package/build/logo512.png +0 -0
- package/build/manifest.json +25 -0
- package/build/robots.txt +3 -0
- package/dist/components/index.js +3181 -4417
- package/dist/hooks/index.js +4 -11
- package/dist/layouts/index.js +478 -464
- package/dist/pages/index.js +1123 -742
- package/dist/services/index.js +6 -56
- package/dist/utils/index.js +511 -492
- package/package.json +1 -1
- package/src/@daf/core/components/AuthForm/index.jsx +3 -12
- package/src/@daf/core/components/Dashboard/Map/ChainIcon/index.js +123 -104
- package/src/@daf/core/components/Icon/configs/index.js +3 -1
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/index.jsx +1 -0
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/hook.js +1 -0
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/index.jsx +3 -1
- package/src/@daf/core/components/Screens/Admin/AdminModals/CombineLocation/index.jsx +51 -51
- package/src/@daf/core/components/Screens/Admin/AdminModals/CombineSubjects/index.jsx +1 -6
- package/src/@daf/core/components/Screens/Admin/AdminModals/NewAccount/index.jsx +31 -56
- package/src/@daf/core/components/Screens/Admin/AdminModals/NewUser/index.jsx +10 -36
- package/src/@daf/core/components/Screens/Admin/AdminModals/TransferRights/index.jsx +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Accounts.jsx +10 -37
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Dashboard.jsx +2 -2
- package/src/@daf/core/components/Screens/Admin/AdminScreens/index.js +0 -2
- package/src/@daf/core/components/Screens/Admin/AdminTables/AccountTable/helper.js +30 -22
- package/src/@daf/core/components/Screens/Admin/AdminTables/AccountTable/index.jsx +13 -25
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/index.jsx +2 -17
- package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/index.jsx +13 -27
- package/src/@daf/core/components/Screens/Admin/AdminTables/UserTable/index.jsx +1 -0
- package/src/@daf/core/components/Screens/Admin/AdminTables/components/index.jsx +2 -4
- package/src/@daf/core/components/Screens/Admin/AdminTables/hook.js +0 -3
- package/src/@daf/core/components/Screens/Admin/AdminViews/components/Edit/index.jsx +9 -12
- package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/index.jsx +4 -16
- package/src/@daf/core/components/Screens/Admin/AdminViews/components/View/helpers.js +17 -9
- package/src/@daf/core/components/Screens/Admin/AdminViews/index.jsx +8 -9
- package/src/@daf/core/components/Screens/Admin/AppInvitation/index.jsx +99 -124
- package/src/@daf/core/components/Screens/Admin/adminRoutes.js +1 -48
- package/src/@daf/core/components/Table/index.jsx +11 -6
- package/src/@daf/hooks/useAdminDashboard.js +4 -7
- package/src/@daf/pages/Events/Activities/columns.js +15 -11
- package/src/@daf/pages/Events/Incidents/columns.js +15 -11
- package/src/@daf/pages/Events/Testimonials/columns.js +173 -0
- package/src/@daf/pages/Events/Testimonials/config.js +175 -0
- package/src/@daf/pages/Events/columns.js +7 -3
- package/src/@daf/pages/Locations/MineSite/columns.js +16 -11
- package/src/@daf/pages/Locations/columns.js +7 -3
- package/src/@daf/pages/Stakeholders/Operators/columns.js +16 -12
- package/src/@daf/pages/Stakeholders/Workers/columns.js +16 -12
- package/src/@daf/pages/Stakeholders/columns.js +8 -4
- package/src/@daf/pages/TablePage/helper.js +15 -0
- package/src/@daf/pages/View/hooks/useViewActions.js +0 -13
- package/src/@daf/pages/View/hooks/useViewPermissions.js +0 -16
- package/src/@daf/pages/View/index.jsx +4 -29
- package/src/@daf/services/AdminService.js +5 -47
- package/src/@daf/services/DashboardService.js +3 -3
- package/src/@daf/utils/filters.js +15 -13
- package/src/constants/locales/en/translation.js +0 -13
- package/src/helpers/copyToClipboard.js +0 -60
- package/src/helpers/errorHandling.js +142 -74
- package/src/utils.js +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Documents.jsx +0 -81
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Events.jsx +0 -77
- package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/column.js +0 -127
- package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/helper.js +0 -43
- package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/index.jsx +0 -201
- package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/column.js +0 -146
- package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/helper.js +0 -58
- package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/index.jsx +0 -176
package/package.json
CHANGED
|
@@ -13,20 +13,13 @@ function AuthForm ({
|
|
|
13
13
|
errors,
|
|
14
14
|
t = (key) => key,
|
|
15
15
|
executeRecaptcha = () => {},
|
|
16
|
-
getCurrentStep = () => {}
|
|
17
|
-
theme,
|
|
16
|
+
getCurrentStep = () => {}
|
|
18
17
|
}){
|
|
19
18
|
const [formInstance] = Form.useForm(form);
|
|
20
19
|
const [currentStep, setCurrentStep] = useState(0);
|
|
21
20
|
const [allFormValues, setAllFormValues] = useState(initialValues);
|
|
22
21
|
const [formErrors, setFormErrors] = useState(null);
|
|
23
22
|
|
|
24
|
-
const buttonStyle = theme?.colorPrimary ? {
|
|
25
|
-
backgroundColor: theme.colorPrimary,
|
|
26
|
-
borderColor: theme.colorPrimary,
|
|
27
|
-
} : {};
|
|
28
|
-
|
|
29
|
-
|
|
30
23
|
const isMultiStep = !!steps;
|
|
31
24
|
const currentFields = isMultiStep ? steps?.[currentStep]?.fields : fields || [];
|
|
32
25
|
|
|
@@ -173,7 +166,6 @@ function AuthForm ({
|
|
|
173
166
|
name: field.name,
|
|
174
167
|
label: field.label,
|
|
175
168
|
rules: field.rules,
|
|
176
|
-
dependencies: field.dependencies,
|
|
177
169
|
style: { marginBottom: 0 }
|
|
178
170
|
};
|
|
179
171
|
if (field.valuePropName && field.type !== 'select') {
|
|
@@ -225,7 +217,6 @@ function AuthForm ({
|
|
|
225
217
|
htmlType="submit"
|
|
226
218
|
disabled={isLastStep && !allFieldsFilled}
|
|
227
219
|
block className="normal-br"
|
|
228
|
-
style={buttonStyle}
|
|
229
220
|
>
|
|
230
221
|
{isLastStep ? submitText : t("Next")}
|
|
231
222
|
</BorderedButton>
|
|
@@ -234,14 +225,14 @@ function AuthForm ({
|
|
|
234
225
|
}}
|
|
235
226
|
</Form.Item>
|
|
236
227
|
<div className="buttons" style={{ marginTop: 0}}>
|
|
237
|
-
<BorderedButton onClick={prev} block className="normal-br"
|
|
228
|
+
<BorderedButton onClick={prev} block className="normal-br">
|
|
238
229
|
{t("Back")}
|
|
239
230
|
</BorderedButton>
|
|
240
231
|
</div>
|
|
241
232
|
</div>
|
|
242
233
|
) : (
|
|
243
234
|
<div className="buttons" style={{ marginTop: isMultiStep ? '16px' : 0}}>
|
|
244
|
-
<BorderedButton type="primary" htmlType="submit" block className="normal-br"
|
|
235
|
+
<BorderedButton type="primary" htmlType="submit" block className="normal-br">
|
|
245
236
|
{isMultiStep ? t("Next") : submitText}
|
|
246
237
|
</BorderedButton>
|
|
247
238
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { useMemo, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { createPortal } from "react-dom";
|
|
2
3
|
import {
|
|
3
4
|
isMineSite,
|
|
4
5
|
getStakeholderPosition,
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
import MineSiteMarker from "./Markers/SVG/MinesiteMarker.js";
|
|
11
12
|
import VillageMarker from "./Markers/SVG/VillageMarker.js";
|
|
12
13
|
import StakeholderIcon from "./Markers/StakeholderMarker.js";
|
|
13
|
-
import { createRoot } from "react-dom/client";
|
|
14
14
|
import * as L from "leaflet";
|
|
15
15
|
import { Popover } from "antd";
|
|
16
16
|
import { renderTooltipJsx } from "../../../../../utils/tooltip.js";
|
|
@@ -32,8 +32,8 @@ export default function LocationIcon({
|
|
|
32
32
|
activeMarker,
|
|
33
33
|
setActiveMarker,
|
|
34
34
|
}) {
|
|
35
|
-
const
|
|
36
|
-
const
|
|
35
|
+
const markersRef = useRef([]);
|
|
36
|
+
const [portalContainers, setPortalContainers] = useState([]);
|
|
37
37
|
const isSelected = selectedMarkersId.includes(data.datastakeId);
|
|
38
38
|
const Marker = useMemo(() => {
|
|
39
39
|
if (isMineSite(data.type)) {
|
|
@@ -114,25 +114,31 @@ export default function LocationIcon({
|
|
|
114
114
|
}, [JSON.stringify(allData), JSON.stringify(data.links), JSON.stringify(data.stakeholders), zoom]);
|
|
115
115
|
|
|
116
116
|
const stakeholdersOfLocation = useMemo(() => {
|
|
117
|
-
return data?.stakeholders || []
|
|
118
|
-
|
|
117
|
+
return (data?.stakeholders || []).filter(stakeholder => {
|
|
118
|
+
if (!stakeholder.links || stakeholder.links.length === 0) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const locationsWithThisStakeholder = allData
|
|
123
|
+
.filter(loc =>
|
|
124
|
+
loc.stakeholders?.some(s => s.datastakeId === stakeholder.datastakeId)
|
|
125
|
+
)
|
|
126
|
+
.map(loc => loc.datastakeId);
|
|
127
|
+
|
|
128
|
+
const primaryLocation = locationsWithThisStakeholder.sort()[0];
|
|
129
|
+
return data.datastakeId === primaryLocation;
|
|
130
|
+
});
|
|
131
|
+
}, [data.stakeholders, data.datastakeId, allData, zoom]);
|
|
119
132
|
|
|
120
133
|
useEffect(() => {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
currentMarkers.forEach(marker => {
|
|
125
|
-
if (mapRef.hasLayer(marker)) {
|
|
134
|
+
markersRef.current.forEach(marker => {
|
|
135
|
+
if (mapRef && mapRef.hasLayer(marker)) {
|
|
126
136
|
mapRef.removeLayer(marker);
|
|
127
137
|
}
|
|
128
138
|
});
|
|
129
|
-
currentRoots.forEach(root => {
|
|
130
|
-
root.unmount();
|
|
131
|
-
});
|
|
132
|
-
currentRoots.clear();
|
|
133
139
|
markersRef.current = [];
|
|
140
|
+
setPortalContainers([]);
|
|
134
141
|
|
|
135
|
-
// Only create stakeholder markers if this location or any of its stakeholders are selected
|
|
136
142
|
const shouldShowStakeholders = isSelected || stakeholdersOfLocation.some(stk =>
|
|
137
143
|
selectedMarkersId.includes(stk.datastakeId)
|
|
138
144
|
);
|
|
@@ -141,9 +147,11 @@ export default function LocationIcon({
|
|
|
141
147
|
return;
|
|
142
148
|
}
|
|
143
149
|
|
|
144
|
-
// Create
|
|
150
|
+
// Create markers and store their container references
|
|
151
|
+
const containers = [];
|
|
152
|
+
|
|
145
153
|
stakeholdersOfLocation.forEach((stakeholder, index) => {
|
|
146
|
-
const markerId = `${stakeholder.datastakeId}`;
|
|
154
|
+
const markerId = `${data.datastakeId}-${stakeholder.datastakeId}`;
|
|
147
155
|
const { x, y, radius, center } = getStakeholderPosition({
|
|
148
156
|
zoom,
|
|
149
157
|
totalMarkers: stakeholdersOfLocation.length,
|
|
@@ -162,46 +170,30 @@ export default function LocationIcon({
|
|
|
162
170
|
const isForceOpen = activeMarker?.datastakeId === data.datastakeId;
|
|
163
171
|
const iconSize = isSmallMarker(zoom) || isExtraSmallMarker(zoom) ? [11, 11] : [25, 25];
|
|
164
172
|
|
|
173
|
+
// Create container div
|
|
174
|
+
const containerDiv = document.createElement('div');
|
|
175
|
+
containerDiv.id = markerId;
|
|
176
|
+
|
|
165
177
|
const marker = L.marker(stakeholderLatLng, {
|
|
166
178
|
icon: L.divIcon({
|
|
167
|
-
html:
|
|
179
|
+
html: containerDiv.outerHTML,
|
|
168
180
|
className: "marker-chain",
|
|
169
181
|
iconSize: iconSize,
|
|
170
182
|
}),
|
|
171
183
|
}).addTo(mapRef);
|
|
172
184
|
|
|
173
185
|
markersRef.current.push(marker);
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
allData={allData}
|
|
186
|
-
link={link}
|
|
187
|
-
parentId={data.datastakeId}
|
|
188
|
-
renderTooltip={renderTooltip}
|
|
189
|
-
onClickLink={onClickLink}
|
|
190
|
-
selectedMarkersId={selectedMarkersId}
|
|
191
|
-
handleSelectMarker={handleSelectMarker}
|
|
192
|
-
mapRef={mapRef}
|
|
193
|
-
radius={radius}
|
|
194
|
-
index={index}
|
|
195
|
-
x={x}
|
|
196
|
-
y={y}
|
|
197
|
-
openPopupIdRef={openPopupIdRef}
|
|
198
|
-
polylinesRef={polylinesRef}
|
|
199
|
-
isForceOpen={isForceOpen}
|
|
200
|
-
activeMarker={activeMarker}
|
|
201
|
-
/>,
|
|
202
|
-
);
|
|
203
|
-
}
|
|
204
|
-
}, 0);
|
|
186
|
+
|
|
187
|
+
// Store container info for portal rendering
|
|
188
|
+
containers.push({
|
|
189
|
+
markerId,
|
|
190
|
+
stakeholder,
|
|
191
|
+
x,
|
|
192
|
+
y,
|
|
193
|
+
radius,
|
|
194
|
+
index,
|
|
195
|
+
isForceOpen,
|
|
196
|
+
});
|
|
205
197
|
|
|
206
198
|
setMapMarkers((prev) => {
|
|
207
199
|
const array = [
|
|
@@ -236,21 +228,23 @@ export default function LocationIcon({
|
|
|
236
228
|
isForceOpen,
|
|
237
229
|
listOfPolylines: polylinesRef.current,
|
|
238
230
|
stakeholderType: stakeholder.type,
|
|
239
|
-
animated: true,
|
|
231
|
+
animated: true,
|
|
240
232
|
});
|
|
241
233
|
});
|
|
242
234
|
|
|
235
|
+
// Update portal containers after markers are created
|
|
236
|
+
setTimeout(() => {
|
|
237
|
+
setPortalContainers(containers);
|
|
238
|
+
}, 0);
|
|
239
|
+
|
|
243
240
|
return () => {
|
|
244
241
|
markersRef.current.forEach(marker => {
|
|
245
|
-
if (mapRef.hasLayer(marker)) {
|
|
242
|
+
if (mapRef && mapRef.hasLayer(marker)) {
|
|
246
243
|
mapRef.removeLayer(marker);
|
|
247
244
|
}
|
|
248
245
|
});
|
|
249
|
-
rootsMapRef.current.forEach(root => {
|
|
250
|
-
root.unmount();
|
|
251
|
-
});
|
|
252
|
-
rootsMapRef.current.clear();
|
|
253
246
|
markersRef.current = [];
|
|
247
|
+
setPortalContainers([]);
|
|
254
248
|
};
|
|
255
249
|
}, [stakeholdersOfLocation, selectedMarkersId, activeMarker, zoom]);
|
|
256
250
|
|
|
@@ -344,56 +338,81 @@ useEffect(() => {
|
|
|
344
338
|
}, [linkedNodesData, selectedMarkersId, zoom, stakeholdersOfLocation, isSelected]);
|
|
345
339
|
|
|
346
340
|
return (
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
341
|
+
<>
|
|
342
|
+
<Popover
|
|
343
|
+
content={renderTooltipJsx({
|
|
344
|
+
title: data.name,
|
|
345
|
+
subTitle: data.subTitle,
|
|
346
|
+
total: data.sources,
|
|
347
|
+
className: "pt-0 pb-0",
|
|
348
|
+
items: renderTooltip(data),
|
|
349
|
+
link,
|
|
350
|
+
onClickLink: () => onClickLink(data),
|
|
351
|
+
isNewTab: true,
|
|
352
|
+
})}
|
|
353
|
+
getPopupContainer={(triggerNode) => {
|
|
354
|
+
const mapElement = document.getElementById("map");
|
|
355
|
+
return mapElement || triggerNode.parentElement || document.body;
|
|
356
|
+
}}
|
|
357
|
+
>
|
|
358
|
+
<div style={{ position: "relative", display: "inline-block" }}>
|
|
359
|
+
{(isSelected || selectedMarkersId.length === 0) && (
|
|
360
|
+
<div
|
|
361
|
+
style={{
|
|
362
|
+
position: "absolute",
|
|
363
|
+
bottom: "0",
|
|
364
|
+
left: "50%",
|
|
365
|
+
transform: "translateX(-50%)",
|
|
366
|
+
width: "12px",
|
|
367
|
+
height: "6px",
|
|
368
|
+
background: "rgba(0,0,0,0.15)",
|
|
369
|
+
borderRadius: "50%",
|
|
370
|
+
filter: "blur(3px)",
|
|
371
|
+
}}
|
|
372
|
+
/>
|
|
373
|
+
)}
|
|
374
|
+
<Marker
|
|
375
|
+
isSelected={isSelected}
|
|
376
|
+
onClick={() => {
|
|
377
|
+
handleSelectMarker(data);
|
|
378
|
+
setActiveMarker(isSelected ? null : data);
|
|
380
379
|
}}
|
|
380
|
+
zoom={zoom}
|
|
381
|
+
selectedMarkersId={selectedMarkersId}
|
|
381
382
|
/>
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
383
|
+
</div>
|
|
384
|
+
</Popover>
|
|
385
|
+
|
|
386
|
+
{/* Render stakeholder icons via portals */}
|
|
387
|
+
{portalContainers.map(({markerId, stakeholder, x, y, radius, index, isForceOpen}) => {
|
|
388
|
+
const container = document.getElementById(markerId);
|
|
389
|
+
if (!container) return null;
|
|
390
|
+
|
|
391
|
+
return createPortal(
|
|
392
|
+
<StakeholderIcon
|
|
393
|
+
key={markerId}
|
|
394
|
+
data={stakeholder}
|
|
395
|
+
zoom={zoom}
|
|
396
|
+
allData={allData}
|
|
397
|
+
link={link}
|
|
398
|
+
parentId={data.datastakeId}
|
|
399
|
+
renderTooltip={renderTooltip}
|
|
400
|
+
onClickLink={onClickLink}
|
|
401
|
+
selectedMarkersId={selectedMarkersId}
|
|
402
|
+
handleSelectMarker={handleSelectMarker}
|
|
403
|
+
mapRef={mapRef}
|
|
404
|
+
radius={radius}
|
|
405
|
+
index={index}
|
|
406
|
+
x={x}
|
|
407
|
+
y={y}
|
|
408
|
+
openPopupIdRef={openPopupIdRef}
|
|
409
|
+
polylinesRef={polylinesRef}
|
|
410
|
+
isForceOpen={isForceOpen}
|
|
411
|
+
activeMarker={activeMarker}
|
|
412
|
+
/>,
|
|
413
|
+
container
|
|
414
|
+
);
|
|
415
|
+
})}
|
|
416
|
+
</>
|
|
398
417
|
);
|
|
399
418
|
}
|
|
@@ -230,6 +230,7 @@ import Up from "./Up";
|
|
|
230
230
|
import Down from "./Down";
|
|
231
231
|
import TrendUp from "./TrendUp";
|
|
232
232
|
import Droplets from "./Droplets";
|
|
233
|
+
import AddDocument from "./AddDocument";
|
|
233
234
|
|
|
234
235
|
const config = {
|
|
235
236
|
AppAdmin,
|
|
@@ -463,7 +464,8 @@ const config = {
|
|
|
463
464
|
Up,
|
|
464
465
|
Down,
|
|
465
466
|
TrendUp,
|
|
466
|
-
Droplets
|
|
467
|
+
Droplets,
|
|
468
|
+
AddDocument
|
|
467
469
|
};
|
|
468
470
|
|
|
469
471
|
export default config;
|
|
@@ -12,6 +12,7 @@ export default function useUserGrowth({ container, data: mainData = {}, t, trans
|
|
|
12
12
|
const [mainGraph, setMainGraph] = useState(null);
|
|
13
13
|
const [data, setData] = useState([]);
|
|
14
14
|
const { token } = useToken();
|
|
15
|
+
console.log("mainData", mainData);
|
|
15
16
|
const fetchData = () => {
|
|
16
17
|
const { dates = [] } = mainData;
|
|
17
18
|
const _data = [];
|
|
@@ -9,11 +9,13 @@ export default function UserGrowth({ loading, data = [], t, translationKeys, fet
|
|
|
9
9
|
const [selectValue, setSelectValue] = useState(selectOptions[0]?.value);
|
|
10
10
|
|
|
11
11
|
useUserGrowth({ container, data, t, translationKeys });
|
|
12
|
+
console.log("usergrowthhhhh", data);
|
|
13
|
+
|
|
12
14
|
useEffect(() => {
|
|
13
15
|
if (typeof fetchUserGrowth === "function") {
|
|
14
16
|
fetchUserGrowth(selectValue);
|
|
15
17
|
}
|
|
16
|
-
}, [selectValue
|
|
18
|
+
}, [selectValue]);
|
|
17
19
|
|
|
18
20
|
return (
|
|
19
21
|
<Widget
|
|
@@ -34,19 +34,19 @@ export default function CombineLocationModal({
|
|
|
34
34
|
|
|
35
35
|
const onSubmit = () => {
|
|
36
36
|
MainForm.validateFields().then((data) => {
|
|
37
|
-
const ids = selectedLocations.map((location) => location.id);
|
|
37
|
+
const ids = selectedLocations.map((location) => location.id);
|
|
38
38
|
const allowedKeys = [
|
|
39
|
-
"id",
|
|
40
|
-
"name",
|
|
41
|
-
"country",
|
|
42
|
-
"category",
|
|
43
|
-
"administrativeLevel1",
|
|
39
|
+
"id",
|
|
40
|
+
"name",
|
|
41
|
+
"country",
|
|
42
|
+
"category",
|
|
43
|
+
"administrativeLevel1",
|
|
44
44
|
"administrativeLevel2"
|
|
45
|
-
];
|
|
45
|
+
];
|
|
46
46
|
const filteredData = Object.fromEntries(
|
|
47
47
|
Object.entries(data).filter(([key]) => allowedKeys.includes(key))
|
|
48
48
|
);
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
onSuccess({
|
|
51
51
|
ids,
|
|
52
52
|
data: filteredData,
|
|
@@ -66,15 +66,15 @@ export default function CombineLocationModal({
|
|
|
66
66
|
destroyOnHidden={true}
|
|
67
67
|
onValuesChange={() => {
|
|
68
68
|
setIsDisabled(() => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
const values = MainForm.getFieldsValue();
|
|
70
|
+
|
|
71
|
+
const requiredFields = entity?.includes("location")
|
|
72
|
+
? ["id", "name", "category", "country", "administrativeLevel1", "administrativeLevel2"]
|
|
73
|
+
: ["id", "name", "category", "country"];
|
|
74
|
+
|
|
75
|
+
return requiredFields.some((field) => values[field] === undefined);
|
|
76
76
|
});
|
|
77
|
-
|
|
77
|
+
}}
|
|
78
78
|
>
|
|
79
79
|
<Container>
|
|
80
80
|
<div className="daf-table-wrapper no-pagination">
|
|
@@ -124,7 +124,7 @@ export default function CombineLocationModal({
|
|
|
124
124
|
options={selectedLocations.map((location) => {
|
|
125
125
|
return {
|
|
126
126
|
label: location?.datastakeId || "-",
|
|
127
|
-
|
|
127
|
+
value: location?.id || "-",
|
|
128
128
|
};
|
|
129
129
|
})}
|
|
130
130
|
placeholder={t("ID")}
|
|
@@ -181,41 +181,41 @@ export default function CombineLocationModal({
|
|
|
181
181
|
|
|
182
182
|
{entity?.includes("location") && (
|
|
183
183
|
<>
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
184
|
+
<Form.Item className="flex-1" name="administrativeLevel1">
|
|
185
|
+
<Select
|
|
186
|
+
placeholder={t("Province")}
|
|
187
|
+
options={selectedLocations
|
|
188
|
+
.map((location) => {
|
|
189
|
+
const _data = getAdminLevelName(location?.linking?.SCL, "level_1");
|
|
190
|
+
return {
|
|
191
|
+
label: _data?.name || "-",
|
|
192
|
+
value: _data?.id || "-",
|
|
193
|
+
};
|
|
194
|
+
})
|
|
195
|
+
.filter(
|
|
196
|
+
(option, index, self) =>
|
|
197
|
+
index === self.findIndex((o) => o.value === option.value),
|
|
198
|
+
)}
|
|
199
|
+
/>
|
|
200
|
+
</Form.Item>
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
202
|
+
<Form.Item className="flex-1" name="administrativeLevel2">
|
|
203
|
+
<Select
|
|
204
|
+
placeholder={t("Territory")}
|
|
205
|
+
options={selectedLocations
|
|
206
|
+
.map((location) => {
|
|
207
|
+
const _data = getAdminLevelName(location?.linking?.SCL, "level_2");
|
|
208
|
+
return {
|
|
209
|
+
label: _data?.name || "-",
|
|
210
|
+
value: _data?.id || "-",
|
|
211
|
+
};
|
|
212
|
+
})
|
|
213
|
+
.filter(
|
|
214
|
+
(option, index, self) =>
|
|
215
|
+
index === self.findIndex((o) => o.value === option.value),
|
|
216
|
+
)}
|
|
217
|
+
/>
|
|
218
|
+
</Form.Item>
|
|
219
219
|
</>
|
|
220
220
|
)}
|
|
221
221
|
</Form>
|
|
@@ -37,8 +37,6 @@ export default function CombineSubjectsModal({
|
|
|
37
37
|
const onSubmit = () => {
|
|
38
38
|
MainForm.validateFields().then((data) => {
|
|
39
39
|
const ids = selectedSubjects.map((subject) => subject.id);
|
|
40
|
-
console.log(ids, "ids");
|
|
41
|
-
console.log(data, "data");
|
|
42
40
|
onSuccess({
|
|
43
41
|
ids,
|
|
44
42
|
data,
|
|
@@ -114,10 +112,7 @@ export default function CombineSubjectsModal({
|
|
|
114
112
|
>
|
|
115
113
|
<Form.Item className="flex-1" name="id">
|
|
116
114
|
<Select
|
|
117
|
-
options={selectedSubjects
|
|
118
|
-
label: s?.datastakeId || "-",
|
|
119
|
-
value: s?.id || "-",
|
|
120
|
-
}))}
|
|
115
|
+
options={mapToSelectOptions(selectedSubjects, "datastakeId", selectOptions, null)}
|
|
121
116
|
placeholder={t("ID")}
|
|
122
117
|
></Select>
|
|
123
118
|
</Form.Item>
|