datastake-daf 0.6.831 → 0.6.833
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.js +726 -582
- package/dist/hooks/index.js +8 -0
- package/dist/pages/index.js +1850 -176
- package/dist/services/index.js +8 -0
- package/dist/utils/index.js +4 -3
- package/package.json +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Documents.jsx +4 -0
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Events.jsx +4 -0
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Location.jsx +4 -0
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Subjects.jsx +4 -0
- package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/helper.js +19 -29
- package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/index.jsx +16 -3
- package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/helper.js +15 -20
- package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/index.jsx +13 -4
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/helper.js +114 -29
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/index.jsx +16 -3
- package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/helper.js +29 -29
- package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/index.jsx +16 -3
- package/src/@daf/core/components/Screens/Admin/AdminTables/hook.js +1 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/KeyIndicators/config.js +106 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/KeyIndicators/index.js +47 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/MineSite/helper.js +3 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/MineSite/index.js +218 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/IncidentsTime/hook.js +32 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/IncidentsTime/index.js +73 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/ProblemSolver/hook.js +86 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/ProblemSolver/index.js +102 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/TerritorialDistribution/config.js +34 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/components/TerritorialDistribution/index.js +107 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/config.js +5 -0
- package/src/@daf/core/components/Screens/ConflictManagement/components/RisksWidget/index.js +77 -0
- package/src/@daf/core/components/Screens/ConflictManagement/index.js +136 -0
- package/src/@daf/core/components/UI/SingleTruncatedLine/index.jsx +25 -0
- package/src/@daf/pages/Edit/index.jsx +7 -1
- package/src/@daf/pages/Events/Activities/columns.js +1 -1
- package/src/@daf/pages/Events/Testimonials/columns.js +1 -1
- package/src/@daf/pages/Events/columns.js +2 -3
- package/src/@daf/pages/Locations/columns.js +1 -1
- package/src/@daf/pages/Summary/Minesite/components/MineSiteDetails/config.js +4 -35
- package/src/@daf/services/DashboardService.js +9 -0
- package/src/constants/locales/en/translation.js +1 -0
- package/src/helpers/dataFetch.js +3 -3
- package/src/index.js +1 -0
- package/src/pages.js +4 -1
package/dist/pages/index.js
CHANGED
|
@@ -5445,7 +5445,7 @@ const getMetaPlaceholer = (inputMeta, t) => inputMeta.notApplicable ? t("Not app
|
|
|
5445
5445
|
* @param {string} [filterCond=null] - Filter condition.
|
|
5446
5446
|
* @returns {Object[]} - Filtered options.
|
|
5447
5447
|
*/
|
|
5448
|
-
function filterOptions$
|
|
5448
|
+
function filterOptions$2(options, filters, formsValue = {}, repeatValues = {}, filterCond = null) {
|
|
5449
5449
|
const isOrCond = filterCond !== "and";
|
|
5450
5450
|
const objFilter = {};
|
|
5451
5451
|
filters.forEach(f => {
|
|
@@ -6490,7 +6490,7 @@ const useHeader = ({
|
|
|
6490
6490
|
};
|
|
6491
6491
|
|
|
6492
6492
|
const {
|
|
6493
|
-
useToken: useToken$
|
|
6493
|
+
useToken: useToken$c
|
|
6494
6494
|
} = antd.theme;
|
|
6495
6495
|
function BreadCrumbs({
|
|
6496
6496
|
breadcrumbs = [],
|
|
@@ -6499,7 +6499,7 @@ function BreadCrumbs({
|
|
|
6499
6499
|
const [splitIndex, setSplitIndex] = React.useState(0);
|
|
6500
6500
|
const {
|
|
6501
6501
|
token
|
|
6502
|
-
} = useToken$
|
|
6502
|
+
} = useToken$c();
|
|
6503
6503
|
const _renderBreadcrumb = (b, i, isLast, noOnClickLast = false) => {
|
|
6504
6504
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
6505
6505
|
className: "flex breadcrumb-item",
|
|
@@ -6664,7 +6664,7 @@ const MultiSelectStyled = styled__default["default"](antd.Select)`
|
|
|
6664
6664
|
`;
|
|
6665
6665
|
|
|
6666
6666
|
const {
|
|
6667
|
-
useToken: useToken$
|
|
6667
|
+
useToken: useToken$b
|
|
6668
6668
|
} = antd.theme;
|
|
6669
6669
|
|
|
6670
6670
|
/**
|
|
@@ -6757,7 +6757,7 @@ function Multiselect({
|
|
|
6757
6757
|
}) {
|
|
6758
6758
|
const {
|
|
6759
6759
|
token
|
|
6760
|
-
} = useToken$
|
|
6760
|
+
} = useToken$b();
|
|
6761
6761
|
const [selectValue, setSelectValue] = React.useState(Array.isArray(defaultSelected) ? defaultSelected.length > 0 ? defaultSelected : [] : [defaultSelected]);
|
|
6762
6762
|
function onSelectChange(value) {
|
|
6763
6763
|
if (!canUnselectLast && value.length === 0) {
|
|
@@ -7476,6 +7476,14 @@ class DashboardService extends BaseService {
|
|
|
7476
7476
|
isUserManager: true
|
|
7477
7477
|
});
|
|
7478
7478
|
}
|
|
7479
|
+
|
|
7480
|
+
// getWidgetConflictManagement({ url, params = {}, filters = {} }) {
|
|
7481
|
+
// return this.apiGet({
|
|
7482
|
+
// url: `/dashboard/conflict-management${url}`,
|
|
7483
|
+
// params: { ...params, ...filters },
|
|
7484
|
+
// isApp: true,
|
|
7485
|
+
// });
|
|
7486
|
+
// }
|
|
7479
7487
|
}
|
|
7480
7488
|
var DashboardService$1 = createLazyService(DashboardService);
|
|
7481
7489
|
|
|
@@ -7487,7 +7495,7 @@ var DashboardService$1 = createLazyService(DashboardService);
|
|
|
7487
7495
|
// basePath: string,
|
|
7488
7496
|
// }
|
|
7489
7497
|
|
|
7490
|
-
const useWidgetFetch = ({
|
|
7498
|
+
const useWidgetFetch$1 = ({
|
|
7491
7499
|
config,
|
|
7492
7500
|
getData = DashboardService$1.getWidget,
|
|
7493
7501
|
onFetch = () => {}
|
|
@@ -7555,7 +7563,7 @@ function KeyIndicatorNavigateLabel({
|
|
|
7555
7563
|
});
|
|
7556
7564
|
}
|
|
7557
7565
|
|
|
7558
|
-
const getRowConfig$
|
|
7566
|
+
const getRowConfig$2 = ({
|
|
7559
7567
|
t,
|
|
7560
7568
|
data = {},
|
|
7561
7569
|
goTo,
|
|
@@ -7624,7 +7632,7 @@ const getRowConfig$1 = ({
|
|
|
7624
7632
|
const MOBILE_W = 850;
|
|
7625
7633
|
const MOBILE_WIDTH = `max-width: ${MOBILE_W}px`;
|
|
7626
7634
|
|
|
7627
|
-
const Style$
|
|
7635
|
+
const Style$m = styled__default["default"].div`
|
|
7628
7636
|
overflow-x: auto;
|
|
7629
7637
|
|
|
7630
7638
|
@media (${MOBILE_WIDTH}) {
|
|
@@ -8099,7 +8107,7 @@ function KeyIndicatorsWidget({
|
|
|
8099
8107
|
className: formatClassname(["flex-1 h-w-btn-header with-border-header", widgetClassName]),
|
|
8100
8108
|
title: noTitle ? undefined : t(title),
|
|
8101
8109
|
noTitle: noTitle,
|
|
8102
|
-
children: [children, /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
8110
|
+
children: [children, /*#__PURE__*/jsxRuntime.jsx(Style$m, {
|
|
8103
8111
|
className: formatClassname(["flex", className]),
|
|
8104
8112
|
children: config.map((c, i) => /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
8105
8113
|
className: `row-item ${c.icon ? 'row-item-with-icon' : ''}`,
|
|
@@ -8162,7 +8170,7 @@ function Label$1({
|
|
|
8162
8170
|
}
|
|
8163
8171
|
KeyIndicatorsWidget.displayName = 'KeyIndicatorsWidget';
|
|
8164
8172
|
|
|
8165
|
-
const defaultFetchConfig$
|
|
8173
|
+
const defaultFetchConfig$7 = {
|
|
8166
8174
|
basepath: "analytics",
|
|
8167
8175
|
url: '/widgets/key-informations',
|
|
8168
8176
|
filters: {
|
|
@@ -8170,7 +8178,7 @@ const defaultFetchConfig$6 = {
|
|
|
8170
8178
|
metrics: ['connections', 'documents', 'mineSites', 'operators', 'sources']
|
|
8171
8179
|
}
|
|
8172
8180
|
};
|
|
8173
|
-
function KeyIndicators$
|
|
8181
|
+
function KeyIndicators$2({
|
|
8174
8182
|
selectedSources = {},
|
|
8175
8183
|
theme = {},
|
|
8176
8184
|
getRedirectLink = () => {},
|
|
@@ -8179,9 +8187,9 @@ function KeyIndicators$1({
|
|
|
8179
8187
|
APP
|
|
8180
8188
|
}) {
|
|
8181
8189
|
const fetchConfig = React.useMemo(() => ({
|
|
8182
|
-
...defaultFetchConfig$
|
|
8190
|
+
...defaultFetchConfig$7,
|
|
8183
8191
|
filters: {
|
|
8184
|
-
...defaultFetchConfig$
|
|
8192
|
+
...defaultFetchConfig$7.filters,
|
|
8185
8193
|
sources: selectedSources?.partners || []
|
|
8186
8194
|
},
|
|
8187
8195
|
stop: selectedSources?.loading
|
|
@@ -8189,11 +8197,11 @@ function KeyIndicators$1({
|
|
|
8189
8197
|
const {
|
|
8190
8198
|
data,
|
|
8191
8199
|
loading
|
|
8192
|
-
} = useWidgetFetch({
|
|
8200
|
+
} = useWidgetFetch$1({
|
|
8193
8201
|
config: fetchConfig
|
|
8194
8202
|
});
|
|
8195
8203
|
const config = React.useMemo(() => {
|
|
8196
|
-
return getRowConfig$
|
|
8204
|
+
return getRowConfig$2({
|
|
8197
8205
|
t,
|
|
8198
8206
|
data: {
|
|
8199
8207
|
...data
|
|
@@ -8212,7 +8220,7 @@ function KeyIndicators$1({
|
|
|
8212
8220
|
className: "small-content"
|
|
8213
8221
|
});
|
|
8214
8222
|
}
|
|
8215
|
-
KeyIndicators$
|
|
8223
|
+
KeyIndicators$2.propTypes = {
|
|
8216
8224
|
selectedSources: PropTypes__default["default"].object,
|
|
8217
8225
|
theme: PropTypes__default["default"].object,
|
|
8218
8226
|
getRedirectLink: PropTypes__default["default"].func,
|
|
@@ -8220,7 +8228,7 @@ KeyIndicators$1.propTypes = {
|
|
|
8220
8228
|
goTo: PropTypes__default["default"].func
|
|
8221
8229
|
};
|
|
8222
8230
|
|
|
8223
|
-
const Style$
|
|
8231
|
+
const Style$l = styled__default["default"].div`
|
|
8224
8232
|
display: flex;
|
|
8225
8233
|
flex-direction: row;
|
|
8226
8234
|
position: relative;
|
|
@@ -9792,7 +9800,7 @@ function LocationIcon({
|
|
|
9792
9800
|
});
|
|
9793
9801
|
}
|
|
9794
9802
|
|
|
9795
|
-
const Style$
|
|
9803
|
+
const Style$k = styled__default["default"].div`
|
|
9796
9804
|
.main {
|
|
9797
9805
|
width: 24px;
|
|
9798
9806
|
height: 24px;
|
|
@@ -9937,7 +9945,7 @@ function StakeholderIcon({
|
|
|
9937
9945
|
onClickLink: () => onClickLink(marker)
|
|
9938
9946
|
}),
|
|
9939
9947
|
getPopupContainer: () => document.getElementById("map"),
|
|
9940
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
9948
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Style$k
|
|
9941
9949
|
// onClick={toggleOpen}
|
|
9942
9950
|
, {
|
|
9943
9951
|
className: `map-marker marker closed`,
|
|
@@ -9950,7 +9958,7 @@ function StakeholderIcon({
|
|
|
9950
9958
|
})
|
|
9951
9959
|
});
|
|
9952
9960
|
}
|
|
9953
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
9961
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$k, {
|
|
9954
9962
|
onClick: toggleOpen,
|
|
9955
9963
|
className: `map-marker marker ${isActive ? "opened" : "closed"}`,
|
|
9956
9964
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -10818,7 +10826,7 @@ const useMap = ({
|
|
|
10818
10826
|
};
|
|
10819
10827
|
};
|
|
10820
10828
|
|
|
10821
|
-
const Style$
|
|
10829
|
+
const Style$j = styled__default["default"].div`
|
|
10822
10830
|
position: relative;
|
|
10823
10831
|
width: 100%;
|
|
10824
10832
|
height: 100%;
|
|
@@ -10891,7 +10899,7 @@ function ComponentWithFocus({
|
|
|
10891
10899
|
setClosed(false);
|
|
10892
10900
|
}
|
|
10893
10901
|
}, [closed]);
|
|
10894
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
10902
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$j, {
|
|
10895
10903
|
className: className,
|
|
10896
10904
|
ref: ref,
|
|
10897
10905
|
style: style,
|
|
@@ -10903,7 +10911,7 @@ function ComponentWithFocus({
|
|
|
10903
10911
|
});
|
|
10904
10912
|
}
|
|
10905
10913
|
|
|
10906
|
-
const Style$
|
|
10914
|
+
const Style$i = styled__default["default"].div`
|
|
10907
10915
|
position: absolute;
|
|
10908
10916
|
top: 24px;
|
|
10909
10917
|
left: 24px;
|
|
@@ -11078,7 +11086,7 @@ function Filters({
|
|
|
11078
11086
|
return null;
|
|
11079
11087
|
}
|
|
11080
11088
|
};
|
|
11081
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
11089
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$i, {
|
|
11082
11090
|
children: [/*#__PURE__*/jsxRuntime.jsxs(antd.Button, {
|
|
11083
11091
|
onClick: () => setOpened(p => !p),
|
|
11084
11092
|
children: [t("Filter"), /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
@@ -11159,7 +11167,7 @@ function Map$1({
|
|
|
11159
11167
|
isSatellite
|
|
11160
11168
|
});
|
|
11161
11169
|
return /*#__PURE__*/jsxRuntime.jsx(ComponentWithFocus, {
|
|
11162
|
-
children: /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
11170
|
+
children: /*#__PURE__*/jsxRuntime.jsxs(Style$l, {
|
|
11163
11171
|
className: formatClassname([showSider && activeMarker && "with-sider"]),
|
|
11164
11172
|
children: [filtersConfig ? /*#__PURE__*/jsxRuntime.jsx(Filters, {
|
|
11165
11173
|
t: t,
|
|
@@ -11296,7 +11304,7 @@ function SupplyChainMap({
|
|
|
11296
11304
|
const {
|
|
11297
11305
|
loading,
|
|
11298
11306
|
data
|
|
11299
|
-
} = useWidgetFetch({
|
|
11307
|
+
} = useWidgetFetch$1({
|
|
11300
11308
|
config: defaultConfig
|
|
11301
11309
|
});
|
|
11302
11310
|
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
@@ -11368,7 +11376,7 @@ function PrimaryNode({
|
|
|
11368
11376
|
style: {
|
|
11369
11377
|
opacity: 0
|
|
11370
11378
|
}
|
|
11371
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
11379
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(Style$h, {
|
|
11372
11380
|
$isPdf: isPdf,
|
|
11373
11381
|
className: "flex",
|
|
11374
11382
|
children: [" ", /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -11479,7 +11487,7 @@ function PrimaryNode({
|
|
|
11479
11487
|
})]
|
|
11480
11488
|
});
|
|
11481
11489
|
}
|
|
11482
|
-
const Style$
|
|
11490
|
+
const Style$h = styled__default["default"].div`
|
|
11483
11491
|
width: ${MAIN_NODE_WIDTH}px;
|
|
11484
11492
|
height: ${MAIN_NODE_HEIGHT}px; /* Explicitly set height */
|
|
11485
11493
|
display: flex;
|
|
@@ -11615,7 +11623,7 @@ function IconNode({
|
|
|
11615
11623
|
}), /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
11616
11624
|
title: data?.name,
|
|
11617
11625
|
defaultOpen: data?.ONLY_IN_STORYBOOK,
|
|
11618
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
11626
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Style$g, {
|
|
11619
11627
|
hoverColor: data?.iconHoverColor,
|
|
11620
11628
|
children: /*#__PURE__*/jsxRuntime.jsx(antd.ConfigProvider, {
|
|
11621
11629
|
theme: {
|
|
@@ -11658,7 +11666,7 @@ function IconNode({
|
|
|
11658
11666
|
})]
|
|
11659
11667
|
});
|
|
11660
11668
|
}
|
|
11661
|
-
const Style$
|
|
11669
|
+
const Style$g = styled__default["default"].div`
|
|
11662
11670
|
height: 40px;
|
|
11663
11671
|
width: 40px;
|
|
11664
11672
|
|
|
@@ -11709,14 +11717,14 @@ const Style$f = styled__default["default"].div`
|
|
|
11709
11717
|
// components/Nodes/NameNode.jsx
|
|
11710
11718
|
const NAME_CARD_WIDTH = 315;
|
|
11711
11719
|
const {
|
|
11712
|
-
useToken: useToken$
|
|
11720
|
+
useToken: useToken$a
|
|
11713
11721
|
} = antd.theme;
|
|
11714
11722
|
function NameNode({
|
|
11715
11723
|
data
|
|
11716
11724
|
}) {
|
|
11717
11725
|
const {
|
|
11718
11726
|
token
|
|
11719
|
-
} = useToken$
|
|
11727
|
+
} = useToken$a();
|
|
11720
11728
|
const translateFN = typeof data?.t === "function" ? data.t : key => key;
|
|
11721
11729
|
const isPdf = data?.isPdf;
|
|
11722
11730
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
@@ -11736,7 +11744,7 @@ function NameNode({
|
|
|
11736
11744
|
style: {
|
|
11737
11745
|
opacity: 0
|
|
11738
11746
|
}
|
|
11739
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
11747
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(Style$f, {
|
|
11740
11748
|
$isPdf: isPdf,
|
|
11741
11749
|
style: {
|
|
11742
11750
|
opacity: data.isEmpty ? 0.5 : 1
|
|
@@ -11824,7 +11832,7 @@ function NameNode({
|
|
|
11824
11832
|
})]
|
|
11825
11833
|
});
|
|
11826
11834
|
}
|
|
11827
|
-
const Style$
|
|
11835
|
+
const Style$f = styled__default["default"].div`
|
|
11828
11836
|
width: ${NAME_CARD_WIDTH}px;
|
|
11829
11837
|
height: 55px;
|
|
11830
11838
|
display: flex;
|
|
@@ -11855,7 +11863,7 @@ const Style$e = styled__default["default"].div`
|
|
|
11855
11863
|
}
|
|
11856
11864
|
`;
|
|
11857
11865
|
|
|
11858
|
-
const Style$
|
|
11866
|
+
const Style$e = styled__default["default"].div`
|
|
11859
11867
|
width: 405px;
|
|
11860
11868
|
display: flex;
|
|
11861
11869
|
height: 140px;
|
|
@@ -11966,7 +11974,7 @@ function ExpandedNode({
|
|
|
11966
11974
|
style: {
|
|
11967
11975
|
opacity: 0
|
|
11968
11976
|
}
|
|
11969
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
11977
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(Style$e, {
|
|
11970
11978
|
style: {
|
|
11971
11979
|
opacity
|
|
11972
11980
|
},
|
|
@@ -12905,7 +12913,7 @@ const CustomLegend = ({
|
|
|
12905
12913
|
};
|
|
12906
12914
|
|
|
12907
12915
|
const {
|
|
12908
|
-
useToken: useToken$
|
|
12916
|
+
useToken: useToken$9
|
|
12909
12917
|
} = antd.theme;
|
|
12910
12918
|
|
|
12911
12919
|
/**
|
|
@@ -12996,7 +13004,7 @@ function LineChart({
|
|
|
12996
13004
|
const chartRef = React__default["default"].useRef(null);
|
|
12997
13005
|
const {
|
|
12998
13006
|
token
|
|
12999
|
-
} = useToken$
|
|
13007
|
+
} = useToken$9();
|
|
13000
13008
|
const {
|
|
13001
13009
|
legendEnabled,
|
|
13002
13010
|
legendItems,
|
|
@@ -13218,7 +13226,7 @@ Identification.propTypes = {
|
|
|
13218
13226
|
theme: PropTypes__default["default"].object
|
|
13219
13227
|
};
|
|
13220
13228
|
|
|
13221
|
-
const Style$
|
|
13229
|
+
const Style$d = styled__default["default"].div`
|
|
13222
13230
|
position: absolute;
|
|
13223
13231
|
display: flex;
|
|
13224
13232
|
gap: 12px;
|
|
@@ -13233,7 +13241,7 @@ function Tooltip({
|
|
|
13233
13241
|
mouseY = 0,
|
|
13234
13242
|
children = null
|
|
13235
13243
|
}) {
|
|
13236
|
-
return /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
13244
|
+
return /*#__PURE__*/jsxRuntime.jsx(Style$d, {
|
|
13237
13245
|
style: {
|
|
13238
13246
|
top: mouseY,
|
|
13239
13247
|
left: mouseX
|
|
@@ -13651,7 +13659,7 @@ Chart.propTypes = {
|
|
|
13651
13659
|
mouseYOffset: PropTypes__default["default"].any
|
|
13652
13660
|
};
|
|
13653
13661
|
|
|
13654
|
-
const getColors = theme => {
|
|
13662
|
+
const getColors$1 = theme => {
|
|
13655
13663
|
return [theme.colorPrimary8, theme.colorPrimary7, theme.colorPrimary5, theme.colorPrimary6, theme.colorPrimary4];
|
|
13656
13664
|
};
|
|
13657
13665
|
|
|
@@ -13666,7 +13674,7 @@ function Locations({
|
|
|
13666
13674
|
const {
|
|
13667
13675
|
countries = []
|
|
13668
13676
|
} = options;
|
|
13669
|
-
const colors = getColors(theme);
|
|
13677
|
+
const colors = getColors$1(theme);
|
|
13670
13678
|
const pieData = React.useMemo(() => {
|
|
13671
13679
|
// eslint-disable-next-line no-shadow-restricted-names
|
|
13672
13680
|
const {
|
|
@@ -13889,7 +13897,7 @@ function ChartsContainer({
|
|
|
13889
13897
|
const {
|
|
13890
13898
|
loading,
|
|
13891
13899
|
data
|
|
13892
|
-
} = useWidgetFetch({
|
|
13900
|
+
} = useWidgetFetch$1({
|
|
13893
13901
|
config: defaultConfig,
|
|
13894
13902
|
onFetch: () => setPreviousRange(selectedRange)
|
|
13895
13903
|
});
|
|
@@ -13996,7 +14004,7 @@ function SupplyChain({
|
|
|
13996
14004
|
breadcrumbs: breadcrumbs
|
|
13997
14005
|
}),
|
|
13998
14006
|
children: [/*#__PURE__*/jsxRuntime.jsx("section", {
|
|
13999
|
-
children: /*#__PURE__*/jsxRuntime.jsx(KeyIndicators$
|
|
14007
|
+
children: /*#__PURE__*/jsxRuntime.jsx(KeyIndicators$2, {
|
|
14000
14008
|
selectedSources: selectedPartners,
|
|
14001
14009
|
theme: theme,
|
|
14002
14010
|
t: t,
|
|
@@ -14099,7 +14107,7 @@ ActionWidget.propTypes = {
|
|
|
14099
14107
|
onClick: PropTypes__default["default"].func
|
|
14100
14108
|
};
|
|
14101
14109
|
|
|
14102
|
-
const getRowConfig = ({
|
|
14110
|
+
const getRowConfig$1 = ({
|
|
14103
14111
|
t,
|
|
14104
14112
|
data = {},
|
|
14105
14113
|
goTo,
|
|
@@ -14167,14 +14175,14 @@ const getRowConfig = ({
|
|
|
14167
14175
|
})
|
|
14168
14176
|
}];
|
|
14169
14177
|
|
|
14170
|
-
const defaultFetchConfig$
|
|
14178
|
+
const defaultFetchConfig$6 = {
|
|
14171
14179
|
basepath: "analytics",
|
|
14172
14180
|
url: "/widgets/key-informations",
|
|
14173
14181
|
filters: {
|
|
14174
14182
|
metrics: ['locations', 'stakeholders', 'events', 'sources']
|
|
14175
14183
|
}
|
|
14176
14184
|
};
|
|
14177
|
-
function KeyIndicators({
|
|
14185
|
+
function KeyIndicators$1({
|
|
14178
14186
|
t = () => {},
|
|
14179
14187
|
goTo = () => {},
|
|
14180
14188
|
getRedirectLink = () => {},
|
|
@@ -14183,15 +14191,15 @@ function KeyIndicators({
|
|
|
14183
14191
|
APP
|
|
14184
14192
|
}) {
|
|
14185
14193
|
const fetchConfig = React.useMemo(() => ({
|
|
14186
|
-
...defaultFetchConfig$
|
|
14194
|
+
...defaultFetchConfig$6
|
|
14187
14195
|
}), []);
|
|
14188
14196
|
const {
|
|
14189
14197
|
data,
|
|
14190
14198
|
loading
|
|
14191
|
-
} = useWidgetFetch({
|
|
14199
|
+
} = useWidgetFetch$1({
|
|
14192
14200
|
config: fetchConfig
|
|
14193
14201
|
});
|
|
14194
|
-
const config = React.useMemo(() => getRowConfig({
|
|
14202
|
+
const config = React.useMemo(() => getRowConfig$1({
|
|
14195
14203
|
t,
|
|
14196
14204
|
data: {
|
|
14197
14205
|
...data,
|
|
@@ -14390,11 +14398,11 @@ const onClickLink = (data, getRedirectLink, activeTab, goTo, user) => {
|
|
|
14390
14398
|
}
|
|
14391
14399
|
};
|
|
14392
14400
|
|
|
14393
|
-
const defaultFetchConfig$
|
|
14401
|
+
const defaultFetchConfig$5 = {
|
|
14394
14402
|
basepath: "forms",
|
|
14395
14403
|
url: "/location"
|
|
14396
14404
|
};
|
|
14397
|
-
function MineSites({
|
|
14405
|
+
function MineSites$1({
|
|
14398
14406
|
t = () => {},
|
|
14399
14407
|
goTo = () => {},
|
|
14400
14408
|
getRedirectLink = () => {},
|
|
@@ -14416,7 +14424,7 @@ function MineSites({
|
|
|
14416
14424
|
const [filters, setFilters] = React.useState({});
|
|
14417
14425
|
const [activeTab, setActiveTab] = React.useState("location");
|
|
14418
14426
|
const _formFetchConfig = React.useMemo(() => ({
|
|
14419
|
-
...defaultFetchConfig$
|
|
14427
|
+
...defaultFetchConfig$5,
|
|
14420
14428
|
params: {
|
|
14421
14429
|
scope: "create",
|
|
14422
14430
|
language: user?.language || "en"
|
|
@@ -14425,7 +14433,7 @@ function MineSites({
|
|
|
14425
14433
|
const {
|
|
14426
14434
|
data: _formData,
|
|
14427
14435
|
loading: formLoading
|
|
14428
|
-
} = useWidgetFetch({
|
|
14436
|
+
} = useWidgetFetch$1({
|
|
14429
14437
|
config: _formFetchConfig
|
|
14430
14438
|
});
|
|
14431
14439
|
React.useEffect(() => {
|
|
@@ -14454,7 +14462,7 @@ function MineSites({
|
|
|
14454
14462
|
data,
|
|
14455
14463
|
loading,
|
|
14456
14464
|
setData
|
|
14457
|
-
} = useWidgetFetch({
|
|
14465
|
+
} = useWidgetFetch$1({
|
|
14458
14466
|
config: dataFetchConfig
|
|
14459
14467
|
});
|
|
14460
14468
|
const tabs = React.useMemo(() => getTabs(t), [t]);
|
|
@@ -14807,7 +14815,7 @@ const useKnowledgeAccumulation = ({
|
|
|
14807
14815
|
return chartConfig;
|
|
14808
14816
|
};
|
|
14809
14817
|
|
|
14810
|
-
const defaultFetchConfig$
|
|
14818
|
+
const defaultFetchConfig$4 = {
|
|
14811
14819
|
basepath: "analytics",
|
|
14812
14820
|
url: "/widgets/knowledge-accumulation",
|
|
14813
14821
|
filters: {},
|
|
@@ -14822,7 +14830,7 @@ function AccumulationGraph({
|
|
|
14822
14830
|
}) {
|
|
14823
14831
|
const [timeFilter, setTimeFilter] = React.useState("monthly");
|
|
14824
14832
|
const fetchConfig = React.useMemo(() => ({
|
|
14825
|
-
...defaultFetchConfig$
|
|
14833
|
+
...defaultFetchConfig$4,
|
|
14826
14834
|
filters: {
|
|
14827
14835
|
section: section,
|
|
14828
14836
|
tabSelected: tabSelected
|
|
@@ -14832,7 +14840,7 @@ function AccumulationGraph({
|
|
|
14832
14840
|
const {
|
|
14833
14841
|
data,
|
|
14834
14842
|
loading
|
|
14835
|
-
} = useWidgetFetch({
|
|
14843
|
+
} = useWidgetFetch$1({
|
|
14836
14844
|
config: fetchConfig
|
|
14837
14845
|
});
|
|
14838
14846
|
const selectOptions = React.useMemo(() => [{
|
|
@@ -14878,7 +14886,7 @@ function AccumulationGraph({
|
|
|
14878
14886
|
}
|
|
14879
14887
|
|
|
14880
14888
|
const {
|
|
14881
|
-
useToken: useToken$
|
|
14889
|
+
useToken: useToken$8
|
|
14882
14890
|
} = antd.theme;
|
|
14883
14891
|
|
|
14884
14892
|
/**
|
|
@@ -14970,7 +14978,7 @@ function BarChart({
|
|
|
14970
14978
|
const chartRef = React__default["default"].useRef(null);
|
|
14971
14979
|
const {
|
|
14972
14980
|
token
|
|
14973
|
-
} = useToken$
|
|
14981
|
+
} = useToken$8();
|
|
14974
14982
|
const {
|
|
14975
14983
|
legendEnabled,
|
|
14976
14984
|
legendItems,
|
|
@@ -15156,7 +15164,7 @@ const useContributionsGraph = ({
|
|
|
15156
15164
|
return chartConfig;
|
|
15157
15165
|
};
|
|
15158
15166
|
|
|
15159
|
-
const defaultFetchConfig$
|
|
15167
|
+
const defaultFetchConfig$3 = {
|
|
15160
15168
|
basepath: "analytics",
|
|
15161
15169
|
url: "/widgets/contributions",
|
|
15162
15170
|
filters: {},
|
|
@@ -15170,7 +15178,7 @@ function ContributionsGraph({
|
|
|
15170
15178
|
theme = {}
|
|
15171
15179
|
}) {
|
|
15172
15180
|
const fetchConfig = React.useMemo(() => ({
|
|
15173
|
-
...defaultFetchConfig$
|
|
15181
|
+
...defaultFetchConfig$3,
|
|
15174
15182
|
filters: {
|
|
15175
15183
|
section: section,
|
|
15176
15184
|
tabSelected: tabSelected
|
|
@@ -15180,7 +15188,7 @@ function ContributionsGraph({
|
|
|
15180
15188
|
const {
|
|
15181
15189
|
data,
|
|
15182
15190
|
loading
|
|
15183
|
-
} = useWidgetFetch({
|
|
15191
|
+
} = useWidgetFetch$1({
|
|
15184
15192
|
config: fetchConfig
|
|
15185
15193
|
});
|
|
15186
15194
|
const chartConfig = useContributionsGraph({
|
|
@@ -15286,7 +15294,7 @@ const useTriangulation = ({
|
|
|
15286
15294
|
};
|
|
15287
15295
|
};
|
|
15288
15296
|
|
|
15289
|
-
const defaultFetchConfig$
|
|
15297
|
+
const defaultFetchConfig$2 = {
|
|
15290
15298
|
basepath: "analytics",
|
|
15291
15299
|
url: "/widgets/triangulation",
|
|
15292
15300
|
defaultData: [],
|
|
@@ -15300,7 +15308,7 @@ function Triangulation({
|
|
|
15300
15308
|
theme = {}
|
|
15301
15309
|
}) {
|
|
15302
15310
|
const fetchConfig = React.useMemo(() => ({
|
|
15303
|
-
...defaultFetchConfig$
|
|
15311
|
+
...defaultFetchConfig$2,
|
|
15304
15312
|
filters: {
|
|
15305
15313
|
section: section,
|
|
15306
15314
|
tabSelected: tabSelected
|
|
@@ -15310,7 +15318,7 @@ function Triangulation({
|
|
|
15310
15318
|
const {
|
|
15311
15319
|
data: widgetData,
|
|
15312
15320
|
loading
|
|
15313
|
-
} = useWidgetFetch({
|
|
15321
|
+
} = useWidgetFetch$1({
|
|
15314
15322
|
config: fetchConfig
|
|
15315
15323
|
});
|
|
15316
15324
|
const {
|
|
@@ -15453,7 +15461,7 @@ function DataConsilidation({
|
|
|
15453
15461
|
});
|
|
15454
15462
|
}
|
|
15455
15463
|
|
|
15456
|
-
const defaultFetchConfig = {
|
|
15464
|
+
const defaultFetchConfig$1 = {
|
|
15457
15465
|
basepath: "analytics",
|
|
15458
15466
|
url: "/widgets/datachain-of-custody",
|
|
15459
15467
|
filters: {},
|
|
@@ -15466,12 +15474,12 @@ function DataChainOfCustody({
|
|
|
15466
15474
|
hardcodedData = []
|
|
15467
15475
|
}) {
|
|
15468
15476
|
const fetchConfig = React.useMemo(() => ({
|
|
15469
|
-
...defaultFetchConfig
|
|
15477
|
+
...defaultFetchConfig$1
|
|
15470
15478
|
}), []);
|
|
15471
15479
|
const {
|
|
15472
15480
|
data,
|
|
15473
15481
|
loading
|
|
15474
|
-
} = useWidgetFetch({
|
|
15482
|
+
} = useWidgetFetch$1({
|
|
15475
15483
|
config: fetchConfig
|
|
15476
15484
|
});
|
|
15477
15485
|
const mappedData = mapDataForChainOfCustody(Object.keys(data)?.length > 0 ? data : hardcodedData, options, goTo);
|
|
@@ -15529,7 +15537,7 @@ function UserDashboard({
|
|
|
15529
15537
|
disabled: conf.disabled
|
|
15530
15538
|
}, conf.title))
|
|
15531
15539
|
}), /*#__PURE__*/jsxRuntime.jsx("section", {
|
|
15532
|
-
children: /*#__PURE__*/jsxRuntime.jsx(KeyIndicators, {
|
|
15540
|
+
children: /*#__PURE__*/jsxRuntime.jsx(KeyIndicators$1, {
|
|
15533
15541
|
theme: theme,
|
|
15534
15542
|
partners: informationSourcesCount,
|
|
15535
15543
|
t: t,
|
|
@@ -15538,7 +15546,7 @@ function UserDashboard({
|
|
|
15538
15546
|
APP: APP
|
|
15539
15547
|
})
|
|
15540
15548
|
}), /*#__PURE__*/jsxRuntime.jsx("section", {
|
|
15541
|
-
children: /*#__PURE__*/jsxRuntime.jsx(MineSites, {
|
|
15549
|
+
children: /*#__PURE__*/jsxRuntime.jsx(MineSites$1, {
|
|
15542
15550
|
t: t,
|
|
15543
15551
|
goTo: goTo,
|
|
15544
15552
|
getRedirectLink: getRedirectLink,
|
|
@@ -15748,7 +15756,7 @@ DAFTable.propTypes = {
|
|
|
15748
15756
|
scrollX: PropTypes__default["default"].any
|
|
15749
15757
|
};
|
|
15750
15758
|
|
|
15751
|
-
const Style$
|
|
15759
|
+
const Style$c = styled__default["default"].div`
|
|
15752
15760
|
width: 99px;
|
|
15753
15761
|
height: 10px;
|
|
15754
15762
|
border-radius: 8px;
|
|
@@ -15769,7 +15777,7 @@ function ProgressBar({
|
|
|
15769
15777
|
}) {
|
|
15770
15778
|
return /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
15771
15779
|
title: tooltipTitle || `${parseInt(percentage)}%`,
|
|
15772
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
15780
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Style$c, {
|
|
15773
15781
|
onClick: onClick,
|
|
15774
15782
|
style: style,
|
|
15775
15783
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
@@ -15789,7 +15797,7 @@ ProgressBar.propTypes = {
|
|
|
15789
15797
|
style: PropTypes__default["default"].any
|
|
15790
15798
|
};
|
|
15791
15799
|
|
|
15792
|
-
const Style$
|
|
15800
|
+
const Style$b = styled__default["default"].div`
|
|
15793
15801
|
.icon-background {
|
|
15794
15802
|
width: ${({
|
|
15795
15803
|
size
|
|
@@ -15808,7 +15816,7 @@ const SideIcon = ({
|
|
|
15808
15816
|
size = 20,
|
|
15809
15817
|
iconSize = 12
|
|
15810
15818
|
}) => {
|
|
15811
|
-
return /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
15819
|
+
return /*#__PURE__*/jsxRuntime.jsx(Style$b, {
|
|
15812
15820
|
size: size,
|
|
15813
15821
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
15814
15822
|
className: "icon-background",
|
|
@@ -16334,7 +16342,7 @@ function StickyTable({
|
|
|
16334
16342
|
return data.length > 5 ? ComponentWithFocus : "div";
|
|
16335
16343
|
}, [data.length]);
|
|
16336
16344
|
return /*#__PURE__*/jsxRuntime.jsx(Wrapper, {
|
|
16337
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
16345
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Style$a, {
|
|
16338
16346
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
16339
16347
|
className: "daf-table-wrapper",
|
|
16340
16348
|
style: {
|
|
@@ -16360,7 +16368,7 @@ function StickyTable({
|
|
|
16360
16368
|
})
|
|
16361
16369
|
});
|
|
16362
16370
|
}
|
|
16363
|
-
const Style$
|
|
16371
|
+
const Style$a = styled__default["default"].div`
|
|
16364
16372
|
max-width: calc(100% - 48px);
|
|
16365
16373
|
margin-left: var(--size-lg);
|
|
16366
16374
|
overflow: hidden;
|
|
@@ -16392,7 +16400,7 @@ StickyTable.propTypes = {
|
|
|
16392
16400
|
pagination: PropTypes__default["default"].any
|
|
16393
16401
|
};
|
|
16394
16402
|
|
|
16395
|
-
const Style$
|
|
16403
|
+
const Style$9 = styled__default["default"].div`
|
|
16396
16404
|
overflow: hidden;
|
|
16397
16405
|
|
|
16398
16406
|
.daf-table {
|
|
@@ -16585,7 +16593,7 @@ function ProductionSites({
|
|
|
16585
16593
|
className: "with-border-header no-px-body",
|
|
16586
16594
|
loading: loading,
|
|
16587
16595
|
children: /*#__PURE__*/jsxRuntime.jsx(Wrapper, {
|
|
16588
|
-
children: /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
16596
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Style$9, {
|
|
16589
16597
|
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
16590
16598
|
className: "daf-table-wrapper",
|
|
16591
16599
|
style: {
|
|
@@ -16604,7 +16612,7 @@ function ProductionSites({
|
|
|
16604
16612
|
});
|
|
16605
16613
|
}
|
|
16606
16614
|
|
|
16607
|
-
const Style$
|
|
16615
|
+
const Style$8 = styled__default["default"].div`
|
|
16608
16616
|
max-width: 98%;
|
|
16609
16617
|
margin-left: var(--size-lg);
|
|
16610
16618
|
overflow: hidden;
|
|
@@ -17094,7 +17102,7 @@ function AssociatedInformation$1({
|
|
|
17094
17102
|
const {
|
|
17095
17103
|
data,
|
|
17096
17104
|
loading
|
|
17097
|
-
} = useWidgetFetch({
|
|
17105
|
+
} = useWidgetFetch$1({
|
|
17098
17106
|
config: defaultConfig
|
|
17099
17107
|
});
|
|
17100
17108
|
console.log({
|
|
@@ -17127,7 +17135,7 @@ function AssociatedInformation$1({
|
|
|
17127
17135
|
onChange: setActiveTab,
|
|
17128
17136
|
value: activeTab,
|
|
17129
17137
|
className: "mt-0"
|
|
17130
|
-
}), /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
17138
|
+
}), /*#__PURE__*/jsxRuntime.jsxs(Style$8, {
|
|
17131
17139
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
17132
17140
|
children: /*#__PURE__*/jsxRuntime.jsx(SearchFilters, {
|
|
17133
17141
|
t: t
|
|
@@ -21991,12 +21999,12 @@ function Geolocation$1({
|
|
|
21991
21999
|
}
|
|
21992
22000
|
|
|
21993
22001
|
const {
|
|
21994
|
-
useToken: useToken$
|
|
22002
|
+
useToken: useToken$7
|
|
21995
22003
|
} = antd.theme;
|
|
21996
22004
|
function Smart() {
|
|
21997
22005
|
const {
|
|
21998
22006
|
token
|
|
21999
|
-
} = useToken$
|
|
22007
|
+
} = useToken$7();
|
|
22000
22008
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
22001
22009
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
22002
22010
|
style: {
|
|
@@ -22080,7 +22088,7 @@ function SmartWidget({
|
|
|
22080
22088
|
}) {
|
|
22081
22089
|
const {
|
|
22082
22090
|
token
|
|
22083
|
-
} = useToken$
|
|
22091
|
+
} = useToken$7();
|
|
22084
22092
|
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
22085
22093
|
noTitle: true,
|
|
22086
22094
|
className: "no-p-body p-xs",
|
|
@@ -22296,7 +22304,7 @@ function View$1({
|
|
|
22296
22304
|
});
|
|
22297
22305
|
}
|
|
22298
22306
|
|
|
22299
|
-
const Style$
|
|
22307
|
+
const Style$7 = styled__default["default"].div`
|
|
22300
22308
|
position: absolute;
|
|
22301
22309
|
right: 25px;
|
|
22302
22310
|
top: 60px;
|
|
@@ -22328,7 +22336,7 @@ function RiskComment({
|
|
|
22328
22336
|
const {
|
|
22329
22337
|
t
|
|
22330
22338
|
} = useEditContext();
|
|
22331
|
-
return isShown ? /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
22339
|
+
return isShown ? /*#__PURE__*/jsxRuntime.jsxs(Style$7, {
|
|
22332
22340
|
id: id,
|
|
22333
22341
|
children: [comment, /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
22334
22342
|
className: "comment-shown",
|
|
@@ -23539,7 +23547,7 @@ FormPopover.propTypes = {
|
|
|
23539
23547
|
};
|
|
23540
23548
|
|
|
23541
23549
|
const {
|
|
23542
|
-
useToken: useToken$
|
|
23550
|
+
useToken: useToken$6
|
|
23543
23551
|
} = antd.theme;
|
|
23544
23552
|
const disabledTypes = ["dataLink"];
|
|
23545
23553
|
function Versions({
|
|
@@ -23552,7 +23560,7 @@ function Versions({
|
|
|
23552
23560
|
}) {
|
|
23553
23561
|
const {
|
|
23554
23562
|
token
|
|
23555
|
-
} = useToken$
|
|
23563
|
+
} = useToken$6();
|
|
23556
23564
|
const dataSource = React.useMemo(() => {
|
|
23557
23565
|
if (!versionsDatapoints) {
|
|
23558
23566
|
return [];
|
|
@@ -23716,7 +23724,7 @@ function Comments({
|
|
|
23716
23724
|
});
|
|
23717
23725
|
}
|
|
23718
23726
|
|
|
23719
|
-
var Style$
|
|
23727
|
+
var Style$6 = styled__default["default"].div`
|
|
23720
23728
|
border: 1px solid var(--base-gray-40);
|
|
23721
23729
|
padding: 12px;
|
|
23722
23730
|
background: var(--base-gray-20);
|
|
@@ -23862,7 +23870,7 @@ function GroupInfoHOC({
|
|
|
23862
23870
|
meta,
|
|
23863
23871
|
t
|
|
23864
23872
|
});
|
|
23865
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
23873
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$6, {
|
|
23866
23874
|
className: formatClassname([!isExpanded && 'collapsed', className, isSuccess && 'success']),
|
|
23867
23875
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
23868
23876
|
className: "cont-header",
|
|
@@ -24019,7 +24027,7 @@ function GroupInfo({
|
|
|
24019
24027
|
});
|
|
24020
24028
|
}
|
|
24021
24029
|
};
|
|
24022
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
24030
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$6, {
|
|
24023
24031
|
className: formatClassname([!isExpanded && 'collapsed', className]),
|
|
24024
24032
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
24025
24033
|
className: "cont-header",
|
|
@@ -24060,7 +24068,7 @@ function GroupInfos({
|
|
|
24060
24068
|
}, key));
|
|
24061
24069
|
}
|
|
24062
24070
|
|
|
24063
|
-
const Style$
|
|
24071
|
+
const Style$5 = styled__default["default"].div`
|
|
24064
24072
|
gap: 16px;
|
|
24065
24073
|
display: flex;
|
|
24066
24074
|
max-width: 465px;
|
|
@@ -24082,7 +24090,7 @@ function EvaluationPopover({
|
|
|
24082
24090
|
t = s => s,
|
|
24083
24091
|
evaluationConfig = []
|
|
24084
24092
|
}) {
|
|
24085
|
-
return /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
24093
|
+
return /*#__PURE__*/jsxRuntime.jsx(Style$5, {
|
|
24086
24094
|
children: evaluationConfig.map(c =>
|
|
24087
24095
|
/*#__PURE__*/
|
|
24088
24096
|
//? ASK REDI
|
|
@@ -26060,7 +26068,7 @@ const useMapHelper = ({
|
|
|
26060
26068
|
};
|
|
26061
26069
|
};
|
|
26062
26070
|
|
|
26063
|
-
const Style$
|
|
26071
|
+
const Style$4 = styled__default["default"].div`
|
|
26064
26072
|
width: 100%;
|
|
26065
26073
|
height: 20rem;
|
|
26066
26074
|
flex: 1;
|
|
@@ -26187,7 +26195,7 @@ function PolygonSelector({
|
|
|
26187
26195
|
searchForLocation(mapRef);
|
|
26188
26196
|
}
|
|
26189
26197
|
}, [searchValue, mapRef]);
|
|
26190
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
26198
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$4, {
|
|
26191
26199
|
className: "polygon-selector",
|
|
26192
26200
|
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
26193
26201
|
className: "map-container",
|
|
@@ -34138,7 +34146,7 @@ const inputTypeComponent$1 = {
|
|
|
34138
34146
|
opts = JSON.parse(JSON.stringify(opts || []));
|
|
34139
34147
|
opts = opts.map(o => getSelectOptions$1(o, formsValue));
|
|
34140
34148
|
if (optionsFilter && Array.isArray(optionsFilter)) {
|
|
34141
|
-
opts = filterOptions$
|
|
34149
|
+
opts = filterOptions$2(opts, optionsFilter, formsValue, repeatValues, filterCond);
|
|
34142
34150
|
}
|
|
34143
34151
|
const uniqueDefaultKeys = getUniqueDefaultKeys(options);
|
|
34144
34152
|
|
|
@@ -34314,7 +34322,7 @@ const inputTypeComponent$1 = {
|
|
|
34314
34322
|
opts = JSON.parse(JSON.stringify(opts));
|
|
34315
34323
|
opts = opts.map(o => getSelectOptions$1(o, formsValue));
|
|
34316
34324
|
if (optionsFilter && Array.isArray(optionsFilter)) {
|
|
34317
|
-
opts = filterOptions$
|
|
34325
|
+
opts = filterOptions$2(opts, optionsFilter, formsValue, repeatValues, filterCond);
|
|
34318
34326
|
}
|
|
34319
34327
|
if (propHasValue$1(value) && Array.isArray(value) && value.length > 0) {
|
|
34320
34328
|
try {
|
|
@@ -37815,7 +37823,7 @@ const inputTypeComponent = {
|
|
|
37815
37823
|
opts = JSON.parse(JSON.stringify(opts));
|
|
37816
37824
|
opts = opts.map(o => getSelectOptions(o, formsValue));
|
|
37817
37825
|
if (optionsFilter && Array.isArray(optionsFilter)) {
|
|
37818
|
-
opts = filterOptions$
|
|
37826
|
+
opts = filterOptions$2(opts, optionsFilter, formsValue, repeatValues, filterCond);
|
|
37819
37827
|
}
|
|
37820
37828
|
if (propHasValue(value)) {
|
|
37821
37829
|
const selectOption = opts.find(o => o.value === value);
|
|
@@ -37934,7 +37942,7 @@ const inputTypeComponent = {
|
|
|
37934
37942
|
opts = JSON.parse(JSON.stringify(opts));
|
|
37935
37943
|
opts = opts.map(o => getSelectOptions(o, formsValue));
|
|
37936
37944
|
if (optionsFilter && Array.isArray(optionsFilter)) {
|
|
37937
|
-
opts = filterOptions$
|
|
37945
|
+
opts = filterOptions$2(opts, optionsFilter, formsValue, repeatValues, filterCond);
|
|
37938
37946
|
}
|
|
37939
37947
|
if (propHasValue(value) && Array.isArray(value) && value.length > 0 && !tags) {
|
|
37940
37948
|
try {
|
|
@@ -40635,7 +40643,7 @@ const useGetQueryParams = ({
|
|
|
40635
40643
|
return params;
|
|
40636
40644
|
};
|
|
40637
40645
|
|
|
40638
|
-
const Style$
|
|
40646
|
+
const Style$3 = styled__default["default"].div`
|
|
40639
40647
|
display: flex;
|
|
40640
40648
|
gap: 8px;
|
|
40641
40649
|
justify-content: center;
|
|
@@ -40658,7 +40666,7 @@ function Footer({
|
|
|
40658
40666
|
disabledFooterText,
|
|
40659
40667
|
disabledFooter
|
|
40660
40668
|
}) {
|
|
40661
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style$
|
|
40669
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$3, {
|
|
40662
40670
|
className: className,
|
|
40663
40671
|
children: [disabledFooterText ? /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
40664
40672
|
title: t(disabledFooterText),
|
|
@@ -41167,7 +41175,7 @@ const viewConfig$b = {
|
|
|
41167
41175
|
};
|
|
41168
41176
|
|
|
41169
41177
|
const {
|
|
41170
|
-
useToken: useToken$
|
|
41178
|
+
useToken: useToken$5
|
|
41171
41179
|
} = antd.theme;
|
|
41172
41180
|
const MAX_LENGTH = 3;
|
|
41173
41181
|
function AvatarGroup({
|
|
@@ -41178,7 +41186,7 @@ function AvatarGroup({
|
|
|
41178
41186
|
const count = items.length === maxLength + 1 ? items.length : maxLength;
|
|
41179
41187
|
const {
|
|
41180
41188
|
token
|
|
41181
|
-
} = useToken$
|
|
41189
|
+
} = useToken$5();
|
|
41182
41190
|
return /*#__PURE__*/jsxRuntime.jsx(antd.Avatar.Group, {
|
|
41183
41191
|
max: {
|
|
41184
41192
|
count: count,
|
|
@@ -42781,11 +42789,11 @@ const getColumns$b = ({
|
|
|
42781
42789
|
className: "daf-default-cell"
|
|
42782
42790
|
});
|
|
42783
42791
|
}
|
|
42784
|
-
const type = findOptions(v,
|
|
42785
|
-
return
|
|
42792
|
+
const type = findOptions(v, options?.eventType || options?.eventsType);
|
|
42793
|
+
return /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
42786
42794
|
title: type,
|
|
42787
42795
|
children: type
|
|
42788
|
-
})
|
|
42796
|
+
});
|
|
42789
42797
|
}
|
|
42790
42798
|
}, {
|
|
42791
42799
|
dataIndex: 'keyStakeholder',
|
|
@@ -44112,7 +44120,7 @@ const getColumns$8 = ({
|
|
|
44112
44120
|
className: "daf-default-cell"
|
|
44113
44121
|
});
|
|
44114
44122
|
}
|
|
44115
|
-
const type = findOptions(title,
|
|
44123
|
+
const type = findOptions(title, options?.testimonialsType);
|
|
44116
44124
|
return type ? /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
44117
44125
|
title: type,
|
|
44118
44126
|
children: type
|
|
@@ -44358,7 +44366,7 @@ const getColumns$7 = ({
|
|
|
44358
44366
|
className: "daf-default-cell"
|
|
44359
44367
|
});
|
|
44360
44368
|
}
|
|
44361
|
-
const locationCategories = [...(
|
|
44369
|
+
const locationCategories = [...(options?.locationCategories || []), ...(options?.productionSiteCategories || [])];
|
|
44362
44370
|
const category = findOptions(v, locationCategories);
|
|
44363
44371
|
return category ? /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
44364
44372
|
title: category,
|
|
@@ -46129,7 +46137,7 @@ const KeyInformation$2 = ({
|
|
|
46129
46137
|
};
|
|
46130
46138
|
|
|
46131
46139
|
const {
|
|
46132
|
-
useToken: useToken$
|
|
46140
|
+
useToken: useToken$4
|
|
46133
46141
|
} = antd.theme;
|
|
46134
46142
|
/**
|
|
46135
46143
|
* RadialBarChart Component
|
|
@@ -46190,7 +46198,7 @@ function RadialBarChart({
|
|
|
46190
46198
|
const chartRef = React__default["default"].useRef(null);
|
|
46191
46199
|
const {
|
|
46192
46200
|
token
|
|
46193
|
-
} = useToken$
|
|
46201
|
+
} = useToken$4();
|
|
46194
46202
|
const {
|
|
46195
46203
|
legendEnabled,
|
|
46196
46204
|
legendItems,
|
|
@@ -46403,7 +46411,7 @@ const InformationAvailability = ({
|
|
|
46403
46411
|
const {
|
|
46404
46412
|
data,
|
|
46405
46413
|
loading
|
|
46406
|
-
} = useWidgetFetch({
|
|
46414
|
+
} = useWidgetFetch$1({
|
|
46407
46415
|
config: defaultFetchConfig
|
|
46408
46416
|
});
|
|
46409
46417
|
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
@@ -46621,7 +46629,7 @@ const useTradeRelationship = ({
|
|
|
46621
46629
|
}), [id, filters?.products, selectedPartners?.partners, selectedPartners?.loading]);
|
|
46622
46630
|
const {
|
|
46623
46631
|
data
|
|
46624
|
-
} = useWidgetFetch({
|
|
46632
|
+
} = useWidgetFetch$1({
|
|
46625
46633
|
config: config
|
|
46626
46634
|
});
|
|
46627
46635
|
const mapItem$1 = data => {
|
|
@@ -47653,7 +47661,7 @@ const Governance = ({
|
|
|
47653
47661
|
const {
|
|
47654
47662
|
data,
|
|
47655
47663
|
loading
|
|
47656
|
-
} = useWidgetFetch({
|
|
47664
|
+
} = useWidgetFetch$1({
|
|
47657
47665
|
config: defaultFetchConfig
|
|
47658
47666
|
});
|
|
47659
47667
|
const graphData = React.useMemo(() => {
|
|
@@ -48231,7 +48239,7 @@ styled__default["default"].div`
|
|
|
48231
48239
|
direction: PropTypes__default["default"].oneOf(["horizontal", "vertical"])
|
|
48232
48240
|
});
|
|
48233
48241
|
|
|
48234
|
-
const Style$
|
|
48242
|
+
const Style$2 = styled__default["default"].div`
|
|
48235
48243
|
display: grid;
|
|
48236
48244
|
grid-template-columns: 1fr 1fr;
|
|
48237
48245
|
gap: 0;
|
|
@@ -48399,7 +48407,7 @@ function ActivityIndicatorsWidget({
|
|
|
48399
48407
|
className: formatClassname(["flex-1 with-border-header h-w-btn-header no-p-body", widgetClassName]),
|
|
48400
48408
|
title: noTitle ? undefined : t(title),
|
|
48401
48409
|
noTitle: noTitle,
|
|
48402
|
-
children: [children, /*#__PURE__*/jsxRuntime.jsx(Style$
|
|
48410
|
+
children: [children, /*#__PURE__*/jsxRuntime.jsx(Style$2, {
|
|
48403
48411
|
className: formatClassname(["activity-indicators-grid", className]),
|
|
48404
48412
|
children: filteredConfig.map((c, i) => /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
48405
48413
|
className: "indicator-item",
|
|
@@ -49711,7 +49719,7 @@ ImageCarousel.propTypes = {
|
|
|
49711
49719
|
emptyText: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].node])
|
|
49712
49720
|
};
|
|
49713
49721
|
|
|
49714
|
-
const Style = styled__default["default"].div`
|
|
49722
|
+
const Style$1 = styled__default["default"].div`
|
|
49715
49723
|
background: #ffffff;
|
|
49716
49724
|
border-radius: 8px;
|
|
49717
49725
|
border: 1px solid #E5E7EB;
|
|
@@ -49829,7 +49837,7 @@ const StatCard = ({
|
|
|
49829
49837
|
return isNaN(numValue) || numValue === 0;
|
|
49830
49838
|
};
|
|
49831
49839
|
const shouldShowChange = change && !isChangeZero();
|
|
49832
|
-
return /*#__PURE__*/jsxRuntime.jsxs(Style, {
|
|
49840
|
+
return /*#__PURE__*/jsxRuntime.jsxs(Style$1, {
|
|
49833
49841
|
...changeColors,
|
|
49834
49842
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
49835
49843
|
className: "stat-card-header",
|
|
@@ -51867,7 +51875,7 @@ styled__default["default"](antd.Tabs)`
|
|
|
51867
51875
|
});
|
|
51868
51876
|
|
|
51869
51877
|
const {
|
|
51870
|
-
useToken: useToken$
|
|
51878
|
+
useToken: useToken$3
|
|
51871
51879
|
} = antd.theme;
|
|
51872
51880
|
|
|
51873
51881
|
/**
|
|
@@ -51974,7 +51982,7 @@ function ColumnChart({
|
|
|
51974
51982
|
const chartRef = React__default["default"].useRef(null);
|
|
51975
51983
|
const {
|
|
51976
51984
|
token
|
|
51977
|
-
} = useToken$
|
|
51985
|
+
} = useToken$3();
|
|
51978
51986
|
const {
|
|
51979
51987
|
legendEnabled,
|
|
51980
51988
|
legendItems,
|
|
@@ -52068,7 +52076,7 @@ function ColumnChart({
|
|
|
52068
52076
|
}
|
|
52069
52077
|
|
|
52070
52078
|
const {
|
|
52071
|
-
useToken: useToken$
|
|
52079
|
+
useToken: useToken$2
|
|
52072
52080
|
} = antd.theme;
|
|
52073
52081
|
|
|
52074
52082
|
/**
|
|
@@ -52145,7 +52153,7 @@ function DonutPie({
|
|
|
52145
52153
|
const chartRef = React.useRef(null);
|
|
52146
52154
|
const {
|
|
52147
52155
|
token
|
|
52148
|
-
} = useToken$
|
|
52156
|
+
} = useToken$2();
|
|
52149
52157
|
const {
|
|
52150
52158
|
legendEnabled,
|
|
52151
52159
|
legendItems,
|
|
@@ -52226,7 +52234,7 @@ function DonutPie({
|
|
|
52226
52234
|
});
|
|
52227
52235
|
}
|
|
52228
52236
|
|
|
52229
|
-
styled__default["default"].div`
|
|
52237
|
+
const Style = styled__default["default"].div`
|
|
52230
52238
|
.timeline {
|
|
52231
52239
|
display: flex;
|
|
52232
52240
|
justify-content: space-between;
|
|
@@ -52401,6 +52409,267 @@ styled__default["default"].div`
|
|
|
52401
52409
|
}
|
|
52402
52410
|
`;
|
|
52403
52411
|
|
|
52412
|
+
const {
|
|
52413
|
+
useToken: useToken$1
|
|
52414
|
+
} = antd.theme;
|
|
52415
|
+
/**
|
|
52416
|
+
* StackChart Component
|
|
52417
|
+
*
|
|
52418
|
+
* A reusable stacked chart component for visualizing grouped categorical data.
|
|
52419
|
+
* This chart displays data as stacked blocks with hover-enabled popover tooltips.
|
|
52420
|
+
*
|
|
52421
|
+
* Props:
|
|
52422
|
+
* - `data` (Array):
|
|
52423
|
+
* Dataset to render. Each item should include the key defined by `xFieldKey` (for grouping)
|
|
52424
|
+
* and `seriesField` (for categorization).
|
|
52425
|
+
* Default: `[]`
|
|
52426
|
+
*
|
|
52427
|
+
* - `xFieldKey` (string):
|
|
52428
|
+
* The field name to group data items on the X-axis (e.g., "label", "day").
|
|
52429
|
+
* Default: `"label"`
|
|
52430
|
+
*
|
|
52431
|
+
* - `seriesField` (string):
|
|
52432
|
+
* The field used to determine category color/grouping (e.g., "type").
|
|
52433
|
+
* Required for coloring and grouping logic.
|
|
52434
|
+
*
|
|
52435
|
+
* - `className` (string):
|
|
52436
|
+
* Optional additional class for custom styling.
|
|
52437
|
+
*
|
|
52438
|
+
*
|
|
52439
|
+
* - `renderTooltip` (function):
|
|
52440
|
+
* Custom function to render a tooltip for hovered items. Receives an object:
|
|
52441
|
+
* `{ item, itemGroup, mouseX, mouseY }`.
|
|
52442
|
+
* Returns JSX.
|
|
52443
|
+
*
|
|
52444
|
+
* - `yOffset` (number):
|
|
52445
|
+
* Vertical boundary constraint for tooltip positioning.
|
|
52446
|
+
* Default: `130`
|
|
52447
|
+
*
|
|
52448
|
+
* - `xOffset` (number):
|
|
52449
|
+
* Horizontal boundary constraint for tooltip positioning.
|
|
52450
|
+
* Default: `230`
|
|
52451
|
+
*
|
|
52452
|
+
* - `mouseXOffset` (number):
|
|
52453
|
+
* X-offset in pixels from the cursor for tooltip rendering.
|
|
52454
|
+
* Default: `30`
|
|
52455
|
+
*
|
|
52456
|
+
* - `mouseYOffset` (number):
|
|
52457
|
+
* Y-offset in pixels from the cursor for tooltip rendering.
|
|
52458
|
+
* Default: `50`
|
|
52459
|
+
*
|
|
52460
|
+
* - `doConstraints` (boolean):
|
|
52461
|
+
* Enables or disables tooltip boundary checking to avoid overflow.
|
|
52462
|
+
* Default: `true`
|
|
52463
|
+
*
|
|
52464
|
+
* - `colors` (string[] | object):
|
|
52465
|
+
* Optional custom color map or array for categories.
|
|
52466
|
+
* If an array is passed, colors are mapped in order to unique values from `seriesField`.
|
|
52467
|
+
* If an object is passed, it should map specific `seriesField` values to color strings.
|
|
52468
|
+
*
|
|
52469
|
+
* - `valueField` (string):
|
|
52470
|
+
* The field name that contains the numeric value. Items with falsy values (0, null, undefined)
|
|
52471
|
+
* in this field will not render visual blocks but will still show the label.
|
|
52472
|
+
* Default: `"value"`
|
|
52473
|
+
*
|
|
52474
|
+
* Behavior:
|
|
52475
|
+
* - Dynamically computes the height of each stacked item based on the maximum group size.
|
|
52476
|
+
* - Uses Ant Design's `Popover` component for rendering tooltips on hover.
|
|
52477
|
+
* - Fallbacks to theme's `colorPrimary7` if no color is matched.
|
|
52478
|
+
*/
|
|
52479
|
+
function StackChart({
|
|
52480
|
+
data = [],
|
|
52481
|
+
xFieldKey = "label",
|
|
52482
|
+
seriesField = "type",
|
|
52483
|
+
className,
|
|
52484
|
+
// noProvider = false,
|
|
52485
|
+
renderTooltip,
|
|
52486
|
+
yOffset = 130,
|
|
52487
|
+
xOffset = 230,
|
|
52488
|
+
mouseXOffset = 30,
|
|
52489
|
+
mouseYOffset = 50,
|
|
52490
|
+
doConstraints = true,
|
|
52491
|
+
colors,
|
|
52492
|
+
valueField = "value",
|
|
52493
|
+
height = 300,
|
|
52494
|
+
isPdf = false,
|
|
52495
|
+
t = s => s,
|
|
52496
|
+
legendConfig = {}
|
|
52497
|
+
}) {
|
|
52498
|
+
const ref = React__default["default"].useRef();
|
|
52499
|
+
const {
|
|
52500
|
+
token
|
|
52501
|
+
} = useToken$1();
|
|
52502
|
+
const isEmpty = !data.length;
|
|
52503
|
+
const [mouseY, setMouseY] = React__default["default"].useState(0);
|
|
52504
|
+
const [mouseX, setMouseX] = React__default["default"].useState(0);
|
|
52505
|
+
const [hoveredGroup, setHoveredGroup] = React__default["default"].useState(null);
|
|
52506
|
+
const allUniqueLabels = React__default["default"].useMemo(() => {
|
|
52507
|
+
const uniqueLabels = new Set();
|
|
52508
|
+
data.forEach(item => {
|
|
52509
|
+
if (item[xFieldKey]) {
|
|
52510
|
+
uniqueLabels.add(item[xFieldKey]);
|
|
52511
|
+
}
|
|
52512
|
+
});
|
|
52513
|
+
return Array.from(uniqueLabels);
|
|
52514
|
+
}, [data, xFieldKey]);
|
|
52515
|
+
const {
|
|
52516
|
+
legendEnabled,
|
|
52517
|
+
legendItems,
|
|
52518
|
+
legendPosition,
|
|
52519
|
+
legendLayout,
|
|
52520
|
+
legendInteractive,
|
|
52521
|
+
legendStyle
|
|
52522
|
+
} = useLegendConfig({
|
|
52523
|
+
legendConfig,
|
|
52524
|
+
isPdf
|
|
52525
|
+
});
|
|
52526
|
+
const groupedByLabel = React__default["default"].useMemo(() => {
|
|
52527
|
+
return data.reduce((acc, item) => {
|
|
52528
|
+
const label = item[xFieldKey];
|
|
52529
|
+
if (!acc[label]) {
|
|
52530
|
+
acc[label] = [];
|
|
52531
|
+
}
|
|
52532
|
+
acc[label].push(item);
|
|
52533
|
+
return acc;
|
|
52534
|
+
}, {});
|
|
52535
|
+
}, [data, xFieldKey]);
|
|
52536
|
+
const seriesColors = React__default["default"].useMemo(() => {
|
|
52537
|
+
if (isEmpty) return {};
|
|
52538
|
+
if (Array.isArray(colors)) {
|
|
52539
|
+
const uniqueSeries = Array.from(new Set(data.map(item => item[seriesField])));
|
|
52540
|
+
return uniqueSeries.reduce((acc, seriesValue, idx) => {
|
|
52541
|
+
acc[seriesValue] = colors[idx % colors?.length];
|
|
52542
|
+
return acc;
|
|
52543
|
+
}, {});
|
|
52544
|
+
}
|
|
52545
|
+
if (typeof colors === "string") {
|
|
52546
|
+
return data.reduce((acc, item) => {
|
|
52547
|
+
acc[item[seriesField]] = colors;
|
|
52548
|
+
return acc;
|
|
52549
|
+
}, {});
|
|
52550
|
+
}
|
|
52551
|
+
return colors || {};
|
|
52552
|
+
}, [seriesField, colors, data, isEmpty]);
|
|
52553
|
+
let max = 0;
|
|
52554
|
+
allUniqueLabels.forEach(label => {
|
|
52555
|
+
if ((groupedByLabel[label] || [])?.length > max) {
|
|
52556
|
+
max = (groupedByLabel[label] || [])?.length || 0;
|
|
52557
|
+
}
|
|
52558
|
+
});
|
|
52559
|
+
const getEventHeight = columnItemCount => {
|
|
52560
|
+
// if (columnItemCount === 0) return 35;
|
|
52561
|
+
// const MARGIN = 2;
|
|
52562
|
+
// const availableHeight = (height || 300) - (columnItemCount < 4 ? 50 : 40);
|
|
52563
|
+
|
|
52564
|
+
// const totalGapSpace = (columnItemCount - 1) * MARGIN;
|
|
52565
|
+
// const availableForEvents = availableHeight - totalGapSpace;
|
|
52566
|
+
// const calculatedHeight = Math.abs(parseFloat((availableForEvents / columnItemCount).toFixed(2)));
|
|
52567
|
+
|
|
52568
|
+
// return calculatedHeight < 1 ? 1 : calculatedHeight;
|
|
52569
|
+
|
|
52570
|
+
const MARGIN = 2;
|
|
52571
|
+
const _height = Math.abs(parseFloat(((height - max * MARGIN) / max).toFixed(2)));
|
|
52572
|
+
return _height > 35 ? 35 : _height - 2;
|
|
52573
|
+
};
|
|
52574
|
+
const eventHeight = getEventHeight();
|
|
52575
|
+
const content = () => {
|
|
52576
|
+
if (isEmpty || !allUniqueLabels.length) {
|
|
52577
|
+
return null;
|
|
52578
|
+
}
|
|
52579
|
+
return allUniqueLabels.map((ev, index) => {
|
|
52580
|
+
const filteredItems = (groupedByLabel?.[ev] || []).filter(item => {
|
|
52581
|
+
return item[valueField] && item[valueField] !== 0;
|
|
52582
|
+
});
|
|
52583
|
+
|
|
52584
|
+
// const eventHeight = getEventHeight(filteredItems.length);
|
|
52585
|
+
|
|
52586
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
52587
|
+
className: "weekDay",
|
|
52588
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
52589
|
+
className: "dayCol",
|
|
52590
|
+
style: {
|
|
52591
|
+
height: `${height - 20}px`
|
|
52592
|
+
},
|
|
52593
|
+
children: filteredItems.map((e, ind) => {
|
|
52594
|
+
return /*#__PURE__*/jsxRuntime.jsx(antd.Popover, {
|
|
52595
|
+
overlayClassName: "event-popover",
|
|
52596
|
+
content: renderTooltipJsx(renderTooltip({
|
|
52597
|
+
item: {
|
|
52598
|
+
...(e || {}),
|
|
52599
|
+
color: seriesColors[e[seriesField]] || token.colorPrimary7
|
|
52600
|
+
},
|
|
52601
|
+
itemGroup: groupedByLabel?.[ev] || []
|
|
52602
|
+
})),
|
|
52603
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
52604
|
+
className: "event",
|
|
52605
|
+
style: {
|
|
52606
|
+
background: seriesColors[e[seriesField]] || token.colorPrimary7,
|
|
52607
|
+
height: `${eventHeight < 1 ? 1 : eventHeight}px`
|
|
52608
|
+
}
|
|
52609
|
+
})
|
|
52610
|
+
}, ind);
|
|
52611
|
+
})
|
|
52612
|
+
}), ev]
|
|
52613
|
+
}, index);
|
|
52614
|
+
});
|
|
52615
|
+
};
|
|
52616
|
+
const onMouseLeaveHandler = React__default["default"].useCallback((e, hG, id) => {
|
|
52617
|
+
let x = e.clientX - ref.current.getBoundingClientRect().left + mouseXOffset;
|
|
52618
|
+
let y = e.clientY - ref.current.getBoundingClientRect().top + mouseYOffset;
|
|
52619
|
+
if (doConstraints && ref.current.clientWidth - x < xOffset) {
|
|
52620
|
+
x = ref.current.clientWidth - xOffset;
|
|
52621
|
+
}
|
|
52622
|
+
if (doConstraints && ref.current.clientHeight - y < yOffset) {
|
|
52623
|
+
y = 0;
|
|
52624
|
+
x = ref.current.clientWidth / 2 - 100;
|
|
52625
|
+
}
|
|
52626
|
+
setMouseY(y);
|
|
52627
|
+
setMouseX(x);
|
|
52628
|
+
if (hoveredGroup === null) {
|
|
52629
|
+
setHoveredGroup({
|
|
52630
|
+
...hG,
|
|
52631
|
+
id
|
|
52632
|
+
});
|
|
52633
|
+
}
|
|
52634
|
+
}, [hoveredGroup]);
|
|
52635
|
+
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
52636
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs(Style, {
|
|
52637
|
+
...(isEmpty ? {
|
|
52638
|
+
onMouseEnter: () => {
|
|
52639
|
+
setHoveredGroup({
|
|
52640
|
+
id: 0
|
|
52641
|
+
});
|
|
52642
|
+
},
|
|
52643
|
+
onMouseLeave: () => {
|
|
52644
|
+
setHoveredGroup(null);
|
|
52645
|
+
},
|
|
52646
|
+
onMouseMove: e => onMouseLeaveHandler(e, {}, 0)
|
|
52647
|
+
} : {}),
|
|
52648
|
+
className: formatClassname(["riskProfile", className]),
|
|
52649
|
+
ref: ref,
|
|
52650
|
+
style: {
|
|
52651
|
+
height: `${height}px`
|
|
52652
|
+
},
|
|
52653
|
+
children: [typeof renderTooltip === "function" && !isEmpty ? hoveredGroup !== null ? renderTooltip({
|
|
52654
|
+
mouseX,
|
|
52655
|
+
mouseY,
|
|
52656
|
+
item: hoveredGroup
|
|
52657
|
+
}) : null : null, /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
52658
|
+
className: "timeline",
|
|
52659
|
+
style: {
|
|
52660
|
+
height: `${height}px`
|
|
52661
|
+
},
|
|
52662
|
+
children: content()
|
|
52663
|
+
})]
|
|
52664
|
+
}), legendEnabled && legendPosition === 'bottom' && /*#__PURE__*/jsxRuntime.jsx(CustomLegend, {
|
|
52665
|
+
items: legendItems,
|
|
52666
|
+
layout: legendLayout,
|
|
52667
|
+
interactive: legendInteractive,
|
|
52668
|
+
style: legendStyle
|
|
52669
|
+
})]
|
|
52670
|
+
});
|
|
52671
|
+
}
|
|
52672
|
+
|
|
52404
52673
|
const {
|
|
52405
52674
|
useToken
|
|
52406
52675
|
} = antd.theme;
|
|
@@ -52604,7 +52873,7 @@ const RadarChart = ({
|
|
|
52604
52873
|
* @param {boolean} doubleDigit - Whether to ensure single digit numbers are padded with a leading zero
|
|
52605
52874
|
* @returns {string} Formatted number string or '--' if input is not a number
|
|
52606
52875
|
*/
|
|
52607
|
-
const renderNumber = (val, doubleDigit = false) => {
|
|
52876
|
+
const renderNumber$1 = (val, doubleDigit = false) => {
|
|
52608
52877
|
if (typeof val !== 'number') {
|
|
52609
52878
|
return '-';
|
|
52610
52879
|
}
|
|
@@ -53714,6 +53983,31 @@ function MissingTagButton({
|
|
|
53714
53983
|
});
|
|
53715
53984
|
}
|
|
53716
53985
|
|
|
53986
|
+
const SingleTruncatedLine = ({
|
|
53987
|
+
data = []
|
|
53988
|
+
}) => {
|
|
53989
|
+
const displayText = data?.join(", ");
|
|
53990
|
+
const tooltipText = data?.join("\n");
|
|
53991
|
+
return /*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
53992
|
+
title: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
53993
|
+
style: {
|
|
53994
|
+
whiteSpace: "pre-line"
|
|
53995
|
+
},
|
|
53996
|
+
children: tooltipText
|
|
53997
|
+
}),
|
|
53998
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
53999
|
+
style: {
|
|
54000
|
+
fontWeight: "normal",
|
|
54001
|
+
overflow: "hidden",
|
|
54002
|
+
textOverflow: "ellipsis",
|
|
54003
|
+
whiteSpace: "nowrap",
|
|
54004
|
+
maxWidth: "100%"
|
|
54005
|
+
},
|
|
54006
|
+
children: displayText
|
|
54007
|
+
})
|
|
54008
|
+
});
|
|
54009
|
+
};
|
|
54010
|
+
|
|
53717
54011
|
styled__default["default"].div`
|
|
53718
54012
|
display: flex;
|
|
53719
54013
|
flex-direction: column;
|
|
@@ -54057,6 +54351,344 @@ const getRedirectLink = (link, APP) => {
|
|
|
54057
54351
|
return link;
|
|
54058
54352
|
};
|
|
54059
54353
|
|
|
54354
|
+
const buildBreadCrumbs = ({
|
|
54355
|
+
config,
|
|
54356
|
+
items,
|
|
54357
|
+
t,
|
|
54358
|
+
breadCrumbsLabels,
|
|
54359
|
+
id,
|
|
54360
|
+
getRedirectLink,
|
|
54361
|
+
createOnClick,
|
|
54362
|
+
goTo,
|
|
54363
|
+
view,
|
|
54364
|
+
skipInteractions = false
|
|
54365
|
+
}) => {
|
|
54366
|
+
const pathConfig = config.path || [];
|
|
54367
|
+
pathConfig.forEach(pathItem => {
|
|
54368
|
+
if (typeof pathItem === 'string') {
|
|
54369
|
+
items.push({
|
|
54370
|
+
label: t(breadCrumbsLabels[pathItem]),
|
|
54371
|
+
onClick: () => {}
|
|
54372
|
+
});
|
|
54373
|
+
} else if (typeof pathItem === 'object') {
|
|
54374
|
+
const {
|
|
54375
|
+
key,
|
|
54376
|
+
link,
|
|
54377
|
+
useRedirect
|
|
54378
|
+
} = pathItem;
|
|
54379
|
+
if (key === 'id' && id) {
|
|
54380
|
+
const resolvedLink = typeof link === 'function' ? link(id) : link;
|
|
54381
|
+
const finalLink = useRedirect ? getRedirectLink(resolvedLink) : resolvedLink;
|
|
54382
|
+
items.push({
|
|
54383
|
+
label: id,
|
|
54384
|
+
onClick: skipInteractions ? () => {} : finalLink ? createOnClick(() => goTo(finalLink)) : () => {}
|
|
54385
|
+
});
|
|
54386
|
+
} else {
|
|
54387
|
+
const resolvedLink = typeof link === 'function' ? link(view, id) : link;
|
|
54388
|
+
const finalLink = resolvedLink && useRedirect ? getRedirectLink(resolvedLink) : resolvedLink;
|
|
54389
|
+
items.push({
|
|
54390
|
+
label: t(breadCrumbsLabels[key]),
|
|
54391
|
+
onClick: skipInteractions ? () => {} : finalLink ? createOnClick(() => goTo(finalLink)) : () => {}
|
|
54392
|
+
});
|
|
54393
|
+
}
|
|
54394
|
+
}
|
|
54395
|
+
});
|
|
54396
|
+
if (config.includeId && id && id !== 'user') {
|
|
54397
|
+
items.push({
|
|
54398
|
+
label: id,
|
|
54399
|
+
onClick: () => {}
|
|
54400
|
+
});
|
|
54401
|
+
}
|
|
54402
|
+
if (config.suffix) {
|
|
54403
|
+
config.suffix.forEach(suffixItem => {
|
|
54404
|
+
items.push({
|
|
54405
|
+
label: t(breadCrumbsLabels[suffixItem]),
|
|
54406
|
+
onClick: () => {}
|
|
54407
|
+
});
|
|
54408
|
+
});
|
|
54409
|
+
}
|
|
54410
|
+
};
|
|
54411
|
+
const renderBreadCrumbs = ({
|
|
54412
|
+
t = () => {},
|
|
54413
|
+
goTo = () => {},
|
|
54414
|
+
view,
|
|
54415
|
+
isAnalysis = false,
|
|
54416
|
+
isEdit = false,
|
|
54417
|
+
isView = false,
|
|
54418
|
+
isDataStore = false,
|
|
54419
|
+
id,
|
|
54420
|
+
addedItems = [],
|
|
54421
|
+
changeNotificationState,
|
|
54422
|
+
breadCrumbConfig = {},
|
|
54423
|
+
breadCrumbsLabels = {},
|
|
54424
|
+
getRedirectLink = () => {},
|
|
54425
|
+
condition,
|
|
54426
|
+
conditionFallback = 'show-non-interactive' // 'show-non-interactive' | 'hide' | 'show-simplified'
|
|
54427
|
+
}) => {
|
|
54428
|
+
const items = [];
|
|
54429
|
+
const createOnClick = callback => {
|
|
54430
|
+
if (!callback) return () => {};
|
|
54431
|
+
return () => {
|
|
54432
|
+
if (changeNotificationState) {
|
|
54433
|
+
changeNotificationState({
|
|
54434
|
+
onYes: callback
|
|
54435
|
+
});
|
|
54436
|
+
} else {
|
|
54437
|
+
callback();
|
|
54438
|
+
}
|
|
54439
|
+
};
|
|
54440
|
+
};
|
|
54441
|
+
const evaluateCondition = (cond, context) => {
|
|
54442
|
+
if (cond === undefined) return true; // No condition = always pass
|
|
54443
|
+
if (typeof cond === 'function') return cond(context); // Function condition
|
|
54444
|
+
return Boolean(cond); // Boolean condition
|
|
54445
|
+
};
|
|
54446
|
+
const config = breadCrumbConfig[view];
|
|
54447
|
+
if (config) {
|
|
54448
|
+
const conditionContext = {
|
|
54449
|
+
isDataStore,
|
|
54450
|
+
isAnalysis,
|
|
54451
|
+
isEdit,
|
|
54452
|
+
isView,
|
|
54453
|
+
id,
|
|
54454
|
+
view,
|
|
54455
|
+
t,
|
|
54456
|
+
goTo,
|
|
54457
|
+
getRedirectLink,
|
|
54458
|
+
changeNotificationState,
|
|
54459
|
+
addedItems
|
|
54460
|
+
};
|
|
54461
|
+
const externalConditionPassed = evaluateCondition(condition, conditionContext);
|
|
54462
|
+
const configConditionPassed = evaluateCondition(config.condition, conditionContext);
|
|
54463
|
+
if (!configConditionPassed) {
|
|
54464
|
+
if (config.fallback) {
|
|
54465
|
+
buildBreadCrumbs({
|
|
54466
|
+
config: config.fallback,
|
|
54467
|
+
items,
|
|
54468
|
+
t,
|
|
54469
|
+
breadCrumbsLabels,
|
|
54470
|
+
id,
|
|
54471
|
+
getRedirectLink,
|
|
54472
|
+
createOnClick,
|
|
54473
|
+
goTo,
|
|
54474
|
+
view
|
|
54475
|
+
});
|
|
54476
|
+
}
|
|
54477
|
+
} else if (!externalConditionPassed) {
|
|
54478
|
+
if (config.fallback) {
|
|
54479
|
+
// Use config fallback when prop condition fails
|
|
54480
|
+
buildBreadCrumbs({
|
|
54481
|
+
config: config.fallback,
|
|
54482
|
+
items,
|
|
54483
|
+
t,
|
|
54484
|
+
breadCrumbsLabels,
|
|
54485
|
+
id,
|
|
54486
|
+
getRedirectLink,
|
|
54487
|
+
createOnClick,
|
|
54488
|
+
goTo,
|
|
54489
|
+
view
|
|
54490
|
+
});
|
|
54491
|
+
} else {
|
|
54492
|
+
switch (conditionFallback) {
|
|
54493
|
+
case 'hide':
|
|
54494
|
+
break;
|
|
54495
|
+
case 'show-simplified':
|
|
54496
|
+
{
|
|
54497
|
+
const simplifiedConfig = {
|
|
54498
|
+
...config,
|
|
54499
|
+
path: config.path.slice(0, 2),
|
|
54500
|
+
includeId: false,
|
|
54501
|
+
suffix: undefined
|
|
54502
|
+
};
|
|
54503
|
+
buildBreadCrumbs({
|
|
54504
|
+
config: simplifiedConfig,
|
|
54505
|
+
items,
|
|
54506
|
+
t,
|
|
54507
|
+
breadCrumbsLabels,
|
|
54508
|
+
id,
|
|
54509
|
+
getRedirectLink,
|
|
54510
|
+
createOnClick,
|
|
54511
|
+
goTo,
|
|
54512
|
+
view
|
|
54513
|
+
});
|
|
54514
|
+
break;
|
|
54515
|
+
}
|
|
54516
|
+
case 'show-non-interactive':
|
|
54517
|
+
default:
|
|
54518
|
+
buildBreadCrumbs({
|
|
54519
|
+
config,
|
|
54520
|
+
items,
|
|
54521
|
+
t,
|
|
54522
|
+
breadCrumbsLabels,
|
|
54523
|
+
id,
|
|
54524
|
+
getRedirectLink,
|
|
54525
|
+
createOnClick,
|
|
54526
|
+
goTo,
|
|
54527
|
+
view,
|
|
54528
|
+
skipInteractions: true
|
|
54529
|
+
});
|
|
54530
|
+
break;
|
|
54531
|
+
}
|
|
54532
|
+
}
|
|
54533
|
+
} else {
|
|
54534
|
+
buildBreadCrumbs({
|
|
54535
|
+
config,
|
|
54536
|
+
items,
|
|
54537
|
+
t,
|
|
54538
|
+
breadCrumbsLabels,
|
|
54539
|
+
id,
|
|
54540
|
+
getRedirectLink,
|
|
54541
|
+
createOnClick,
|
|
54542
|
+
goTo,
|
|
54543
|
+
view
|
|
54544
|
+
});
|
|
54545
|
+
}
|
|
54546
|
+
}
|
|
54547
|
+
if (isView) {
|
|
54548
|
+
items.push({
|
|
54549
|
+
label: t(breadCrumbsLabels.details)
|
|
54550
|
+
});
|
|
54551
|
+
} else if (isEdit) {
|
|
54552
|
+
items.push({
|
|
54553
|
+
label: t(breadCrumbsLabels.edit)
|
|
54554
|
+
});
|
|
54555
|
+
} else if (isAnalysis) {
|
|
54556
|
+
items.push({
|
|
54557
|
+
label: t(breadCrumbsLabels.summary)
|
|
54558
|
+
});
|
|
54559
|
+
}
|
|
54560
|
+
items.push(...addedItems);
|
|
54561
|
+
return items.filter(v => !!v.label);
|
|
54562
|
+
};
|
|
54563
|
+
|
|
54564
|
+
// Breadcrumbs Config Helper
|
|
54565
|
+
|
|
54566
|
+
// 1.Simple static path
|
|
54567
|
+
// 'country-overview': {
|
|
54568
|
+
// path: ['analysis', 'country-overview'],
|
|
54569
|
+
// }
|
|
54570
|
+
// Result: Analysis > Country Overview
|
|
54571
|
+
// Neither is clickable
|
|
54572
|
+
|
|
54573
|
+
// 2.Clickable Parents with Links
|
|
54574
|
+
// 'mines': {
|
|
54575
|
+
// path: [
|
|
54576
|
+
// 'modules', // Not clickable
|
|
54577
|
+
// { key: 'mines', link: '/app/mines' } // Clickable, navigates to /app/mines
|
|
54578
|
+
// ],
|
|
54579
|
+
// }
|
|
54580
|
+
// Result: Modules > Mines (clickable)
|
|
54581
|
+
|
|
54582
|
+
// 3.Include ID at the end
|
|
54583
|
+
// 'partners': {
|
|
54584
|
+
// path: ['modules', { key: 'partners', link: '/app/partners', useRedirect: true }],
|
|
54585
|
+
// includeId: true, // ← ID will be added at the end
|
|
54586
|
+
// }
|
|
54587
|
+
// With id='ABC123':
|
|
54588
|
+
// Result: Modules > Partners (clickable) > ABC123 (not clickable)
|
|
54589
|
+
|
|
54590
|
+
// 4.Dynamic Id in the middle
|
|
54591
|
+
// 'mine-evaluation': {
|
|
54592
|
+
// path: [
|
|
54593
|
+
// 'modules',
|
|
54594
|
+
// { key: 'mines', link: '/app/mines' },
|
|
54595
|
+
// { key: 'id', link: (id) => `/app/mines/${id}` }, // ← ID here
|
|
54596
|
+
// 'evaluation',
|
|
54597
|
+
// ],
|
|
54598
|
+
// }
|
|
54599
|
+
// With id='MINE-456':
|
|
54600
|
+
// Result: Modules > Mines > MINE-456 (clickable to /app/mines/MINE-456) > Evaluation
|
|
54601
|
+
|
|
54602
|
+
// 5. Dynamic Links using functions
|
|
54603
|
+
// 'producers': {
|
|
54604
|
+
// path: [
|
|
54605
|
+
// 'modules',
|
|
54606
|
+
// {
|
|
54607
|
+
// key: 'producers',
|
|
54608
|
+
// link: (view) => `/app/${view}`, // ← Uses 'view' parameter
|
|
54609
|
+
// useRedirect: true
|
|
54610
|
+
// }
|
|
54611
|
+
// ],
|
|
54612
|
+
// includeId: true,
|
|
54613
|
+
// }
|
|
54614
|
+
// With view='producers':
|
|
54615
|
+
// Result: Modules > Producers (navigates to /app/producers)
|
|
54616
|
+
|
|
54617
|
+
// 6.use Redirect link
|
|
54618
|
+
// 'settings': {
|
|
54619
|
+
// path: [
|
|
54620
|
+
// {
|
|
54621
|
+
// key: 'settings',
|
|
54622
|
+
// link: '/app/view/settings',
|
|
54623
|
+
// useRedirect: true // ← Wraps with getRedirectLink()
|
|
54624
|
+
// }
|
|
54625
|
+
// ],
|
|
54626
|
+
// }
|
|
54627
|
+
// Navigation will use getRedirectLink('/app/view/settings')
|
|
54628
|
+
|
|
54629
|
+
// 7.Conditional Rendering
|
|
54630
|
+
// 'entities': {
|
|
54631
|
+
// condition: (opts) => opts.isDataStore, // ← Only shows if isDataStore=true
|
|
54632
|
+
// path: [
|
|
54633
|
+
// 'data',
|
|
54634
|
+
// { key: 'data-store', link: '/app/data-store', useRedirect: true },
|
|
54635
|
+
// { key: 'entities', link: '/app/data-store/entities', useRedirect: true },
|
|
54636
|
+
// ],
|
|
54637
|
+
// }
|
|
54638
|
+
// With isDataStore=false: No breadcrumbs shown
|
|
54639
|
+
// With isDataStore=true: Data > Store > Entities
|
|
54640
|
+
|
|
54641
|
+
// 8.Conditional Fallback
|
|
54642
|
+
// 'locations': {
|
|
54643
|
+
// condition: (opts) => opts.isDataStore,
|
|
54644
|
+
// path: [
|
|
54645
|
+
// 'data',
|
|
54646
|
+
// { key: 'data-store', link: '/app/data-store', useRedirect: true },
|
|
54647
|
+
// { key: 'locations', link: '/app/data-store/locations', useRedirect: true },
|
|
54648
|
+
// ],
|
|
54649
|
+
// fallback: { // ← Alternative when condition is false
|
|
54650
|
+
// path: [
|
|
54651
|
+
// 'modules',
|
|
54652
|
+
// 'linkedSubjects',
|
|
54653
|
+
// { key: 'locations', link: '/app/locations', useRedirect: true },
|
|
54654
|
+
// ],
|
|
54655
|
+
// includeId: true,
|
|
54656
|
+
// },
|
|
54657
|
+
// }
|
|
54658
|
+
// isDataStore=true: Data > Store > Locations
|
|
54659
|
+
// isDataStore=false: Modules > Associated Information > Locations > {id}
|
|
54660
|
+
|
|
54661
|
+
// 9. Suffix items
|
|
54662
|
+
// 'mine-monitoring': {
|
|
54663
|
+
// path: [
|
|
54664
|
+
// 'modules',
|
|
54665
|
+
// { key: 'mines', link: '/app/mines' }
|
|
54666
|
+
// ],
|
|
54667
|
+
// includeId: true,
|
|
54668
|
+
// suffix: ['visits'], // ← Added at the end
|
|
54669
|
+
// }
|
|
54670
|
+
// With id='MINE-789':
|
|
54671
|
+
// Result: Modules > Mines > MINE-789 > Visits
|
|
54672
|
+
|
|
54673
|
+
// 10. Complex multi level path
|
|
54674
|
+
// 'monitoringReport': {
|
|
54675
|
+
// path: [
|
|
54676
|
+
// 'modules', // Static label
|
|
54677
|
+
// { key: 'mines', link: '/app/mines' }, // Clickable parent
|
|
54678
|
+
// { key: 'id', link: (id) => `/app/mines/${id}` }, // Dynamic ID with link
|
|
54679
|
+
// 'monitoringReport', // Static label at end
|
|
54680
|
+
// ],
|
|
54681
|
+
// }
|
|
54682
|
+
// With id='MINE-999':
|
|
54683
|
+
// Result: Modules > Mines (→/app/mines) > MINE-999 (→/app/mines/MINE-999) > Executive Monitoring Report
|
|
54684
|
+
|
|
54685
|
+
// 11. Access multiple options in condition
|
|
54686
|
+
// 'custom-view': {
|
|
54687
|
+
// condition: (opts) => opts.isDataStore && opts.isEdit && opts.id,
|
|
54688
|
+
// path: ['data', 'custom'],
|
|
54689
|
+
// }
|
|
54690
|
+
// Available in opts: { isDataStore, isAnalysis, isEdit, isView, id, view }
|
|
54691
|
+
|
|
54060
54692
|
styled__default["default"].div`
|
|
54061
54693
|
display: flex;
|
|
54062
54694
|
flex-direction: column;
|
|
@@ -54918,7 +55550,7 @@ const PlantingLocations = ({
|
|
|
54918
55550
|
const {
|
|
54919
55551
|
loading: plantingLocationsLoading,
|
|
54920
55552
|
data: plantingLocationsData
|
|
54921
|
-
} = useWidgetFetch({
|
|
55553
|
+
} = useWidgetFetch$1({
|
|
54922
55554
|
config: defaultConfig,
|
|
54923
55555
|
getData: customGetData
|
|
54924
55556
|
});
|
|
@@ -55063,7 +55695,7 @@ const getFormatDate = (date, breakLine = false, timeFilter = 'monthly') => {
|
|
|
55063
55695
|
case "daily":
|
|
55064
55696
|
return date.format("DD/MM");
|
|
55065
55697
|
case "weekly":
|
|
55066
|
-
return `W${renderNumber(date.week())}`;
|
|
55698
|
+
return `W${renderNumber$1(date.week())}`;
|
|
55067
55699
|
default:
|
|
55068
55700
|
// Monthly format: "Dec 24", "Jan 25", etc.
|
|
55069
55701
|
|
|
@@ -55616,7 +56248,7 @@ const CycleOutcomes = ({
|
|
|
55616
56248
|
const {
|
|
55617
56249
|
loading: dataDetailsLoading,
|
|
55618
56250
|
data: dataDetails
|
|
55619
|
-
} = useWidgetFetch({
|
|
56251
|
+
} = useWidgetFetch$1({
|
|
55620
56252
|
config: defaultConfig,
|
|
55621
56253
|
getData: customGetData
|
|
55622
56254
|
});
|
|
@@ -55952,7 +56584,7 @@ const getHealthAndSafetyTooltipChildren = (item, isEmpty, healthAndSafetyDistrib
|
|
|
55952
56584
|
});
|
|
55953
56585
|
};
|
|
55954
56586
|
|
|
55955
|
-
const filterOptions = [{
|
|
56587
|
+
const filterOptions$1 = [{
|
|
55956
56588
|
value: 'aidKitAccessible',
|
|
55957
56589
|
label: 'Aid kit availability'
|
|
55958
56590
|
}, {
|
|
@@ -56004,7 +56636,7 @@ const HealthAndSafety = ({
|
|
|
56004
56636
|
const {
|
|
56005
56637
|
loading: pieChartLoading,
|
|
56006
56638
|
data: pieChartData
|
|
56007
|
-
} = useWidgetFetch({
|
|
56639
|
+
} = useWidgetFetch$1({
|
|
56008
56640
|
config: defaultConfig,
|
|
56009
56641
|
getData: customGetData
|
|
56010
56642
|
});
|
|
@@ -56053,7 +56685,7 @@ const HealthAndSafety = ({
|
|
|
56053
56685
|
|
|
56054
56686
|
// Get the label for the selected field to use as tooltip title
|
|
56055
56687
|
const selectedFieldLabel = React.useMemo(() => {
|
|
56056
|
-
const selectedOption = filterOptions.find(opt => opt.value === selectedField);
|
|
56688
|
+
const selectedOption = filterOptions$1.find(opt => opt.value === selectedField);
|
|
56057
56689
|
return selectedOption ? selectedOption.label : 'Health and Safety';
|
|
56058
56690
|
}, [selectedField]);
|
|
56059
56691
|
const getTooltipChildren = React.useCallback(item => getHealthAndSafetyTooltipChildren(item, isEmpty, healthAndSafetyDistributionData, t, renderTooltipJsx, selectedFieldLabel), [t, isEmpty, healthAndSafetyDistributionData, selectedFieldLabel]);
|
|
@@ -56076,7 +56708,7 @@ const HealthAndSafety = ({
|
|
|
56076
56708
|
width: 180
|
|
56077
56709
|
},
|
|
56078
56710
|
onChange: handleFilterChange,
|
|
56079
|
-
options: filterOptions.map(opt => ({
|
|
56711
|
+
options: filterOptions$1.map(opt => ({
|
|
56080
56712
|
...opt,
|
|
56081
56713
|
label: t(opt.label)
|
|
56082
56714
|
})),
|
|
@@ -56133,7 +56765,7 @@ const CycleIndicators = ({
|
|
|
56133
56765
|
const {
|
|
56134
56766
|
loading: indicatorsLoading,
|
|
56135
56767
|
data: indicatorsData
|
|
56136
|
-
} = useWidgetFetch({
|
|
56768
|
+
} = useWidgetFetch$1({
|
|
56137
56769
|
config: defaultConfig,
|
|
56138
56770
|
getData: customGetData
|
|
56139
56771
|
});
|
|
@@ -56642,7 +57274,7 @@ const CommunityParticipation = ({
|
|
|
56642
57274
|
const {
|
|
56643
57275
|
loading: communityParticipationLoading,
|
|
56644
57276
|
data: communityParticipationData
|
|
56645
|
-
} = useWidgetFetch({
|
|
57277
|
+
} = useWidgetFetch$1({
|
|
56646
57278
|
config: defaultConfig,
|
|
56647
57279
|
getData: customGetData
|
|
56648
57280
|
});
|
|
@@ -57363,7 +57995,7 @@ const AssociatedInformation = ({
|
|
|
57363
57995
|
loading: associatedInformationLoading,
|
|
57364
57996
|
data: associatedInformationData,
|
|
57365
57997
|
setData
|
|
57366
|
-
} = useWidgetFetch({
|
|
57998
|
+
} = useWidgetFetch$1({
|
|
57367
57999
|
config: defaultConfig,
|
|
57368
58000
|
getData: customGetData
|
|
57369
58001
|
});
|
|
@@ -57497,7 +58129,7 @@ const KeyInformation$1 = ({
|
|
|
57497
58129
|
const {
|
|
57498
58130
|
loading: keyInformationLoading,
|
|
57499
58131
|
data: keyInformationData
|
|
57500
|
-
} = useWidgetFetch({
|
|
58132
|
+
} = useWidgetFetch$1({
|
|
57501
58133
|
config: defaultConfig,
|
|
57502
58134
|
getData: customGetData
|
|
57503
58135
|
});
|
|
@@ -57647,7 +58279,7 @@ const KeyInformation = ({
|
|
|
57647
58279
|
const {
|
|
57648
58280
|
loading: keyInformationLoading,
|
|
57649
58281
|
data: keyInformationData
|
|
57650
|
-
} = useWidgetFetch({
|
|
58282
|
+
} = useWidgetFetch$1({
|
|
57651
58283
|
config: defaultConfig,
|
|
57652
58284
|
getData: customGetData
|
|
57653
58285
|
});
|
|
@@ -57704,7 +58336,7 @@ const MonitoringScopeAndFindings = ({
|
|
|
57704
58336
|
const {
|
|
57705
58337
|
loading: monitoringScopeLoading,
|
|
57706
58338
|
data: monitoringScopeData
|
|
57707
|
-
} = useWidgetFetch({
|
|
58339
|
+
} = useWidgetFetch$1({
|
|
57708
58340
|
config: defaultConfig,
|
|
57709
58341
|
getData: customGetData
|
|
57710
58342
|
});
|
|
@@ -58492,7 +59124,7 @@ const MangroveGrowth = ({
|
|
|
58492
59124
|
const {
|
|
58493
59125
|
loading: outcomesLoading,
|
|
58494
59126
|
data: outcomesData
|
|
58495
|
-
} = useWidgetFetch({
|
|
59127
|
+
} = useWidgetFetch$1({
|
|
58496
59128
|
config: defaultConfig,
|
|
58497
59129
|
getData: customGetData
|
|
58498
59130
|
});
|
|
@@ -58772,7 +59404,7 @@ const BiodiversityHabitat = ({
|
|
|
58772
59404
|
const {
|
|
58773
59405
|
loading: outcomesLoading,
|
|
58774
59406
|
data: outcomesData
|
|
58775
|
-
} = useWidgetFetch({
|
|
59407
|
+
} = useWidgetFetch$1({
|
|
58776
59408
|
config: defaultConfig,
|
|
58777
59409
|
getData: customGetData
|
|
58778
59410
|
});
|
|
@@ -59047,7 +59679,7 @@ const SalinityLevels = ({
|
|
|
59047
59679
|
title: options?.soilTypes?.find(option => option.value === item?.soilType)?.label || title,
|
|
59048
59680
|
items: [{
|
|
59049
59681
|
label: t("Average salinity"),
|
|
59050
|
-
value: `${renderNumber(item?.value || 0)} dS/m`
|
|
59682
|
+
value: `${renderNumber$1(item?.value || 0)} dS/m`
|
|
59051
59683
|
}]
|
|
59052
59684
|
};
|
|
59053
59685
|
}
|
|
@@ -59164,7 +59796,7 @@ const SoilWaterProfile = ({
|
|
|
59164
59796
|
const {
|
|
59165
59797
|
loading: outcomesLoading,
|
|
59166
59798
|
data: outcomesData
|
|
59167
|
-
} = useWidgetFetch({
|
|
59799
|
+
} = useWidgetFetch$1({
|
|
59168
59800
|
config: defaultConfig,
|
|
59169
59801
|
getData: customGetData
|
|
59170
59802
|
});
|
|
@@ -59402,7 +60034,7 @@ const StakeholderMapping = ({
|
|
|
59402
60034
|
const {
|
|
59403
60035
|
data,
|
|
59404
60036
|
loading
|
|
59405
|
-
} = useWidgetFetch({
|
|
60037
|
+
} = useWidgetFetch$1({
|
|
59406
60038
|
config: defaultFilter
|
|
59407
60039
|
});
|
|
59408
60040
|
const graphData = React.useMemo(() => {
|
|
@@ -59445,20 +60077,8 @@ function getKeyIndicatorsConfig({
|
|
|
59445
60077
|
if (validExtractionPoints?.length === 0 || !validExtractionPoints) {
|
|
59446
60078
|
return "-";
|
|
59447
60079
|
}
|
|
59448
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
59449
|
-
|
|
59450
|
-
return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
|
|
59451
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
59452
|
-
title: method,
|
|
59453
|
-
children: /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
59454
|
-
style: {
|
|
59455
|
-
fontWeight: "normal"
|
|
59456
|
-
},
|
|
59457
|
-
children: method
|
|
59458
|
-
})
|
|
59459
|
-
}), index < validExtractionPoints.length - 1 && ", "]
|
|
59460
|
-
}, method);
|
|
59461
|
-
})
|
|
60080
|
+
return /*#__PURE__*/jsxRuntime.jsx(SingleTruncatedLine, {
|
|
60081
|
+
data: validExtractionPoints
|
|
59462
60082
|
});
|
|
59463
60083
|
}
|
|
59464
60084
|
}, {
|
|
@@ -59468,21 +60088,8 @@ function getKeyIndicatorsConfig({
|
|
|
59468
60088
|
if (validProducts?.length === 0 || !validProducts) {
|
|
59469
60089
|
return "-";
|
|
59470
60090
|
}
|
|
59471
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
59472
|
-
|
|
59473
|
-
return /*#__PURE__*/jsxRuntime.jsxs(React__default["default"].Fragment, {
|
|
59474
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(antd.Tooltip, {
|
|
59475
|
-
title: product,
|
|
59476
|
-
children: /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
59477
|
-
style: {
|
|
59478
|
-
fontWeight: "normal",
|
|
59479
|
-
color: getTagColor(product)
|
|
59480
|
-
},
|
|
59481
|
-
children: product
|
|
59482
|
-
})
|
|
59483
|
-
}), index < validProducts.length - 1 && ", "]
|
|
59484
|
-
}, product);
|
|
59485
|
-
})
|
|
60091
|
+
return /*#__PURE__*/jsxRuntime.jsx(SingleTruncatedLine, {
|
|
60092
|
+
data: validProducts
|
|
59486
60093
|
});
|
|
59487
60094
|
}
|
|
59488
60095
|
}, {
|
|
@@ -59593,7 +60200,7 @@ const MineDetailsSection = ({
|
|
|
59593
60200
|
const {
|
|
59594
60201
|
data,
|
|
59595
60202
|
loading: loadingData
|
|
59596
|
-
} = useWidgetFetch({
|
|
60203
|
+
} = useWidgetFetch$1({
|
|
59597
60204
|
config: defaultFetchConfig
|
|
59598
60205
|
});
|
|
59599
60206
|
return /*#__PURE__*/jsxRuntime.jsxs("section", {
|
|
@@ -59779,7 +60386,7 @@ const getKeyIndicatorsRowConfig = ({
|
|
|
59779
60386
|
}, {
|
|
59780
60387
|
label: t('Monitored Area'),
|
|
59781
60388
|
render: () => /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
59782
|
-
children: data?.totalAreaParcelMonitored ? `${renderNumber(data?.totalAreaParcelMonitored)} ha` : '0 ha'
|
|
60389
|
+
children: data?.totalAreaParcelMonitored ? `${renderNumber$1(data?.totalAreaParcelMonitored)} ha` : '0 ha'
|
|
59783
60390
|
})
|
|
59784
60391
|
}];
|
|
59785
60392
|
const getSiteConditionsConfig = ({
|
|
@@ -59822,12 +60429,12 @@ const getEnvironmentalMetricsConfig = ({
|
|
|
59822
60429
|
}, {
|
|
59823
60430
|
label: t('Soil Salinity'),
|
|
59824
60431
|
render: () => /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
59825
|
-
children: data?.soilSalinity ? `${renderNumber(data.soilSalinity)} ${data?.soilSalinityUnit || 'dS/m'}` : '-'
|
|
60432
|
+
children: data?.soilSalinity ? `${renderNumber$1(data.soilSalinity)} ${data?.soilSalinityUnit || 'dS/m'}` : '-'
|
|
59826
60433
|
})
|
|
59827
60434
|
}, {
|
|
59828
60435
|
label: t('pH Level'),
|
|
59829
60436
|
render: () => /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
59830
|
-
children: renderNumber(data?.phLevel) || '-'
|
|
60437
|
+
children: renderNumber$1(data?.phLevel) || '-'
|
|
59831
60438
|
})
|
|
59832
60439
|
}, {
|
|
59833
60440
|
label: t('Water Quality'),
|
|
@@ -62692,6 +63299,11 @@ const Edit = ({
|
|
|
62692
63299
|
viewConfig: viewConfig,
|
|
62693
63300
|
namespaceOverrides
|
|
62694
63301
|
});
|
|
63302
|
+
React.useEffect(() => {
|
|
63303
|
+
if (data?.id && !canEdit) {
|
|
63304
|
+
goTo(getViewLink());
|
|
63305
|
+
}
|
|
63306
|
+
}, [canEdit, goTo, getViewLink, namespace, data?.id]);
|
|
62695
63307
|
const action = React.useMemo(() => actionMap?.[namespaceConfig?.action], [namespaceConfig?.action, actionMap]);
|
|
62696
63308
|
const namespaceGet = {
|
|
62697
63309
|
[namespace]: () => {
|
|
@@ -62787,7 +63399,7 @@ const Edit = ({
|
|
|
62787
63399
|
const pageActions = [{
|
|
62788
63400
|
tooltip: t("Save"),
|
|
62789
63401
|
onClick: () => onSubmitData(),
|
|
62790
|
-
disabled: !isChanged,
|
|
63402
|
+
disabled: !isChanged || !canEdit,
|
|
62791
63403
|
type: "primary",
|
|
62792
63404
|
icon: "Save"
|
|
62793
63405
|
}, {
|
|
@@ -62902,6 +63514,1068 @@ const Edit = ({
|
|
|
62902
63514
|
});
|
|
62903
63515
|
};
|
|
62904
63516
|
|
|
63517
|
+
const renderNumber = (number, locale = 'en') => {
|
|
63518
|
+
return new Intl.NumberFormat(locale).format(number);
|
|
63519
|
+
};
|
|
63520
|
+
const getRowConfig = ({
|
|
63521
|
+
t,
|
|
63522
|
+
data = {},
|
|
63523
|
+
goTo,
|
|
63524
|
+
getRedirectLink,
|
|
63525
|
+
theme = {}
|
|
63526
|
+
}) => [{
|
|
63527
|
+
label: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
63528
|
+
className: "flex",
|
|
63529
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63530
|
+
className: "flex-1",
|
|
63531
|
+
children: t("Identified Armed Groups")
|
|
63532
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63533
|
+
className: "cursor-pointer",
|
|
63534
|
+
onClick: () => goTo(getRedirectLink("/app/armed-groups")),
|
|
63535
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
63536
|
+
name: "LinkNewTab",
|
|
63537
|
+
width: 16,
|
|
63538
|
+
height: 16,
|
|
63539
|
+
color: theme.colorPrimary
|
|
63540
|
+
})
|
|
63541
|
+
})]
|
|
63542
|
+
}),
|
|
63543
|
+
render: () => {
|
|
63544
|
+
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
63545
|
+
children: renderNumber(data.armedGroups ?? 0, "en")
|
|
63546
|
+
});
|
|
63547
|
+
}
|
|
63548
|
+
}, {
|
|
63549
|
+
label: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
63550
|
+
className: "flex",
|
|
63551
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63552
|
+
className: "flex-1",
|
|
63553
|
+
children: t("Reported Incidents")
|
|
63554
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63555
|
+
className: "cursor-pointer",
|
|
63556
|
+
onClick: () => goTo(getRedirectLink("/app/incident")),
|
|
63557
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
63558
|
+
name: "LinkNewTab",
|
|
63559
|
+
width: 16,
|
|
63560
|
+
height: 16,
|
|
63561
|
+
color: theme.colorPrimary
|
|
63562
|
+
})
|
|
63563
|
+
})]
|
|
63564
|
+
}),
|
|
63565
|
+
render: () => /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
63566
|
+
children: renderNumber(data?.incidents ?? 0, "en")
|
|
63567
|
+
})
|
|
63568
|
+
}, {
|
|
63569
|
+
label: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
63570
|
+
className: "flex",
|
|
63571
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63572
|
+
className: "flex-1",
|
|
63573
|
+
children: t("Monitored Locations")
|
|
63574
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63575
|
+
className: "cursor-pointer",
|
|
63576
|
+
onClick: () => goTo(getRedirectLink("/app/locations")),
|
|
63577
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
63578
|
+
name: "LinkNewTab",
|
|
63579
|
+
width: 16,
|
|
63580
|
+
height: 16,
|
|
63581
|
+
color: theme.colorPrimary
|
|
63582
|
+
})
|
|
63583
|
+
})]
|
|
63584
|
+
}),
|
|
63585
|
+
render: () => /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
63586
|
+
children: renderNumber(data.locations ?? 0, "en")
|
|
63587
|
+
})
|
|
63588
|
+
}, {
|
|
63589
|
+
label: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
63590
|
+
className: "flex",
|
|
63591
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63592
|
+
className: "flex-1",
|
|
63593
|
+
children: t("Testimonials")
|
|
63594
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63595
|
+
className: "cursor-pointer",
|
|
63596
|
+
onClick: () => goTo(getRedirectLink("/app/testimonials")),
|
|
63597
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
63598
|
+
name: "LinkNewTab",
|
|
63599
|
+
width: 16,
|
|
63600
|
+
height: 16,
|
|
63601
|
+
color: theme.colorPrimary
|
|
63602
|
+
})
|
|
63603
|
+
})]
|
|
63604
|
+
}),
|
|
63605
|
+
render: () => /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
63606
|
+
children: renderNumber(data.testimonials ?? 0, "en")
|
|
63607
|
+
})
|
|
63608
|
+
}, {
|
|
63609
|
+
label: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
63610
|
+
className: "flex",
|
|
63611
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63612
|
+
className: "flex-1",
|
|
63613
|
+
children: t("Information Sources")
|
|
63614
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
63615
|
+
className: "cursor-pointer",
|
|
63616
|
+
onClick: () => goTo(getRedirectLink("/app/partners")),
|
|
63617
|
+
children: /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
63618
|
+
name: "LinkNewTab",
|
|
63619
|
+
width: 16,
|
|
63620
|
+
height: 16,
|
|
63621
|
+
color: theme.colorPrimary
|
|
63622
|
+
})
|
|
63623
|
+
})]
|
|
63624
|
+
}),
|
|
63625
|
+
render: () => /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
63626
|
+
children: renderNumber(data.partners ?? 0, "en")
|
|
63627
|
+
})
|
|
63628
|
+
}];
|
|
63629
|
+
|
|
63630
|
+
const defaultFetchConfig = {
|
|
63631
|
+
url: "/informations",
|
|
63632
|
+
filters: {},
|
|
63633
|
+
basepath: "dashboard/conflict-management"
|
|
63634
|
+
};
|
|
63635
|
+
function KeyIndicators({
|
|
63636
|
+
selectedPartners = {},
|
|
63637
|
+
partners = 0,
|
|
63638
|
+
t = s => s,
|
|
63639
|
+
goTo = () => {},
|
|
63640
|
+
getRedirectLink = s => s,
|
|
63641
|
+
theme = {}
|
|
63642
|
+
}) {
|
|
63643
|
+
const fetchConfig = React.useMemo(() => ({
|
|
63644
|
+
...defaultFetchConfig,
|
|
63645
|
+
filters: {
|
|
63646
|
+
sources: selectedPartners?.partners || []
|
|
63647
|
+
},
|
|
63648
|
+
stop: selectedPartners?.loading
|
|
63649
|
+
}), [selectedPartners]);
|
|
63650
|
+
const {
|
|
63651
|
+
data,
|
|
63652
|
+
loading
|
|
63653
|
+
} = useWidgetFetch$1({
|
|
63654
|
+
config: fetchConfig
|
|
63655
|
+
});
|
|
63656
|
+
const config = React.useMemo(() => getRowConfig({
|
|
63657
|
+
t,
|
|
63658
|
+
data: {
|
|
63659
|
+
...data,
|
|
63660
|
+
partners
|
|
63661
|
+
},
|
|
63662
|
+
goTo,
|
|
63663
|
+
getRedirectLink,
|
|
63664
|
+
theme
|
|
63665
|
+
}), [t, data, goTo, getRedirectLink, partners, theme]);
|
|
63666
|
+
return /*#__PURE__*/jsxRuntime.jsx(KeyIndicatorsWidget, {
|
|
63667
|
+
t: t,
|
|
63668
|
+
config: config,
|
|
63669
|
+
loading: loading,
|
|
63670
|
+
title: t("Key Information"),
|
|
63671
|
+
className: "small-content"
|
|
63672
|
+
});
|
|
63673
|
+
}
|
|
63674
|
+
|
|
63675
|
+
const areaColors = ["#6698E4", "#B37FEB", "#FF9C6E", "#95DE64", "#FF85C0"];
|
|
63676
|
+
|
|
63677
|
+
const TERRITORY_MAP = "territory";
|
|
63678
|
+
const EVENT_MAP = "event";
|
|
63679
|
+
function MineSites({
|
|
63680
|
+
selectedPartners = {},
|
|
63681
|
+
t = s => s,
|
|
63682
|
+
goTo = () => {},
|
|
63683
|
+
getRedirectLink = s => s,
|
|
63684
|
+
theme = {},
|
|
63685
|
+
APP,
|
|
63686
|
+
options = {},
|
|
63687
|
+
user = {}
|
|
63688
|
+
}) {
|
|
63689
|
+
const tabs = React.useMemo(() => [{
|
|
63690
|
+
value: TERRITORY_MAP,
|
|
63691
|
+
label: t("Armed Groups")
|
|
63692
|
+
}, {
|
|
63693
|
+
value: EVENT_MAP,
|
|
63694
|
+
label: t("Incidents")
|
|
63695
|
+
}], [t]);
|
|
63696
|
+
const [filters, setFilters] = React.useState({});
|
|
63697
|
+
const [activeTab, setActiveTab] = React.useState(tabs[0].value);
|
|
63698
|
+
|
|
63699
|
+
// useEffect(() => {
|
|
63700
|
+
// setFilters({});
|
|
63701
|
+
// }, [activeTab]);
|
|
63702
|
+
|
|
63703
|
+
const defaultFetchConfig = React.useMemo(() => ({
|
|
63704
|
+
basepath: "analytics",
|
|
63705
|
+
url: "/widgets/gps-monitoring",
|
|
63706
|
+
filters: {
|
|
63707
|
+
activeTab,
|
|
63708
|
+
sources: selectedPartners?.partners || [],
|
|
63709
|
+
...filters,
|
|
63710
|
+
...(activeTab === 'event' ? {
|
|
63711
|
+
eventTypes: ['incident']
|
|
63712
|
+
} : {})
|
|
63713
|
+
},
|
|
63714
|
+
defaultData: [],
|
|
63715
|
+
stop: selectedPartners?.loading
|
|
63716
|
+
}), [activeTab, selectedPartners, filters]);
|
|
63717
|
+
const {
|
|
63718
|
+
data,
|
|
63719
|
+
loading
|
|
63720
|
+
} = useWidgetFetch$1({
|
|
63721
|
+
config: defaultFetchConfig
|
|
63722
|
+
});
|
|
63723
|
+
// const { user } = useSelector((state) => state.authentication);
|
|
63724
|
+
|
|
63725
|
+
const filtersConfig = React.useMemo(() => {
|
|
63726
|
+
if (activeTab === EVENT_MAP) {
|
|
63727
|
+
return [{
|
|
63728
|
+
label: t("Location type"),
|
|
63729
|
+
placeholder: t("Select"),
|
|
63730
|
+
key: "category",
|
|
63731
|
+
type: "select",
|
|
63732
|
+
value: filters?.category || "all",
|
|
63733
|
+
options: [{
|
|
63734
|
+
label: t("All"),
|
|
63735
|
+
value: "all"
|
|
63736
|
+
}, ...(options?.locationCategories || [])]
|
|
63737
|
+
}];
|
|
63738
|
+
}
|
|
63739
|
+
}, [activeTab, filters, t, options.locationCategories]);
|
|
63740
|
+
const onFilterChange = filters => {
|
|
63741
|
+
setFilters(p => ({
|
|
63742
|
+
...p,
|
|
63743
|
+
...filters
|
|
63744
|
+
}));
|
|
63745
|
+
};
|
|
63746
|
+
const renderTooltip = data => {
|
|
63747
|
+
if (activeTab === TERRITORY_MAP) {
|
|
63748
|
+
return [{
|
|
63749
|
+
label: t("Members"),
|
|
63750
|
+
value: data.numberOfMembers || "--"
|
|
63751
|
+
}, {
|
|
63752
|
+
label: t("Location"),
|
|
63753
|
+
value: data?.headquarters || "--"
|
|
63754
|
+
}];
|
|
63755
|
+
} else {
|
|
63756
|
+
return [{
|
|
63757
|
+
label: t("Major Incidents"),
|
|
63758
|
+
color: "#F04438",
|
|
63759
|
+
value: data?.totals?.major
|
|
63760
|
+
}, {
|
|
63761
|
+
label: t("Moderate Incidents"),
|
|
63762
|
+
color: "#FF7A45",
|
|
63763
|
+
value: data?.totals?.moderate
|
|
63764
|
+
}, {
|
|
63765
|
+
label: t("Minor Incidents"),
|
|
63766
|
+
color: "#FFC069",
|
|
63767
|
+
value: data?.totals?.minor
|
|
63768
|
+
}];
|
|
63769
|
+
}
|
|
63770
|
+
};
|
|
63771
|
+
const onClickLink = data => {
|
|
63772
|
+
const sourceId = data?.authorId;
|
|
63773
|
+
const getLink = link => getRedirectLink(sourceId && sourceId !== user?.company?.id ? `${link}?sourceId=${sourceId}` : link);
|
|
63774
|
+
if (activeTab === TERRITORY_MAP) {
|
|
63775
|
+
goTo(`/app/view/armed-groups/${data?.datastakeId}`);
|
|
63776
|
+
} else {
|
|
63777
|
+
switch (data?.category) {
|
|
63778
|
+
case "mineSite":
|
|
63779
|
+
return goTo(getLink(`/app/mine-summary/${data?.datastakeId}`));
|
|
63780
|
+
case "area":
|
|
63781
|
+
return goTo(getLink(`/app/view/conflict-areas/${data?.datastakeId}`));
|
|
63782
|
+
default:
|
|
63783
|
+
goTo(getLink(`/app/view/locations/${data?.datastakeId}`));
|
|
63784
|
+
}
|
|
63785
|
+
}
|
|
63786
|
+
};
|
|
63787
|
+
const mapData = React.useMemo(() => {
|
|
63788
|
+
if (activeTab === TERRITORY_MAP) {
|
|
63789
|
+
const safeData = Array.isArray(data) ? data : [];
|
|
63790
|
+
if (safeData.length === 0) return [];
|
|
63791
|
+
return safeData.map((d, index) => {
|
|
63792
|
+
return {
|
|
63793
|
+
...d,
|
|
63794
|
+
area: d?.areaOfInfluence?.areaOfInfluence || {},
|
|
63795
|
+
gps: {
|
|
63796
|
+
latitude: 7,
|
|
63797
|
+
longitude: 1
|
|
63798
|
+
},
|
|
63799
|
+
color: areaColors[index % areaColors.length]
|
|
63800
|
+
};
|
|
63801
|
+
});
|
|
63802
|
+
} else {
|
|
63803
|
+
const safeData = Array.isArray(data) ? data : [];
|
|
63804
|
+
if (safeData.length === 0) return [];
|
|
63805
|
+
const locations = {};
|
|
63806
|
+
data.filter(d => d?.location).forEach(d => {
|
|
63807
|
+
const {
|
|
63808
|
+
location,
|
|
63809
|
+
...rest
|
|
63810
|
+
} = d;
|
|
63811
|
+
const event = {
|
|
63812
|
+
...rest,
|
|
63813
|
+
type: rest.severity ? `${rest.severity}_incident` : ""
|
|
63814
|
+
};
|
|
63815
|
+
if (locations[location.datastakeId]) {
|
|
63816
|
+
locations[location.datastakeId].data.push(event);
|
|
63817
|
+
} else {
|
|
63818
|
+
locations[location.datastakeId] = {
|
|
63819
|
+
gps: location.gps,
|
|
63820
|
+
name: location.name,
|
|
63821
|
+
datastakeId: location.datastakeId,
|
|
63822
|
+
authorId: location?.authorId,
|
|
63823
|
+
data: [event],
|
|
63824
|
+
type: options.locationCategories.find(c => c.value === location.category)?.label,
|
|
63825
|
+
category: location.category
|
|
63826
|
+
};
|
|
63827
|
+
}
|
|
63828
|
+
});
|
|
63829
|
+
return Object.values(locations).map(d => {
|
|
63830
|
+
d.data.forEach(d => {
|
|
63831
|
+
if (Array.isArray(d.sources)) {
|
|
63832
|
+
d.sources.forEach(s => {
|
|
63833
|
+
});
|
|
63834
|
+
}
|
|
63835
|
+
});
|
|
63836
|
+
return {
|
|
63837
|
+
...d,
|
|
63838
|
+
total: d.data.length || 0
|
|
63839
|
+
};
|
|
63840
|
+
});
|
|
63841
|
+
}
|
|
63842
|
+
}, [activeTab, data.length, data, options.locationCategory, filters.type]);
|
|
63843
|
+
const _mapData = React.useMemo(() => {
|
|
63844
|
+
return mapData?.filter(d => d?.gps);
|
|
63845
|
+
}, [activeTab, mapData]);
|
|
63846
|
+
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
63847
|
+
loading: loading,
|
|
63848
|
+
title: t("Conflict Map"),
|
|
63849
|
+
className: "v2-widget no-px no-pb-body h-w-btn-header",
|
|
63850
|
+
tabsConfig: {
|
|
63851
|
+
tabs,
|
|
63852
|
+
value: activeTab,
|
|
63853
|
+
onChange: setActiveTab
|
|
63854
|
+
},
|
|
63855
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Map$1, {
|
|
63856
|
+
t: t,
|
|
63857
|
+
app: APP,
|
|
63858
|
+
showSider: false,
|
|
63859
|
+
user: user,
|
|
63860
|
+
data: _mapData,
|
|
63861
|
+
mapConfig: {
|
|
63862
|
+
maxZoom: 10
|
|
63863
|
+
},
|
|
63864
|
+
primaryLink: true,
|
|
63865
|
+
type: activeTab,
|
|
63866
|
+
onFilterChange: onFilterChange,
|
|
63867
|
+
filtersConfig: activeTab === TERRITORY_MAP ? undefined : filtersConfig,
|
|
63868
|
+
renderTooltip: renderTooltip,
|
|
63869
|
+
onClickLink: onClickLink,
|
|
63870
|
+
link: true
|
|
63871
|
+
}, activeTab)
|
|
63872
|
+
});
|
|
63873
|
+
}
|
|
63874
|
+
|
|
63875
|
+
function useIncidentsTimeline({
|
|
63876
|
+
t = () => {},
|
|
63877
|
+
options = {}
|
|
63878
|
+
}) {
|
|
63879
|
+
const [filters, setFilters] = React.useState({
|
|
63880
|
+
severity: "all"
|
|
63881
|
+
});
|
|
63882
|
+
const filtersConfig = React.useMemo(() => ({
|
|
63883
|
+
filtersConfig: {
|
|
63884
|
+
severity: {
|
|
63885
|
+
type: "select",
|
|
63886
|
+
label: "",
|
|
63887
|
+
placeholder: t => t(""),
|
|
63888
|
+
style: {
|
|
63889
|
+
flex: 1
|
|
63890
|
+
},
|
|
63891
|
+
labelStyle: {
|
|
63892
|
+
flex: 1
|
|
63893
|
+
}
|
|
63894
|
+
}
|
|
63895
|
+
},
|
|
63896
|
+
onApply: val => setFilters(val),
|
|
63897
|
+
options: {
|
|
63898
|
+
severity: [{
|
|
63899
|
+
value: "all",
|
|
63900
|
+
label: t("All")
|
|
63901
|
+
}, ...(options?.severityOptions || [])]
|
|
63902
|
+
},
|
|
63903
|
+
selectedFilters: filters,
|
|
63904
|
+
type: "small",
|
|
63905
|
+
t
|
|
63906
|
+
}), [t, filters, options?.severityOptions]);
|
|
63907
|
+
return {
|
|
63908
|
+
filters,
|
|
63909
|
+
filtersConfig
|
|
63910
|
+
};
|
|
63911
|
+
}
|
|
63912
|
+
|
|
63913
|
+
function IncidentsTime({
|
|
63914
|
+
selectedRange,
|
|
63915
|
+
selectedPartners = {},
|
|
63916
|
+
t = () => {},
|
|
63917
|
+
goTo = s => s,
|
|
63918
|
+
getRedirectLink = s => s,
|
|
63919
|
+
theme = {},
|
|
63920
|
+
APP,
|
|
63921
|
+
options = {}
|
|
63922
|
+
}) {
|
|
63923
|
+
const {
|
|
63924
|
+
filters,
|
|
63925
|
+
filtersConfig
|
|
63926
|
+
} = useIncidentsTimeline({
|
|
63927
|
+
t,
|
|
63928
|
+
options
|
|
63929
|
+
});
|
|
63930
|
+
const {
|
|
63931
|
+
user
|
|
63932
|
+
} = useSelector(state => state.authentication);
|
|
63933
|
+
React.useCallback(sourceId => {
|
|
63934
|
+
if (user?.company?.id !== sourceId) {
|
|
63935
|
+
return `?sourceId=${sourceId}`;
|
|
63936
|
+
}
|
|
63937
|
+
return "";
|
|
63938
|
+
}, [user?.company?.id]);
|
|
63939
|
+
const defaultFetchConfig = React.useMemo(() => ({
|
|
63940
|
+
url: `/incidents-timeline`,
|
|
63941
|
+
filters: {
|
|
63942
|
+
...filters,
|
|
63943
|
+
severity: filters.severity ? filters.severity : "all",
|
|
63944
|
+
period: selectedRange,
|
|
63945
|
+
sources: selectedPartners?.partners || []
|
|
63946
|
+
},
|
|
63947
|
+
defaultData: [],
|
|
63948
|
+
stop: selectedPartners?.loading
|
|
63949
|
+
}), [filters, selectedRange, selectedPartners]);
|
|
63950
|
+
const chartConfig = {};
|
|
63951
|
+
const {
|
|
63952
|
+
data,
|
|
63953
|
+
loading
|
|
63954
|
+
} = useWidgetFetch(defaultFetchConfig);
|
|
63955
|
+
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
63956
|
+
loading: loading,
|
|
63957
|
+
filtersConfig: filtersConfig,
|
|
63958
|
+
title: t("Incidents Timeline"),
|
|
63959
|
+
className: "with-border-header",
|
|
63960
|
+
t: t,
|
|
63961
|
+
children: /*#__PURE__*/jsxRuntime.jsx(StackChart, {
|
|
63962
|
+
...chartConfig,
|
|
63963
|
+
height: "400px",
|
|
63964
|
+
t: t
|
|
63965
|
+
})
|
|
63966
|
+
});
|
|
63967
|
+
}
|
|
63968
|
+
IncidentsTime.propTypes = {
|
|
63969
|
+
selectedRange: PropTypes__default["default"].string,
|
|
63970
|
+
selectedPartners: PropTypes__default["default"].object,
|
|
63971
|
+
t: PropTypes__default["default"].func,
|
|
63972
|
+
goTo: PropTypes__default["default"].func,
|
|
63973
|
+
getRedirectLink: PropTypes__default["default"].func,
|
|
63974
|
+
theme: PropTypes__default["default"].object,
|
|
63975
|
+
APP: PropTypes__default["default"].string,
|
|
63976
|
+
options: PropTypes__default["default"].object
|
|
63977
|
+
};
|
|
63978
|
+
|
|
63979
|
+
function useTerritorialDistribution({
|
|
63980
|
+
t = s => {
|
|
63981
|
+
},
|
|
63982
|
+
options = {}
|
|
63983
|
+
}) {
|
|
63984
|
+
const [filters, setFilters] = React.useState({
|
|
63985
|
+
filter1: 'all',
|
|
63986
|
+
filter2: 'all'
|
|
63987
|
+
});
|
|
63988
|
+
const filtersConfig = React.useMemo(t => ({
|
|
63989
|
+
onApply: val => setFilters(val),
|
|
63990
|
+
options: {
|
|
63991
|
+
filter1: [{
|
|
63992
|
+
label: t('All'),
|
|
63993
|
+
value: 'all'
|
|
63994
|
+
}],
|
|
63995
|
+
filter2: [{
|
|
63996
|
+
label: t('All'),
|
|
63997
|
+
value: 'all'
|
|
63998
|
+
}]
|
|
63999
|
+
},
|
|
64000
|
+
selectedFilters: filters,
|
|
64001
|
+
type: 'small',
|
|
64002
|
+
t
|
|
64003
|
+
}), [t, filters]);
|
|
64004
|
+
return {
|
|
64005
|
+
filters,
|
|
64006
|
+
filtersConfig,
|
|
64007
|
+
setFilters,
|
|
64008
|
+
t
|
|
64009
|
+
};
|
|
64010
|
+
}
|
|
64011
|
+
const getColors = theme => {
|
|
64012
|
+
return [theme.colorPrimary8, theme.colorPrimary7, theme.colorPrimary5, theme.colorPrimary6, theme.colorPrimary4];
|
|
64013
|
+
};
|
|
64014
|
+
|
|
64015
|
+
function TerritorialDistribution({
|
|
64016
|
+
selectedPartners = {},
|
|
64017
|
+
loading: parentLoading = false,
|
|
64018
|
+
t = s => s,
|
|
64019
|
+
theme = {},
|
|
64020
|
+
category = "conflict",
|
|
64021
|
+
selectedRange,
|
|
64022
|
+
goTo = () => {},
|
|
64023
|
+
getRedirectLink = () => {}
|
|
64024
|
+
}) {
|
|
64025
|
+
const {
|
|
64026
|
+
filters,
|
|
64027
|
+
filtersConfig
|
|
64028
|
+
} = useTerritorialDistribution({
|
|
64029
|
+
t
|
|
64030
|
+
});
|
|
64031
|
+
const colors = getColors(theme);
|
|
64032
|
+
const defaultFetchConfig = React.useMemo(() => ({
|
|
64033
|
+
url: "/territorial-distribution",
|
|
64034
|
+
filters: {
|
|
64035
|
+
...filters,
|
|
64036
|
+
category,
|
|
64037
|
+
period: selectedRange,
|
|
64038
|
+
sources: selectedPartners?.partners || []
|
|
64039
|
+
},
|
|
64040
|
+
defaultData: [],
|
|
64041
|
+
stop: selectedPartners?.loading
|
|
64042
|
+
}), [filters, category, selectedRange, selectedPartners]);
|
|
64043
|
+
const {
|
|
64044
|
+
data,
|
|
64045
|
+
loading
|
|
64046
|
+
} = useWidgetFetch$1({
|
|
64047
|
+
config: defaultFetchConfig
|
|
64048
|
+
});
|
|
64049
|
+
const pieData = React.useMemo(() => {
|
|
64050
|
+
if (!data || Array.isArray(data)) return [];
|
|
64051
|
+
const all = Object.keys(data);
|
|
64052
|
+
const totalEvents = all.reduce((acc, key) => acc + (data[key]?.events?.length || 0), 0);
|
|
64053
|
+
return all.sort((a, b) => (data[b]?.events?.length || 0) - (data[a]?.events?.length || 0)).map((key, index) => {
|
|
64054
|
+
const item = data[key];
|
|
64055
|
+
return {
|
|
64056
|
+
value: item?.events?.length,
|
|
64057
|
+
label: item?.locationData?.name,
|
|
64058
|
+
locationData: item?.locationData,
|
|
64059
|
+
color: colors[index % colors.length],
|
|
64060
|
+
percent: totalEvents ? item?.events?.length / totalEvents : 0
|
|
64061
|
+
};
|
|
64062
|
+
});
|
|
64063
|
+
}, [data, colors]);
|
|
64064
|
+
const isEmpty = !pieData.length;
|
|
64065
|
+
const getTooltipChildren = React.useCallback(items => {
|
|
64066
|
+
const item = items[0];
|
|
64067
|
+
return renderTooltipJsx({
|
|
64068
|
+
title: item?.label || t("Undetermined"),
|
|
64069
|
+
link: true,
|
|
64070
|
+
onClickLink: () => {
|
|
64071
|
+
if (item?.label) {
|
|
64072
|
+
goTo(`/app/incident?administrativeLevel1=${item?.locationData?.administrativeLevel1}&administrativeLevel2=${item?.locationData?.administrativeLevel2}&country=${item?.locationData?.country}`);
|
|
64073
|
+
} else {
|
|
64074
|
+
goTo("/app/incident");
|
|
64075
|
+
}
|
|
64076
|
+
},
|
|
64077
|
+
items: [{
|
|
64078
|
+
label: t("Number of incidents"),
|
|
64079
|
+
value: item?.value
|
|
64080
|
+
}]
|
|
64081
|
+
});
|
|
64082
|
+
}, [t, goTo]);
|
|
64083
|
+
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
64084
|
+
loading: loading || parentLoading,
|
|
64085
|
+
title: t("Territorial Distribution"),
|
|
64086
|
+
className: "with-border-header",
|
|
64087
|
+
filtersConfig: filtersConfig,
|
|
64088
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Chart, {
|
|
64089
|
+
mouseXOffset: 10,
|
|
64090
|
+
mouseYOffset: 10,
|
|
64091
|
+
changeOpacityOnHover: false,
|
|
64092
|
+
data: pieData,
|
|
64093
|
+
doConstraints: false,
|
|
64094
|
+
isPie: true,
|
|
64095
|
+
t: t,
|
|
64096
|
+
isEmpty: isEmpty,
|
|
64097
|
+
getTooltipChildren: getTooltipChildren
|
|
64098
|
+
})
|
|
64099
|
+
});
|
|
64100
|
+
}
|
|
64101
|
+
TerritorialDistribution.propTypes = {
|
|
64102
|
+
selectedPartners: PropTypes__default["default"].object,
|
|
64103
|
+
loading: PropTypes__default["default"].bool,
|
|
64104
|
+
t: PropTypes__default["default"].func,
|
|
64105
|
+
theme: PropTypes__default["default"].object,
|
|
64106
|
+
category: PropTypes__default["default"].string,
|
|
64107
|
+
selectedRange: PropTypes__default["default"].string
|
|
64108
|
+
};
|
|
64109
|
+
|
|
64110
|
+
function useProblemSolvers(t = () => {}) {
|
|
64111
|
+
const [filters, setFilters] = React.useState({
|
|
64112
|
+
administrativeLevel1: "all"
|
|
64113
|
+
});
|
|
64114
|
+
const [filterOptions, setFilterOptions] = React.useState([]);
|
|
64115
|
+
React.useEffect(() => {
|
|
64116
|
+
async function fetchOptions() {
|
|
64117
|
+
try {
|
|
64118
|
+
const {
|
|
64119
|
+
data
|
|
64120
|
+
} = await DashboardService$1.getWidget({
|
|
64121
|
+
url: "/problem-solvers"
|
|
64122
|
+
});
|
|
64123
|
+
const rawOptions = Object.keys(data).map(agentKey => {
|
|
64124
|
+
const actions = data[agentKey]?.actions || [];
|
|
64125
|
+
return actions.map(action => {
|
|
64126
|
+
const lvl1 = action?.location?.administrativeLevel1;
|
|
64127
|
+
const name = action?.location?.name || action?.location?.administrativeLevel1 || null;
|
|
64128
|
+
if (!lvl1 || !name) return undefined;
|
|
64129
|
+
return {
|
|
64130
|
+
label: name,
|
|
64131
|
+
value: lvl1
|
|
64132
|
+
};
|
|
64133
|
+
}).filter(Boolean);
|
|
64134
|
+
}).flat();
|
|
64135
|
+
const unique = [...new Map(rawOptions.map(item => [item.value, item])).values()];
|
|
64136
|
+
setFilterOptions(unique);
|
|
64137
|
+
} catch (err) {
|
|
64138
|
+
console.error("Problem Solvers fetch failed:", err);
|
|
64139
|
+
}
|
|
64140
|
+
}
|
|
64141
|
+
fetchOptions();
|
|
64142
|
+
}, []);
|
|
64143
|
+
const filtersConfig = React.useMemo(() => ({
|
|
64144
|
+
filtersConfig: {
|
|
64145
|
+
administrativeLevel1: {
|
|
64146
|
+
type: "select",
|
|
64147
|
+
label: "",
|
|
64148
|
+
placeholder: t("Select"),
|
|
64149
|
+
style: {
|
|
64150
|
+
flex: 1
|
|
64151
|
+
},
|
|
64152
|
+
labelStyle: {
|
|
64153
|
+
flex: 1
|
|
64154
|
+
}
|
|
64155
|
+
}
|
|
64156
|
+
},
|
|
64157
|
+
onApply: val => setFilters(val),
|
|
64158
|
+
options: {
|
|
64159
|
+
administrativeLevel1: [{
|
|
64160
|
+
label: t("All"),
|
|
64161
|
+
value: "all"
|
|
64162
|
+
}, ...filterOptions]
|
|
64163
|
+
},
|
|
64164
|
+
selectedFilters: filters,
|
|
64165
|
+
type: "small",
|
|
64166
|
+
t
|
|
64167
|
+
}), [t, filters, filterOptions]);
|
|
64168
|
+
return {
|
|
64169
|
+
filters,
|
|
64170
|
+
filtersConfig
|
|
64171
|
+
};
|
|
64172
|
+
}
|
|
64173
|
+
|
|
64174
|
+
const distributionColors = ["#3061A8", "#6698E4", "#A6C3EF", "#D6E3F8", "#E6EEFB"];
|
|
64175
|
+
function ProblemSolvers({
|
|
64176
|
+
selectedPartners = {},
|
|
64177
|
+
loading: parentLoading = false,
|
|
64178
|
+
t = () => {},
|
|
64179
|
+
theme = {},
|
|
64180
|
+
selectedRange,
|
|
64181
|
+
goTo = () => {},
|
|
64182
|
+
getRedirectLink = () => {}
|
|
64183
|
+
}) {
|
|
64184
|
+
const {
|
|
64185
|
+
filters,
|
|
64186
|
+
filtersConfig
|
|
64187
|
+
} = useProblemSolvers();
|
|
64188
|
+
const defaultFetchConfig = React.useMemo(() => ({
|
|
64189
|
+
basepath: "conflict-management",
|
|
64190
|
+
url: "/problem-solvers",
|
|
64191
|
+
filters: {
|
|
64192
|
+
...filters,
|
|
64193
|
+
period: selectedRange,
|
|
64194
|
+
sources: selectedPartners?.partners || []
|
|
64195
|
+
},
|
|
64196
|
+
defaultData: [],
|
|
64197
|
+
stop: selectedPartners?.loading
|
|
64198
|
+
}), [filters, selectedRange, selectedPartners]);
|
|
64199
|
+
const {
|
|
64200
|
+
data,
|
|
64201
|
+
loading
|
|
64202
|
+
} = useWidgetFetch$1({
|
|
64203
|
+
config: defaultFetchConfig
|
|
64204
|
+
});
|
|
64205
|
+
const pieData = React.useMemo(() => {
|
|
64206
|
+
if (!data || Array.isArray(data)) return [];
|
|
64207
|
+
const all = Object.keys(data);
|
|
64208
|
+
const totalActions = all.reduce((acc, key) => acc + (data[key]?.actions?.length || 0), 0);
|
|
64209
|
+
return all.sort((a, b) => (data[b]?.actions?.length || 0) - (data[a]?.actions?.length || 0)).map((key, index) => {
|
|
64210
|
+
const item = data[key];
|
|
64211
|
+
return {
|
|
64212
|
+
value: item?.actions?.length,
|
|
64213
|
+
label: item?.implementerData?.name,
|
|
64214
|
+
implementerData: item?.implementerData,
|
|
64215
|
+
color: distributionColors[index % distributionColors.length],
|
|
64216
|
+
percent: totalActions ? item?.actions?.length / totalActions : 0
|
|
64217
|
+
};
|
|
64218
|
+
});
|
|
64219
|
+
}, [data]);
|
|
64220
|
+
const isEmpty = !pieData.length;
|
|
64221
|
+
const getTooltipChildren = React.useCallback(items => {
|
|
64222
|
+
const item = items[0];
|
|
64223
|
+
return renderTooltipJsx({
|
|
64224
|
+
title: item?.label || t("Undetermined"),
|
|
64225
|
+
link: true,
|
|
64226
|
+
onClickLink: () => {
|
|
64227
|
+
goTo("/app/corrective-actions");
|
|
64228
|
+
},
|
|
64229
|
+
items: [{
|
|
64230
|
+
label: t("Number of actions"),
|
|
64231
|
+
value: item?.value
|
|
64232
|
+
}]
|
|
64233
|
+
});
|
|
64234
|
+
}, [t, goTo]);
|
|
64235
|
+
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
64236
|
+
loading: loading || parentLoading,
|
|
64237
|
+
title: t("Problem Solvers"),
|
|
64238
|
+
filtersConfig: filtersConfig,
|
|
64239
|
+
className: "with-border-header",
|
|
64240
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Chart, {
|
|
64241
|
+
mouseXOffset: 10,
|
|
64242
|
+
mouseYOffset: 10,
|
|
64243
|
+
changeOpacityOnHover: false,
|
|
64244
|
+
data: pieData,
|
|
64245
|
+
doConstraints: false,
|
|
64246
|
+
isPie: true,
|
|
64247
|
+
t: t,
|
|
64248
|
+
isEmpty: isEmpty,
|
|
64249
|
+
getTooltipChildren: getTooltipChildren
|
|
64250
|
+
})
|
|
64251
|
+
});
|
|
64252
|
+
}
|
|
64253
|
+
ProblemSolvers.propTypes = {
|
|
64254
|
+
selectedPartners: PropTypes__default["default"].object,
|
|
64255
|
+
loading: PropTypes__default["default"].bool,
|
|
64256
|
+
t: PropTypes__default["default"].func,
|
|
64257
|
+
theme: PropTypes__default["default"].object,
|
|
64258
|
+
selectedRange: PropTypes__default["default"].string
|
|
64259
|
+
};
|
|
64260
|
+
|
|
64261
|
+
const filterOptions = [{
|
|
64262
|
+
label: '12 months',
|
|
64263
|
+
value: '12'
|
|
64264
|
+
}, {
|
|
64265
|
+
label: '3 months',
|
|
64266
|
+
value: '3'
|
|
64267
|
+
}];
|
|
64268
|
+
|
|
64269
|
+
function RisksWidget({
|
|
64270
|
+
title = "Analytics",
|
|
64271
|
+
selectedPartners = {},
|
|
64272
|
+
t = s => s,
|
|
64273
|
+
goTo = () => {},
|
|
64274
|
+
getRedirectLink = s => s,
|
|
64275
|
+
theme = {},
|
|
64276
|
+
APP,
|
|
64277
|
+
options = {},
|
|
64278
|
+
category = "conflict",
|
|
64279
|
+
user = {}
|
|
64280
|
+
}) {
|
|
64281
|
+
const [range, setRange] = React.useState(filterOptions[0].value);
|
|
64282
|
+
return /*#__PURE__*/jsxRuntime.jsx(Widget, {
|
|
64283
|
+
title: t(title),
|
|
64284
|
+
className: "with-border-header month-select-header",
|
|
64285
|
+
addedHeader: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
64286
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64287
|
+
className: "flex-1"
|
|
64288
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64289
|
+
children: /*#__PURE__*/jsxRuntime.jsx(antd.Select, {
|
|
64290
|
+
value: range,
|
|
64291
|
+
className: "custom-select white month-select",
|
|
64292
|
+
onChange: val => setRange(val),
|
|
64293
|
+
children: filterOptions.map(o => /*#__PURE__*/jsxRuntime.jsx(antd.Select.Option, {
|
|
64294
|
+
value: o.value,
|
|
64295
|
+
children: t(o.label)
|
|
64296
|
+
}, o.value))
|
|
64297
|
+
})
|
|
64298
|
+
})]
|
|
64299
|
+
}),
|
|
64300
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
64301
|
+
className: "flex flex-row flex-col-mobile gap-6",
|
|
64302
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(IncidentsTime, {
|
|
64303
|
+
selectedRange: range,
|
|
64304
|
+
selectedPartners: selectedPartners,
|
|
64305
|
+
t: t,
|
|
64306
|
+
theme: theme,
|
|
64307
|
+
goTo: goTo,
|
|
64308
|
+
getRedirectLink: getRedirectLink,
|
|
64309
|
+
options: options,
|
|
64310
|
+
user: user
|
|
64311
|
+
}), /*#__PURE__*/jsxRuntime.jsx(TerritorialDistribution, {
|
|
64312
|
+
category: category,
|
|
64313
|
+
selectedRange: range,
|
|
64314
|
+
selectedPartners: selectedPartners,
|
|
64315
|
+
t: t,
|
|
64316
|
+
theme: theme,
|
|
64317
|
+
goTo: goTo,
|
|
64318
|
+
getRedirectLink: getRedirectLink
|
|
64319
|
+
}), /*#__PURE__*/jsxRuntime.jsx(ProblemSolvers, {
|
|
64320
|
+
selectedRange: range,
|
|
64321
|
+
selectedPartners: selectedPartners,
|
|
64322
|
+
t: t,
|
|
64323
|
+
theme: theme,
|
|
64324
|
+
goTo: goTo,
|
|
64325
|
+
getRedirectLink: getRedirectLink
|
|
64326
|
+
})]
|
|
64327
|
+
})
|
|
64328
|
+
});
|
|
64329
|
+
}
|
|
64330
|
+
|
|
64331
|
+
function useSource({
|
|
64332
|
+
user = {},
|
|
64333
|
+
t = () => {},
|
|
64334
|
+
getData = () => {},
|
|
64335
|
+
id
|
|
64336
|
+
}) {
|
|
64337
|
+
const [loading, setLoading] = React.useState(true);
|
|
64338
|
+
const [partners, setPartners] = React.useState([]);
|
|
64339
|
+
const [selectedPartners, setSelectedPartners] = React.useState({
|
|
64340
|
+
loading: true
|
|
64341
|
+
});
|
|
64342
|
+
React.useEffect(() => {
|
|
64343
|
+
async function fetchPartners() {
|
|
64344
|
+
try {
|
|
64345
|
+
setLoading(true);
|
|
64346
|
+
const {
|
|
64347
|
+
data
|
|
64348
|
+
} = await getData({
|
|
64349
|
+
page: 1,
|
|
64350
|
+
pageSize: 100,
|
|
64351
|
+
type: "partners"
|
|
64352
|
+
});
|
|
64353
|
+
if (id === undefined) {
|
|
64354
|
+
const _partners = [{
|
|
64355
|
+
nickName: t("Own Data"),
|
|
64356
|
+
id: user?.company?.id
|
|
64357
|
+
}, ...(data.data || []).filter(v => v.status === "active" && ["source", "exchange"].includes(v.partnershipType)).map(v => ({
|
|
64358
|
+
...v,
|
|
64359
|
+
id: v?.company?.id
|
|
64360
|
+
}))];
|
|
64361
|
+
setPartners(_partners);
|
|
64362
|
+
setSelectedPartners({
|
|
64363
|
+
partners: _partners.map(s => s.id),
|
|
64364
|
+
channels: user?.channels?.map(s => ({
|
|
64365
|
+
id: s.id,
|
|
64366
|
+
type: s.type,
|
|
64367
|
+
inbound: s?.inbound?.id,
|
|
64368
|
+
outbound: s?.outbound?.id
|
|
64369
|
+
})),
|
|
64370
|
+
loading: false
|
|
64371
|
+
});
|
|
64372
|
+
} else {
|
|
64373
|
+
setPartners(data?.map(p => {
|
|
64374
|
+
return {
|
|
64375
|
+
...p,
|
|
64376
|
+
nickName: p?.name,
|
|
64377
|
+
id: p.id
|
|
64378
|
+
};
|
|
64379
|
+
}));
|
|
64380
|
+
setSelectedPartners({
|
|
64381
|
+
partners: data?.map(p => p.id),
|
|
64382
|
+
loading: false
|
|
64383
|
+
});
|
|
64384
|
+
}
|
|
64385
|
+
} catch (error) {
|
|
64386
|
+
console.error("Error fetching partners:", error);
|
|
64387
|
+
}
|
|
64388
|
+
}
|
|
64389
|
+
fetchPartners();
|
|
64390
|
+
}, [user.language, id]);
|
|
64391
|
+
function handleSelectedPartnersChange(selected) {
|
|
64392
|
+
setSelectedPartners(prev => ({
|
|
64393
|
+
...prev,
|
|
64394
|
+
partners: selected,
|
|
64395
|
+
loading: false
|
|
64396
|
+
}));
|
|
64397
|
+
}
|
|
64398
|
+
// }
|
|
64399
|
+
|
|
64400
|
+
return {
|
|
64401
|
+
loading,
|
|
64402
|
+
partners,
|
|
64403
|
+
selectedPartners,
|
|
64404
|
+
setSelectedPartners,
|
|
64405
|
+
onSelectPartnersChange: handleSelectedPartnersChange
|
|
64406
|
+
};
|
|
64407
|
+
}
|
|
64408
|
+
const useSources = ({
|
|
64409
|
+
type,
|
|
64410
|
+
id,
|
|
64411
|
+
user,
|
|
64412
|
+
t = () => {},
|
|
64413
|
+
stop
|
|
64414
|
+
}) => {
|
|
64415
|
+
function getData(params) {
|
|
64416
|
+
if (stop) return Promise.resolve({
|
|
64417
|
+
data: []
|
|
64418
|
+
});
|
|
64419
|
+
if (id !== undefined && id !== null) {
|
|
64420
|
+
return SourceService$1.getSources({
|
|
64421
|
+
type,
|
|
64422
|
+
id
|
|
64423
|
+
});
|
|
64424
|
+
} else {
|
|
64425
|
+
return SourceService$1.get(null, params);
|
|
64426
|
+
}
|
|
64427
|
+
}
|
|
64428
|
+
const {
|
|
64429
|
+
onSelectPartnersChange,
|
|
64430
|
+
partners,
|
|
64431
|
+
selectedPartners,
|
|
64432
|
+
setSelectedPartners
|
|
64433
|
+
} = useSource({
|
|
64434
|
+
user,
|
|
64435
|
+
t,
|
|
64436
|
+
getData: getData,
|
|
64437
|
+
id
|
|
64438
|
+
});
|
|
64439
|
+
const informationSources = partners?.length > 0 ? partners?.length - 1 : 0;
|
|
64440
|
+
return {
|
|
64441
|
+
partners,
|
|
64442
|
+
selectedPartners,
|
|
64443
|
+
setSelectedPartners,
|
|
64444
|
+
user,
|
|
64445
|
+
informationSources: informationSources,
|
|
64446
|
+
onSelectPartnersChange
|
|
64447
|
+
};
|
|
64448
|
+
};
|
|
64449
|
+
|
|
64450
|
+
function ConflictManagement({
|
|
64451
|
+
t = () => {},
|
|
64452
|
+
user = {},
|
|
64453
|
+
APP,
|
|
64454
|
+
goTo = () => {},
|
|
64455
|
+
getRedirectLink = s => s,
|
|
64456
|
+
theme = {},
|
|
64457
|
+
options = {}
|
|
64458
|
+
}) {
|
|
64459
|
+
const {
|
|
64460
|
+
partners,
|
|
64461
|
+
selectedPartners,
|
|
64462
|
+
setSelectedPartners,
|
|
64463
|
+
informationSources
|
|
64464
|
+
} = useSources({
|
|
64465
|
+
user,
|
|
64466
|
+
t
|
|
64467
|
+
});
|
|
64468
|
+
|
|
64469
|
+
// const { pushPath } = useHistory();
|
|
64470
|
+
|
|
64471
|
+
// useEffect(() => {
|
|
64472
|
+
// pushPath(`/app/conflict-management`);
|
|
64473
|
+
// }, []);
|
|
64474
|
+
|
|
64475
|
+
const breadCrumbs = React.useMemo(() => {
|
|
64476
|
+
return renderBreadCrumbs({
|
|
64477
|
+
t,
|
|
64478
|
+
view: "conflict-management",
|
|
64479
|
+
mod: APP,
|
|
64480
|
+
goTo
|
|
64481
|
+
});
|
|
64482
|
+
}, [t, APP, goTo]);
|
|
64483
|
+
const sourceOptions = React.useMemo(() => {
|
|
64484
|
+
return partners.map(partner => {
|
|
64485
|
+
const isOwnData = partner.id === user?.company?.id;
|
|
64486
|
+
return {
|
|
64487
|
+
label: partner.nickName,
|
|
64488
|
+
value: partner.id,
|
|
64489
|
+
avatar: isOwnData ? /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
64490
|
+
children: "OWN"
|
|
64491
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(CustomIcon, {
|
|
64492
|
+
name: "Search02",
|
|
64493
|
+
width: 14,
|
|
64494
|
+
height: 14
|
|
64495
|
+
}),
|
|
64496
|
+
background: isOwnData ? theme.colorPrimary7 : undefined,
|
|
64497
|
+
color: isOwnData ? "white" : undefined
|
|
64498
|
+
};
|
|
64499
|
+
});
|
|
64500
|
+
}, [partners, user, theme]);
|
|
64501
|
+
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
64502
|
+
className: "daf-analysis",
|
|
64503
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DAFHeader, {
|
|
64504
|
+
title: t("conflict-management"),
|
|
64505
|
+
breadcrumbs: breadCrumbs,
|
|
64506
|
+
supportText: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
64507
|
+
children: [t("Supported by"), " ", /*#__PURE__*/jsxRuntime.jsx("a", {
|
|
64508
|
+
href: "https://www.eeas.europa.eu/delegations/dr-congo-kinshasa_en?s=94",
|
|
64509
|
+
target: "_blank",
|
|
64510
|
+
rel: "noreferrer",
|
|
64511
|
+
children: t("European Union")
|
|
64512
|
+
})]
|
|
64513
|
+
}),
|
|
64514
|
+
addedHeader: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
64515
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64516
|
+
className: "flex-1"
|
|
64517
|
+
}), /*#__PURE__*/jsxRuntime.jsx(Multiselect, {
|
|
64518
|
+
options: [...sourceOptions],
|
|
64519
|
+
isAvatarGroup: true,
|
|
64520
|
+
canUnselectLast: false,
|
|
64521
|
+
onChange: selected => {
|
|
64522
|
+
setSelectedPartners(prev => ({
|
|
64523
|
+
...prev,
|
|
64524
|
+
partners: selected,
|
|
64525
|
+
loading: false
|
|
64526
|
+
}));
|
|
64527
|
+
},
|
|
64528
|
+
dropDownWidth: 200,
|
|
64529
|
+
selectionType: "checkbox",
|
|
64530
|
+
defaultSelected: partners.map(p => p.id) || []
|
|
64531
|
+
}, partners?.length)]
|
|
64532
|
+
})
|
|
64533
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64534
|
+
className: "content",
|
|
64535
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64536
|
+
className: "view-content",
|
|
64537
|
+
children: /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
64538
|
+
className: "daf-analysis-layout",
|
|
64539
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
64540
|
+
className: "sections-cont w-pt",
|
|
64541
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("section", {
|
|
64542
|
+
children: /*#__PURE__*/jsxRuntime.jsx(KeyIndicators, {
|
|
64543
|
+
selectedPartners: selectedPartners,
|
|
64544
|
+
partners: informationSources > 0 ? informationSources : selectedPartners?.partners?.length > 0 ? selectedPartners?.partners?.length : 0,
|
|
64545
|
+
t: t,
|
|
64546
|
+
goTo: goTo,
|
|
64547
|
+
getRedirectLink: getRedirectLink,
|
|
64548
|
+
theme: theme
|
|
64549
|
+
})
|
|
64550
|
+
}), /*#__PURE__*/jsxRuntime.jsx("section", {
|
|
64551
|
+
children: /*#__PURE__*/jsxRuntime.jsx(MineSites, {
|
|
64552
|
+
selectedPartners: selectedPartners,
|
|
64553
|
+
t: t,
|
|
64554
|
+
goTo: goTo,
|
|
64555
|
+
getRedirectLink: getRedirectLink,
|
|
64556
|
+
theme: theme,
|
|
64557
|
+
APP: APP,
|
|
64558
|
+
options: options
|
|
64559
|
+
})
|
|
64560
|
+
}), /*#__PURE__*/jsxRuntime.jsx("section", {
|
|
64561
|
+
children: /*#__PURE__*/jsxRuntime.jsx(RisksWidget, {
|
|
64562
|
+
selectedPartners: selectedPartners,
|
|
64563
|
+
t: t,
|
|
64564
|
+
goTo: goTo,
|
|
64565
|
+
getRedirectLink: getRedirectLink,
|
|
64566
|
+
theme: theme,
|
|
64567
|
+
APP: APP,
|
|
64568
|
+
options: options
|
|
64569
|
+
})
|
|
64570
|
+
})]
|
|
64571
|
+
})
|
|
64572
|
+
})
|
|
64573
|
+
})
|
|
64574
|
+
})]
|
|
64575
|
+
});
|
|
64576
|
+
}
|
|
64577
|
+
|
|
64578
|
+
exports.ConflictManagement = ConflictManagement;
|
|
62905
64579
|
exports.Edit = Edit;
|
|
62906
64580
|
exports.MineSummary = MineSummary;
|
|
62907
64581
|
exports.MonitoringActivitySummary = MonitoringActivitySummary;
|