datastake-daf 0.6.366 → 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.
- package/dist/components/index.js +50 -42
- package/dist/hooks/index.js +16 -19
- package/package.json +1 -1
- package/src/@daf/core/components/Charts/ColumnChart/ColumnChart.stories.jsx +28 -0
- package/src/@daf/core/components/Graphs/StakeholderMappings/index.jsx +3 -0
- package/src/@daf/core/components/Graphs/components/BaseGraph.jsx +40 -37
- package/src/@daf/core/components/Graphs/components/Nodes/NameNode.jsx +42 -32
- package/src/@daf/hooks/useFilters.js +277 -319
- package/.env +0 -8
- package/.vscode/settings.json +0 -13
package/dist/components/index.js
CHANGED
|
@@ -47000,7 +47000,6 @@ const filterParams = value => {
|
|
|
47000
47000
|
};
|
|
47001
47001
|
};
|
|
47002
47002
|
|
|
47003
|
-
const NEW_PAGINATION_TITLES = ["nashiriki"];
|
|
47004
47003
|
const useFilters = ({
|
|
47005
47004
|
view,
|
|
47006
47005
|
module,
|
|
@@ -47014,8 +47013,6 @@ const useFilters = ({
|
|
|
47014
47013
|
doPagination = true,
|
|
47015
47014
|
getRedirectLink
|
|
47016
47015
|
}) => {
|
|
47017
|
-
const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
|
|
47018
|
-
const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
|
|
47019
47016
|
const params = React.useMemo(() => new URLSearchParams(location.search), [location.search]);
|
|
47020
47017
|
const [activeFilters, setActiveFilters] = React.useState(defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination));
|
|
47021
47018
|
const [pagination, setPagination] = React.useState(defaultActiveFilters ? {
|
|
@@ -47023,8 +47020,8 @@ const useFilters = ({
|
|
|
47023
47020
|
pageSize: defaultActiveFilters.pageSize || defaultPageSize,
|
|
47024
47021
|
showSizeChanger: true
|
|
47025
47022
|
} : {
|
|
47026
|
-
current: !isNaN(Number(params.get(
|
|
47027
|
-
pageSize: !isNaN(Number(params.get(
|
|
47023
|
+
current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
|
|
47024
|
+
pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
|
|
47028
47025
|
showSizeChanger: true
|
|
47029
47026
|
});
|
|
47030
47027
|
React.useEffect(() => {
|
|
@@ -47039,32 +47036,32 @@ const useFilters = ({
|
|
|
47039
47036
|
}
|
|
47040
47037
|
setPagination(prev => ({
|
|
47041
47038
|
...prev,
|
|
47042
|
-
current: !isNaN(Number(params.get(
|
|
47043
|
-
pageSize: !isNaN(Number(params.get(
|
|
47039
|
+
current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
|
|
47040
|
+
pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
|
|
47044
47041
|
showSizeChanger: true
|
|
47045
47042
|
}));
|
|
47046
47043
|
}, []);
|
|
47047
47044
|
const updateQuery = React.useCallback((filters, page) => {
|
|
47048
47045
|
const qs = Object.keys(filters).filter(key => {
|
|
47049
47046
|
if (!doPagination) {
|
|
47050
|
-
return !!filters[key] && key !==
|
|
47047
|
+
return !!filters[key] && key !== 'page' && key !== 'pageSize';
|
|
47051
47048
|
}
|
|
47052
47049
|
return !!filters[key];
|
|
47053
47050
|
}).map(key => {
|
|
47054
|
-
if (filters[key] && typeof filters[key] ===
|
|
47051
|
+
if (filters[key] && typeof filters[key] === 'object') {
|
|
47055
47052
|
return `${key}=${JSON.stringify(filters[key])}`;
|
|
47056
47053
|
}
|
|
47057
47054
|
return `${key}=${filters[key]}`;
|
|
47058
|
-
}).join(
|
|
47055
|
+
}).join('&');
|
|
47059
47056
|
if (view) {
|
|
47060
|
-
if (typeof getRedirectLink ===
|
|
47061
|
-
goTo(getRedirectLink(view ===
|
|
47057
|
+
if (typeof getRedirectLink === 'function') {
|
|
47058
|
+
goTo(getRedirectLink(view === 'mine-monitoring' ? qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname : qs !== '' ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?page=${page}` : `${`/app/${view}`}`));
|
|
47062
47059
|
return;
|
|
47063
47060
|
}
|
|
47064
|
-
if (view ===
|
|
47065
|
-
goTo(qs !==
|
|
47061
|
+
if (view === 'mine-monitoring') {
|
|
47062
|
+
goTo(qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname);
|
|
47066
47063
|
} else {
|
|
47067
|
-
goTo(qs !==
|
|
47064
|
+
goTo(qs !== '' ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?page=${page}` : `${`/app/${module}/${view}`}`);
|
|
47068
47065
|
}
|
|
47069
47066
|
}
|
|
47070
47067
|
}, [module, view, location.pathname]); // Updated dependency array
|
|
@@ -47110,7 +47107,7 @@ const useFilters = ({
|
|
|
47110
47107
|
const {
|
|
47111
47108
|
show
|
|
47112
47109
|
} = conf;
|
|
47113
|
-
if (typeof show ===
|
|
47110
|
+
if (typeof show === 'function') {
|
|
47114
47111
|
if (show(filters)) {
|
|
47115
47112
|
return all;
|
|
47116
47113
|
}
|
|
@@ -47128,7 +47125,7 @@ const useFilters = ({
|
|
|
47128
47125
|
...prev
|
|
47129
47126
|
};
|
|
47130
47127
|
Object.keys(o).forEach(k => {
|
|
47131
|
-
if (Object.keys(selectFiltersConfig).includes(k) || k ===
|
|
47128
|
+
if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
|
|
47132
47129
|
delete o[k];
|
|
47133
47130
|
}
|
|
47134
47131
|
});
|
|
@@ -47170,8 +47167,8 @@ const useFilters = ({
|
|
|
47170
47167
|
};
|
|
47171
47168
|
} else if (sortBy || sortDir) {
|
|
47172
47169
|
fs = Object.keys(fs).reduce((all, key) => {
|
|
47173
|
-
if (key !==
|
|
47174
|
-
if (key ===
|
|
47170
|
+
if (key !== 'sortDir' && key !== 'sortBy') {
|
|
47171
|
+
if (key === 'page' || key === 'pageSize') {
|
|
47175
47172
|
all[key] = fs[key];
|
|
47176
47173
|
} else {
|
|
47177
47174
|
all[key] = activeFilters[key];
|
|
@@ -51381,6 +51378,7 @@ function NameNode({
|
|
|
51381
51378
|
token
|
|
51382
51379
|
} = useToken$7();
|
|
51383
51380
|
const translateFN = typeof data?.t === "function" ? data.t : key => key;
|
|
51381
|
+
const isPdf = data?.isPdf;
|
|
51384
51382
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
51385
51383
|
children: [/*#__PURE__*/jsxRuntime.jsx(react.Handle, {
|
|
51386
51384
|
type: "source",
|
|
@@ -51399,6 +51397,7 @@ function NameNode({
|
|
|
51399
51397
|
opacity: 0
|
|
51400
51398
|
}
|
|
51401
51399
|
}), /*#__PURE__*/jsxRuntime.jsxs(Style$d, {
|
|
51400
|
+
$isPdf: isPdf,
|
|
51402
51401
|
style: {
|
|
51403
51402
|
opacity: data.isEmpty ? 0.5 : 1
|
|
51404
51403
|
},
|
|
@@ -51449,7 +51448,7 @@ function NameNode({
|
|
|
51449
51448
|
}
|
|
51450
51449
|
})
|
|
51451
51450
|
}) : null]
|
|
51452
|
-
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
51451
|
+
}), !isPdf && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
51453
51452
|
style: {
|
|
51454
51453
|
marginLeft: "auto"
|
|
51455
51454
|
},
|
|
@@ -51486,27 +51485,32 @@ function NameNode({
|
|
|
51486
51485
|
});
|
|
51487
51486
|
}
|
|
51488
51487
|
const Style$d = dt.div`
|
|
51489
|
-
|
|
51490
|
-
|
|
51491
|
-
|
|
51492
|
-
|
|
51493
|
-
|
|
51494
|
-
|
|
51495
|
-
|
|
51496
|
-
|
|
51488
|
+
width: ${NAME_CARD_WIDTH}px;
|
|
51489
|
+
display: flex;
|
|
51490
|
+
background: white;
|
|
51491
|
+
border-radius: 8px;
|
|
51492
|
+
/* Box-shadows for screen */
|
|
51493
|
+
box-shadow: 0px 3.76px 10.03px 0px #00000014;
|
|
51494
|
+
box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
|
|
51495
|
+
overflow: hidden;
|
|
51496
|
+
box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
|
|
51497
|
+
/* Ensure borders/colors survive PDF rendering */
|
|
51498
|
+
border: ${props => props.$isPdf ? '1px solid var(--base-gray-30)' : 'none'};
|
|
51499
|
+
-webkit-print-color-adjust: exact;
|
|
51500
|
+
print-color-adjust: exact;
|
|
51497
51501
|
|
|
51498
|
-
|
|
51499
|
-
|
|
51500
|
-
|
|
51501
|
-
|
|
51502
|
-
|
|
51503
|
-
|
|
51502
|
+
.left {
|
|
51503
|
+
width: 32px;
|
|
51504
|
+
background: red;
|
|
51505
|
+
border-top-left-radius: 12px;
|
|
51506
|
+
border-bottom-left-radius: 12px;
|
|
51507
|
+
}
|
|
51504
51508
|
|
|
51505
|
-
|
|
51506
|
-
|
|
51507
|
-
|
|
51508
|
-
|
|
51509
|
-
|
|
51509
|
+
.right {
|
|
51510
|
+
padding: 16px 12px;
|
|
51511
|
+
width: 100%;
|
|
51512
|
+
border-bottom: 1px solid var(--base-gray-30);
|
|
51513
|
+
}
|
|
51510
51514
|
`;
|
|
51511
51515
|
|
|
51512
51516
|
const Style$c = dt.div`
|
|
@@ -52081,6 +52085,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
|
|
|
52081
52085
|
t,
|
|
52082
52086
|
withDuration = true,
|
|
52083
52087
|
onFilterChange,
|
|
52088
|
+
isPdf,
|
|
52084
52089
|
...props
|
|
52085
52090
|
}, ref) {
|
|
52086
52091
|
const {
|
|
@@ -52137,7 +52142,7 @@ const BaseGraph = /*#__PURE__*/React.forwardRef(function BaseGraph({
|
|
|
52137
52142
|
duration: withDuration ? 300 : undefined
|
|
52138
52143
|
},
|
|
52139
52144
|
...props,
|
|
52140
|
-
children: /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
|
|
52145
|
+
children: !isPdf && /*#__PURE__*/jsxRuntime.jsxs(react.Controls, {
|
|
52141
52146
|
position: "bottom-right",
|
|
52142
52147
|
showFitView: false,
|
|
52143
52148
|
showInteractive: false,
|
|
@@ -52654,7 +52659,8 @@ function positionDataNodes(_ref2) {
|
|
|
52654
52659
|
total,
|
|
52655
52660
|
mainNode,
|
|
52656
52661
|
type,
|
|
52657
|
-
hasContent
|
|
52662
|
+
hasContent,
|
|
52663
|
+
isPdf
|
|
52658
52664
|
} = _ref2;
|
|
52659
52665
|
const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
|
|
52660
52666
|
const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
|
|
@@ -52871,6 +52877,7 @@ function StakeholderMappings(_ref3) {
|
|
|
52871
52877
|
isLeftSide: node.data.order % 2 !== 0,
|
|
52872
52878
|
isAboveMainNode: node.data.order <= 2,
|
|
52873
52879
|
iconNode: node,
|
|
52880
|
+
isPdf: true,
|
|
52874
52881
|
index: 0,
|
|
52875
52882
|
total: 1,
|
|
52876
52883
|
mainNode,
|
|
@@ -52969,7 +52976,8 @@ function StakeholderMappings(_ref3) {
|
|
|
52969
52976
|
duration: 300
|
|
52970
52977
|
});
|
|
52971
52978
|
},
|
|
52972
|
-
ref: reactFlowWrapper
|
|
52979
|
+
ref: reactFlowWrapper,
|
|
52980
|
+
isPdf: isPdf
|
|
52973
52981
|
});
|
|
52974
52982
|
}
|
|
52975
52983
|
var index$1 = withProvider(StakeholderMappings);
|
package/dist/hooks/index.js
CHANGED
|
@@ -200,7 +200,6 @@ class StorageManager {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
const NEW_PAGINATION_TITLES = ["nashiriki"];
|
|
204
203
|
const useFilters = ({
|
|
205
204
|
view,
|
|
206
205
|
module,
|
|
@@ -214,8 +213,6 @@ const useFilters = ({
|
|
|
214
213
|
doPagination = true,
|
|
215
214
|
getRedirectLink
|
|
216
215
|
}) => {
|
|
217
|
-
const PAGE = NEW_PAGINATION_TITLES.includes(module) ? "skip" : "page";
|
|
218
|
-
const PAGE_SIZE = NEW_PAGINATION_TITLES.includes(module) ? "take" : "pageSize";
|
|
219
216
|
const params = React.useMemo(() => new URLSearchParams(location.search), [location.search]);
|
|
220
217
|
const [activeFilters, setActiveFilters] = React.useState(defaultActiveFilters || getDefaultActiveFilters(params, selectFiltersConfig, defaultPageSize, defaultUrlParams, doPagination));
|
|
221
218
|
const [pagination, setPagination] = React.useState(defaultActiveFilters ? {
|
|
@@ -223,8 +220,8 @@ const useFilters = ({
|
|
|
223
220
|
pageSize: defaultActiveFilters.pageSize || defaultPageSize,
|
|
224
221
|
showSizeChanger: true
|
|
225
222
|
} : {
|
|
226
|
-
current: !isNaN(Number(params.get(
|
|
227
|
-
pageSize: !isNaN(Number(params.get(
|
|
223
|
+
current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
|
|
224
|
+
pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
|
|
228
225
|
showSizeChanger: true
|
|
229
226
|
});
|
|
230
227
|
React.useEffect(() => {
|
|
@@ -239,32 +236,32 @@ const useFilters = ({
|
|
|
239
236
|
}
|
|
240
237
|
setPagination(prev => ({
|
|
241
238
|
...prev,
|
|
242
|
-
current: !isNaN(Number(params.get(
|
|
243
|
-
pageSize: !isNaN(Number(params.get(
|
|
239
|
+
current: !isNaN(Number(params.get('page'))) ? Number(params.get('page')) || 1 : 1,
|
|
240
|
+
pageSize: !isNaN(Number(params.get('pageSize'))) ? Number(params.get('pageSize')) || defaultPageSize : defaultPageSize,
|
|
244
241
|
showSizeChanger: true
|
|
245
242
|
}));
|
|
246
243
|
}, []);
|
|
247
244
|
const updateQuery = React.useCallback((filters, page) => {
|
|
248
245
|
const qs = Object.keys(filters).filter(key => {
|
|
249
246
|
if (!doPagination) {
|
|
250
|
-
return !!filters[key] && key !==
|
|
247
|
+
return !!filters[key] && key !== 'page' && key !== 'pageSize';
|
|
251
248
|
}
|
|
252
249
|
return !!filters[key];
|
|
253
250
|
}).map(key => {
|
|
254
|
-
if (filters[key] && typeof filters[key] ===
|
|
251
|
+
if (filters[key] && typeof filters[key] === 'object') {
|
|
255
252
|
return `${key}=${JSON.stringify(filters[key])}`;
|
|
256
253
|
}
|
|
257
254
|
return `${key}=${filters[key]}`;
|
|
258
|
-
}).join(
|
|
255
|
+
}).join('&');
|
|
259
256
|
if (view) {
|
|
260
|
-
if (typeof getRedirectLink ===
|
|
261
|
-
goTo(getRedirectLink(view ===
|
|
257
|
+
if (typeof getRedirectLink === 'function') {
|
|
258
|
+
goTo(getRedirectLink(view === 'mine-monitoring' ? qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname : qs !== '' ? `${`/app/${view}`}?${qs}` : doPagination ? `${`/app/${view}`}?page=${page}` : `${`/app/${view}`}`));
|
|
262
259
|
return;
|
|
263
260
|
}
|
|
264
|
-
if (view ===
|
|
265
|
-
goTo(qs !==
|
|
261
|
+
if (view === 'mine-monitoring') {
|
|
262
|
+
goTo(qs !== '' ? `${location.pathname}?${qs}` : doPagination ? `${location.pathname}?page=${page}` : location.pathname);
|
|
266
263
|
} else {
|
|
267
|
-
goTo(qs !==
|
|
264
|
+
goTo(qs !== '' ? `${`/app/${module}/${view}`}?${qs}` : doPagination ? `${`/app/${module}/${view}`}?page=${page}` : `${`/app/${module}/${view}`}`);
|
|
268
265
|
}
|
|
269
266
|
}
|
|
270
267
|
}, [module, view, location.pathname]); // Updated dependency array
|
|
@@ -310,7 +307,7 @@ const useFilters = ({
|
|
|
310
307
|
const {
|
|
311
308
|
show
|
|
312
309
|
} = conf;
|
|
313
|
-
if (typeof show ===
|
|
310
|
+
if (typeof show === 'function') {
|
|
314
311
|
if (show(filters)) {
|
|
315
312
|
return all;
|
|
316
313
|
}
|
|
@@ -328,7 +325,7 @@ const useFilters = ({
|
|
|
328
325
|
...prev
|
|
329
326
|
};
|
|
330
327
|
Object.keys(o).forEach(k => {
|
|
331
|
-
if (Object.keys(selectFiltersConfig).includes(k) || k ===
|
|
328
|
+
if (Object.keys(selectFiltersConfig).includes(k) || k === 'authorId') {
|
|
332
329
|
delete o[k];
|
|
333
330
|
}
|
|
334
331
|
});
|
|
@@ -370,8 +367,8 @@ const useFilters = ({
|
|
|
370
367
|
};
|
|
371
368
|
} else if (sortBy || sortDir) {
|
|
372
369
|
fs = Object.keys(fs).reduce((all, key) => {
|
|
373
|
-
if (key !==
|
|
374
|
-
if (key ===
|
|
370
|
+
if (key !== 'sortDir' && key !== 'sortBy') {
|
|
371
|
+
if (key === 'page' || key === 'pageSize') {
|
|
375
372
|
all[key] = fs[key];
|
|
376
373
|
} else {
|
|
377
374
|
all[key] = activeFilters[key];
|
package/package.json
CHANGED
|
@@ -457,6 +457,34 @@ export const Pdf = {
|
|
|
457
457
|
showBackground: true,
|
|
458
458
|
isPercentage: true,
|
|
459
459
|
shouldSeperateLegendName: true,
|
|
460
|
+
formattedXAxis: (s) => {
|
|
461
|
+
if (!s) return "";
|
|
462
|
+
|
|
463
|
+
const limit = 20;
|
|
464
|
+
let result = "";
|
|
465
|
+
let line = "";
|
|
466
|
+
|
|
467
|
+
for (let word of s.split(" ")) {
|
|
468
|
+
if ((line + word).length <= limit) {
|
|
469
|
+
line += (line ? " " : "") + word;
|
|
470
|
+
} else if (word.length > limit) {
|
|
471
|
+
// break long word with hyphen
|
|
472
|
+
while (word.length > limit) {
|
|
473
|
+
result += word.slice(0, limit - 1) + "-\n";
|
|
474
|
+
word = word.slice(limit - 1);
|
|
475
|
+
}
|
|
476
|
+
line = word;
|
|
477
|
+
} else {
|
|
478
|
+
// move current line into result
|
|
479
|
+
if (line) result += line + "\n";
|
|
480
|
+
line = word;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if (line) result += line;
|
|
485
|
+
|
|
486
|
+
return result;
|
|
487
|
+
},
|
|
460
488
|
},
|
|
461
489
|
render: (args) => {
|
|
462
490
|
return <Widget title="Pdf Column Chart" className={"with-border-header"}>
|
|
@@ -72,6 +72,7 @@ function positionDataNodes({
|
|
|
72
72
|
mainNode,
|
|
73
73
|
type,
|
|
74
74
|
hasContent,
|
|
75
|
+
isPdf,
|
|
75
76
|
}) {
|
|
76
77
|
const DATA_NODE_WIDTH = DATA_NODE_SIZE[type].width;
|
|
77
78
|
const DATA_NODE_HEIGHT = DATA_NODE_SIZE[type].height;
|
|
@@ -325,6 +326,7 @@ function StakeholderMappings({
|
|
|
325
326
|
isLeftSide: node.data.order % 2 !== 0,
|
|
326
327
|
isAboveMainNode: node.data.order <= 2,
|
|
327
328
|
iconNode: node,
|
|
329
|
+
isPdf: true,
|
|
328
330
|
index: 0,
|
|
329
331
|
total: 1,
|
|
330
332
|
mainNode,
|
|
@@ -444,6 +446,7 @@ function StakeholderMappings({
|
|
|
444
446
|
});
|
|
445
447
|
}}
|
|
446
448
|
ref={reactFlowWrapper}
|
|
449
|
+
isPdf={isPdf}
|
|
447
450
|
/>
|
|
448
451
|
);
|
|
449
452
|
}
|
|
@@ -32,6 +32,7 @@ const BaseGraph = forwardRef(function BaseGraph(
|
|
|
32
32
|
t,
|
|
33
33
|
withDuration = true,
|
|
34
34
|
onFilterChange,
|
|
35
|
+
isPdf,
|
|
35
36
|
...props
|
|
36
37
|
},
|
|
37
38
|
ref,
|
|
@@ -87,43 +88,45 @@ const BaseGraph = forwardRef(function BaseGraph(
|
|
|
87
88
|
}}
|
|
88
89
|
{...props}
|
|
89
90
|
>
|
|
90
|
-
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
91
|
+
{!isPdf && (
|
|
92
|
+
<Controls position="bottom-right" showFitView={false} showInteractive={false}>
|
|
93
|
+
<ControlButton
|
|
94
|
+
onClick={() => {
|
|
95
|
+
fitView({
|
|
96
|
+
padding: 0.1,
|
|
97
|
+
nodes: [...nodesToFit],
|
|
98
|
+
duration: withDuration ? 300 : undefined,
|
|
99
|
+
});
|
|
100
|
+
}}
|
|
101
|
+
>
|
|
102
|
+
<AimOutlined height={20} width={20} />
|
|
103
|
+
</ControlButton>
|
|
104
|
+
<ControlButton
|
|
105
|
+
onClick={() => {
|
|
106
|
+
const viewport = getViewport();
|
|
107
|
+
setViewport({
|
|
108
|
+
x: viewport.x,
|
|
109
|
+
y: viewport.y + 20,
|
|
110
|
+
zoom: viewport.zoom,
|
|
111
|
+
});
|
|
112
|
+
}}
|
|
113
|
+
>
|
|
114
|
+
<UpOutlined height={20} width={20}></UpOutlined>
|
|
115
|
+
</ControlButton>
|
|
116
|
+
<ControlButton
|
|
117
|
+
onClick={() => {
|
|
118
|
+
const viewport = getViewport();
|
|
119
|
+
setViewport({
|
|
120
|
+
x: viewport.x,
|
|
121
|
+
y: viewport.y - 20,
|
|
122
|
+
zoom: viewport.zoom,
|
|
123
|
+
});
|
|
124
|
+
}}
|
|
125
|
+
>
|
|
126
|
+
<DownOutlined height={20} width={20}></DownOutlined>
|
|
127
|
+
</ControlButton>
|
|
128
|
+
</Controls>
|
|
129
|
+
)}
|
|
127
130
|
</ReactFlow>
|
|
128
131
|
</div>
|
|
129
132
|
</ComponentWithFocus>
|
|
@@ -13,6 +13,8 @@ const { useToken } = theme;
|
|
|
13
13
|
export default function NameNode({ data }) {
|
|
14
14
|
const { token } = useToken();
|
|
15
15
|
const translateFN = typeof data?.t === "function" ? data.t : (key) => key;
|
|
16
|
+
const isPdf = data?.isPdf;
|
|
17
|
+
|
|
16
18
|
return (
|
|
17
19
|
<>
|
|
18
20
|
<Handle
|
|
@@ -34,6 +36,7 @@ export default function NameNode({ data }) {
|
|
|
34
36
|
}}
|
|
35
37
|
/>
|
|
36
38
|
<Style
|
|
39
|
+
$isPdf={isPdf}
|
|
37
40
|
style={{
|
|
38
41
|
opacity: data.isEmpty ? 0.5 : 1,
|
|
39
42
|
}}
|
|
@@ -95,19 +98,21 @@ export default function NameNode({ data }) {
|
|
|
95
98
|
) : null}
|
|
96
99
|
</div>
|
|
97
100
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
101
|
+
{!isPdf && (
|
|
102
|
+
<div
|
|
103
|
+
style={{
|
|
104
|
+
marginLeft: "auto",
|
|
105
|
+
}}
|
|
106
|
+
className="go-to"
|
|
107
|
+
onClick={() => {
|
|
108
|
+
if (typeof data.onClick === "function") {
|
|
109
|
+
data.onClick();
|
|
110
|
+
}
|
|
111
|
+
}}
|
|
112
|
+
>
|
|
113
|
+
<CustomIcon height={14} width={14} name="LinkNewTab" />
|
|
114
|
+
</div>
|
|
115
|
+
)}
|
|
111
116
|
</div>
|
|
112
117
|
</Style>
|
|
113
118
|
<Handle
|
|
@@ -129,25 +134,30 @@ export default function NameNode({ data }) {
|
|
|
129
134
|
}
|
|
130
135
|
|
|
131
136
|
const Style = styled.div`
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
width: ${NAME_CARD_WIDTH}px;
|
|
138
|
+
display: flex;
|
|
139
|
+
background: white;
|
|
140
|
+
border-radius: 8px;
|
|
141
|
+
/* Box-shadows for screen */
|
|
142
|
+
box-shadow: 0px 3.76px 10.03px 0px #00000014;
|
|
143
|
+
box-shadow: 0px 1.88px 3.76px -2.51px #0000001f;
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
box-shadow: 0px 5.64px 17.56px 5.02px #0000000d;
|
|
146
|
+
/* Ensure borders/colors survive PDF rendering */
|
|
147
|
+
border: ${(props) => (props.$isPdf ? '1px solid var(--base-gray-30)' : 'none')};
|
|
148
|
+
-webkit-print-color-adjust: exact;
|
|
149
|
+
print-color-adjust: exact;
|
|
140
150
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
151
|
+
.left {
|
|
152
|
+
width: 32px;
|
|
153
|
+
background: red;
|
|
154
|
+
border-top-left-radius: 12px;
|
|
155
|
+
border-bottom-left-radius: 12px;
|
|
156
|
+
}
|
|
147
157
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
158
|
+
.right {
|
|
159
|
+
padding: 16px 12px;
|
|
160
|
+
width: 100%;
|
|
161
|
+
border-bottom: 1px solid var(--base-gray-30);
|
|
162
|
+
}
|
|
153
163
|
`;
|
|
@@ -1,323 +1,281 @@
|
|
|
1
|
-
import { useCallback, useEffect, useMemo, useState } from
|
|
2
|
-
import { getDefaultActiveFilters } from
|
|
3
|
-
import { StorageManager } from
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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
package/.vscode/settings.json
DELETED
|
@@ -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
|
-
}
|