datastake-daf 0.6.741 → 0.6.743

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 (26) hide show
  1. package/dist/pages/index.js +1539 -126
  2. package/dist/services/index.js +1 -1
  3. package/package.json +1 -1
  4. package/src/@daf/pages/dashboards/AllInformation/Documents/columns.js +4 -3
  5. package/src/@daf/pages/dashboards/AllInformation/Documents/index.jsx +3 -1
  6. package/src/@daf/pages/dashboards/AllInformation/Events/columns.js +4 -3
  7. package/src/@daf/pages/dashboards/AllInformation/Events/index.jsx +3 -1
  8. package/src/@daf/pages/dashboards/AllInformation/Locations/columns.js +4 -3
  9. package/src/@daf/pages/dashboards/AllInformation/Locations/index.jsx +3 -1
  10. package/src/@daf/pages/dashboards/AllInformation/Stakeholders/columns.js +5 -2
  11. package/src/@daf/pages/dashboards/AllInformation/Stakeholders/index.jsx +4 -2
  12. package/src/@daf/pages/dashboards/DueDilligence/Activities/columns.js +221 -0
  13. package/src/@daf/pages/dashboards/DueDilligence/Activities/config.js +166 -0
  14. package/src/@daf/pages/dashboards/DueDilligence/Activities/create.jsx +104 -0
  15. package/src/@daf/pages/dashboards/DueDilligence/Activities/index.jsx +157 -0
  16. package/src/@daf/pages/dashboards/Operations/Operators/columns.js +17 -16
  17. package/src/@daf/pages/dashboards/Operations/Operators/config.js +0 -1
  18. package/src/@daf/pages/dashboards/Operations/Operators/index.jsx +3 -1
  19. package/src/@daf/pages/dashboards/Operations/Workers/columns.js +176 -0
  20. package/src/@daf/pages/dashboards/Operations/Workers/config.js +166 -0
  21. package/src/@daf/pages/dashboards/Operations/Workers/create.jsx +104 -0
  22. package/src/@daf/pages/dashboards/Operations/Workers/index.jsx +157 -0
  23. package/src/@daf/pages/pages/TablePageWithTabs/index.jsx +1 -1
  24. package/src/@daf/services/OperatorService.js +1 -1
  25. package/src/helpers/sourceAvatarConfig.js +37 -0
  26. package/src/pages.js +3 -0
@@ -0,0 +1,166 @@
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
+ activity: {
81
+ type: 'select',
82
+ label: 'Activity',
83
+ placeholder: (t) => `${t('Filter by')} ${t('Activity').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
+ subCategory = [],
136
+ activityAtSiteOptions = [],
137
+ stakeholderCategoryOptions,
138
+ stakeholderSubCategoriesOptions,
139
+ administrativeLevel1,
140
+ administrativeLevel2,
141
+ positionInMineralSupplyChainOptions,
142
+ subCategoriesOptions,
143
+ } = options || {};
144
+
145
+ const _default = {
146
+ status: [
147
+ {
148
+ value: "submitted",
149
+ label: "Submitted",
150
+ },
151
+ {
152
+ value: "private",
153
+ label: "Private",
154
+ },
155
+ ],
156
+ category: stakeholderCategoryOptions || categoryOptions,
157
+ country: countries,
158
+ subCategory: subCategoriesOptions,
159
+ activity: activityAtSiteOptions,
160
+ administrativeLevel1,
161
+ administrativeLevel2,
162
+ positionInTheMineralSupplyChain: positionInMineralSupplyChainOptions,
163
+ }
164
+
165
+ return _default;
166
+ }
@@ -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 StakeholdersCreate = ({
7
+ namespace = "WORKERS",
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: 'worker'
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 StakeholdersCreate
@@ -0,0 +1,157 @@
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 StakeholdersCreate from './create.jsx';
7
+ import { displayMessage } from '../../../../../helpers/messages.js';
8
+
9
+ const WorkersTable = ({
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
+ applications = [],
38
+ }) => {
39
+ const [selectOptions, setSelectOptions] = useState();
40
+ const [activeTab, setActiveTab] = useState();
41
+
42
+ const columns = useMemo(() => getColumns({
43
+ t,
44
+ goTo,
45
+ user,
46
+ options,
47
+ activeTab,
48
+ getRedirectLink,
49
+ theme,
50
+ subject: 'workers',
51
+ data,
52
+ applications,
53
+ }), [t, goTo, user, options, activeTab, getRedirectLink, theme, data, applications]);
54
+
55
+ const breadCrumbs = [];
56
+
57
+ const { paginationQuery, searchParams, otherParams, sortBy, sortDir } = useGetQueryParams({location});
58
+
59
+ const filters = useMemo(() => {
60
+ return {
61
+ ...otherParams,
62
+ ...extendingFilters
63
+ }
64
+ }, [otherParams, extendingFilters])
65
+
66
+ useEffect(() => {
67
+ getData({
68
+ pagination: paginationQuery,
69
+ ...(Object.keys(searchParams).length > 0 && { search: searchParams }),
70
+ ...otherParams,
71
+ tab: activeTab,
72
+ sortBy: {
73
+ [sortBy || "updatedAt"]: sortDir ? (sortDir === "ascend" ? 1 : -1) : -1,
74
+ },
75
+ ...extendingFilters
76
+ }, 'workers')
77
+ }, [location.search, activeTab, JSON.stringify(extendingFilters)]);
78
+
79
+ const selectFiltersConfig = useMemo(() => {
80
+ return getFiltersConfig({t});
81
+ }, [t]);
82
+
83
+ useEffect(() => {
84
+ setSelectOptions((prev) => ({
85
+ ...prev,
86
+ ...getFilterOptions(options, t),
87
+ }))
88
+ }, [options, t])
89
+
90
+ const handleActiveTabChange = useCallback((value) => {
91
+ setActiveTab(value);
92
+ }, []);
93
+
94
+ return (
95
+ <TablePageWithTabs
96
+ t={t}
97
+ title={t("Workers")}
98
+ breadCrumbs={breadCrumbs}
99
+ location={location}
100
+ loading={loading}
101
+ goTo={goTo}
102
+ defaultActiveTab={"all"}
103
+ columns={columns}
104
+ data={data}
105
+ checkboxConfig={checkboxConfig}
106
+ APP={APP}
107
+ getApiBaseUrl={getApiBaseUrl}
108
+ selectOptions={selectOptions}
109
+ selectFiltersConfig={selectFiltersConfig}
110
+ getRedirectLink={getRedirectLink}
111
+ filtersConfig={filtersConfig}
112
+ isMobile={isMobile}
113
+ view="workers"
114
+ getActiveTab={handleActiveTabChange}
115
+ onDownload={() => {
116
+ console.log("download");
117
+ }}
118
+ drawerTitle={t("Create Worker")}
119
+ >
120
+ {({onDrawerClose}) => (
121
+ <StakeholdersCreate
122
+ defaultData={createDefaultValues}
123
+ t={t}
124
+ goTo={goTo}
125
+ user={user}
126
+ APP={APP}
127
+ getApiBaseUrl={getApiBaseUrl}
128
+ getAppHeader={getAppHeader}
129
+ getData={getFormData}
130
+ saveData={saveFormData}
131
+ loading={formLoading}
132
+ onSubmitted={(type, m, data) => {
133
+ if (data.datastakeId) {
134
+ displayMessage(
135
+ type,
136
+ t("affirmations::subject-created-successfully") || m,
137
+ );
138
+ // goTo(`/app/edit/stakeholders/${data.datastakeId}`);
139
+ goTo(`/app/edit/workers/${data.datastakeId}`)
140
+ }
141
+ }}
142
+ onCancel={onDrawerClose}
143
+ query={query}
144
+ ajaxForms={ajaxForms}
145
+ changeAjaxForms={changeAjaxForms}
146
+ ajaxOptions={ajaxOptions}
147
+ changeAjaxOptions={changeAjaxOptions}
148
+ formData={formData}
149
+ formValue={formValue}
150
+ form={form}
151
+ />
152
+ )}
153
+ </TablePageWithTabs>
154
+ )
155
+ }
156
+
157
+ export default WorkersTable
@@ -12,7 +12,7 @@ const TablePageWithTabs = ({
12
12
  location,
13
13
  loading = false,
14
14
  goTo = () => {},
15
- defaultActiveTab = "all",
15
+ defaultActiveTab = "own",
16
16
  checkboxConfig = {},
17
17
  columns = [],
18
18
  data = {},
@@ -76,7 +76,7 @@ class OperatorService extends BaseService {
76
76
  });
77
77
  }
78
78
 
79
- getOptions(id = "optionPositionSupplyChain,subCategory,activityAtSite,category,countries") {
79
+ getOptions(id = "positionSupplyChainOptions,subCategoriesOptions,categoriesOptions,countries") {
80
80
  return this.apiGet({
81
81
  isApp: true,
82
82
  url: `/forms/options`,
@@ -0,0 +1,37 @@
1
+
2
+ export default function sourceAvatarConfig(items, user,applications) {
3
+ const userInterface = user?.company?.apps?.[0]?.interface;
4
+
5
+ const icon = applications[0]?.interfaces?.find((i) => i.value === userInterface)?.iconName;
6
+
7
+ const sources = []
8
+ items?.length > 0 && items?.forEach((author) => {
9
+ if (author?.id) {
10
+ if (author.id === user?.company?.id) {
11
+ // it's own data
12
+ sources.push({
13
+ name: author.name,
14
+ icon: 'OwnData',
15
+ isOwn: true,
16
+ sourceId: author.id,
17
+ });
18
+ } else {
19
+ sources.push({
20
+ name: author.name,
21
+ icon: icon,
22
+ isOwn: false,
23
+ sourceId: author.id,
24
+ });
25
+ }
26
+ }
27
+
28
+ });
29
+
30
+ // sort to have own data first
31
+ return sources.sort((a, b) => {
32
+ if (a.isOwn && !b.isOwn) return -1;
33
+ if (!a.isOwn && b.isOwn) return 1;
34
+ return 0;
35
+ });
36
+ }
37
+
package/src/pages.js CHANGED
@@ -6,6 +6,9 @@ export { default as LocationsTable } from './@daf/pages/dashboards/AllInformatio
6
6
  export { default as StakeholdersTable } from './@daf/pages/dashboards/AllInformation/Stakeholders/index.jsx';
7
7
  export { default as EventsTable } from './@daf/pages/dashboards/AllInformation/Events/index.jsx';
8
8
  export { default as DocumentsTable } from './@daf/pages/dashboards/AllInformation/Documents/index.jsx';
9
+ export { default as WorkersTable } from './@daf/pages/dashboards/Operations/Workers/index.jsx';
10
+ export { default as ActivitiesTable } from './@daf/pages/dashboards/DueDilligence/Activities/index.jsx';
11
+
9
12
  // Pages
10
13
  export { default as TablePageWithTabs } from './@daf/pages/pages/TablePageWithTabs/index.jsx';
11
14