datastake-daf 0.6.365 → 0.6.367

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.
@@ -1,323 +1,281 @@
1
- import { useCallback, useEffect, useMemo, useState } from "react";
2
- import { getDefaultActiveFilters } from "../utils/filters";
3
- import { StorageManager } from "../../helpers/StorageManager";
4
-
5
- const NEW_PAGINATION_TITLES = ["nashiriki"];
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { getDefaultActiveFilters } from '../utils/filters';
3
+ import { StorageManager } from '../../helpers/StorageManager';
6
4
 
7
5
  export const useFilters = ({
8
- view,
9
- module,
10
- filtersConfig,
11
- goTo,
12
- location,
13
- selectFiltersConfig,
14
- defaultPageSize = 20,
15
- defaultActiveFilters,
16
- defaultUrlParams = {},
17
- doPagination = true,
18
- getRedirectLink,
6
+ view,
7
+ module,
8
+ filtersConfig,
9
+ goTo,
10
+ location,
11
+ selectFiltersConfig,
12
+ defaultPageSize = 20,
13
+ defaultActiveFilters,
14
+ defaultUrlParams = {},
15
+ doPagination = true,
16
+ getRedirectLink,
19
17
  }) => {
20
- const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
21
- const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
22
-
23
- const params = useMemo(() => new URLSearchParams(location.search), [location.search]);
24
- const [activeFilters, setActiveFilters] = useState(
25
- defaultActiveFilters ||
26
- getDefaultActiveFilters(
27
- params,
28
- selectFiltersConfig,
29
- defaultPageSize,
30
- defaultUrlParams,
31
- doPagination,
32
- ),
33
- );
34
- const [pagination, setPagination] = useState(
35
- defaultActiveFilters
36
- ? {
37
- current: defaultActiveFilters.page || 1,
38
- pageSize: defaultActiveFilters.pageSize || defaultPageSize,
39
- showSizeChanger: true,
40
- }
41
- : {
42
- current: !isNaN(Number(params.get(PAGE)))
43
- ? Number(params.get(PAGE)) || 1
44
- : 1,
45
- pageSize: !isNaN(Number(params.get(PAGE_SIZE)))
46
- ? Number(params.get(PAGE_SIZE)) || defaultPageSize
47
- : defaultPageSize,
48
- showSizeChanger: true,
49
- },
50
- );
51
-
52
- useEffect(() => {
53
- if (defaultActiveFilters) {
54
- setPagination((prev) => ({
55
- ...prev,
56
- current: defaultActiveFilters.page || 1,
57
- pageSize: defaultActiveFilters.pageSize || defaultPageSize,
58
- showSizeChanger: true,
59
- }));
60
- return;
61
- }
62
- setPagination((prev) => ({
63
- ...prev,
64
- current: !isNaN(Number(params.get(PAGE))) ? Number(params.get(PAGE)) || 1 : 1,
65
- pageSize: !isNaN(Number(params.get(PAGE_SIZE)))
66
- ? Number(params.get(PAGE_SIZE)) || defaultPageSize
67
- : defaultPageSize,
68
- showSizeChanger: true,
69
- }));
70
- }, []);
71
-
72
- const updateQuery = useCallback(
73
- (filters, page) => {
74
- const qs = Object.keys(filters)
75
- .filter((key) => {
76
- if (!doPagination) {
77
- return !!filters[key] && key !== PAGE && key !== PAGE_SIZE;
78
- }
79
-
80
- return !!filters[key];
81
- })
82
- .map((key) => {
83
- if (filters[key] && typeof filters[key] === "object") {
84
- return `${key}=${JSON.stringify(filters[key])}`;
85
- }
86
- return `${key}=${filters[key]}`;
87
- })
88
- .join("&");
89
-
90
- if (view) {
91
- if (typeof getRedirectLink === "function") {
92
- goTo(
93
- getRedirectLink(
94
- view === "mine-monitoring"
95
- ? qs !== ""
96
- ? `${location.pathname}?${qs}`
97
- : doPagination
98
- ? `${location.pathname}?${PAGE}=${page}`
99
- : location.pathname
100
- : qs !== ""
101
- ? `${`/app/${view}`}?${qs}`
102
- : doPagination
103
- ? `${`/app/${view}`}?${PAGE}=${page}`
104
- : `${`/app/${view}`}`,
105
- ),
106
- );
107
- return;
108
- }
109
-
110
- if (view === "mine-monitoring") {
111
- goTo(
112
- qs !== ""
113
- ? `${location.pathname}?${qs}`
114
- : doPagination
115
- ? `${location.pathname}?${PAGE}=${page}`
116
- : location.pathname,
117
- );
118
- } else {
119
- goTo(
120
- qs !== ""
121
- ? `${`/app/${module}/${view}`}?${qs}`
122
- : doPagination
123
- ? `${`/app/${module}/${view}`}?${PAGE}=${page}`
124
- : `${`/app/${module}/${view}`}`,
125
- );
126
- }
127
- }
128
- },
129
- [module, view, location.pathname],
130
- ); // Updated dependency array
131
-
132
- const defaultFilters = useMemo(() => {
133
- const def = {};
134
- Object.keys(selectFiltersConfig).forEach((key) => {
135
- if (activeFilters[key]) {
136
- def[key] = activeFilters[key];
137
- }
138
- });
139
- return def;
140
- }, [activeFilters, selectFiltersConfig]);
141
-
142
- const newFiltersConfig = useMemo(() => {
143
- const o = filtersConfig;
144
- Object.keys(filtersConfig).forEach((key) => {
145
- if (params.has(key)) {
146
- o[key] = params.get(key);
147
- }
148
- });
149
- return o;
150
- }, [params, filtersConfig]);
151
-
152
- useEffect(() => {
153
- const filteredFilters = Object.keys(activeFilters).reduce((all, key) => {
154
- if (activeFilters[key]) {
155
- all[key] = activeFilters[key];
156
- }
157
- return all;
158
- }, {});
159
-
160
- const filters = StorageManager.saveFilters(module, view, { ...filteredFilters });
161
-
162
- if (!filters.pageSize) {
163
- filters.page = 1;
164
- filters.pageSize = pagination.pageSize;
165
- }
166
-
167
- updateQuery(filters, 1);
168
- }, [activeFilters]);
169
-
170
- const onFiltersChange = useCallback(
171
- (filters) => {
172
- const filteredFilters = Object.keys(filters).reduce((all, key) => {
173
- const conf = selectFiltersConfig[key];
174
- if (conf) {
175
- const { show } = conf;
176
- if (typeof show === "function") {
177
- if (show(filters)) {
178
- return all;
179
- }
180
- }
181
- }
182
-
183
- if (Array.isArray(filters[key]) && !filters[key].length) {
184
- all[key] = undefined;
185
- return all;
186
- }
187
-
188
- all[key] = filters[key];
189
- return all;
190
- }, {});
191
-
192
- setActiveFilters((prev) => {
193
- const o = { ...prev };
194
- Object.keys(o).forEach((k) => {
195
- if (Object.keys(selectFiltersConfig).includes(k) || k === "authorId") {
196
- delete o[k];
197
- }
198
- });
199
- Object.entries(filteredFilters).forEach(([k, v]) => {
200
- o[k] = v;
201
- });
202
-
203
- if (doPagination) {
204
- o.page = 1;
205
- }
206
-
207
- return o;
208
- });
209
- setPagination((prev) => ({ ...prev, current: 1 }));
210
- },
211
- [selectFiltersConfig],
212
- );
213
-
214
- const onTableChange = (page, f, sorter) => {
215
- const { sortBy, sortDir } = activeFilters;
216
- const { columnKey, order } = sorter || {};
217
-
218
- let fs = {
219
- ...activeFilters,
220
- page: page.pageSize !== activeFilters.pageSize ? 1 : page.current,
221
- pageSize: page.pageSize || defaultPageSize,
222
- };
223
-
224
- if (sorter && (columnKey !== sortBy || order !== sortDir)) {
225
- fs.page = 1;
226
- }
227
-
228
- if (order) {
229
- fs = { ...fs, sortDir: order, sortBy: columnKey };
230
- } else if (sortBy || sortDir) {
231
- fs = Object.keys(fs).reduce((all, key) => {
232
- if (key !== "sortDir" && key !== "sortBy") {
233
- if (key === PAGE || key === PAGE_SIZE) {
234
- all[key] = fs[key];
235
- } else {
236
- all[key] = activeFilters[key];
237
- }
238
- }
239
- return all;
240
- }, {});
241
- }
242
-
243
- setActiveFilters(fs);
244
-
245
- if (isNaN(page.current)) {
246
- page.current = 1;
247
- }
248
-
249
- const filters = StorageManager.saveFilters(module, view, { page: page.current }, true);
250
-
251
- updateQuery(filters, page.current);
252
- setPagination((prev) => ({
253
- ...prev,
254
- current: fs.page,
255
- pageSize: fs.pageSize || defaultPageSize,
256
- }));
257
- };
258
-
259
- const onSearch = useCallback((activeFilter, value) => {
260
- setActiveFilters((prev) => ({
261
- ...prev,
262
- page: 1,
263
- searchParams: activeFilter,
264
- search: value,
265
- }));
266
- setPagination((prev) => ({ ...prev, current: 1 }));
267
- }, []);
268
-
269
- const totalPages = useMemo(() => {
270
- return Math.ceil(pagination.total / pagination.pageSize);
271
- }, [pagination]);
272
-
273
- const canGoPrev = useMemo(() => pagination.current !== 1, [pagination]);
274
- const canGoNext = useMemo(
275
- () => pagination.current !== totalPages && totalPages,
276
- [pagination, totalPages],
277
- );
278
-
279
- const goPrev = () => {
280
- if (!canGoPrev) {
281
- return;
282
- }
283
-
284
- const { sortDir, sortBy } = activeFilters;
285
-
286
- onTableChange(
287
- { ...pagination, current: pagination.current - 1 },
288
- undefined,
289
- sortBy && sortDir ? { sortBy, sortDir } : undefined,
290
- );
291
- };
292
-
293
- const goNext = () => {
294
- if (!canGoNext) {
295
- return;
296
- }
297
-
298
- const { sortDir, sortBy } = activeFilters;
299
-
300
- onTableChange(
301
- { ...pagination, current: pagination.current + 1 },
302
- undefined,
303
- sortBy && sortDir ? { columnKey: sortBy, order: sortDir } : undefined,
304
- );
305
- };
306
-
307
- return {
308
- newFiltersConfig,
309
- totalPages,
310
- canGoNext,
311
- canGoPrev,
312
- goPrev,
313
- goNext,
314
- pagination,
315
- activeFilters,
316
- onSearch,
317
- defaultFilters,
318
- onTableChange,
319
- setPagination,
320
- onFiltersChange,
321
- setActiveFilters,
322
- };
18
+ const params = useMemo(() => new URLSearchParams(location.search), [location.search]);
19
+ const [activeFilters, setActiveFilters] = useState(
20
+ defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination)
21
+ );
22
+ const [pagination, setPagination] = useState(
23
+ defaultActiveFilters ? {
24
+ current: defaultActiveFilters.page || 1,
25
+ pageSize: defaultActiveFilters.pageSize || defaultPageSize,
26
+ showSizeChanger: true,
27
+ } : {
28
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
29
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
30
+ showSizeChanger: true,
31
+ });
32
+
33
+ useEffect(() => {
34
+ if (defaultActiveFilters) {
35
+ setPagination((prev) => ({
36
+ ...prev,
37
+ current: defaultActiveFilters.page || 1,
38
+ pageSize: defaultActiveFilters.pageSize || defaultPageSize,
39
+ showSizeChanger: true,
40
+ }));
41
+ return;
42
+ }
43
+ setPagination((prev) => ({
44
+ ...prev,
45
+ current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
46
+ pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
47
+ showSizeChanger: true,
48
+ }));
49
+ }, []);
50
+
51
+ const updateQuery = useCallback((filters, page) => {
52
+ const qs = Object.keys(filters)
53
+ .filter((key) => {
54
+ if (!doPagination) {
55
+ return !!filters[key] && key !== 'page' && key !== 'pageSize';
56
+ }
57
+
58
+ return !!filters[key];
59
+ })
60
+ .map(key => {
61
+ if (filters[key] && typeof filters[key] === 'object') {
62
+ return `${key}=${JSON.stringify(filters[key])}`;
63
+ }
64
+ return `${key}=${filters[key]}`;
65
+ })
66
+ .join('&');
67
+
68
+ if (view) {
69
+ if (typeof getRedirectLink === 'function') {
70
+ goTo(getRedirectLink(
71
+ view === 'mine-monitoring'
72
+ ? (qs !== '' ? `${location.pathname}?${qs}`
73
+ : doPagination ? `${location.pathname}?page=${page}`
74
+ : location.pathname)
75
+ : (qs !== '' ? `${`/app/${view}`}?${qs}`
76
+ : doPagination ? `${`/app/${view}`}?page=${page}`
77
+ : `${`/app/${view}`}`)
78
+ ));
79
+ return;
80
+ }
81
+
82
+ if (view === 'mine-monitoring') {
83
+ goTo(
84
+ qs !== '' ? `${location.pathname}?${qs}`
85
+ : doPagination ? `${location.pathname}?page=${page}`
86
+ : location.pathname);
87
+ } else {
88
+ goTo(
89
+ qs !== '' ? `${`/app/${module}/${view}`}?${qs}`
90
+ : doPagination ? `${`/app/${module}/${view}`}?page=${page}`
91
+ : `${`/app/${module}/${view}`}`);
92
+ }
93
+ }
94
+ }, [module, view, location.pathname]); // Updated dependency array
95
+
96
+ const defaultFilters = useMemo(() => {
97
+ const def = {};
98
+ Object.keys(selectFiltersConfig).forEach((key) => {
99
+ if (activeFilters[key]) {
100
+ def[key] = activeFilters[key];
101
+ }
102
+ });
103
+ return def;
104
+ }, [activeFilters, selectFiltersConfig]);
105
+
106
+ const newFiltersConfig = useMemo(() => {
107
+ const o = filtersConfig;
108
+ Object.keys(filtersConfig).forEach((key) => {
109
+ if (params.has(key)) {
110
+ o[key] = params.get(key);
111
+ }
112
+ });
113
+ return o;
114
+ }, [params, filtersConfig]);
115
+
116
+ useEffect(() => {
117
+ const filteredFilters = Object.keys(activeFilters).reduce((all, key) => {
118
+ if (activeFilters[key]) {
119
+ all[key] = activeFilters[key];
120
+ }
121
+ return all;
122
+ }, {});
123
+
124
+ const filters = StorageManager.saveFilters(module, view, { ...filteredFilters });
125
+
126
+ if (!filters.pageSize) {
127
+ filters.page = 1;
128
+ filters.pageSize = pagination.pageSize;
129
+ }
130
+
131
+ updateQuery(filters, 1);
132
+ }, [activeFilters]);
133
+
134
+ const onFiltersChange = useCallback((filters) => {
135
+ const filteredFilters = Object.keys(filters).reduce((all, key) => {
136
+ const conf = selectFiltersConfig[key];
137
+ if (conf) {
138
+ const { show } = conf;
139
+ if (typeof show === 'function') {
140
+ if (show(filters)) {
141
+ return all;
142
+ }
143
+ }
144
+ }
145
+
146
+ if (Array.isArray(filters[key]) && !filters[key].length) {
147
+ all[key] = undefined;
148
+ return all;
149
+ }
150
+
151
+ all[key] = filters[key];
152
+ return all;
153
+ }, {});
154
+
155
+ setActiveFilters((prev) => {
156
+ const o = { ...prev };
157
+ Object.keys(o).forEach((k) => {
158
+ if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
159
+ delete o[k];
160
+ }
161
+ });
162
+ Object.entries(filteredFilters).forEach(([k, v]) => {
163
+ o[k] = v;
164
+ });
165
+
166
+ if (doPagination) {
167
+ o.page = 1;
168
+ }
169
+
170
+ return o;
171
+ });
172
+ setPagination((prev) => ({ ...prev, current: 1 }));
173
+ }, [selectFiltersConfig]);
174
+
175
+ const onTableChange = (page, f, sorter) => {
176
+ const { sortBy, sortDir } = activeFilters;
177
+ const { columnKey, order } = sorter || {};
178
+
179
+ let fs = {
180
+ ...activeFilters,
181
+ page: page.pageSize !== activeFilters.pageSize ? 1 : page.current,
182
+ pageSize: page.pageSize || defaultPageSize,
183
+ };
184
+
185
+ if (sorter && (columnKey !== sortBy || order !== sortDir)) {
186
+ fs.page = 1;
187
+ }
188
+
189
+ if (order) {
190
+ fs = { ...fs, sortDir: order, sortBy: columnKey };
191
+ } else if (sortBy || sortDir) {
192
+ fs = Object.keys(fs).reduce((all, key) => {
193
+ if (key !== 'sortDir' && key !== 'sortBy') {
194
+ if (key === 'page' || key === 'pageSize') {
195
+ all[key] = fs[key];
196
+ } else {
197
+ all[key] = activeFilters[key];
198
+ }
199
+ }
200
+ return all;
201
+ }, {});
202
+ }
203
+
204
+ setActiveFilters(fs);
205
+
206
+ if (isNaN(page.current)) {
207
+ page.current = 1;
208
+ }
209
+
210
+ const filters = StorageManager.saveFilters(module, view, { page: page.current }, true);
211
+
212
+ updateQuery(filters, page.current);
213
+ setPagination((prev) => ({
214
+ ...prev,
215
+ current: fs.page,
216
+ pageSize: fs.pageSize || defaultPageSize
217
+ }));
218
+ };
219
+
220
+ const onSearch = useCallback((activeFilter, value) => {
221
+ setActiveFilters((prev) => ({
222
+ ...prev,
223
+ page: 1,
224
+ searchParams: activeFilter,
225
+ search: value,
226
+ }));
227
+ setPagination((prev) => ({ ...prev, current: 1 }));
228
+ }, []);
229
+
230
+ const totalPages = useMemo(() => {
231
+ return Math.ceil(pagination.total / pagination.pageSize);
232
+ }, [pagination]);
233
+
234
+ const canGoPrev = useMemo(() => pagination.current !== 1, [pagination]);
235
+ const canGoNext = useMemo(() => pagination.current !== totalPages && totalPages, [pagination, totalPages]);
236
+
237
+ const goPrev = () => {
238
+ if (!canGoPrev) {
239
+ return;
240
+ }
241
+
242
+ const { sortDir, sortBy } = activeFilters;
243
+
244
+ onTableChange(
245
+ { ...pagination, current: pagination.current - 1 },
246
+ undefined,
247
+ sortBy && sortDir ? { sortBy, sortDir } : undefined
248
+ );
249
+ };
250
+
251
+ const goNext = () => {
252
+ if (!canGoNext) {
253
+ return;
254
+ }
255
+
256
+ const { sortDir, sortBy } = activeFilters;
257
+
258
+ onTableChange(
259
+ { ...pagination, current: pagination.current + 1 },
260
+ undefined,
261
+ sortBy && sortDir ? { columnKey: sortBy, order: sortDir } : undefined
262
+ );
263
+ };
264
+
265
+ return {
266
+ newFiltersConfig,
267
+ totalPages,
268
+ canGoNext,
269
+ canGoPrev,
270
+ goPrev,
271
+ goNext,
272
+ pagination,
273
+ activeFilters,
274
+ onSearch,
275
+ defaultFilters,
276
+ onTableChange,
277
+ setPagination,
278
+ onFiltersChange,
279
+ setActiveFilters,
280
+ };
323
281
  };
package/.env DELETED
@@ -1,8 +0,0 @@
1
- REACT_APP_API_KEY=
2
- REACT_APP_AUTH_DOMAIN=
3
- REACT_APP_PROJECT_ID=
4
- REACT_APP_STORAGE_BUCKED=
5
- REACT_APP_SENDER_ID=
6
- REACT_APP_APP_ID=
7
- REACT_APP_MEASUREMENT_ID=
8
- REACT_APP_VAPID_KEY=
@@ -1,13 +0,0 @@
1
- {
2
- "cSpell.words": ["cukura"],
3
- "files.autoSave": "afterDelay",
4
- "editor.wordWrap": "on",
5
- "editor.autoClosingBrackets": "always",
6
- "editor.autoClosingComments": "always",
7
- "editor.autoClosingQuotes": "always",
8
- "editor.defaultFormatter": "esbenp.prettier-vscode",
9
- "editor.formatOnPaste": true,
10
- "editor.formatOnSave": true,
11
- "notebook.defaultFormatter": "esbenp.prettier-vscode",
12
- "javascript.format.semicolons": "insert"
13
- }