datastake-daf 0.6.742 → 0.6.744

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 (48) hide show
  1. package/build/favicon.ico +0 -0
  2. package/build/logo192.png +0 -0
  3. package/build/logo512.png +0 -0
  4. package/build/manifest.json +25 -0
  5. package/build/robots.txt +3 -0
  6. package/dist/hooks/index.js +4658 -19
  7. package/dist/pages/index.js +3278 -280
  8. package/dist/services/index.js +2 -2
  9. package/package.json +1 -1
  10. package/src/@daf/pages/dashboards/AllInformation/Documents/columns.js +42 -16
  11. package/src/@daf/pages/dashboards/AllInformation/Documents/create.jsx +5 -4
  12. package/src/@daf/pages/dashboards/AllInformation/Documents/index.jsx +18 -26
  13. package/src/@daf/pages/dashboards/AllInformation/Events/columns.js +4 -3
  14. package/src/@daf/pages/dashboards/AllInformation/Events/config.js +158 -6
  15. package/src/@daf/pages/dashboards/AllInformation/Events/create.jsx +2 -2
  16. package/src/@daf/pages/dashboards/AllInformation/Events/index.jsx +11 -1
  17. package/src/@daf/pages/dashboards/AllInformation/Locations/columns.js +4 -3
  18. package/src/@daf/pages/dashboards/AllInformation/Locations/create.jsx +1 -1
  19. package/src/@daf/pages/dashboards/AllInformation/Locations/index.jsx +11 -1
  20. package/src/@daf/pages/dashboards/AllInformation/Stakeholders/columns.js +5 -2
  21. package/src/@daf/pages/dashboards/AllInformation/Stakeholders/create.jsx +1 -1
  22. package/src/@daf/pages/dashboards/AllInformation/Stakeholders/index.jsx +13 -3
  23. package/src/@daf/pages/dashboards/DueDilligence/Activities/columns.js +221 -0
  24. package/src/@daf/pages/dashboards/DueDilligence/Activities/config.js +166 -0
  25. package/src/@daf/pages/dashboards/DueDilligence/Activities/create.jsx +104 -0
  26. package/src/@daf/pages/dashboards/DueDilligence/Activities/index.jsx +157 -0
  27. package/src/@daf/pages/dashboards/DueDilligence/Incidents/columns.js +221 -0
  28. package/src/@daf/pages/dashboards/DueDilligence/Incidents/config.js +166 -0
  29. package/src/@daf/pages/dashboards/DueDilligence/Incidents/create.jsx +104 -0
  30. package/src/@daf/pages/dashboards/DueDilligence/Incidents/index.jsx +157 -0
  31. package/src/@daf/pages/dashboards/DueDilligence/Incidents2/columns.js +176 -0
  32. package/src/@daf/pages/dashboards/DueDilligence/Incidents2/config.js +171 -0
  33. package/src/@daf/pages/dashboards/DueDilligence/Incidents2/create.jsx +104 -0
  34. package/src/@daf/pages/dashboards/DueDilligence/Incidents2/index.jsx +156 -0
  35. package/src/@daf/pages/dashboards/Operations/Operators/columns.js +4 -3
  36. package/src/@daf/pages/dashboards/Operations/Operators/config.js +0 -1
  37. package/src/@daf/pages/dashboards/Operations/Operators/index.jsx +3 -1
  38. package/src/@daf/pages/dashboards/Operations/ProductionSites/columns.js +150 -0
  39. package/src/@daf/pages/dashboards/Operations/ProductionSites/config.js +165 -0
  40. package/src/@daf/pages/dashboards/Operations/ProductionSites/create.jsx +104 -0
  41. package/src/@daf/pages/dashboards/Operations/ProductionSites/index.jsx +155 -0
  42. package/src/@daf/pages/dashboards/Operations/Workers/columns.js +176 -0
  43. package/src/@daf/pages/dashboards/Operations/Workers/config.js +166 -0
  44. package/src/@daf/pages/dashboards/Operations/Workers/create.jsx +104 -0
  45. package/src/@daf/pages/dashboards/Operations/Workers/index.jsx +157 -0
  46. package/src/@daf/services/LinkedSubjects.js +2 -2
  47. package/src/helpers/sourceAvatarConfig.js +37 -0
  48. package/src/pages.js +6 -0
@@ -0,0 +1,150 @@
1
+ import React from 'react';
2
+ import { Tooltip } from 'antd';
3
+ import { findOptions } 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
+
8
+ const getLinkValue = (value, linkingObject) => {
9
+ if(linkingObject && linkingObject?.[value]) {
10
+ return linkingObject?.[value]?.name;
11
+ }
12
+ return null;
13
+ }
14
+
15
+ export const getColumns = ({t, goTo, user, options, activeTab, getRedirectLink, theme, subject, data}) => [
16
+ {
17
+ dataIndex: 'datastakeId',
18
+ title: t('ID'),
19
+ ellipsis: true,
20
+ show: true,
21
+ render: (v, all) => {
22
+ if (all.empty) {
23
+ return <div className="daf-default-cell" />
24
+ }
25
+
26
+ return <Tooltip title={v}>{v}</Tooltip>;
27
+ },
28
+ },
29
+ {
30
+ dataIndex: 'name',
31
+ title: t('Name'),
32
+ ellipsis: true,
33
+ show: true,
34
+ render: (v, all) => {
35
+ if (all.empty) {
36
+ return <div className="daf-default-cell" />
37
+ }
38
+
39
+ return <Tooltip title={v}>{v}</Tooltip>;
40
+ },
41
+ },
42
+ {
43
+ dataIndex: 'province',
44
+ title: t('Province'),
45
+ ellipsis: true,
46
+ show: true,
47
+ render: (v, all) => {
48
+ if (all.empty) {
49
+ return <div className="daf-default-cell" />
50
+ }
51
+
52
+ const region = getLinkValue(all?.location?.administrativeLevel1, all?.location?.linking?.SCL);
53
+
54
+ return region ? <Tooltip title={region}>{region}</Tooltip> : '-';
55
+ },
56
+ },
57
+
58
+
59
+ {
60
+ dataIndex: 'territory',
61
+ title: t('Territory'),
62
+ ellipsis: true,
63
+ show: true,
64
+ render: (v, all) => {
65
+ if (all.empty) {
66
+ return <div className="daf-default-cell" />
67
+ }
68
+
69
+ const district = getLinkValue(all?.location?.administrativeLevel2, all?.location?.linking?.SCL);
70
+
71
+ return district ? <Tooltip title={district}>{district}</Tooltip> : '-';
72
+ },
73
+ },
74
+ {
75
+ title: t("Products"),
76
+ dataIndex: "products",
77
+ key: "products",
78
+ show: activeTab !== "own",
79
+ render: (val, all) => {
80
+ if (all.empty) {
81
+ return <div className="daf-default-cell" />;
82
+ }
83
+
84
+ console.log({val, all})
85
+
86
+ return <AvatarGroup items={val}></AvatarGroup>;
87
+ },
88
+ },
89
+ , {
90
+ dataIndex: 'operator',
91
+ title: t('Operator'),
92
+ ellipsis: true,
93
+ show: true,
94
+ render: (v, all) => {
95
+ if (all.empty) {
96
+ return <div className="daf-default-cell" />
97
+ }
98
+
99
+ const operator = getLinkValue(all?.operator, all?.linking?.SCL);
100
+
101
+ return operator ? <Tooltip title={operator}>{operator}</Tooltip> : '-';
102
+ },
103
+ },
104
+ {
105
+ title: t("Last Update"),
106
+ dataIndex: "updatedAt",
107
+ key: "updatedAt",
108
+ width: 125,
109
+ render: (date, all) => {
110
+ if (all.empty) {
111
+ return <div className="daf-default-cell" />;
112
+ }
113
+
114
+ const _date = date ? renderDateFormatted(date, "DD MMM YYYY", user?.language || 'en') : "-";
115
+ return <Tooltip title={_date}>{_date}</Tooltip>;
116
+ },
117
+ ellipsis: true,
118
+ },
119
+ {
120
+ title: t("Status"),
121
+ dataIndex: 'status',
122
+ ellipsis: true,
123
+ show: activeTab == "own",
124
+ render: (v, all) => {
125
+ if (all.empty) {
126
+ return <div className="daf-default-cell" />
127
+ }
128
+ const status = findOptions(v, data?.options?.statusOptions);
129
+ return status ? <Tooltip title={status}>{status}</Tooltip> : '-';
130
+ },
131
+ },
132
+ {
133
+ id: 'actions',
134
+ title: "",
135
+ width: 60,
136
+ render: (_, all) => {
137
+ if (all.empty) {
138
+ return <div className="daf-default-cell" />;
139
+ }
140
+
141
+ const link = `/app/view/${subject}/${all.datastakeId}`;
142
+
143
+ return <div style={{ display: "flex", justifyContent: "center" }}>
144
+ <a href={getRedirectLink(link)}>
145
+ <CustomIcon name="Link" size={15} color={theme.baseGray70} />
146
+ </a>
147
+ </div>;
148
+ }
149
+ }
150
+ ].filter((column) => column.show !== false);
@@ -0,0 +1,165 @@
1
+ export const checkboxConfig = {
2
+ name: 'Name',
3
+ datastakeId: 'ID'
4
+ }
5
+
6
+ export const getFiltersConfig = ({t}) => {
7
+ return {
8
+ country: {
9
+ type: 'select',
10
+ label: 'Country',
11
+ placeholder: (t) => `${t('Filter by')} ${t('Country').toLowerCase()}`,
12
+ style: { flex: 1 },
13
+ labelStyle: { flex: 1 },
14
+ getLabel: (option) => option.label,
15
+ getValue: (option) => option.value,
16
+ },
17
+ administrativeLevel1: {
18
+ type: 'ajaxSelect',
19
+ label: ({ t = (s) => s, options = {}, filters = {}, language = 'en' }) => {
20
+ const { administrativeLevel1 } = options;
21
+
22
+ if (administrativeLevel1) {
23
+ if (options.country) {
24
+ const _item = administrativeLevel1[filters.country];
25
+ if (_item) {
26
+ if (_item[language]) {
27
+ return _item[language]
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ return t('Province');
34
+ },
35
+ placeholder: (t) => `${t('Filter by')} ${t('Province').toLowerCase()}`,
36
+ filters: (data) => ({
37
+ country: data.country,
38
+ level: 'level_1',
39
+ }),
40
+ show: (data) => !data.country,
41
+ disabled: (data) => !data.country,
42
+ mapper: { label: "name", value: "id" },
43
+ method: 'getOptions',
44
+ entity: 'AdministrativeLevel',
45
+ style: { flex: 1 },
46
+ labelStyle: { flex: 1 },
47
+ },
48
+ administrativeLevel2: {
49
+ type: 'ajaxSelect',
50
+ label: ({ t = (s) => s, options = {}, filters = {}, language = 'en' }) => {
51
+ const { administrativeLevel2 } = options;
52
+
53
+ if (administrativeLevel2) {
54
+ if (options.country) {
55
+ const _item = administrativeLevel2[filters.country];
56
+ if (_item) {
57
+ if (_item[language]) {
58
+ return _item[language]
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ return t('Province');
65
+ },
66
+ show: (data) => !(data.country && data.administrativeLevel1),
67
+ placeholder: (t) => `${t('Filter by')} ${t('Territory').toLowerCase()}`,
68
+ filters: (data) => ({
69
+ country: data.country,
70
+ level: 'level_2',
71
+ administrativeLevel1: data.administrativeLevel1,
72
+ }),
73
+ disabled: (data) => !(data.country && data.administrativeLevel1),
74
+ mapper: { label: "name", value: "id" },
75
+ method: 'getOptions',
76
+ entity: 'AdministrativeLevel',
77
+ style: { flex: 1 },
78
+ labelStyle: { flex: 1 },
79
+ },
80
+ product: {
81
+ type: 'select',
82
+ label: 'Product',
83
+ placeholder: (t) => `${t('Filter by')} ${t('Product').toLowerCase()}`,
84
+ style: { flex: 1 },
85
+ labelStyle: { flex: 1 },
86
+ getLabel: (option) => option.label,
87
+ getValue: (option) => option.value,
88
+ filterOptions: (val) => {
89
+ if (val) {
90
+ const { option, filters } = val
91
+ if (filters && option) {
92
+ const { filters: optionFilters } = option;
93
+ if (Array.isArray(optionFilters) && optionFilters.length) {
94
+ const { value, condition } = optionFilters[0];
95
+ if (condition === 'includes') {
96
+ return value.includes('corporation');
97
+ }
98
+ }
99
+ }
100
+ }
101
+ return true;
102
+ },
103
+ },
104
+ positionInTheMineralSupplyChain: {
105
+ type: 'select',
106
+ label: 'Position',
107
+ placeholder: (t) => `${t('Filter by')} ${t('Position').toLowerCase()}`,
108
+ style: { flex: 1 },
109
+ labelStyle: { flex: 1 },
110
+ getLabel: (option) => option.label,
111
+ getValue: (option) => option.value,
112
+ },
113
+ status: {
114
+ type: "select",
115
+ label: "Status",
116
+ placeholder: (t) => `${t("Filter by")} ${t("Status").toLowerCase()}`,
117
+ style: { flex: 1 },
118
+ labelStyle: { fley: 1 },
119
+ getLabel: (option) => option.label,
120
+ getValue: (option) => option.value,
121
+ },
122
+ }
123
+ }
124
+
125
+ export const filtersConfig = {
126
+ name: '',
127
+ datastakeId: '',
128
+ };
129
+
130
+ export const getFilterOptions = (options, t) => {
131
+ const {
132
+ statusOptions = [],
133
+ categoryOptions = [],
134
+ countries = [],
135
+ product=[],
136
+ subCategory = [],
137
+ subCategoriesOptions,
138
+ stakeholderCategoryOptions,
139
+ stakeholderSubCategoriesOptions,
140
+ administrativeLevel1,
141
+ administrativeLevel2,
142
+ } = options || {};
143
+ console.log({options})
144
+
145
+ const _default = {
146
+ category: stakeholderCategoryOptions || categoryOptions,
147
+ country: countries,
148
+ product: product,
149
+ administrativeLevel1,
150
+ administrativeLevel2,
151
+ subCategory: subCategoriesOptions,
152
+ status: [
153
+ {
154
+ value: "submitted",
155
+ label: "Submitted",
156
+ },
157
+ {
158
+ value: "private",
159
+ label: "Private",
160
+ },
161
+ ],
162
+ }
163
+
164
+ return _default;
165
+ }
@@ -0,0 +1,104 @@
1
+ import React, { useEffect} from 'react'
2
+ import { message } from 'antd';
3
+ import { MessageTypes } from '../../../../../helpers/messages.js';
4
+ import DynamicForm from '../../../../core/components/DynamicForm/index.jsx';
5
+
6
+ const ProductionSitesCreate = ({
7
+ namespace = "PRODUCTION SITES",
8
+ view = ['scoping', 'new'],
9
+ edit = false,
10
+ formData = {},
11
+ loading = false,
12
+ onSubmitted = () => {},
13
+ onCancel = () => {},
14
+ getData = () => {},
15
+ saveData = () => {},
16
+ form: formConfig = {},
17
+ formValue = {},
18
+ defaultData = {},
19
+ user = {},
20
+ APP,
21
+ query,
22
+ goTo = () => {},
23
+ t = () => {},
24
+ ajaxForms = {},
25
+ changeAjaxForms = () => {},
26
+ ajaxOptions = {},
27
+ changeAjaxOptions = () => {},
28
+ getAppHeader = () => {},
29
+ getApiBaseUrl = () => {},
30
+ }) => {
31
+ let {
32
+ form = {},
33
+ data = defaultData || {},
34
+ } = !edit ? (formData[`${APP}-${view}`] || {}) : {
35
+ form: formConfig,
36
+ data: formValue
37
+ };
38
+
39
+ useEffect(() => {
40
+ if (Object.keys(form).length === 0 && !formData[`${APP}-${view}`]) {
41
+ if (!edit) {
42
+ getData({ namespace, module: APP, view, scope: 'global' });
43
+ } else {
44
+ form = formConfig;
45
+ data = formValue;
46
+ }
47
+ }
48
+ }, [edit, user?.language]);
49
+
50
+ return (
51
+ <div className="daf-create-form">
52
+ <DynamicForm
53
+ form={form}
54
+ data={{...defaultData, ...data}}
55
+ showSaveAndNext={false}
56
+ module={APP}
57
+ onCancel={onCancel}
58
+ isCreate
59
+ t={t}
60
+ excludedKeys={["title"]}
61
+ user={user}
62
+ ajaxForms={ajaxForms}
63
+ ajaxOptions={ajaxOptions}
64
+ getAppHeader={getAppHeader}
65
+ getApiBaseUrl={getApiBaseUrl}
66
+ changeAjaxOptions={changeAjaxOptions}
67
+ app={APP}
68
+ query={query}
69
+ goTo={goTo}
70
+ changeAjaxForms={changeAjaxForms}
71
+ submit={(payload, setSelectedFormNext) => {
72
+ const payloadData = { ...payload, module: APP, namespace };
73
+
74
+ const newPayload = {
75
+ ...defaultData,
76
+ ...payloadData,
77
+ form: 'production-sites'
78
+ };
79
+
80
+ const callback = (type, m, data) => {
81
+ if (setSelectedFormNext) {
82
+ setSelectedFormNext();
83
+ }
84
+ if (type === MessageTypes.SUCCESS) {
85
+ if (onSubmitted) onSubmitted(type, m, data);
86
+ } else {
87
+ message.error(m);
88
+ }
89
+ };
90
+
91
+ saveData(
92
+ !data && !data.id ? newPayload : Object.assign(newPayload, { id: data.id }),
93
+ callback,
94
+ );
95
+ }}
96
+ isFormDisabled={() => {
97
+ return !data || !data.typeOfEvent;
98
+ }}
99
+ />
100
+ </div>
101
+ )
102
+ }
103
+
104
+ export default ProductionSitesCreate
@@ -0,0 +1,155 @@
1
+ import React, { useMemo, useState, useEffect, useCallback } from 'react'
2
+ import TablePageWithTabs from '../../../pages/TablePageWithTabs/index.jsx'
3
+ import { getColumns } from './columns.js';
4
+ import { checkboxConfig, getFiltersConfig, filtersConfig, getFilterOptions } from './config.js';
5
+ import { useGetQueryParams } from '../../../../hooks/useGetQueryParams.js';
6
+ import ProductionSitesCreate from './create.jsx';
7
+ import { displayMessage } from '../../../../../helpers/messages.js';
8
+
9
+ const ProductionSitesTable = ({
10
+ t = () => {},
11
+ goTo = () => {},
12
+ user = {},
13
+ options = {},
14
+ getRedirectLink = () => {},
15
+ theme = {},
16
+ loading = false,
17
+ data = {},
18
+ isMobile,
19
+ APP,
20
+ location,
21
+ getData = () => {},
22
+ getApiBaseUrl = () => {},
23
+ getAppHeader = () => {},
24
+ getFormData = () => {},
25
+ saveFormData = () => {},
26
+ formLoading = false,
27
+ query = {},
28
+ ajaxForms = {},
29
+ changeAjaxForms = () => {},
30
+ ajaxOptions = {},
31
+ changeAjaxOptions = () => {},
32
+ formData = {},
33
+ formValue = {},
34
+ form = {},
35
+ extendingFilters = {},
36
+ createDefaultValues = {},
37
+ }) => {
38
+ const [selectOptions, setSelectOptions] = useState();
39
+ const [activeTab, setActiveTab] = useState();
40
+
41
+ const columns = useMemo(() => getColumns({
42
+ t,
43
+ goTo,
44
+ user,
45
+ options,
46
+ activeTab,
47
+ getRedirectLink,
48
+ theme,
49
+ subject: 'production-sites',
50
+ data,
51
+ }), [t, goTo, user, options, activeTab, getRedirectLink, theme, data]);
52
+
53
+ const breadCrumbs = [];
54
+
55
+ const { paginationQuery, searchParams, otherParams, sortBy, sortDir } = useGetQueryParams({location});
56
+
57
+ const filters = useMemo(() => {
58
+ return {
59
+ ...otherParams,
60
+ ...extendingFilters
61
+ }
62
+ }, [otherParams, extendingFilters])
63
+
64
+ useEffect(() => {
65
+ getData({
66
+ pagination: paginationQuery,
67
+ ...(Object.keys(searchParams).length > 0 && { search: searchParams }),
68
+ ...otherParams,
69
+ tab: activeTab,
70
+ sortBy: {
71
+ [sortBy || "updatedAt"]: sortDir ? (sortDir === "ascend" ? 1 : -1) : -1,
72
+ },
73
+ ...extendingFilters
74
+ }, 'production-sites')
75
+ }, [location.search, activeTab, JSON.stringify(extendingFilters)]);
76
+
77
+ const selectFiltersConfig = useMemo(() => {
78
+ return getFiltersConfig({t});
79
+ }, [t]);
80
+
81
+ useEffect(() => {
82
+ setSelectOptions((prev) => ({
83
+ ...prev,
84
+ ...getFilterOptions(options, t),
85
+ }))
86
+ }, [options, t])
87
+
88
+ const handleActiveTabChange = useCallback((value) => {
89
+ setActiveTab(value);
90
+ }, []);
91
+
92
+ return (
93
+ <TablePageWithTabs
94
+ t={t}
95
+ title={t("production-sites")}
96
+ breadCrumbs={breadCrumbs}
97
+ location={location}
98
+ loading={loading}
99
+ goTo={goTo}
100
+ defaultActiveTab={"all"}
101
+ columns={columns}
102
+ data={data}
103
+ checkboxConfig={checkboxConfig}
104
+ APP={APP}
105
+ getApiBaseUrl={getApiBaseUrl}
106
+ selectOptions={selectOptions}
107
+ selectFiltersConfig={selectFiltersConfig}
108
+ getRedirectLink={getRedirectLink}
109
+ filtersConfig={filtersConfig}
110
+ isMobile={isMobile}
111
+ view="production-sites"
112
+ getActiveTab={handleActiveTabChange}
113
+ onDownload={() => {
114
+ console.log("download");
115
+ }}
116
+ drawerTitle={t("Create Production Site")}
117
+ >
118
+ {({onDrawerClose}) => (
119
+ <ProductionSitesCreate
120
+ defaultData={createDefaultValues}
121
+ t={t}
122
+ goTo={goTo}
123
+ user={user}
124
+ APP={APP}
125
+ getApiBaseUrl={getApiBaseUrl}
126
+ getAppHeader={getAppHeader}
127
+ getData={getFormData}
128
+ saveData={saveFormData}
129
+ loading={formLoading}
130
+ onSubmitted={(type, m, data) => {
131
+ if (data.datastakeId) {
132
+ displayMessage(
133
+ type,
134
+ t("affirmations::subject-created-successfully") || m,
135
+ );
136
+ // goTo(`/app/edit/stakeholders/${data.datastakeId}`);
137
+ goTo(`/app/edit/production-sites/${data.datastakeId}`)
138
+ }
139
+ }}
140
+ onCancel={onDrawerClose}
141
+ query={query}
142
+ ajaxForms={ajaxForms}
143
+ changeAjaxForms={changeAjaxForms}
144
+ ajaxOptions={ajaxOptions}
145
+ changeAjaxOptions={changeAjaxOptions}
146
+ formData={formData}
147
+ formValue={formValue}
148
+ form={form}
149
+ />
150
+ )}
151
+ </TablePageWithTabs>
152
+ )
153
+ }
154
+
155
+ export default ProductionSitesTable