@sankhyalabs/sankhyablocks 8.8.0-rc.5 → 8.8.0-rc.6
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/cjs/{SnkMultiSelectionListDataSource-45893a0c.js → SnkMultiSelectionListDataSource-4f7a031a.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-2454608a.js → dataunit-fetcher-a8bac9cc.js} +50 -24
- package/dist/cjs/snk-actions-button.cjs.entry.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +1 -1
- package/dist/cjs/snk-attach.cjs.entry.js +1 -1
- package/dist/cjs/snk-crud.cjs.entry.js +1 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +2 -2
- package/dist/cjs/snk-grid.cjs.entry.js +3 -2
- package/dist/cjs/{snk-guides-viewer-018c1c8e.js → snk-guides-viewer-00e028f1.js} +1 -1
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
- package/dist/cjs/snk-simple-crud.cjs.entry.js +2 -2
- package/dist/collection/components/snk-grid/snk-grid.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +6 -1
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +3 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +13 -14
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +28 -9
- package/dist/components/dataunit-fetcher.js +50 -24
- package/dist/components/snk-grid2.js +1 -0
- package/dist/esm/{SnkMultiSelectionListDataSource-a0b69ac4.js → SnkMultiSelectionListDataSource-2a4ec61c.js} +1 -1
- package/dist/esm/{dataunit-fetcher-493182bc.js → dataunit-fetcher-5e9245d7.js} +50 -24
- package/dist/esm/snk-actions-button.entry.js +1 -1
- package/dist/esm/snk-application.entry.js +1 -1
- package/dist/esm/snk-attach.entry.js +1 -1
- package/dist/esm/snk-crud.entry.js +1 -1
- package/dist/esm/snk-detail-view.entry.js +2 -2
- package/dist/esm/snk-grid.entry.js +3 -2
- package/dist/esm/{snk-guides-viewer-7c120bc6.js → snk-guides-viewer-9efd5ce9.js} +1 -1
- package/dist/esm/snk-guides-viewer.entry.js +2 -2
- package/dist/esm/snk-simple-crud.entry.js +2 -2
- package/dist/sankhyablocks/p-171b12d5.js +59 -0
- package/dist/sankhyablocks/{p-e33b308f.entry.js → p-3ad594b3.entry.js} +1 -1
- package/dist/sankhyablocks/{p-f34b9087.entry.js → p-3b28c4b3.entry.js} +1 -1
- package/dist/sankhyablocks/{p-9256574e.entry.js → p-3d0a0a36.entry.js} +1 -1
- package/dist/sankhyablocks/p-61513624.entry.js +1 -0
- package/dist/sankhyablocks/{p-53091bcd.js → p-7469e2ef.js} +1 -1
- package/dist/sankhyablocks/{p-21d01a8c.entry.js → p-880d08b8.entry.js} +1 -1
- package/dist/sankhyablocks/{p-b9b7bfce.entry.js → p-ae6a90a1.entry.js} +1 -1
- package/dist/sankhyablocks/{p-e13c3fbc.entry.js → p-b4edd50c.entry.js} +1 -1
- package/dist/sankhyablocks/{p-8f7e0bbd.entry.js → p-bb1bdb17.entry.js} +1 -1
- package/dist/sankhyablocks/{p-7650d823.js → p-c34cea23.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/ILoadingInfo.d.ts +2 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-bdfcc2e2.js +0 -59
- package/dist/sankhyablocks/p-db45a464.entry.js +0 -1
@@ -1,7 +1,7 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
3
|
const core = require('@sankhyalabs/core');
|
4
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
4
|
+
const dataunitFetcher = require('./dataunit-fetcher-a8bac9cc.js');
|
5
5
|
|
6
6
|
class SnkMultiSelectionListDataSource {
|
7
7
|
setDataUnit(dataUnit) {
|
@@ -33,6 +33,9 @@ class ArrayRepository {
|
|
33
33
|
for (const item of this._list) {
|
34
34
|
const processedItem = itemProcessor(item);
|
35
35
|
if (processedItem == undefined) {
|
36
|
+
continue;
|
37
|
+
}
|
38
|
+
if (processedItem.value == undefined) {
|
36
39
|
hasEmpty = true;
|
37
40
|
continue;
|
38
41
|
}
|
@@ -128,26 +131,25 @@ class PreloadManager {
|
|
128
131
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
129
132
|
return Promise.resolve(undefined);
|
130
133
|
}
|
134
|
+
let filterFunction;
|
135
|
+
const request = dataUnit.getLastLoadRequest();
|
136
|
+
if (request != undefined) {
|
137
|
+
const columnFilters = PreloadManager.getColumnFilters(request.filters);
|
138
|
+
filterFunction = PreloadManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
139
|
+
}
|
131
140
|
return new Promise((accept, reject) => {
|
132
141
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
142
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
143
|
+
return undefined;
|
144
|
+
}
|
133
145
|
const fieldValue = record[fieldName];
|
134
146
|
if (fieldValue == undefined) {
|
135
|
-
return
|
147
|
+
return { key: null, value: null };
|
136
148
|
}
|
137
149
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
138
150
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
139
151
|
})
|
140
|
-
.then(result =>
|
141
|
-
if (result != undefined && result.size > 0) {
|
142
|
-
const field = dataUnit.getField(fieldName);
|
143
|
-
const sortedMap = new Map(Array.from(result.entries())
|
144
|
-
.sort((itemA, itemB) => core.FieldComparator.compareValues(field, itemA[1], itemB[1]))
|
145
|
-
.map(([key, value]) => key === "" ? ["(Vazio)", value] : [key, value]));
|
146
|
-
accept(sortedMap);
|
147
|
-
return;
|
148
|
-
}
|
149
|
-
accept(result);
|
150
|
-
})
|
152
|
+
.then(result => accept(result))
|
151
153
|
.catch(reason => reject(reason));
|
152
154
|
});
|
153
155
|
}
|
@@ -161,7 +163,7 @@ class PreloadManager {
|
|
161
163
|
return PreloadManager.loadFromCache(dataUnit, request);
|
162
164
|
}
|
163
165
|
}
|
164
|
-
//Como não vamos aproveitar o cache, ele precisa ser
|
166
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
165
167
|
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
166
168
|
}
|
167
169
|
return loadFromServer(dataUnit, request);
|
@@ -231,7 +233,7 @@ class PreloadManager {
|
|
231
233
|
.then(loadResult => {
|
232
234
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
233
235
|
const { count, result: records } = loadResult;
|
234
|
-
const firstRecord = count == 0 ?
|
236
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
235
237
|
const lastRecord = offset + Math.min(records.length, limit);
|
236
238
|
const currentPage = offset / limit;
|
237
239
|
const paginationInfo = {
|
@@ -377,17 +379,36 @@ class DatasetStrategy {
|
|
377
379
|
return Promise.resolve({ records: [], loadingInfo });
|
378
380
|
}
|
379
381
|
try {
|
382
|
+
const localSorting = [];
|
383
|
+
const serverSorting = [];
|
384
|
+
if (request.sort != undefined) {
|
385
|
+
for (const sort of request.sort) {
|
386
|
+
const descriptor = dataUnit.getField(sort.field);
|
387
|
+
const local = descriptor != undefined
|
388
|
+
&& descriptor.properties != undefined
|
389
|
+
&& descriptor.properties.calculated === "true";
|
390
|
+
if (local) {
|
391
|
+
localSorting.push(sort);
|
392
|
+
}
|
393
|
+
else {
|
394
|
+
serverSorting.push(sort);
|
395
|
+
}
|
396
|
+
}
|
397
|
+
}
|
380
398
|
const fields = this.getFieldsList(dataUnit);
|
381
399
|
const serviceName = "DatasetSP.loadRecords";
|
382
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo);
|
383
|
-
const {
|
400
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
401
|
+
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
402
|
+
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
384
403
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
385
404
|
const loadingInProgress = pagerId != undefined;
|
386
405
|
const count = loadingInfo.count + records.length;
|
406
|
+
const needReload = !loadingInProgress && localSorting.length > 0;
|
387
407
|
return Promise.resolve({
|
388
408
|
records,
|
389
409
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
390
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count
|
410
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
411
|
+
needReload })
|
391
412
|
});
|
392
413
|
}
|
393
414
|
catch (error) {
|
@@ -397,9 +418,10 @@ class DatasetStrategy {
|
|
397
418
|
}
|
398
419
|
getFieldsList(dataUnit) {
|
399
420
|
let fields = ["__record__id__", "__record__label__"];
|
400
|
-
dataUnit.metadata.fields.forEach(descriptor => {
|
401
|
-
if (descriptor.standAlone)
|
421
|
+
dataUnit.metadata.fields.forEach((descriptor) => {
|
422
|
+
if (descriptor.standAlone) {
|
402
423
|
return;
|
424
|
+
}
|
403
425
|
fields = fields.concat(this.getFieldNames(descriptor));
|
404
426
|
});
|
405
427
|
return fields;
|
@@ -411,7 +433,7 @@ class DatasetStrategy {
|
|
411
433
|
}
|
412
434
|
return [descriptor.name, descriptionField];
|
413
435
|
}
|
414
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo) {
|
436
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
415
437
|
const dataSetID = dataUnit.dataUnitId;
|
416
438
|
const dataUnitName = dataUnit.name;
|
417
439
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -432,13 +454,13 @@ class DatasetStrategy {
|
|
432
454
|
tryJoinedFields: true,
|
433
455
|
parallelLoader: true,
|
434
456
|
crudListener: "br.com.sankhya.modelcore.dataset.DataUnitDatasetAdapter",
|
435
|
-
txProperties: this.getTxProperties(dataUnitName, request),
|
457
|
+
txProperties: this.getTxProperties(dataUnitName, request, sorting),
|
436
458
|
useDefaultRowsLimit: false
|
437
459
|
}
|
438
460
|
};
|
439
461
|
return JSON.stringify(requestBody);
|
440
462
|
}
|
441
|
-
getTxProperties(dataUnitName, request) {
|
463
|
+
getTxProperties(dataUnitName, request, sorting) {
|
442
464
|
const txProperties = {
|
443
465
|
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnitName
|
444
466
|
};
|
@@ -446,7 +468,6 @@ class DatasetStrategy {
|
|
446
468
|
if (serverSideFilters.length !== 0) {
|
447
469
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
448
470
|
}
|
449
|
-
const sorting = request.sort;
|
450
471
|
if (sorting != undefined && sorting.length !== 0) {
|
451
472
|
txProperties["__DATA_UNIT_ADAPTER__[sorting]"] = JSON.stringify(sorting);
|
452
473
|
}
|
@@ -553,7 +574,7 @@ class DataUnitDataLoader {
|
|
553
574
|
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
554
575
|
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
555
576
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
556
|
-
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1 });
|
577
|
+
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
557
578
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
558
579
|
.then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
|
559
580
|
.catch(reason => console.error(reason));
|
@@ -571,6 +592,11 @@ class DataUnitDataLoader {
|
|
571
592
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { count }));
|
572
593
|
return;
|
573
594
|
}
|
595
|
+
if (loadingInfo.needReload) {
|
596
|
+
//Ir para a primeira página, faz com que o loadData seja chamado novamente
|
597
|
+
dataUnit.gotoPage(0);
|
598
|
+
return;
|
599
|
+
}
|
574
600
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { total: count, count }));
|
575
601
|
}
|
576
602
|
static registryLoading(dataUnit, loadingInfo) {
|
@@ -11,7 +11,7 @@ require('./index-0e663819.js');
|
|
11
11
|
require('./ISave-d68ce3cd.js');
|
12
12
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
13
13
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
14
|
-
require('./dataunit-fetcher-
|
14
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
15
15
|
require('./filter-item-type.enum-aa823a00.js');
|
16
16
|
require('./form-config-fetcher-5e5ec5be.js');
|
17
17
|
const ResourceIDUtils = require('./ResourceIDUtils-5ff86aa7.js');
|
@@ -8,7 +8,7 @@ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
|
8
8
|
const ConfigStorage = require('./ConfigStorage-bdb539ce.js');
|
9
9
|
const DataFetcher = require('./DataFetcher-016f1661.js');
|
10
10
|
const authFetcher = require('./auth-fetcher-73ee0989.js');
|
11
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
11
|
+
const dataunitFetcher = require('./dataunit-fetcher-a8bac9cc.js');
|
12
12
|
const pesquisaFetcher = require('./pesquisa-fetcher-63a8c652.js');
|
13
13
|
const SnkMessageBuilder = require('./SnkMessageBuilder-dbc8d14e.js');
|
14
14
|
require('./form-config-fetcher-5e5ec5be.js');
|
@@ -7,7 +7,7 @@ const core = require('@sankhyalabs/core');
|
|
7
7
|
const DataFetcher = require('./DataFetcher-016f1661.js');
|
8
8
|
const ISave = require('./ISave-d68ce3cd.js');
|
9
9
|
const constants = require('./constants-d187e03e.js');
|
10
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
10
|
+
const dataunitFetcher = require('./dataunit-fetcher-a8bac9cc.js');
|
11
11
|
const taskbarElements = require('./taskbar-elements-39949c7a.js');
|
12
12
|
require('./_commonjsHelpers-537d719a.js');
|
13
13
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
@@ -11,7 +11,7 @@ const index$1 = require('./index-0e663819.js');
|
|
11
11
|
require('./ISave-d68ce3cd.js');
|
12
12
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
13
13
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
14
|
-
require('./dataunit-fetcher-
|
14
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
15
15
|
require('./filter-item-type.enum-aa823a00.js');
|
16
16
|
require('./form-config-fetcher-5e5ec5be.js');
|
17
17
|
const constants = require('./constants-d187e03e.js');
|
@@ -12,12 +12,12 @@ const index$1 = require('./index-0e663819.js');
|
|
12
12
|
require('./ISave-d68ce3cd.js');
|
13
13
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
14
14
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
15
|
-
require('./dataunit-fetcher-
|
15
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
16
16
|
require('./filter-item-type.enum-aa823a00.js');
|
17
17
|
require('./form-config-fetcher-5e5ec5be.js');
|
18
18
|
const taskbarElements = require('./taskbar-elements-39949c7a.js');
|
19
19
|
const constants = require('./constants-d187e03e.js');
|
20
|
-
const snkGuidesViewer = require('./snk-guides-viewer-
|
20
|
+
const snkGuidesViewer = require('./snk-guides-viewer-00e028f1.js');
|
21
21
|
const SnkMessageBuilder = require('./SnkMessageBuilder-dbc8d14e.js');
|
22
22
|
require('./ConfigStorage-bdb539ce.js');
|
23
23
|
require('./_commonjsHelpers-537d719a.js');
|
@@ -10,14 +10,14 @@ const ConfigStorage = require('./ConfigStorage-bdb539ce.js');
|
|
10
10
|
const index$1 = require('./index-0e663819.js');
|
11
11
|
const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
|
12
12
|
const index$2 = require('./index-102ba62d.js');
|
13
|
-
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-
|
13
|
+
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-4f7a031a.js');
|
14
14
|
const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
|
15
15
|
require('./form-config-fetcher-5e5ec5be.js');
|
16
16
|
require('./DataFetcher-016f1661.js');
|
17
17
|
require('./_commonjsHelpers-537d719a.js');
|
18
18
|
require('./PrintUtils-bcaeb82f.js');
|
19
19
|
require('./filter-item-type.enum-aa823a00.js');
|
20
|
-
require('./dataunit-fetcher-
|
20
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
21
21
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
22
22
|
require('./ResourceIDUtils-5ff86aa7.js');
|
23
23
|
|
@@ -112,6 +112,7 @@ const SnkGrid = class {
|
|
112
112
|
if (this._gridConfig && this._dataUnit) {
|
113
113
|
this._dataUnit.defaultSorting = this._gridConfig
|
114
114
|
.columns
|
115
|
+
.filter(col => col.ascending != undefined)
|
115
116
|
.sort((colA, colB) => colA.orderIndex - colB.orderIndex)
|
116
117
|
.map(({ name: field, ascending }) => {
|
117
118
|
const { dataType } = this._dataUnit.getField(field);
|
@@ -13,7 +13,7 @@ const index$1 = require('./index-0e663819.js');
|
|
13
13
|
require('./ISave-d68ce3cd.js');
|
14
14
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
15
15
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
16
|
-
require('./dataunit-fetcher-
|
16
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
17
17
|
require('./filter-item-type.enum-aa823a00.js');
|
18
18
|
require('./form-config-fetcher-5e5ec5be.js');
|
19
19
|
const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
const snkGuidesViewer = require('./snk-guides-viewer-
|
5
|
+
const snkGuidesViewer = require('./snk-guides-viewer-00e028f1.js');
|
6
6
|
require('./index-f9e81701.js');
|
7
7
|
require('@sankhyalabs/core');
|
8
8
|
require('./SnkFormConfigManager-c9d38de1.js');
|
@@ -22,7 +22,7 @@ require('./constants-d187e03e.js');
|
|
22
22
|
require('./pesquisa-fetcher-63a8c652.js');
|
23
23
|
require('./ISave-d68ce3cd.js');
|
24
24
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
25
|
-
require('./dataunit-fetcher-
|
25
|
+
require('./dataunit-fetcher-a8bac9cc.js');
|
26
26
|
require('./ResourceIDUtils-5ff86aa7.js');
|
27
27
|
require('@sankhyalabs/core/dist/dataunit/DataUnit');
|
28
28
|
|
@@ -12,11 +12,11 @@ const index$1 = require('./index-0e663819.js');
|
|
12
12
|
require('./ISave-d68ce3cd.js');
|
13
13
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
14
14
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
15
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
15
|
+
const dataunitFetcher = require('./dataunit-fetcher-a8bac9cc.js');
|
16
16
|
require('./filter-item-type.enum-aa823a00.js');
|
17
17
|
require('./form-config-fetcher-5e5ec5be.js');
|
18
18
|
const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
|
19
|
-
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-
|
19
|
+
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-4f7a031a.js');
|
20
20
|
require('./index-102ba62d.js');
|
21
21
|
require('./_commonjsHelpers-537d719a.js');
|
22
22
|
require('./PrintUtils-bcaeb82f.js');
|
@@ -95,6 +95,7 @@ export class SnkGrid {
|
|
95
95
|
if (this._gridConfig && this._dataUnit) {
|
96
96
|
this._dataUnit.defaultSorting = this._gridConfig
|
97
97
|
.columns
|
98
|
+
.filter(col => col.ascending != undefined)
|
98
99
|
.sort((colA, colB) => colA.orderIndex - colB.orderIndex)
|
99
100
|
.map(({ name: field, ascending }) => {
|
100
101
|
const { dataType } = this._dataUnit.getField(field);
|
@@ -55,7 +55,7 @@ export default class DataUnitDataLoader {
|
|
55
55
|
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
56
56
|
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
57
57
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
58
|
-
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1 });
|
58
|
+
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
59
59
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
60
60
|
.then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
|
61
61
|
.catch(reason => console.error(reason));
|
@@ -73,6 +73,11 @@ export default class DataUnitDataLoader {
|
|
73
73
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { count }));
|
74
74
|
return;
|
75
75
|
}
|
76
|
+
if (loadingInfo.needReload) {
|
77
|
+
//Ir para a primeira página, faz com que o loadData seja chamado novamente
|
78
|
+
dataUnit.gotoPage(0);
|
79
|
+
return;
|
80
|
+
}
|
76
81
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { total: count, count }));
|
77
82
|
}
|
78
83
|
static registryLoading(dataUnit, loadingInfo) {
|
@@ -45,26 +45,25 @@ export default class PreloadManager {
|
|
45
45
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
46
46
|
return Promise.resolve(undefined);
|
47
47
|
}
|
48
|
+
let filterFunction;
|
49
|
+
const request = dataUnit.getLastLoadRequest();
|
50
|
+
if (request != undefined) {
|
51
|
+
const columnFilters = PreloadManager.getColumnFilters(request.filters);
|
52
|
+
filterFunction = PreloadManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
53
|
+
}
|
48
54
|
return new Promise((accept, reject) => {
|
49
55
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
56
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
57
|
+
return undefined;
|
58
|
+
}
|
50
59
|
const fieldValue = record[fieldName];
|
51
60
|
if (fieldValue == undefined) {
|
52
|
-
return
|
61
|
+
return { key: null, value: null };
|
53
62
|
}
|
54
63
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
55
64
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
56
65
|
})
|
57
|
-
.then(result =>
|
58
|
-
if (result != undefined && result.size > 0) {
|
59
|
-
const field = dataUnit.getField(fieldName);
|
60
|
-
const sortedMap = new Map(Array.from(result.entries())
|
61
|
-
.sort((itemA, itemB) => FieldComparator.compareValues(field, itemA[1], itemB[1]))
|
62
|
-
.map(([key, value]) => key === "" ? ["(Vazio)", value] : [key, value]));
|
63
|
-
accept(sortedMap);
|
64
|
-
return;
|
65
|
-
}
|
66
|
-
accept(result);
|
67
|
-
})
|
66
|
+
.then(result => accept(result))
|
68
67
|
.catch(reason => reject(reason));
|
69
68
|
});
|
70
69
|
}
|
@@ -78,7 +77,7 @@ export default class PreloadManager {
|
|
78
77
|
return PreloadManager.loadFromCache(dataUnit, request);
|
79
78
|
}
|
80
79
|
}
|
81
|
-
//Como não vamos aproveitar o cache, ele precisa ser
|
80
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
82
81
|
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
83
82
|
}
|
84
83
|
return loadFromServer(dataUnit, request);
|
@@ -148,7 +147,7 @@ export default class PreloadManager {
|
|
148
147
|
.then(loadResult => {
|
149
148
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
150
149
|
const { count, result: records } = loadResult;
|
151
|
-
const firstRecord = count == 0 ?
|
150
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
152
151
|
const lastRecord = offset + Math.min(records.length, limit);
|
153
152
|
const currentPage = offset / limit;
|
154
153
|
const paginationInfo = {
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -11,17 +11,36 @@ export class DatasetStrategy {
|
|
11
11
|
return Promise.resolve({ records: [], loadingInfo });
|
12
12
|
}
|
13
13
|
try {
|
14
|
+
const localSorting = [];
|
15
|
+
const serverSorting = [];
|
16
|
+
if (request.sort != undefined) {
|
17
|
+
for (const sort of request.sort) {
|
18
|
+
const descriptor = dataUnit.getField(sort.field);
|
19
|
+
const local = descriptor != undefined
|
20
|
+
&& descriptor.properties != undefined
|
21
|
+
&& descriptor.properties.calculated === "true";
|
22
|
+
if (local) {
|
23
|
+
localSorting.push(sort);
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
serverSorting.push(sort);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
14
30
|
const fields = this.getFieldsList(dataUnit);
|
15
31
|
const serviceName = "DatasetSP.loadRecords";
|
16
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo);
|
17
|
-
const {
|
32
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
33
|
+
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
34
|
+
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
18
35
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
19
36
|
const loadingInProgress = pagerId != undefined;
|
20
37
|
const count = loadingInfo.count + records.length;
|
38
|
+
const needReload = !loadingInProgress && localSorting.length > 0;
|
21
39
|
return Promise.resolve({
|
22
40
|
records,
|
23
41
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
24
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count
|
42
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
43
|
+
needReload })
|
25
44
|
});
|
26
45
|
}
|
27
46
|
catch (error) {
|
@@ -31,9 +50,10 @@ export class DatasetStrategy {
|
|
31
50
|
}
|
32
51
|
getFieldsList(dataUnit) {
|
33
52
|
let fields = ["__record__id__", "__record__label__"];
|
34
|
-
dataUnit.metadata.fields.forEach(descriptor => {
|
35
|
-
if (descriptor.standAlone)
|
53
|
+
dataUnit.metadata.fields.forEach((descriptor) => {
|
54
|
+
if (descriptor.standAlone) {
|
36
55
|
return;
|
56
|
+
}
|
37
57
|
fields = fields.concat(this.getFieldNames(descriptor));
|
38
58
|
});
|
39
59
|
return fields;
|
@@ -45,7 +65,7 @@ export class DatasetStrategy {
|
|
45
65
|
}
|
46
66
|
return [descriptor.name, descriptionField];
|
47
67
|
}
|
48
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo) {
|
68
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
49
69
|
const dataSetID = dataUnit.dataUnitId;
|
50
70
|
const dataUnitName = dataUnit.name;
|
51
71
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -66,13 +86,13 @@ export class DatasetStrategy {
|
|
66
86
|
tryJoinedFields: true,
|
67
87
|
parallelLoader: true,
|
68
88
|
crudListener: "br.com.sankhya.modelcore.dataset.DataUnitDatasetAdapter",
|
69
|
-
txProperties: this.getTxProperties(dataUnitName, request),
|
89
|
+
txProperties: this.getTxProperties(dataUnitName, request, sorting),
|
70
90
|
useDefaultRowsLimit: false
|
71
91
|
}
|
72
92
|
};
|
73
93
|
return JSON.stringify(requestBody);
|
74
94
|
}
|
75
|
-
getTxProperties(dataUnitName, request) {
|
95
|
+
getTxProperties(dataUnitName, request, sorting) {
|
76
96
|
const txProperties = {
|
77
97
|
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnitName
|
78
98
|
};
|
@@ -80,7 +100,6 @@ export class DatasetStrategy {
|
|
80
100
|
if (serverSideFilters.length !== 0) {
|
81
101
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
82
102
|
}
|
83
|
-
const sorting = request.sort;
|
84
103
|
if (sorting != undefined && sorting.length !== 0) {
|
85
104
|
txProperties["__DATA_UNIT_ADAPTER__[sorting]"] = JSON.stringify(sorting);
|
86
105
|
}
|