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.
Files changed (42) hide show
  1. package/dist/components/index.js +685 -407
  2. package/dist/services/index.js +10 -1
  3. package/dist/utils/index.js +28 -12
  4. package/package.json +1 -1
  5. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/hook.js +0 -1
  6. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/index.jsx +1 -1
  7. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/hook.js +1 -1
  8. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/index.jsx +1 -1
  9. package/src/@daf/core/components/Screens/Admin/AdminModals/AddUser/index.jsx +0 -1
  10. package/src/@daf/core/components/Screens/Admin/AdminModals/CombineLocation/index.jsx +1 -1
  11. package/src/@daf/core/components/Screens/Admin/AdminModals/NewAccount/index.jsx +1 -1
  12. package/src/@daf/core/components/Screens/Admin/AdminScreens/Dashboard.jsx +2 -2
  13. package/src/@daf/core/components/Screens/Admin/AdminScreens/Location.jsx +5 -5
  14. package/src/@daf/core/components/Screens/Admin/AdminScreens/Subjects.jsx +2 -2
  15. package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/column.js +224 -0
  16. package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/helper.js +65 -0
  17. package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/index.jsx +23 -5
  18. package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/columns.js +36 -36
  19. package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/index.jsx +12 -21
  20. package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/helper.js +13 -8
  21. package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/index.jsx +2 -2
  22. package/src/@daf/core/components/Screens/Admin/adminRoutes.js +2 -2
  23. package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/columns.js +180 -0
  24. package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/config.js +0 -0
  25. package/src/@daf/pages/SelfAssesment/components/AssociatedInformationTable/index.jsx +27 -0
  26. package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/columns.js +157 -0
  27. package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/config.js +31 -0
  28. package/src/@daf/pages/SelfAssesment/components/OrgInformationTable/index.js +77 -0
  29. package/src/@daf/pages/SelfAssesment/components/ProductionSiteTable/columns.js +117 -0
  30. package/src/@daf/pages/SelfAssesment/components/ProductionSiteTable/index.jsx +54 -0
  31. package/src/@daf/pages/SelfAssesment/index.jsx +0 -0
  32. package/src/@daf/services/AdminService.js +12 -3
  33. package/src/@daf/services/DashboardService.js +2 -1
  34. package/src/@daf/utils/filters.js +89 -89
  35. package/src/constants/locales/en/translation.js +3 -0
  36. package/src/constants/locales/fr/translation.js +1 -1
  37. package/src/constants/locales/sp/translation.js +1 -1
  38. package/build/favicon.ico +0 -0
  39. package/build/logo192.png +0 -0
  40. package/build/logo512.png +0 -0
  41. package/build/manifest.json +0 -25
  42. 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
- title: t("Province"),
109
- dataIndex: "administrativeLevel1",
110
- key: "administrativeLevel1",
111
- ellipsis: true,
112
- show: entity.includes("locations"),
113
- render: (value, all) => {
114
- if (all.empty) {
115
- return <div className="daf-default-cell" />;
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
- 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
- }
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
- return <Tooltip title={label || '-'}>{label || '-'}</Tooltip>;
126
- },
125
+ return <Tooltip title={label || '-'}>{label || '-'}</Tooltip>;
127
126
  },
128
- {
129
- title: t("Territory"),
130
- dataIndex: "administrativeLevel2",
131
- key: "administrativeLevel2",
132
- show: entity.includes("locations"),
133
- ellipsis: true,
134
- render: (value, all) => {
135
- if (all.empty) {
136
- return <div className="daf-default-cell" />;
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
- 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
- }
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
- return <Tooltip title={label || '-'}>{label || '-'}</Tooltip>;
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: [], //TODO: add sources logic and make sure you only show unique sources only once
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
- setSelectedSubjects([])
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
- name: "",
198
- datastakeId: "",
194
+ search: "",
195
+ };
196
+
197
+ export const defaultUrlParams = {
198
+ search: "",
199
+ userRole: null,
200
+ status: null,
199
201
  };
200
202
 
201
- export const defaultUrlParams = {};
202
- export const defaultTableFilters = {};
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);
@@ -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
+