datastake-daf 0.6.786 → 0.6.787
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 +685 -407
- package/dist/services/index.js +10 -1
- package/dist/utils/index.js +28 -12
- package/package.json +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/hook.js +0 -1
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/index.jsx +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/hook.js +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/index.jsx +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminModals/AddUser/index.jsx +0 -1
- package/src/@daf/core/components/Screens/Admin/AdminModals/CombineLocation/index.jsx +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminModals/NewAccount/index.jsx +1 -1
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Dashboard.jsx +2 -2
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Location.jsx +5 -5
- package/src/@daf/core/components/Screens/Admin/AdminScreens/Subjects.jsx +2 -2
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/column.js +224 -0
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/helper.js +65 -0
- package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/index.jsx +23 -5
- package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/columns.js +36 -36
- package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/index.jsx +12 -21
- package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/helper.js +13 -8
- package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/index.jsx +2 -2
- package/src/@daf/core/components/Screens/Admin/adminRoutes.js +2 -2
- package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/columns.js +180 -0
- package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/config.js +0 -0
- package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/index.jsx +27 -0
- package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/columns.js +157 -0
- package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/config.js +31 -0
- package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/index.js +77 -0
- package/src/@daf/pages/SelfAssesment/components/ProductionSiteTable/columns.js +117 -0
- package/src/@daf/pages/SelfAssesment/components/ProductionSiteTable/index.jsx +54 -0
- package/src/@daf/pages/SelfAssesment/index.jsx +0 -0
- package/src/@daf/services/AdminService.js +12 -3
- package/src/@daf/services/DashboardService.js +2 -1
- package/src/@daf/utils/filters.js +89 -89
- package/src/constants/locales/en/translation.js +3 -0
- package/src/constants/locales/fr/translation.js +1 -1
- package/src/constants/locales/sp/translation.js +1 -1
- package/build/favicon.ico +0 -0
- package/build/logo192.png +0 -0
- package/build/logo512.png +0 -0
- package/build/manifest.json +0 -25
- package/build/robots.txt +0 -3
|
@@ -104,48 +104,48 @@ export const getColumns = ({
|
|
|
104
104
|
return <Tooltip title={country}>{country}</Tooltip>;
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
107
|
+
{
|
|
108
|
+
title: t("Admin Level 1"),
|
|
109
|
+
dataIndex: "administrativeLevel1",
|
|
110
|
+
key: "administrativeLevel1",
|
|
111
|
+
ellipsis: true,
|
|
112
|
+
show: entity.includes("location"),
|
|
113
|
+
render: (value, all) => {
|
|
114
|
+
if (all.empty) {
|
|
115
|
+
return <div className="daf-default-cell" />;
|
|
116
|
+
}
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
118
|
+
let label;
|
|
119
|
+
if(all?.administrativeLevel1 && value === all?.administrativeLevel1) {
|
|
120
|
+
label = all?.linking?.SCL?.[value]?.name
|
|
121
|
+
} else {
|
|
122
|
+
label = getNameByLevel(all?.linking?.SCL, "level_1")?.name
|
|
123
|
+
}
|
|
124
124
|
|
|
125
|
-
|
|
126
|
-
},
|
|
125
|
+
return <Tooltip title={label || '-'}>{label || '-'}</Tooltip>;
|
|
127
126
|
},
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
title: t("Admin Level 2"),
|
|
130
|
+
dataIndex: "administrativeLevel2",
|
|
131
|
+
key: "administrativeLevel2",
|
|
132
|
+
show: entity.includes("location"),
|
|
133
|
+
ellipsis: true,
|
|
134
|
+
render: (value, all) => {
|
|
135
|
+
if (all.empty) {
|
|
136
|
+
return <div className="daf-default-cell" />;
|
|
137
|
+
}
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
let label;
|
|
140
|
+
if(all?.administrativeLevel2 && value === all?.administrativeLevel2) {
|
|
141
|
+
label = all?.linking?.SCL?.[value]?.name
|
|
142
|
+
} else {
|
|
143
|
+
label = getNameByLevel(all?.linking?.SCL, "level_2")?.name
|
|
144
|
+
}
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
},
|
|
146
|
+
return <Tooltip title={label || '-'}>{label || '-'}</Tooltip>;
|
|
148
147
|
},
|
|
148
|
+
},
|
|
149
149
|
{
|
|
150
150
|
title: t("Sources"),
|
|
151
151
|
dataIndex: "sources",
|
|
@@ -2,7 +2,7 @@ import { useState, useMemo } from "react";
|
|
|
2
2
|
import { useAdminTable } from "../hook";
|
|
3
3
|
import AdminTable from "../components/index.jsx";
|
|
4
4
|
import DAFTable from "../../../../Table/index.jsx";
|
|
5
|
-
import { theme, Tag } from "antd";
|
|
5
|
+
import { theme, Tag, message } from "antd";
|
|
6
6
|
import CustomIcon from "../../../../Icon/CustomIcon.jsx";
|
|
7
7
|
import {
|
|
8
8
|
getTabs,
|
|
@@ -67,7 +67,7 @@ export default function SubjectsTable({
|
|
|
67
67
|
return {
|
|
68
68
|
category: config.options?.category,
|
|
69
69
|
country: config.options?.countries,
|
|
70
|
-
sources: [],
|
|
70
|
+
sources: [],
|
|
71
71
|
};
|
|
72
72
|
}, [config.options]);
|
|
73
73
|
|
|
@@ -113,25 +113,15 @@ export default function SubjectsTable({
|
|
|
113
113
|
breadcrumbs={breadcrumbs}
|
|
114
114
|
>
|
|
115
115
|
{selectedSubjects.length > 0 && (
|
|
116
|
-
<div
|
|
117
|
-
className="flex flex-row ml-6 mt-5"
|
|
118
|
-
style={{
|
|
119
|
-
flexWrap: "wrap",
|
|
120
|
-
gap: "8px",
|
|
121
|
-
}}
|
|
122
|
-
>
|
|
116
|
+
<div className="flex flex-row ml-6 mt-5" style={{ flexWrap: "wrap", gap: "8px" }}>
|
|
123
117
|
{selectedSubjects.map((account) => (
|
|
124
118
|
<Tag
|
|
125
119
|
key={account.userId}
|
|
126
120
|
className="flex flex-row gap-2 items-center"
|
|
127
121
|
onClick={() =>
|
|
128
|
-
setSelectedSubjects((prev) =>
|
|
129
|
-
prev.filter((a) => a.datastakeId !== account.datastakeId),
|
|
130
|
-
)
|
|
122
|
+
setSelectedSubjects((prev) => prev.filter((a) => a.datastakeId !== account.datastakeId))
|
|
131
123
|
}
|
|
132
|
-
style={{
|
|
133
|
-
cursor: "pointer",
|
|
134
|
-
}}
|
|
124
|
+
style={{ cursor: "pointer" }}
|
|
135
125
|
>
|
|
136
126
|
<span>{account.datastakeId}</span>
|
|
137
127
|
<CustomIcon name="Close" size={10} />
|
|
@@ -160,19 +150,20 @@ export default function SubjectsTable({
|
|
|
160
150
|
<CombineSubjectsModal
|
|
161
151
|
isOpen={isCombineModalOpen}
|
|
162
152
|
t={t}
|
|
163
|
-
onClose={() =>
|
|
164
|
-
setIsModalOpen(false);
|
|
165
|
-
}}
|
|
153
|
+
onClose={() => setIsModalOpen(false)}
|
|
166
154
|
onSuccess={(data) => {
|
|
167
155
|
setIsModalOpen(false);
|
|
168
156
|
setLoading(true);
|
|
157
|
+
message.success(t("Subjects successfully merged."))
|
|
169
158
|
if (typeof mergeSubjectsFunction === 'function') {
|
|
170
|
-
mergeSubjectsFunction(data)
|
|
171
|
-
|
|
159
|
+
mergeSubjectsFunction(data).finally(() => {
|
|
160
|
+
setSelectedSubjects([]);
|
|
161
|
+
fetchData();
|
|
162
|
+
});
|
|
172
163
|
}
|
|
173
164
|
}}
|
|
174
165
|
selectedSubjects={selectedSubjects}
|
|
175
|
-
selectOptions={selectOptions
|
|
166
|
+
selectOptions={selectOptions}
|
|
176
167
|
module={module}
|
|
177
168
|
entity={headerTitle}
|
|
178
169
|
/>
|
|
@@ -167,10 +167,7 @@ export const getColumns = ({
|
|
|
167
167
|
return cols.filter((v) => v.show);
|
|
168
168
|
};
|
|
169
169
|
|
|
170
|
-
export const checkboxConfig = {
|
|
171
|
-
name: "Name",
|
|
172
|
-
datastakeId: "ID",
|
|
173
|
-
};
|
|
170
|
+
export const checkboxConfig = {};
|
|
174
171
|
|
|
175
172
|
export const selectFiltersConfig = {
|
|
176
173
|
userRole: {
|
|
@@ -194,9 +191,17 @@ export const selectFiltersConfig = {
|
|
|
194
191
|
};
|
|
195
192
|
|
|
196
193
|
export const filtersConfig = {
|
|
197
|
-
|
|
198
|
-
|
|
194
|
+
search: "",
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
export const defaultUrlParams = {
|
|
198
|
+
search: "",
|
|
199
|
+
userRole: null,
|
|
200
|
+
status: null,
|
|
199
201
|
};
|
|
200
202
|
|
|
201
|
-
export const
|
|
202
|
-
|
|
203
|
+
export const defaultTableFilters = {
|
|
204
|
+
search: "",
|
|
205
|
+
userRole: null,
|
|
206
|
+
status: null,
|
|
207
|
+
};
|
|
@@ -60,10 +60,10 @@ export default function Users({
|
|
|
60
60
|
userRole: userRoles.filter((u) => !u.isForAppAdmin),
|
|
61
61
|
status: accountStatuses,
|
|
62
62
|
};
|
|
63
|
-
}, [userRoles]);
|
|
63
|
+
}, [userRoles, accountStatuses]);
|
|
64
64
|
|
|
65
65
|
const canClearSearch = useMemo(() => {
|
|
66
|
-
return !!activeFilters.search;
|
|
66
|
+
return !!activeFilters.search || !!activeFilters.userRole || !!activeFilters.status;
|
|
67
67
|
}, [activeFilters]);
|
|
68
68
|
|
|
69
69
|
const onDeleteUserClick = useCallback(
|
|
@@ -104,7 +104,7 @@ export function getAdminRoutes(config) {
|
|
|
104
104
|
...(typeof useAdminLocationConfig === "function"
|
|
105
105
|
? [
|
|
106
106
|
{
|
|
107
|
-
path: "subjects/location",
|
|
107
|
+
path: "management/subjects/location",
|
|
108
108
|
key: `${APP_PREFIX}_ADMIN_SUBJECTS_LOCATIONS`,
|
|
109
109
|
exact: true,
|
|
110
110
|
visible: (user) => userIsAdmin(user),
|
|
@@ -115,7 +115,7 @@ export function getAdminRoutes(config) {
|
|
|
115
115
|
...(typeof useAdminSubjectsConfig === "function"
|
|
116
116
|
? [
|
|
117
117
|
{
|
|
118
|
-
path: "subjects/stakeholder",
|
|
118
|
+
path: "management/subjects/stakeholder",
|
|
119
119
|
key: `${APP_PREFIX}_ADMIN_SUBJECTS_STAKEHOLDERS`,
|
|
120
120
|
exact: true,
|
|
121
121
|
visible: (user) => userIsAdmin(user),
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Tooltip } from 'antd';
|
|
3
|
+
import { findOptions, getLinkValue } from '../../../../helpers/StringHelper.js';
|
|
4
|
+
import { renderDateFormatted } from '../../../../helpers/Forms.js';
|
|
5
|
+
import CustomIcon from '../../../core/components/Icon/CustomIcon.jsx';
|
|
6
|
+
import AvatarGroup from '../../../core/components/AvatarGroup/index.jsx';
|
|
7
|
+
import sourceAvatarConfig from '../../../../helpers/sourceAvatarConfig.js';
|
|
8
|
+
import MoreMenu from '../../../core/components/Table/MoreMenu/index.jsx';
|
|
9
|
+
import MoreOptions from '../../../core/components/Table/MoreOptions/index.jsx';
|
|
10
|
+
import { renderStatusTag } from '../../../utils/tags.js';
|
|
11
|
+
|
|
12
|
+
export const getColumns = ({t, goTo, user, options, activeTab, getRedirectLink, theme, subject, data, applications}) => [
|
|
13
|
+
{
|
|
14
|
+
dataIndex: 'datastakeId',
|
|
15
|
+
title: t('ID'),
|
|
16
|
+
ellipsis: true,
|
|
17
|
+
show: true,
|
|
18
|
+
render: (v, all) => {
|
|
19
|
+
if (all.empty) {
|
|
20
|
+
return <div className="daf-default-cell" />
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return <Tooltip title={v}>{v}</Tooltip>;
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
dataIndex: 'name',
|
|
28
|
+
title: t('Name'),
|
|
29
|
+
ellipsis: true,
|
|
30
|
+
show: true,
|
|
31
|
+
render: (v, all) => {
|
|
32
|
+
if (all.empty) {
|
|
33
|
+
return <div className="daf-default-cell" />
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return <Tooltip title={v}>{v}</Tooltip>;
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
dataIndex: 'category',
|
|
41
|
+
title: t('Category'),
|
|
42
|
+
ellipsis: true,
|
|
43
|
+
show: true,
|
|
44
|
+
render: (v, all) => {
|
|
45
|
+
if (all.empty) {
|
|
46
|
+
return <div className="daf-default-cell" />
|
|
47
|
+
}
|
|
48
|
+
const category = findOptions(v, options?.locationCategories);
|
|
49
|
+
|
|
50
|
+
return <Tooltip title={category}>{category}</Tooltip>;
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
dataIndex: 'lealForm',
|
|
55
|
+
title: t('Legal Form'),
|
|
56
|
+
ellipsis: true,
|
|
57
|
+
show: true,
|
|
58
|
+
render: (v, all) => {
|
|
59
|
+
if (all.empty) {
|
|
60
|
+
return <div className="daf-default-cell" />
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const legalForm = findOptions(v, options?.legalFormOptions);
|
|
64
|
+
|
|
65
|
+
return legalForm ? <Tooltip title={legalForm}>{legalForm}</Tooltip> : '-';
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
dataIndex: 'country',
|
|
70
|
+
title: t('Country'),
|
|
71
|
+
ellipsis: true,
|
|
72
|
+
show: true,
|
|
73
|
+
render: (v, all) => {
|
|
74
|
+
if (all.empty) {
|
|
75
|
+
return <div className="daf-default-cell" />
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const country = findOptions(v, options?.countryOptions);
|
|
79
|
+
|
|
80
|
+
return country ? <Tooltip title={country}>{country}</Tooltip> : '-';
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
// {
|
|
85
|
+
// dataIndex: 'operator',
|
|
86
|
+
// title: t('Operator'),
|
|
87
|
+
// ellipsis: true,
|
|
88
|
+
// show: true,
|
|
89
|
+
// render: (v, all) => {
|
|
90
|
+
// if (all.empty) {
|
|
91
|
+
// return <div className="daf-default-cell" />
|
|
92
|
+
// }
|
|
93
|
+
|
|
94
|
+
// const operators = all?.operator?.map((operator) => operator?.locationClient?.name)?.filter(Boolean);
|
|
95
|
+
// return (operators && operators.length > 0) ? <MoreOptions data={operators || []} toolTipPlacement={operators?.length < 2 ? "topLeft" : "top"} /> : '-';
|
|
96
|
+
// },
|
|
97
|
+
// },
|
|
98
|
+
{
|
|
99
|
+
title: t("Last Update"),
|
|
100
|
+
dataIndex: "updatedAt",
|
|
101
|
+
key: "updatedAt",
|
|
102
|
+
width: 125,
|
|
103
|
+
render: (date, all) => {
|
|
104
|
+
if (all.empty) {
|
|
105
|
+
return <div className="daf-default-cell" />;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const _date = date ? renderDateFormatted(date, "DD MMM YYYY", user?.language || 'en') : "-";
|
|
109
|
+
return <Tooltip title={_date}>{_date}</Tooltip>;
|
|
110
|
+
},
|
|
111
|
+
ellipsis: true,
|
|
112
|
+
},
|
|
113
|
+
// {
|
|
114
|
+
// title: t("Status"),
|
|
115
|
+
// dataIndex: 'status',
|
|
116
|
+
// ellipsis: true,
|
|
117
|
+
// show: activeTab == "own",
|
|
118
|
+
// render: (v, all) => {
|
|
119
|
+
// if (all.empty) {
|
|
120
|
+
// return <div className="daf-default-cell" />
|
|
121
|
+
// }
|
|
122
|
+
// const _val = all?.published || all?.status === "submitted" ? "submitted" : v;
|
|
123
|
+
|
|
124
|
+
// return renderStatusTag({ value: _val, t });
|
|
125
|
+
// },
|
|
126
|
+
// },
|
|
127
|
+
|
|
128
|
+
// {
|
|
129
|
+
// title: t("Sources"),
|
|
130
|
+
// dataIndex: 'sources',
|
|
131
|
+
// ellipsis: true,
|
|
132
|
+
// show: activeTab !== "own",
|
|
133
|
+
// render: (v, all) => {
|
|
134
|
+
// if (all.empty) {
|
|
135
|
+
// return <div className="daf-default-cell" />
|
|
136
|
+
// }
|
|
137
|
+
// const sources = sourceAvatarConfig(v, user, applications);
|
|
138
|
+
// return <AvatarGroup items={sources}></AvatarGroup>;
|
|
139
|
+
// },
|
|
140
|
+
// },
|
|
141
|
+
{
|
|
142
|
+
id: 'actions',
|
|
143
|
+
title: "",
|
|
144
|
+
width: 60,
|
|
145
|
+
render: (_, all) => {
|
|
146
|
+
if (all.empty) {
|
|
147
|
+
return <div className="daf-default-cell" />;
|
|
148
|
+
}
|
|
149
|
+
const onClick = () => {
|
|
150
|
+
let link = `/app/view/${subject}/${all.datastakeId}`;
|
|
151
|
+
if (activeTab === "shared") {
|
|
152
|
+
link += `?sourceId=${all?.authorId?.id}`;
|
|
153
|
+
}
|
|
154
|
+
goTo(getRedirectLink(link));
|
|
155
|
+
};
|
|
156
|
+
const moreMenuItems = [
|
|
157
|
+
{
|
|
158
|
+
label: t("Details"),
|
|
159
|
+
value: "details",
|
|
160
|
+
onClick: onClick,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
label: t("Summary"),
|
|
164
|
+
value: "Summary",
|
|
165
|
+
onClick: () => {
|
|
166
|
+
let link = `/app/mine-summary/${all.datastakeId}`
|
|
167
|
+
if (activeTab === "shared") {
|
|
168
|
+
link += `?sourceId=${all?.authorId?.id}`;
|
|
169
|
+
}
|
|
170
|
+
goTo(getRedirectLink(link));
|
|
171
|
+
},
|
|
172
|
+
// disabled: true,
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
return <div >
|
|
176
|
+
<MoreMenu items={moreMenuItems} />
|
|
177
|
+
</div>;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
].filter((column) => column.show !== false);
|
|
File without changes
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React, { useState, useEffect, useRef } from 'react'
|
|
2
|
+
import TabsHeader from '../../../../core/components/Header/TabsHeader'
|
|
3
|
+
import {Widget} from '../../../../core/components/Dashboard/Widget'
|
|
4
|
+
import {getColumns} from './columns.js'
|
|
5
|
+
import {useParams} from 'react-router-dom'
|
|
6
|
+
import {DAFTable} from '../../../../core/components/Table'
|
|
7
|
+
import {useIsDatastake} from '../../../../hooks/useIsDatastake.js'
|
|
8
|
+
|
|
9
|
+
const AssociatedInformationTable = () => {
|
|
10
|
+
const tabs =[
|
|
11
|
+
{value:"stakeholders", label:"Stakeholders"},
|
|
12
|
+
{value:"locations", label:"Locations"},
|
|
13
|
+
{values:"events", label:"Events"},
|
|
14
|
+
{values:"DOcuments",label:"Documents"},
|
|
15
|
+
]
|
|
16
|
+
const [activeTab, setActiveTab] = useState("stakeholders");
|
|
17
|
+
const [data,setData]= useState({
|
|
18
|
+
stakeholders:[],
|
|
19
|
+
locations:[],
|
|
20
|
+
events:[],
|
|
21
|
+
documents:[],
|
|
22
|
+
})
|
|
23
|
+
const [_options, _setOptions] = useState({});
|
|
24
|
+
const params = useParams();
|
|
25
|
+
const { user } = useSelector((state) => state.authentication);
|
|
26
|
+
const { getRedirectLink } = useIsDatastake();
|
|
27
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Tooltip } from "antd";
|
|
2
|
+
import CustomIcon from "../../../../core/components/Icon/CustomIcon.jsx";
|
|
3
|
+
// import {findOptions} from "../../../../helpers/StringHelper.js";
|
|
4
|
+
import ProgressBar from "../../../../core/components/ProgressBar/index.jsx";
|
|
5
|
+
import ProgressBarSideIcon from "../../../../core/components/ProgressBar/components/SideIcon/index.jsx";
|
|
6
|
+
import { Link } from "react-router-dom";
|
|
7
|
+
import { renderDateFormatted } from "../../../../../helpers/Forms.js";
|
|
8
|
+
|
|
9
|
+
export const getColumns = ({
|
|
10
|
+
t,
|
|
11
|
+
goTo = () => {},
|
|
12
|
+
show = "show",
|
|
13
|
+
getRedirectLink = () => {},
|
|
14
|
+
token,
|
|
15
|
+
selectedSubjects,
|
|
16
|
+
setSelectedSubjects,
|
|
17
|
+
selectOptions,
|
|
18
|
+
entity,
|
|
19
|
+
}) => {
|
|
20
|
+
const cols = [
|
|
21
|
+
{
|
|
22
|
+
dataIndex: "formName",
|
|
23
|
+
title: t("form"),
|
|
24
|
+
ellipsis: true,
|
|
25
|
+
show: true,
|
|
26
|
+
render: (v, all) => {
|
|
27
|
+
if (all.empty) {
|
|
28
|
+
return <div className="daf-default-cell" />;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const title = all?.published
|
|
32
|
+
? t("general-information")
|
|
33
|
+
: t("registration");
|
|
34
|
+
|
|
35
|
+
return <Tooltip title={title}>{title}</Tooltip>;
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
dataIndex: "completion",
|
|
40
|
+
title: t("completion"),
|
|
41
|
+
ellipsis: true,
|
|
42
|
+
show: !isMonitoring,
|
|
43
|
+
render: (v, all) => {
|
|
44
|
+
if (all.empty) {
|
|
45
|
+
return <div className="daf-default-cell" />;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const submittedStages = ["evaluation", "planning", "improvement"];
|
|
49
|
+
|
|
50
|
+
const step1Stage = data?.stepStages?.["step-1"];
|
|
51
|
+
const step2Stage = data?.stepStages?.["step-2"];
|
|
52
|
+
const isSubmitted =
|
|
53
|
+
data?.published &&
|
|
54
|
+
submittedStages.includes(step1Stage) &&
|
|
55
|
+
submittedStages.includes(step2Stage);
|
|
56
|
+
|
|
57
|
+
return (
|
|
58
|
+
<div style={{ display: "flex", alignItems: "center", gap: "5px" }}>
|
|
59
|
+
<ProgressBar
|
|
60
|
+
tooltipTitle={isSubmitted && t("Submitted")}
|
|
61
|
+
style={{ width: "100%" }}
|
|
62
|
+
percentage={v || 0}
|
|
63
|
+
isSubmitted={isSubmitted}
|
|
64
|
+
></ProgressBar>
|
|
65
|
+
{isSubmitted ? (
|
|
66
|
+
<ProgressBarSideIcon size={16} iconSize={10} />
|
|
67
|
+
) : (
|
|
68
|
+
<span>{v || 0}%</span>
|
|
69
|
+
)}
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
dataIndex: "monitoring",
|
|
76
|
+
title: t("Monitoring"),
|
|
77
|
+
ellipsis: true,
|
|
78
|
+
show: isMonitoring,
|
|
79
|
+
render: (v, all) => {
|
|
80
|
+
if (all.empty) {
|
|
81
|
+
return <div className="daf-default-cell" />;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return <Tooltip title={v || 0}>{v || 0}</Tooltip>;
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
dataIndex: "lastUpdate",
|
|
89
|
+
title: t("Last Update"),
|
|
90
|
+
ellipsis: true,
|
|
91
|
+
show: true,
|
|
92
|
+
render: (_v, all) => {
|
|
93
|
+
if (all.empty) {
|
|
94
|
+
return <div className="daf-default-cell" />;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const v = _v
|
|
98
|
+
? renderDateFormatted(_v, "DD MMM YYYY", user?.language || "en")
|
|
99
|
+
: "-";
|
|
100
|
+
|
|
101
|
+
return <Tooltip title={v}>{v}</Tooltip>;
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
dataIndex: "action",
|
|
106
|
+
title: "",
|
|
107
|
+
width: 60,
|
|
108
|
+
show: true,
|
|
109
|
+
render: (_, all) => {
|
|
110
|
+
if (all.empty) {
|
|
111
|
+
return <div className="daf-default-cell" />;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let link = `/app/mines/${all.datastakeId}/${all?.key?.toLowerCase()}`;
|
|
115
|
+
|
|
116
|
+
if (all?.key.includes("monitoring")) {
|
|
117
|
+
return (
|
|
118
|
+
<Link to={getRedirectLink(link)}>
|
|
119
|
+
<CustomIcon name="Link" width={18} height={18} />
|
|
120
|
+
</Link>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (all?.key.includes("identification")) {
|
|
125
|
+
link = `/app/view/location/${all.datastakeId}`;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
const stage = data?.stage;
|
|
129
|
+
const key = all?.key;
|
|
130
|
+
let isDisabled = false;
|
|
131
|
+
|
|
132
|
+
if (
|
|
133
|
+
(stage === "evaluation" && (key === "improvement" || key === "planning")) ||
|
|
134
|
+
(stage === "planning" && key === "improvement") ||
|
|
135
|
+
(!["evaluation", "planning", "improvement"].includes(stage) &&
|
|
136
|
+
key !== "identification")
|
|
137
|
+
) {
|
|
138
|
+
isDisabled = true;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return <div style={{ display: "flex", justifyContent: "center" }}>
|
|
142
|
+
{isDisabled ? (
|
|
143
|
+
<span style={{ cursor: "not-allowed", opacity: 0.5 }}>
|
|
144
|
+
<CustomIcon name="Link" width={18} height={18} />
|
|
145
|
+
</span>
|
|
146
|
+
) : (
|
|
147
|
+
<Link to={getRedirectLink(link)}>
|
|
148
|
+
<CustomIcon name="Link" width={18} height={18} />
|
|
149
|
+
</Link>
|
|
150
|
+
)}
|
|
151
|
+
</div>;
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
]
|
|
155
|
+
|
|
156
|
+
return cols.filter((c) => c[show]);
|
|
157
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const getFiltersConfig = ({t}) => {
|
|
2
|
+
return {
|
|
3
|
+
timeframe: {
|
|
4
|
+
type: "timeframe",
|
|
5
|
+
label: "Timeframe",
|
|
6
|
+
style: { flex: 1 },
|
|
7
|
+
},
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const getFilterOptions = (options, t) => {
|
|
12
|
+
const { timeframe = [] } = options || {};
|
|
13
|
+
const _default = {
|
|
14
|
+
timeframe: timeframe,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return _default;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const formConfig = {
|
|
21
|
+
namespace: 'organisation',
|
|
22
|
+
view: 'information',
|
|
23
|
+
scope: 'create',
|
|
24
|
+
formType: 'organisation',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const viewConfig = {
|
|
28
|
+
title: "Organisations",
|
|
29
|
+
createTitle: "Create Organisation",
|
|
30
|
+
}
|
|
31
|
+
|