react-hook-core 0.3.7 → 0.4.1
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/lib/search.js +36 -36
- package/lib/useSearch.js +23 -30
- package/package.json +1 -1
- package/src/search.ts +41 -42
- package/src/useSearch.ts +26 -33
package/lib/search.js
CHANGED
|
@@ -83,31 +83,31 @@ function initFilter(m, com) {
|
|
|
83
83
|
var page = parseInt(m.page, 10);
|
|
84
84
|
m.page = page;
|
|
85
85
|
if (page >= 1) {
|
|
86
|
-
com.
|
|
86
|
+
com.page = page;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
if (!isNaN(m.limit)) {
|
|
90
90
|
var pageSize = parseInt(m.limit, 10);
|
|
91
91
|
m.limit = pageSize;
|
|
92
92
|
if (pageSize > 0) {
|
|
93
|
-
com.
|
|
93
|
+
com.limit = pageSize;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
if (!m.limit && com.
|
|
97
|
-
m.limit = com.
|
|
96
|
+
if (!m.limit && com.limit) {
|
|
97
|
+
m.limit = com.limit;
|
|
98
98
|
}
|
|
99
99
|
if (!isNaN(m.firstLimit)) {
|
|
100
100
|
var initPageSize = parseInt(m.firstLimit, 10);
|
|
101
101
|
if (initPageSize > 0) {
|
|
102
102
|
m.firstLimit = initPageSize;
|
|
103
|
-
com.
|
|
103
|
+
com.initLimit = initPageSize;
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
106
|
-
com.
|
|
106
|
+
com.initLimit = com.limit;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
else {
|
|
110
|
-
com.
|
|
110
|
+
com.initLimit = com.limit;
|
|
111
111
|
}
|
|
112
112
|
var st = m.sort;
|
|
113
113
|
if (st && st.length > 0) {
|
|
@@ -126,11 +126,11 @@ function initFilter(m, com) {
|
|
|
126
126
|
exports.initFilter = initFilter;
|
|
127
127
|
function more(com) {
|
|
128
128
|
com.append = true;
|
|
129
|
-
if (!com.
|
|
130
|
-
com.
|
|
129
|
+
if (!com.page) {
|
|
130
|
+
com.page = 1;
|
|
131
131
|
}
|
|
132
132
|
else {
|
|
133
|
-
com.
|
|
133
|
+
com.page = com.page + 1;
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
exports.more = more;
|
|
@@ -139,32 +139,32 @@ function reset(com) {
|
|
|
139
139
|
com.sortTarget = undefined;
|
|
140
140
|
com.sortField = undefined;
|
|
141
141
|
com.append = false;
|
|
142
|
-
com.
|
|
142
|
+
com.page = 1;
|
|
143
143
|
}
|
|
144
144
|
exports.reset = reset;
|
|
145
145
|
function changePageSize(com, size) {
|
|
146
|
-
com.
|
|
147
|
-
com.
|
|
148
|
-
com.
|
|
146
|
+
com.initLimit = size;
|
|
147
|
+
com.limit = size;
|
|
148
|
+
com.page = 1;
|
|
149
149
|
}
|
|
150
150
|
exports.changePageSize = changePageSize;
|
|
151
151
|
function changePage(com, pageIndex, pageSize) {
|
|
152
|
-
com.
|
|
153
|
-
com.
|
|
152
|
+
com.page = pageIndex;
|
|
153
|
+
com.limit = pageSize;
|
|
154
154
|
com.append = false;
|
|
155
155
|
}
|
|
156
156
|
exports.changePage = changePage;
|
|
157
157
|
function optimizeFilter(obj, searchable, fields) {
|
|
158
158
|
obj.fields = fields;
|
|
159
|
-
if (searchable.
|
|
160
|
-
obj.page = searchable.
|
|
159
|
+
if (searchable.page && searchable.page > 1) {
|
|
160
|
+
obj.page = searchable.page;
|
|
161
161
|
}
|
|
162
162
|
else {
|
|
163
163
|
delete obj.page;
|
|
164
164
|
}
|
|
165
|
-
obj.limit = searchable.
|
|
166
|
-
if (searchable.appendMode && searchable.
|
|
167
|
-
obj.firstLimit = searchable.
|
|
165
|
+
obj.limit = searchable.limit;
|
|
166
|
+
if (searchable.appendMode && searchable.initLimit !== searchable.limit) {
|
|
167
|
+
obj.firstLimit = searchable.initLimit;
|
|
168
168
|
}
|
|
169
169
|
else {
|
|
170
170
|
delete obj.firstLimit;
|
|
@@ -279,10 +279,10 @@ function getFields(form, arr) {
|
|
|
279
279
|
}
|
|
280
280
|
exports.getFields = getFields;
|
|
281
281
|
function formatResultsByComponent(results, c, lc) {
|
|
282
|
-
formatResults(results, c.
|
|
282
|
+
formatResults(results, c.page, c.limit, c.limit, c.sequenceNo, c.format, lc);
|
|
283
283
|
}
|
|
284
284
|
exports.formatResultsByComponent = formatResultsByComponent;
|
|
285
|
-
function formatResults(results,
|
|
285
|
+
function formatResults(results, page, limit, initPageSize, sequenceNo, ft, lc) {
|
|
286
286
|
if (results && results.length > 0) {
|
|
287
287
|
var hasSequencePro = false;
|
|
288
288
|
if (ft) {
|
|
@@ -311,21 +311,21 @@ function formatResults(results, pageIndex, pageSize, initPageSize, sequenceNo, f
|
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
if (sequenceNo && sequenceNo.length > 0 && !hasSequencePro) {
|
|
314
|
-
if (!
|
|
315
|
-
|
|
314
|
+
if (!page) {
|
|
315
|
+
page = 1;
|
|
316
316
|
}
|
|
317
|
-
if (
|
|
317
|
+
if (limit) {
|
|
318
318
|
if (!initPageSize) {
|
|
319
|
-
initPageSize =
|
|
319
|
+
initPageSize = limit;
|
|
320
320
|
}
|
|
321
|
-
if (
|
|
321
|
+
if (page <= 1) {
|
|
322
322
|
for (var i = 0; i < results.length; i++) {
|
|
323
|
-
results[i][sequenceNo] = i -
|
|
323
|
+
results[i][sequenceNo] = i - limit + limit * page + 1;
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
else {
|
|
327
327
|
for (var i = 0; i < results.length; i++) {
|
|
328
|
-
results[i][sequenceNo] = i -
|
|
328
|
+
results[i][sequenceNo] = i - limit + limit * page + 1 - (limit - initPageSize);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
}
|
|
@@ -378,19 +378,19 @@ function formatText() {
|
|
|
378
378
|
return formatted;
|
|
379
379
|
}
|
|
380
380
|
exports.formatText = formatText;
|
|
381
|
-
function buildMessage(resource, results,
|
|
381
|
+
function buildMessage(resource, results, limit, page, total) {
|
|
382
382
|
if (!results || results.length === 0) {
|
|
383
383
|
return resource.msg_no_data_found;
|
|
384
384
|
}
|
|
385
385
|
else {
|
|
386
|
-
if (!
|
|
387
|
-
|
|
386
|
+
if (!page) {
|
|
387
|
+
page = 1;
|
|
388
388
|
}
|
|
389
|
-
var fromIndex = (
|
|
389
|
+
var fromIndex = (page - 1) * limit + 1;
|
|
390
390
|
var toIndex = fromIndex + results.length - 1;
|
|
391
|
-
var pageTotal = getPageTotal(
|
|
391
|
+
var pageTotal = getPageTotal(limit, total);
|
|
392
392
|
if (pageTotal > 1) {
|
|
393
|
-
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total,
|
|
393
|
+
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal);
|
|
394
394
|
return msg2;
|
|
395
395
|
}
|
|
396
396
|
else {
|
package/lib/useSearch.js
CHANGED
|
@@ -25,18 +25,11 @@ exports.callSearch = function (se, search3, showResults3, searchError3, lc, next
|
|
|
25
25
|
if (!page || page < 1) {
|
|
26
26
|
page = 1;
|
|
27
27
|
}
|
|
28
|
-
var offset;
|
|
29
28
|
if (!se.limit || se.limit <= 0) {
|
|
30
|
-
se.limit =
|
|
31
|
-
}
|
|
32
|
-
if (se.firstLimit && se.firstLimit > 0) {
|
|
33
|
-
offset = se.limit * (page - 2) + se.firstLimit;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
offset = se.limit * (page - 1);
|
|
29
|
+
se.limit = core_1.resources.limit;
|
|
37
30
|
}
|
|
38
31
|
var limit = (page <= 1 && se.firstLimit && se.firstLimit > 0 ? se.firstLimit : se.limit);
|
|
39
|
-
var next = (nextPageToken && nextPageToken.length > 0 ? nextPageToken :
|
|
32
|
+
var next = (nextPageToken && nextPageToken.length > 0 ? nextPageToken : page);
|
|
40
33
|
var fields = se.fields;
|
|
41
34
|
delete se['page'];
|
|
42
35
|
delete se['fields'];
|
|
@@ -57,8 +50,8 @@ function mergeParam(p) {
|
|
|
57
50
|
if (!p.sequenceNo) {
|
|
58
51
|
p.sequenceNo = 'sequenceNo';
|
|
59
52
|
}
|
|
60
|
-
if (!p.
|
|
61
|
-
p.
|
|
53
|
+
if (!p.limit) {
|
|
54
|
+
p.limit = 24;
|
|
62
55
|
}
|
|
63
56
|
if (!p.pageSizes) {
|
|
64
57
|
p.pageSizes = core_1.pageSizes;
|
|
@@ -74,7 +67,7 @@ function mergeParam(p) {
|
|
|
74
67
|
else {
|
|
75
68
|
return {
|
|
76
69
|
sequenceNo: 'sequenceNo',
|
|
77
|
-
|
|
70
|
+
limit: 24,
|
|
78
71
|
pageSizes: core_1.pageSizes,
|
|
79
72
|
pageMaxSize: 7,
|
|
80
73
|
hideFilter: true,
|
|
@@ -209,12 +202,12 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
209
202
|
var validateSearch = p && p.validateSearch ? p.validateSearch : _validateSearch;
|
|
210
203
|
var pageSizeChanged = function (event) {
|
|
211
204
|
var size = parseInt(event.currentTarget.value, 10);
|
|
212
|
-
component.
|
|
213
|
-
component.
|
|
205
|
+
component.limit = size;
|
|
206
|
+
component.page = 1;
|
|
214
207
|
component.tmpPageIndex = 1;
|
|
215
208
|
setComponent({
|
|
216
|
-
|
|
217
|
-
|
|
209
|
+
limit: size,
|
|
210
|
+
page: 1,
|
|
218
211
|
tmpPageIndex: 1
|
|
219
212
|
});
|
|
220
213
|
doSearch(component);
|
|
@@ -276,25 +269,25 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
276
269
|
};
|
|
277
270
|
var resetAndSearch = function () {
|
|
278
271
|
if (running === true) {
|
|
279
|
-
setComponent({
|
|
272
|
+
setComponent({ page: 1, triggerSearch: true });
|
|
280
273
|
return;
|
|
281
274
|
}
|
|
282
|
-
setComponent({
|
|
275
|
+
setComponent({ page: 1, tmpPageIndex: 1 });
|
|
283
276
|
search_1.removeSortStatus(component.sortTarget);
|
|
284
277
|
setComponent({
|
|
285
278
|
sortTarget: undefined,
|
|
286
279
|
sortField: undefined,
|
|
287
280
|
append: false,
|
|
288
|
-
|
|
281
|
+
page: 1
|
|
289
282
|
});
|
|
290
283
|
component.sortTarget = undefined;
|
|
291
284
|
component.sortField = undefined;
|
|
292
285
|
component.append = false;
|
|
293
|
-
component.
|
|
286
|
+
component.page = 1;
|
|
294
287
|
doSearch(component);
|
|
295
288
|
};
|
|
296
289
|
var searchError = function (err) {
|
|
297
|
-
setComponent({
|
|
290
|
+
setComponent({ page: component.tmpPageIndex });
|
|
298
291
|
core_1.error(err, p1.resource.value, p1.showError);
|
|
299
292
|
core_1.hideLoading(p1.loading);
|
|
300
293
|
};
|
|
@@ -306,11 +299,11 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
306
299
|
}
|
|
307
300
|
var results = (sr === null || sr === void 0 ? void 0 : sr.list) || [];
|
|
308
301
|
if (results && results.length > 0) {
|
|
309
|
-
search_1.formatResults(results, component.
|
|
302
|
+
search_1.formatResults(results, component.page, component.limit, component.limit, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
|
|
310
303
|
}
|
|
311
304
|
var am = component.appendMode;
|
|
312
305
|
var pi = (s.page && s.page >= 1 ? s.page : 1);
|
|
313
|
-
setComponent({ total: sr.total,
|
|
306
|
+
setComponent({ total: sr.total, page: pi, nextPageToken: sr.next });
|
|
314
307
|
if (am) {
|
|
315
308
|
var limit = s.limit;
|
|
316
309
|
if ((!s.page || s.page <= 1) && s.firstLimit && s.firstLimit > 0) {
|
|
@@ -343,19 +336,19 @@ exports.useCoreSearch = function (refForm, initialState, service, p1, p2) {
|
|
|
343
336
|
var showResults = (p && p.showResults ? p.showResults : _showResults);
|
|
344
337
|
var showMore = function (event) {
|
|
345
338
|
event.preventDefault();
|
|
346
|
-
var n = component.
|
|
347
|
-
var m = component.
|
|
348
|
-
setComponent({ tmpPageIndex: m,
|
|
339
|
+
var n = component.page ? component.page + 1 : 2;
|
|
340
|
+
var m = component.page;
|
|
341
|
+
setComponent({ tmpPageIndex: m, page: n, append: true });
|
|
349
342
|
component.tmpPageIndex = m;
|
|
350
|
-
component.
|
|
343
|
+
component.page = n;
|
|
351
344
|
component.append = true;
|
|
352
345
|
doSearch(component);
|
|
353
346
|
};
|
|
354
347
|
var pageChanged = function (data) {
|
|
355
348
|
var page = data.page, size = data.size;
|
|
356
|
-
setComponent({
|
|
357
|
-
component.
|
|
358
|
-
component.
|
|
349
|
+
setComponent({ page: page, limit: size, append: false });
|
|
350
|
+
component.page = page;
|
|
351
|
+
component.limit = size;
|
|
359
352
|
component.append = false;
|
|
360
353
|
doSearch(component);
|
|
361
354
|
};
|
package/package.json
CHANGED
package/src/search.ts
CHANGED
|
@@ -8,10 +8,10 @@ export interface Sortable {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export interface Pagination {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
initLimit?: number;
|
|
12
|
+
limit: number;
|
|
13
13
|
// limit: number;
|
|
14
|
-
|
|
14
|
+
page?: number;
|
|
15
15
|
total?: number;
|
|
16
16
|
pages?: number;
|
|
17
17
|
showPaging?: boolean;
|
|
@@ -92,29 +92,29 @@ export function initFilter<S extends Filter>(m: S, com: Searchable): S {
|
|
|
92
92
|
const page = parseInt(m.page as any, 10);
|
|
93
93
|
m.page = page;
|
|
94
94
|
if (page >= 1) {
|
|
95
|
-
com.
|
|
95
|
+
com.page = page;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
if (!isNaN(m.limit as any)) {
|
|
99
99
|
const pageSize = parseInt(m.limit as any, 10);
|
|
100
100
|
m.limit = pageSize;
|
|
101
101
|
if (pageSize > 0) {
|
|
102
|
-
com.
|
|
102
|
+
com.limit = pageSize;
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
|
-
if (!m.limit && com.
|
|
106
|
-
m.limit = com.
|
|
105
|
+
if (!m.limit && com.limit) {
|
|
106
|
+
m.limit = com.limit;
|
|
107
107
|
}
|
|
108
108
|
if (!isNaN(m.firstLimit as any)) {
|
|
109
109
|
const initPageSize = parseInt(m.firstLimit as any, 10);
|
|
110
110
|
if (initPageSize > 0) {
|
|
111
111
|
m.firstLimit = initPageSize;
|
|
112
|
-
com.
|
|
112
|
+
com.initLimit = initPageSize;
|
|
113
113
|
} else {
|
|
114
|
-
com.
|
|
114
|
+
com.initLimit = com.limit;
|
|
115
115
|
}
|
|
116
116
|
} else {
|
|
117
|
-
com.
|
|
117
|
+
com.initLimit = com.limit;
|
|
118
118
|
}
|
|
119
119
|
const st = m.sort;
|
|
120
120
|
if (st && st.length > 0) {
|
|
@@ -136,10 +136,10 @@ export function initFilter<S extends Filter>(m: S, com: Searchable): S {
|
|
|
136
136
|
}
|
|
137
137
|
export function more(com: Pagination): void {
|
|
138
138
|
com.append = true;
|
|
139
|
-
if (!com.
|
|
140
|
-
com.
|
|
139
|
+
if (!com.page) {
|
|
140
|
+
com.page = 1;
|
|
141
141
|
} else {
|
|
142
|
-
com.
|
|
142
|
+
com.page = com.page + 1;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -148,30 +148,30 @@ export function reset(com: Searchable): void {
|
|
|
148
148
|
com.sortTarget = undefined;
|
|
149
149
|
com.sortField = undefined;
|
|
150
150
|
com.append = false;
|
|
151
|
-
com.
|
|
151
|
+
com.page = 1;
|
|
152
152
|
}
|
|
153
153
|
export function changePageSize(com: Pagination, size: number): void {
|
|
154
|
-
com.
|
|
155
|
-
com.
|
|
156
|
-
com.
|
|
154
|
+
com.initLimit = size;
|
|
155
|
+
com.limit = size;
|
|
156
|
+
com.page = 1;
|
|
157
157
|
}
|
|
158
158
|
export function changePage(com: Pagination, pageIndex: number, pageSize: number): void {
|
|
159
|
-
com.
|
|
160
|
-
com.
|
|
159
|
+
com.page = pageIndex;
|
|
160
|
+
com.limit = pageSize;
|
|
161
161
|
com.append = false;
|
|
162
162
|
}
|
|
163
163
|
export function optimizeFilter<S extends Filter>(obj: S, searchable: Searchable, fields?: string[]): S {
|
|
164
164
|
// const sLimit = searchable.limit;
|
|
165
165
|
obj.fields = fields;
|
|
166
|
-
if (searchable.
|
|
167
|
-
obj.page = searchable.
|
|
166
|
+
if (searchable.page && searchable.page > 1) {
|
|
167
|
+
obj.page = searchable.page;
|
|
168
168
|
} else {
|
|
169
169
|
delete obj.page;
|
|
170
170
|
}
|
|
171
|
-
obj.limit = searchable.
|
|
171
|
+
obj.limit = searchable.limit;
|
|
172
172
|
|
|
173
|
-
if (searchable.appendMode && searchable.
|
|
174
|
-
obj.firstLimit = searchable.
|
|
173
|
+
if (searchable.appendMode && searchable.initLimit !== searchable.limit) {
|
|
174
|
+
obj.firstLimit = searchable.initLimit;
|
|
175
175
|
} else {
|
|
176
176
|
delete obj.firstLimit;
|
|
177
177
|
}
|
|
@@ -292,16 +292,15 @@ export function getFields(form?: HTMLFormElement, arr?: string[]): string[] | un
|
|
|
292
292
|
return fields.length > 0 ? fields : undefined
|
|
293
293
|
}
|
|
294
294
|
interface Component<T> {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
initPageSize?: number;
|
|
295
|
+
page?: number;
|
|
296
|
+
limit?: number;
|
|
298
297
|
sequenceNo?: string;
|
|
299
298
|
format?: (oj: T, lc?: Locale) => T;
|
|
300
299
|
}
|
|
301
300
|
export function formatResultsByComponent<T>(results: T[], c: Component<T>, lc: Locale) {
|
|
302
|
-
formatResults(results, c.
|
|
301
|
+
formatResults(results, c.page, c.limit, c.limit, c.sequenceNo, c.format, lc);
|
|
303
302
|
}
|
|
304
|
-
export function formatResults<T>(results: T[],
|
|
303
|
+
export function formatResults<T>(results: T[], page?: number, limit?: number, initPageSize?: number, sequenceNo?: string, ft?: (oj: T, lc?: Locale) => T, lc?: Locale): void {
|
|
305
304
|
if (results && results.length > 0) {
|
|
306
305
|
let hasSequencePro = false;
|
|
307
306
|
if (ft) {
|
|
@@ -325,20 +324,20 @@ export function formatResults<T>(results: T[], pageIndex?: number, pageSize?: nu
|
|
|
325
324
|
}
|
|
326
325
|
}
|
|
327
326
|
if (sequenceNo && sequenceNo.length > 0 && !hasSequencePro) {
|
|
328
|
-
if (!
|
|
329
|
-
|
|
327
|
+
if (!page) {
|
|
328
|
+
page = 1;
|
|
330
329
|
}
|
|
331
|
-
if (
|
|
330
|
+
if (limit) {
|
|
332
331
|
if (!initPageSize) {
|
|
333
|
-
initPageSize =
|
|
332
|
+
initPageSize = limit;
|
|
334
333
|
}
|
|
335
|
-
if (
|
|
334
|
+
if (page <= 1) {
|
|
336
335
|
for (let i = 0; i < results.length; i++) {
|
|
337
|
-
(results[i] as any)[sequenceNo] = i -
|
|
336
|
+
(results[i] as any)[sequenceNo] = i - limit + limit * page + 1;
|
|
338
337
|
}
|
|
339
338
|
} else {
|
|
340
339
|
for (let i = 0; i < results.length; i++) {
|
|
341
|
-
(results[i] as any)[sequenceNo] = i -
|
|
340
|
+
(results[i] as any)[sequenceNo] = i - limit + limit * page + 1 - (limit - initPageSize);
|
|
342
341
|
}
|
|
343
342
|
}
|
|
344
343
|
} else {
|
|
@@ -383,18 +382,18 @@ export function formatText(...args: any[]): string {
|
|
|
383
382
|
}
|
|
384
383
|
return formatted
|
|
385
384
|
}
|
|
386
|
-
export function buildMessage<T>(resource: StringMap, results: T[],
|
|
385
|
+
export function buildMessage<T>(resource: StringMap, results: T[], limit: number, page: number | undefined, total?: number): string {
|
|
387
386
|
if (!results || results.length === 0) {
|
|
388
387
|
return resource.msg_no_data_found
|
|
389
388
|
} else {
|
|
390
|
-
if (!
|
|
391
|
-
|
|
389
|
+
if (!page) {
|
|
390
|
+
page = 1
|
|
392
391
|
}
|
|
393
|
-
const fromIndex = (
|
|
392
|
+
const fromIndex = (page - 1) * limit + 1
|
|
394
393
|
const toIndex = fromIndex + results.length - 1
|
|
395
|
-
const pageTotal = getPageTotal(
|
|
394
|
+
const pageTotal = getPageTotal(limit, total)
|
|
396
395
|
if (pageTotal > 1) {
|
|
397
|
-
const msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total,
|
|
396
|
+
const msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal)
|
|
398
397
|
return msg2
|
|
399
398
|
} else {
|
|
400
399
|
const msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex)
|
package/src/useSearch.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {useEffect, useState} from 'react';
|
|
2
|
-
import {error, Filter, getName, getRemoveError, getValidateForm, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
|
|
2
|
+
import {error, Filter, getName, getRemoveError, getValidateForm, hideLoading, initForm, Locale, PageChange, pageSizes, removeFormError, resources, ResourceService, SearchParameter, SearchResult, SearchService, showLoading} from './core';
|
|
3
3
|
import {DispatchWithCallback, useMergeState} from './merge';
|
|
4
4
|
import {clone} from './reflect';
|
|
5
5
|
import {buildFromUrl} from './route';
|
|
@@ -12,23 +12,17 @@ export interface Searchable extends Pagination, Sortable {
|
|
|
12
12
|
excluding?: string[]|number[];
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export const callSearch = <T, S extends Filter>(se: S, search3: (s: S, limit?: number,
|
|
15
|
+
export const callSearch = <T, S extends Filter>(se: S, search3: (s: S, limit?: number, page?: number|string, fields?: string[]) => Promise<SearchResult<T>>, showResults3: (s: S, sr: SearchResult<T>, lc: Locale) => void, searchError3: (err: any) => void, lc: Locale, nextPageToken?: string) => {
|
|
16
16
|
const s = clone(se);
|
|
17
17
|
let page = se.page;
|
|
18
18
|
if (!page || page < 1) {
|
|
19
19
|
page = 1;
|
|
20
20
|
}
|
|
21
|
-
let offset: number;
|
|
22
21
|
if (!se.limit || se.limit <= 0) {
|
|
23
|
-
se.limit =
|
|
24
|
-
}
|
|
25
|
-
if (se.firstLimit && se.firstLimit > 0) {
|
|
26
|
-
offset = se.limit * (page - 2) + se.firstLimit;
|
|
27
|
-
} else {
|
|
28
|
-
offset = se.limit * (page - 1);
|
|
22
|
+
se.limit = resources.limit;
|
|
29
23
|
}
|
|
30
24
|
const limit = (page <= 1 && se.firstLimit && se.firstLimit > 0 ? se.firstLimit : se.limit);
|
|
31
|
-
const next = (nextPageToken && nextPageToken.length > 0 ? nextPageToken :
|
|
25
|
+
const next = (nextPageToken && nextPageToken.length > 0 ? nextPageToken : page);
|
|
32
26
|
const fields = se.fields;
|
|
33
27
|
delete se['page'];
|
|
34
28
|
delete se['fields'];
|
|
@@ -67,8 +61,7 @@ export interface SearchComponentParam<T, M extends Filter> {
|
|
|
67
61
|
appendMode?: boolean;
|
|
68
62
|
pageSizes?: number[];
|
|
69
63
|
pageIndex?: number;
|
|
70
|
-
|
|
71
|
-
initPageSize?: number;
|
|
64
|
+
limit: number;
|
|
72
65
|
pageMaxSize?: number;
|
|
73
66
|
ignoreUrlParam?: boolean;
|
|
74
67
|
|
|
@@ -139,8 +132,8 @@ export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>):
|
|
|
139
132
|
if (!p.sequenceNo) {
|
|
140
133
|
p.sequenceNo = 'sequenceNo';
|
|
141
134
|
}
|
|
142
|
-
if (!p.
|
|
143
|
-
p.
|
|
135
|
+
if (!p.limit) {
|
|
136
|
+
p.limit = 24;
|
|
144
137
|
}
|
|
145
138
|
if (!p.pageSizes) {
|
|
146
139
|
p.pageSizes = pageSizes;
|
|
@@ -169,7 +162,7 @@ export function mergeParam<T, S extends Filter>(p?: SearchComponentParam<T, S>):
|
|
|
169
162
|
} else {
|
|
170
163
|
return {
|
|
171
164
|
sequenceNo: 'sequenceNo',
|
|
172
|
-
|
|
165
|
+
limit: 24,
|
|
173
166
|
pageSizes,
|
|
174
167
|
pageMaxSize: 7,
|
|
175
168
|
hideFilter: true,
|
|
@@ -335,12 +328,12 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
335
328
|
|
|
336
329
|
const pageSizeChanged = (event: any) => {
|
|
337
330
|
const size = parseInt(event.currentTarget.value, 10);
|
|
338
|
-
component.
|
|
339
|
-
component.
|
|
331
|
+
component.limit = size;
|
|
332
|
+
component.page = 1;
|
|
340
333
|
component.tmpPageIndex = 1;
|
|
341
334
|
setComponent({
|
|
342
|
-
|
|
343
|
-
|
|
335
|
+
limit: size,
|
|
336
|
+
page: 1,
|
|
344
337
|
tmpPageIndex: 1
|
|
345
338
|
});
|
|
346
339
|
doSearch(component);
|
|
@@ -404,26 +397,26 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
404
397
|
|
|
405
398
|
const resetAndSearch = () => {
|
|
406
399
|
if (running === true) {
|
|
407
|
-
setComponent({
|
|
400
|
+
setComponent({ page: 1, triggerSearch: true });
|
|
408
401
|
return;
|
|
409
402
|
}
|
|
410
|
-
setComponent({
|
|
403
|
+
setComponent({ page: 1, tmpPageIndex: 1 });
|
|
411
404
|
removeSortStatus(component.sortTarget);
|
|
412
405
|
setComponent({
|
|
413
406
|
sortTarget: undefined,
|
|
414
407
|
sortField: undefined,
|
|
415
408
|
append: false,
|
|
416
|
-
|
|
409
|
+
page: 1
|
|
417
410
|
});
|
|
418
411
|
component.sortTarget = undefined;
|
|
419
412
|
component.sortField = undefined;
|
|
420
413
|
component.append = false;
|
|
421
|
-
component.
|
|
414
|
+
component.page = 1;
|
|
422
415
|
doSearch(component);
|
|
423
416
|
};
|
|
424
417
|
|
|
425
418
|
const searchError = (err: any): void => {
|
|
426
|
-
setComponent({
|
|
419
|
+
setComponent({ page: component.tmpPageIndex });
|
|
427
420
|
error(err, p1.resource.value, p1.showError);
|
|
428
421
|
hideLoading(p1.loading)
|
|
429
422
|
};
|
|
@@ -435,11 +428,11 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
435
428
|
}
|
|
436
429
|
const results = sr?.list || [];
|
|
437
430
|
if (results && results.length > 0) {
|
|
438
|
-
formatResults(results, component.
|
|
431
|
+
formatResults(results, component.page, component.limit, component.limit, p ? p.sequenceNo : undefined, p ? p.format : undefined, lc);
|
|
439
432
|
}
|
|
440
433
|
const am = component.appendMode;
|
|
441
434
|
const pi = (s.page && s.page >= 1 ? s.page : 1);
|
|
442
|
-
setComponent({ total: sr.total,
|
|
435
|
+
setComponent({ total: sr.total, page: pi, nextPageToken: sr.next });
|
|
443
436
|
if (am) {
|
|
444
437
|
let limit = s.limit;
|
|
445
438
|
if ((!s.page || s.page <= 1) && s.firstLimit && s.firstLimit > 0) {
|
|
@@ -471,20 +464,20 @@ export const useCoreSearch = <T, S extends Filter, ST>(
|
|
|
471
464
|
|
|
472
465
|
const showMore = (event: any) => {
|
|
473
466
|
event.preventDefault();
|
|
474
|
-
const n = component.
|
|
475
|
-
const m = component.
|
|
476
|
-
setComponent({ tmpPageIndex: m,
|
|
467
|
+
const n = component.page ? component.page + 1 : 2;
|
|
468
|
+
const m = component.page;
|
|
469
|
+
setComponent({ tmpPageIndex: m, page: n, append: true });
|
|
477
470
|
component.tmpPageIndex = m;
|
|
478
|
-
component.
|
|
471
|
+
component.page = n;
|
|
479
472
|
component.append = true;
|
|
480
473
|
doSearch(component);
|
|
481
474
|
};
|
|
482
475
|
|
|
483
476
|
const pageChanged = (data: PageChange) => {
|
|
484
477
|
const { page, size } = data;
|
|
485
|
-
setComponent({
|
|
486
|
-
component.
|
|
487
|
-
component.
|
|
478
|
+
setComponent({ page: page, limit: size, append: false });
|
|
479
|
+
component.page = page;
|
|
480
|
+
component.limit = size;
|
|
488
481
|
component.append = false;
|
|
489
482
|
doSearch(component);
|
|
490
483
|
};
|