datastake-daf 0.6.813 → 0.6.814

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 (56) 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/components/index.js +3056 -4315
  7. package/dist/hooks/index.js +4 -11
  8. package/dist/layouts/index.js +478 -464
  9. package/dist/pages/index.js +490 -576
  10. package/dist/services/index.js +6 -56
  11. package/dist/style/datastake/mapbox-gl.css +330 -0
  12. package/dist/utils/index.js +483 -492
  13. package/package.json +1 -1
  14. package/src/@daf/core/components/AuthForm/index.jsx +3 -12
  15. package/src/@daf/core/components/Icon/configs/index.js +3 -1
  16. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/TopContributors/index.jsx +1 -0
  17. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/hook.js +1 -0
  18. package/src/@daf/core/components/Screens/Admin/AdminDashboard/components/UserStatistics/UserGrowth/index.jsx +3 -1
  19. package/src/@daf/core/components/Screens/Admin/AdminModals/CombineLocation/index.jsx +51 -51
  20. package/src/@daf/core/components/Screens/Admin/AdminModals/CombineSubjects/index.jsx +1 -6
  21. package/src/@daf/core/components/Screens/Admin/AdminModals/NewAccount/index.jsx +31 -56
  22. package/src/@daf/core/components/Screens/Admin/AdminModals/NewUser/index.jsx +10 -36
  23. package/src/@daf/core/components/Screens/Admin/AdminModals/TransferRights/index.jsx +1 -1
  24. package/src/@daf/core/components/Screens/Admin/AdminScreens/Accounts.jsx +10 -37
  25. package/src/@daf/core/components/Screens/Admin/AdminScreens/Dashboard.jsx +2 -2
  26. package/src/@daf/core/components/Screens/Admin/AdminScreens/index.js +0 -2
  27. package/src/@daf/core/components/Screens/Admin/AdminTables/AccountTable/helper.js +30 -22
  28. package/src/@daf/core/components/Screens/Admin/AdminTables/AccountTable/index.jsx +13 -25
  29. package/src/@daf/core/components/Screens/Admin/AdminTables/LocationTable/index.jsx +2 -17
  30. package/src/@daf/core/components/Screens/Admin/AdminTables/SubjectsTable/index.jsx +13 -27
  31. package/src/@daf/core/components/Screens/Admin/AdminTables/UserTable/index.jsx +1 -0
  32. package/src/@daf/core/components/Screens/Admin/AdminTables/components/index.jsx +2 -4
  33. package/src/@daf/core/components/Screens/Admin/AdminTables/hook.js +0 -3
  34. package/src/@daf/core/components/Screens/Admin/AdminViews/components/Edit/index.jsx +9 -12
  35. package/src/@daf/core/components/Screens/Admin/AdminViews/components/Users/index.jsx +4 -16
  36. package/src/@daf/core/components/Screens/Admin/AdminViews/components/View/helpers.js +17 -9
  37. package/src/@daf/core/components/Screens/Admin/AdminViews/index.jsx +8 -9
  38. package/src/@daf/core/components/Screens/Admin/AppInvitation/index.jsx +99 -124
  39. package/src/@daf/core/components/Screens/Admin/adminRoutes.js +1 -48
  40. package/src/@daf/hooks/useAdminDashboard.js +4 -7
  41. package/src/@daf/pages/View/hooks/useViewActions.js +0 -13
  42. package/src/@daf/pages/View/hooks/useViewPermissions.js +0 -16
  43. package/src/@daf/pages/View/index.jsx +4 -29
  44. package/src/@daf/services/AdminService.js +5 -47
  45. package/src/@daf/services/DashboardService.js +3 -3
  46. package/src/@daf/utils/filters.js +15 -13
  47. package/src/constants/locales/en/translation.js +0 -13
  48. package/src/helpers/copyToClipboard.js +0 -60
  49. package/src/@daf/core/components/Screens/Admin/AdminScreens/Documents.jsx +0 -81
  50. package/src/@daf/core/components/Screens/Admin/AdminScreens/Events.jsx +0 -77
  51. package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/column.js +0 -127
  52. package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/helper.js +0 -43
  53. package/src/@daf/core/components/Screens/Admin/AdminTables/DocumentsTable/index.jsx +0 -201
  54. package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/column.js +0 -146
  55. package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/helper.js +0 -58
  56. package/src/@daf/core/components/Screens/Admin/AdminTables/EventsTable/index.jsx +0 -176
@@ -35,7 +35,6 @@ export default function AccountTable({
35
35
  actionButton,
36
36
  inviteAccount,
37
37
  }) {
38
- const accountTypes = config?.accountTypes;
39
38
  const [showFilters, setShowFilters] = useState(false);
40
39
  const [hasError, setHasError] = useState(false);
41
40
  const [selectedAccounts, setSelectedAccounts] = useState([]);
@@ -61,15 +60,15 @@ export default function AccountTable({
61
60
  filtersConfig,
62
61
  getRedirectLink,
63
62
  getData,
64
- fetchPendingOnMount: true,
63
+ fetchPendingOnMount: true,
65
64
  });
66
65
 
67
66
  const selectOptions = useMemo(() => {
68
67
  return {
69
68
  country: config.options?.countries,
70
- type: accountTypes,
69
+ type: config.accountTypes,
71
70
  };
72
- }, [config.options, accountTypes]);
71
+ }, [config.options, config.accountTypes]);
73
72
 
74
73
  useEffect(() => {
75
74
  if (initFetchDone) {
@@ -97,23 +96,12 @@ export default function AccountTable({
97
96
  console.log(err);
98
97
  }
99
98
  },
100
- onCancel: () => { },
99
+ onCancel: () => {},
101
100
  });
102
101
  },
103
102
  [t, fetchData, fetchPendingAccounts],
104
103
  );
105
104
 
106
- const onResendInvitation = useCallback(
107
- async (user) => {
108
- try {
109
- await config.onTableClick.onResendInvitation(user);
110
- message.success(t("Email successfully sent"));
111
- } catch (error) {
112
- console.error("Failed to resend invitation:", error);
113
- message.error(t("Failed to resend invitation"));
114
- }
115
- }, [t, config.onTableClick]);
116
-
117
105
  const columns = useMemo(
118
106
  () =>
119
107
  getColumns({
@@ -125,7 +113,7 @@ export default function AccountTable({
125
113
  getRedirectLink,
126
114
  onCanelVerification: onCanelVerification,
127
115
  onCopyInvitation: config.onTableClick.onCopyInvitation,
128
- onResendInvitation: onResendInvitation,
116
+ onResendInvitation: config.onTableClick.onResendInvitation,
129
117
  setAddAccountVisible: config.onTableClick.setAddAccountVisible,
130
118
  setSelectedAccounts: setSelectedAccounts,
131
119
  selectedAccounts: selectedAccounts,
@@ -141,13 +129,13 @@ export default function AccountTable({
141
129
  headerTitle={headerTitle}
142
130
  actionButton={[
143
131
  ...actionButton,
144
- // {
145
- // icon: "Merge",
146
- // // type: "primary",
147
- // onClick: () => setCombineAccountVisible(true),
148
- // tooltip: "Combine",
149
- // disabled: selectedAccounts.length < 2,
150
- // },
132
+ {
133
+ icon: "Merge",
134
+ // type: "primary",
135
+ onClick: () => setCombineAccountVisible(true),
136
+ tooltip: "Combine",
137
+ disabled: selectedAccounts.length < 2,
138
+ },
151
139
  ]}
152
140
  tabs={getTabs({
153
141
  totalPending: totalPending,
@@ -219,7 +207,7 @@ export default function AccountTable({
219
207
  fetchData();
220
208
  fetchPendingAccounts();
221
209
  }}
222
- accountTypes={accountTypes}
210
+ accountTypes={config.accountTypes}
223
211
  inviteAccount={inviteAccount}
224
212
  />
225
213
  <CombineAccountModal
@@ -53,22 +53,7 @@ export default function LocationTable({
53
53
  console.error('Failed to parse pagination', e);
54
54
  }
55
55
  }
56
-
57
-
58
- const pageSize = Number(paginationObj.pageSize) || Number(paginationObj.take) || 20;
59
-
60
- let pageNumber = 1;
61
-
62
- if (paginationObj.page || paginationObj.current) {
63
- pageNumber = Number(paginationObj.page) || Number(paginationObj.current);
64
- } else if (typeof paginationObj.skip === 'number') {
65
56
 
66
- pageNumber = Math.floor(paginationObj.skip / pageSize) + 1;
67
- }
68
-
69
- pageNumber = pageNumber || 1;
70
-
71
-
72
57
  let activeTab = tab || "active";
73
58
  if (!tab && filters) {
74
59
  try {
@@ -81,8 +66,8 @@ export default function LocationTable({
81
66
 
82
67
  const transformedParams = {
83
68
  pagination: {
84
- skip: pageNumber,
85
- take: pageSize,
69
+ skip: String(paginationObj.page || 1),
70
+ take: String(paginationObj.pageSize || 20),
86
71
  },
87
72
  tab: activeTab,
88
73
  };
@@ -13,6 +13,7 @@ import {
13
13
  } from "./helper.js";
14
14
  import { getColumns } from "./columns.js";
15
15
  import CombineSubjectsModal from "../../AdminModals/CombineSubjects/index.jsx";
16
+
16
17
  const { useToken } = theme;
17
18
 
18
19
  export default function SubjectsTable({
@@ -39,7 +40,10 @@ export default function SubjectsTable({
39
40
  const { token } = useToken();
40
41
  const [isCombineModalOpen, setIsModalOpen] = useState(false);
41
42
 
42
- const getDataWithStringPagination = async ({ params }) => {
43
+
44
+
45
+
46
+ const getDataWithStringPagination = async ({ params }) => {
43
47
  const { pagination, tab, filters, search, sort, ...otherParams } = params;
44
48
 
45
49
  let paginationObj = { page: 1, pageSize: 20 };
@@ -50,21 +54,7 @@ export default function SubjectsTable({
50
54
  console.error('Failed to parse pagination', e);
51
55
  }
52
56
  }
53
-
54
- const pageSize = Number(paginationObj.pageSize) || Number(paginationObj.take) || 20;
55
-
56
- let pageNumber = 1;
57
-
58
- if (paginationObj.page || paginationObj.current) {
59
- pageNumber = Number(paginationObj.page) || Number(paginationObj.current);
60
- } else if (typeof paginationObj.skip === 'number') {
61
-
62
- pageNumber = Math.floor(paginationObj.skip / pageSize) + 1;
63
- }
64
-
65
- pageNumber = pageNumber || 1;
66
-
67
-
57
+
68
58
  let activeTab = tab || "active";
69
59
  if (!tab && filters) {
70
60
  try {
@@ -77,16 +67,14 @@ export default function SubjectsTable({
77
67
 
78
68
  const transformedParams = {
79
69
  pagination: {
80
- skip: pageNumber,
81
- take: pageSize,
70
+ skip: String(paginationObj.page || 1),
71
+ take: String(paginationObj.pageSize || 20),
82
72
  },
83
73
  tab: activeTab,
84
74
  };
85
75
 
86
76
  return getData({ params: transformedParams });
87
77
  };
88
-
89
-
90
78
  const {
91
79
  filter,
92
80
  activeTab,
@@ -145,7 +133,7 @@ export default function SubjectsTable({
145
133
  {
146
134
  icon: "Merge",
147
135
  onClick: () => setIsModalOpen(true),
148
- tooltip: t("merge-subjects"),
136
+ tooltip: t("admin::merge-subjects"),
149
137
  disabled: selectedSubjects.length < 2,
150
138
  },
151
139
  ]}
@@ -204,13 +192,11 @@ export default function SubjectsTable({
204
192
  onSuccess={(data) => {
205
193
  setIsModalOpen(false);
206
194
  setLoading(true);
195
+ message.success(t("Subjects successfully merged."))
207
196
  if (typeof mergeSubjectsFunction === 'function') {
208
- mergeSubjectsFunction(data).then(() => {
209
- setTimeout(() => {
210
- fetchData();
211
- }, 500);
212
- }).finally(() => {
197
+ mergeSubjectsFunction(data).finally(() => {
213
198
  setSelectedSubjects([]);
199
+ fetchData();
214
200
  });
215
201
  }
216
202
  }}
@@ -221,4 +207,4 @@ export default function SubjectsTable({
221
207
  />
222
208
  </>
223
209
  );
224
- }
210
+ }
@@ -56,6 +56,7 @@ export default function UserTable({
56
56
  defaultPageSize,
57
57
  fetchPendingOnMount: true, // Users table needs pending count
58
58
  });
59
+
59
60
  const selectOptions = useMemo(() => {
60
61
  return {
61
62
  account: accounts,
@@ -22,8 +22,6 @@ export default function AdminTable({
22
22
  breadcrumbs,
23
23
  children,
24
24
  }) {
25
-
26
- console.log(tabs, "tabs");
27
25
  return (
28
26
  <>
29
27
  <div className="semibold form-input-output daf-create-view">
@@ -31,7 +29,7 @@ export default function AdminTable({
31
29
  <div className="column start table-content">
32
30
  <div className="mt-6 ml-6 mr-6">
33
31
  <div className="flex flex-row">
34
- {tabs && tabs.length > 0 && <div className="mr-2">
32
+ <div className="mr-2">
35
33
  <Tabs
36
34
  t={t}
37
35
  tabs={tabs}
@@ -40,7 +38,7 @@ export default function AdminTable({
40
38
  filters.setActiveFilters((p) => ({ ...p, activeTab: val }))
41
39
  }
42
40
  />
43
- </div>}
41
+ </div>
44
42
  <div className="flex-1">
45
43
  <SearchFilters
46
44
  t={t}
@@ -32,7 +32,6 @@ export function useAdminTable({
32
32
  defaultPageSize: defaultPageSize || 20,
33
33
  getRedirectLink,
34
34
  });
35
- console.log(filter, "filter.activeFilters");
36
35
 
37
36
  const activeTab = useMemo(() => filter.activeFilters.activeTab, [filter.activeFilters]);
38
37
 
@@ -60,14 +59,12 @@ export function useAdminTable({
60
59
  fetchPendingAccounts();
61
60
  }, []);
62
61
 
63
-
64
62
  const fetchData = useCallback(async () => {
65
63
  try {
66
64
  setLoading(true);
67
65
  const params = filterParams({
68
66
  activeFilters: filter.activeFilters,
69
67
  });
70
- console.log(params, "params");
71
68
  const { data } = await getData({ params });
72
69
  setData(data.data || data);
73
70
  filter.setPagination((prev) => ({ ...prev, total: data?.meta?.total || data?.length || 0 }));
@@ -3,7 +3,7 @@ import { ExclamationCircleOutlined } from "@ant-design/icons";
3
3
  import { useCallback, useEffect } from "react";
4
4
  import { useForms } from "../../../../../../context/Forms/index.js";
5
5
  import Users from "../Users/index.jsx";
6
- import AdminService from "../../../../../../../services/AdminService.js";
6
+
7
7
  export default function Edit({
8
8
  t,
9
9
  goTo,
@@ -37,17 +37,14 @@ export default function Edit({
37
37
  }, [isChanged, addCheck, removeCheck]);
38
38
 
39
39
  const deleteUser = useCallback(
40
- async (id) => {
41
- try {
42
- await AdminService.removeUserFromAccount({ accountId: data.id, userId: id });
43
- message.success(t("User removed successfully"));
44
- fetchData();
45
- } catch (err) {
46
- handleError(err);
47
- }
40
+ (id) => {
41
+ // TODO: add call
42
+ console.log("DELETE", id);
43
+ fetchData();
48
44
  },
49
- [fetchData, data.id, t, handleError],
45
+ [fetchData],
50
46
  );
47
+
51
48
  const updateUser = useCallback((id, val) => {
52
49
  setIsChanged(true);
53
50
  setData((prev) => ({
@@ -74,9 +71,9 @@ export default function Edit({
74
71
 
75
72
  const onSuspend = () => {
76
73
  Modal.confirm({
77
- title: t("Are-you-sure-you-want-to-suspend-this-account?"),
74
+ title: t("sbg-admin::suspend-title"),
78
75
  icon: <ExclamationCircleOutlined />,
79
- content: <span style={{ color: "#888" }}>{t("Associated-users-will-lose-access-to-the-application-and-to-all-data-created-for-this-account.")}</span>,
76
+ content: t("sbg-admin::suspend-content"),
80
77
  okText: t("Yes"),
81
78
  cancelText: t("No"),
82
79
  onOk: async () => {
@@ -34,7 +34,6 @@ export default function Users({
34
34
  inviteCompanyAccount = () => {},
35
35
  companyId,
36
36
  handleError = () => {},
37
-
38
37
  }) {
39
38
  const [hasError, setHasError] = useState(false);
40
39
  const [showFilters, setShowFilters] = useState(false);
@@ -73,9 +72,9 @@ export default function Users({
73
72
  const onDeleteUserClick = useCallback(
74
73
  (id) => {
75
74
  Modal.confirm({
76
- title: t("Are-you-sure-you-want-to-remove-the-user-from-this-account?"),
75
+ title: t("sbg-admin::remove-user-title"),
77
76
  icon: <ExclamationCircleOutlined />,
78
- content: <span style={{ color: "#888" }}>{t("The-user-will-lose-access-to-the-application-and-to-all-data-created-for-this-account.")}</span>,
77
+ content: t("sbg-admin::remove-user-body"),
79
78
  okText: t("Yes"),
80
79
  cancelText: t("No"),
81
80
  onOk: () => {
@@ -88,15 +87,8 @@ export default function Users({
88
87
  );
89
88
 
90
89
  const data = useMemo(() => {
91
- const { users = [], pendingUsers = [] } = accountData;
92
- let filtered = [
93
- ...users,
94
- ...pendingUsers.map(u => ({
95
- ...u,
96
- status: 'pending',
97
- id: u.invitationToken || u.email // ensure pending users have an ID
98
- }))
99
- ];
90
+ const { users = [] } = accountData;
91
+ let filtered = [...users];
100
92
 
101
93
  if (!isEmptyOrSpaces(activeFilters.search)) {
102
94
  const search = activeFilters.search.toLowerCase();
@@ -194,10 +186,6 @@ export default function Users({
194
186
  inviteCompanyAccount={inviteCompanyAccount}
195
187
  companyId={companyId}
196
188
  handleError={handleError}
197
- existingEmails={[
198
- ...(accountData?.users || []).map(u => u.email?.toLowerCase()),
199
- ...(accountData?.pendingUsers || []).map(u => u.email?.toLowerCase()),
200
- ].filter(Boolean)}
201
189
  />
202
190
  </div>
203
191
  );
@@ -1,15 +1,23 @@
1
1
  import { Tag } from "antd";
2
2
 
3
3
  export const renderStatus = ({ val, t = (s) => s }) => {
4
- if (val === 'pending') {
5
- return <Tag color="orange">{t("Pending")}</Tag>;
6
- }
7
- if (val === 'unsaved') {
8
- return <Tag color="red">{t("Unsaved")}</Tag>;
9
- }
10
- if (val === 'active' || val === true) {
4
+ // switch (val) {
5
+ // case "active":
6
+ // return <Tag color="green">{t("Active")}</Tag>;
7
+ // case "unsaved":
8
+ // return <Tag color="red">{t("Unsaved")}</Tag>;
9
+ // case "inactive":
10
+ // case "suspended":
11
+ // return <Tag color="red">{t("Suspended")}</Tag>;
12
+ // case "pending":
13
+ // return <Tag color="orange">{t("Pending")}</Tag>;
14
+ // default:
15
+ // return <Tag color="default">{t("Unknown")}</Tag>;
16
+ // }
17
+
18
+ if (val) {
11
19
  return <Tag color="green">{t("Active")}</Tag>;
20
+ } else {
21
+ return <Tag color="red">{t("Suspended")}</Tag>;
12
22
  }
13
-
14
- return <Tag color="red">{t("Suspended")}</Tag>;
15
23
  };
@@ -172,15 +172,14 @@ function AdminView({
172
172
  try {
173
173
  const { pendingCompanyId, status, ...userDataToInvite } = user;
174
174
  console.log('Sending invitation for:', user.email, userDataToInvite);
175
- // Use the standalone invite function, don't mix it with updateAccount
176
- // await inviteCompanyAccount({
177
- // companyId: editData.id,
178
- // data: {
179
- // ...userDataToInvite,
180
- // pendingCompanyId,
181
- // },
182
- // });
183
- // console.log('Invitation sent successfully for:', user.email);
175
+ await inviteCompanyAccount({
176
+ companyId: editData.id,
177
+ data: {
178
+ ...userDataToInvite,
179
+ pendingCompanyId,
180
+ },
181
+ });
182
+ console.log('Invitation sent successfully for:', user.email);
184
183
  } catch (inviteError) {
185
184
  console.error('Failed to invite user:', user.email, inviteError);
186
185
  handleError(inviteError);