@sankhyalabs/sankhyablocks 8.8.0-rc.9 → 8.8.0
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/{ConfigStorage-908ce5bc.js → ConfigStorage-c15716fd.js} +3 -0
- package/dist/cjs/PreloadManager-e26d237f.js +224 -0
- package/dist/cjs/{SnkFormConfigManager-793ade39.js → SnkFormConfigManager-29101e20.js} +1 -1
- package/dist/cjs/{SnkMultiSelectionListDataSource-f000a53f.js → SnkMultiSelectionListDataSource-d74d2336.js} +10 -6
- package/dist/cjs/{dataunit-fetcher-e86cba8a.js → dataunit-fetcher-66c0b7af.js} +10 -267
- package/dist/cjs/snk-actions-button.cjs.entry.js +3 -1
- package/dist/cjs/snk-application.cjs.entry.js +4 -2
- package/dist/cjs/snk-attach.cjs.entry.js +3 -1
- package/dist/cjs/snk-crud.cjs.entry.js +3 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +6 -4
- package/dist/cjs/snk-filter-bar.cjs.entry.js +1 -1
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +1 -1
- package/dist/cjs/snk-form.cjs.entry.js +2 -2
- package/dist/cjs/snk-grid-config.cjs.entry.js +1 -1
- package/dist/cjs/snk-grid.cjs.entry.js +5 -5
- package/dist/cjs/{snk-guides-viewer-22e180b5.js → snk-guides-viewer-b173ce35.js} +3 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +6 -4
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +5 -2
- package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +15 -54
- package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +3 -0
- package/dist/components/ConfigStorage.js +3 -0
- package/dist/components/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/components/dataunit-fetcher.js +15 -53
- package/dist/esm/{ConfigStorage-48648d45.js → ConfigStorage-79c81f36.js} +3 -0
- package/dist/esm/PreloadManager-8826b96a.js +222 -0
- package/dist/esm/{SnkFormConfigManager-3c15f319.js → SnkFormConfigManager-7723f3ec.js} +1 -1
- package/dist/esm/{SnkMultiSelectionListDataSource-922f0941.js → SnkMultiSelectionListDataSource-27572f47.js} +6 -6
- package/dist/esm/{dataunit-fetcher-ec40608e.js → dataunit-fetcher-831feb12.js} +3 -259
- package/dist/esm/snk-actions-button.entry.js +3 -1
- package/dist/esm/snk-application.entry.js +4 -2
- package/dist/esm/snk-attach.entry.js +3 -1
- package/dist/esm/snk-crud.entry.js +3 -1
- package/dist/esm/snk-detail-view.entry.js +6 -4
- package/dist/esm/snk-filter-bar.entry.js +1 -1
- package/dist/esm/snk-filter-modal-item.entry.js +1 -1
- package/dist/esm/snk-form.entry.js +2 -2
- package/dist/esm/snk-grid-config.entry.js +1 -1
- package/dist/esm/snk-grid.entry.js +5 -5
- package/dist/esm/{snk-guides-viewer-f5f50062.js → snk-guides-viewer-e62e0edc.js} +3 -2
- package/dist/esm/snk-guides-viewer.entry.js +6 -4
- package/dist/esm/snk-personalized-filter.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +5 -2
- package/dist/sankhyablocks/{p-abff11ef.entry.js → p-06e76ed2.entry.js} +1 -1
- package/dist/sankhyablocks/p-29176742.js +56 -0
- package/dist/sankhyablocks/{p-8015cbfb.js → p-2e6f1666.js} +1 -1
- package/dist/sankhyablocks/{p-2ecd9a19.entry.js → p-3bf4df20.entry.js} +1 -1
- package/dist/sankhyablocks/p-3c4f0354.js +1 -0
- package/dist/sankhyablocks/p-3ccb321d.entry.js +1 -0
- package/dist/sankhyablocks/{p-afacdce6.entry.js → p-47e4b6c9.entry.js} +1 -1
- package/dist/sankhyablocks/{p-395567f3.entry.js → p-4f5b995d.entry.js} +1 -1
- package/dist/sankhyablocks/p-5f6113c8.js +60 -0
- package/dist/sankhyablocks/{p-3c884841.entry.js → p-72b32e25.entry.js} +2 -2
- package/dist/sankhyablocks/p-77756526.js +1 -0
- package/dist/sankhyablocks/{p-f07a5363.entry.js → p-848b2e3b.entry.js} +1 -1
- package/dist/sankhyablocks/p-862e5bf6.entry.js +1 -0
- package/dist/sankhyablocks/p-95b05e58.entry.js +1 -0
- package/dist/sankhyablocks/p-a1cce4f5.entry.js +1 -0
- package/dist/sankhyablocks/p-d32fe25e.js +1 -0
- package/dist/sankhyablocks/p-eb1561bf.entry.js +1 -0
- package/dist/sankhyablocks/p-f1743d68.entry.js +1 -0
- package/dist/sankhyablocks/p-f2e798f1.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +1 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +3 -6
- package/package.json +4 -4
- package/dist/sankhyablocks/p-2b39abbc.js +0 -56
- package/dist/sankhyablocks/p-3307f385.entry.js +0 -1
- package/dist/sankhyablocks/p-3fd5b4c1.entry.js +0 -1
- package/dist/sankhyablocks/p-43cbd6ba.js +0 -1
- package/dist/sankhyablocks/p-5b4b85a9.entry.js +0 -1
- package/dist/sankhyablocks/p-63784e83.js +0 -1
- package/dist/sankhyablocks/p-9713c75c.js +0 -60
- package/dist/sankhyablocks/p-c0c48f19.entry.js +0 -1
- package/dist/sankhyablocks/p-e040c626.entry.js +0 -1
- package/dist/sankhyablocks/p-ea573860.entry.js +0 -1
- package/dist/sankhyablocks/p-efc9b851.entry.js +0 -1
@@ -273,6 +273,9 @@ class PersonalizedFilterFetcher {
|
|
273
273
|
});
|
274
274
|
}
|
275
275
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
276
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
277
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
278
|
+
}
|
276
279
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
277
280
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
278
281
|
return new Promise((resolve, reject) => {
|
@@ -0,0 +1,224 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
const core = require('@sankhyalabs/core');
|
4
|
+
const utils = require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
5
|
+
|
6
|
+
class ArrayRepository {
|
7
|
+
constructor(equalsFunction) {
|
8
|
+
this._list = [];
|
9
|
+
this._equalsFunction = equalsFunction;
|
10
|
+
}
|
11
|
+
async load(filterFunction, sortingFunction, offset, limit) {
|
12
|
+
let result = [].concat(this._list);
|
13
|
+
if (filterFunction != undefined) {
|
14
|
+
result = this._list.filter(item => filterFunction(item));
|
15
|
+
}
|
16
|
+
if (sortingFunction != undefined) {
|
17
|
+
result = result.sort(sortingFunction);
|
18
|
+
}
|
19
|
+
const count = result.length;
|
20
|
+
if (limit != undefined) {
|
21
|
+
const start = offset || 0;
|
22
|
+
const end = limit ? start + limit : result.length;
|
23
|
+
result = result.slice(start, end);
|
24
|
+
}
|
25
|
+
return Promise.resolve({ result, count });
|
26
|
+
}
|
27
|
+
async distict(itemProcessor) {
|
28
|
+
const processedItems = [];
|
29
|
+
let hasEmpty = false;
|
30
|
+
for (const item of this._list) {
|
31
|
+
const processedItem = itemProcessor(item);
|
32
|
+
if (processedItem == undefined) {
|
33
|
+
continue;
|
34
|
+
}
|
35
|
+
if (processedItem.value == undefined) {
|
36
|
+
hasEmpty = true;
|
37
|
+
continue;
|
38
|
+
}
|
39
|
+
processedItems.push(processedItem);
|
40
|
+
}
|
41
|
+
if (hasEmpty) {
|
42
|
+
processedItems.push({ key: "", value: null });
|
43
|
+
}
|
44
|
+
return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
|
45
|
+
}
|
46
|
+
async push(items) {
|
47
|
+
this._list.push(...items);
|
48
|
+
}
|
49
|
+
async clear() {
|
50
|
+
this._list = [];
|
51
|
+
}
|
52
|
+
async delete(items) {
|
53
|
+
this._list = this._list.filter(item => {
|
54
|
+
for (const removed of items) {
|
55
|
+
if (this._equalsFunction(item, removed)) {
|
56
|
+
return false;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
return true;
|
60
|
+
});
|
61
|
+
}
|
62
|
+
async update(items) {
|
63
|
+
this._list = this._list.map(existingItem => {
|
64
|
+
const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
|
65
|
+
return newItem == undefined ? existingItem : newItem;
|
66
|
+
});
|
67
|
+
}
|
68
|
+
async insert(itemReference, items) {
|
69
|
+
const itemPosition = this._list.indexOf(itemReference);
|
70
|
+
if (itemPosition == -1) {
|
71
|
+
this._list.push(...items);
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
|
75
|
+
}
|
76
|
+
isOperating() {
|
77
|
+
return true;
|
78
|
+
}
|
79
|
+
async isEmpty() {
|
80
|
+
return Promise.resolve(this._list.length === 0);
|
81
|
+
}
|
82
|
+
async count() {
|
83
|
+
return Promise.resolve(this._list.length);
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
class PreloadManager {
|
88
|
+
static setLoadingStatus(dataUnit, loadingInProgress) {
|
89
|
+
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
90
|
+
}
|
91
|
+
static isCacheEnabled(_dataUnit) {
|
92
|
+
return true;
|
93
|
+
}
|
94
|
+
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
95
|
+
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
96
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
97
|
+
this.getRepository(dataUnit).push(records);
|
98
|
+
}
|
99
|
+
else {
|
100
|
+
if (resetDatabase) {
|
101
|
+
this._repositories.delete(dataUnit.name);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
static getSortingFunction(dataUnit, sorting) {
|
106
|
+
if (sorting == undefined || sorting.length == 0) {
|
107
|
+
return undefined;
|
108
|
+
}
|
109
|
+
return (recordA, recordB) => {
|
110
|
+
for (const sort of sorting) {
|
111
|
+
const result = core.FieldComparator.compare(dataUnit.getField(sort.field), recordA, recordB, sort.mode === core.SortMode.ASC);
|
112
|
+
if (result != 0) {
|
113
|
+
return result;
|
114
|
+
}
|
115
|
+
}
|
116
|
+
};
|
117
|
+
}
|
118
|
+
static async getDistinct(dataUnit, fieldName) {
|
119
|
+
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
120
|
+
return Promise.resolve(utils.ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
121
|
+
}
|
122
|
+
let filterFunction;
|
123
|
+
const request = dataUnit.getLastLoadRequest();
|
124
|
+
if (request != undefined) {
|
125
|
+
const columnFilters = utils.ColumnFilterManager.getColumnFilters(request.filters);
|
126
|
+
filterFunction = utils.ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
127
|
+
}
|
128
|
+
return new Promise((accept, reject) => {
|
129
|
+
PreloadManager.getRepository(dataUnit).distict(record => {
|
130
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
131
|
+
return undefined;
|
132
|
+
}
|
133
|
+
const fieldValue = record[fieldName];
|
134
|
+
if (fieldValue == undefined) {
|
135
|
+
return { key: null, value: null };
|
136
|
+
}
|
137
|
+
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
138
|
+
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
139
|
+
})
|
140
|
+
.then(result => {
|
141
|
+
if (result == undefined) {
|
142
|
+
accept(undefined);
|
143
|
+
return;
|
144
|
+
}
|
145
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
146
|
+
})
|
147
|
+
.catch(reason => reject(reason));
|
148
|
+
});
|
149
|
+
}
|
150
|
+
static async loadData(dataUnit, request, loadFromServer) {
|
151
|
+
try {
|
152
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
153
|
+
let useCache = request.source === "EZ_GRID_LOADING_SOURCE" || request.source === core.DataUnit.CHANGING_PAGE_LOADING_SOURCE;
|
154
|
+
if (useCache) {
|
155
|
+
const isCacheEmpty = await PreloadManager.getRepository(dataUnit).isEmpty();
|
156
|
+
if (!isCacheEmpty) {
|
157
|
+
return PreloadManager.loadFromCache(dataUnit, request);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
161
|
+
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
162
|
+
}
|
163
|
+
return loadFromServer(dataUnit, request);
|
164
|
+
}
|
165
|
+
catch (error) {
|
166
|
+
console.error(error);
|
167
|
+
return Promise.reject(error);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
static insertRecords(dataUnit, reference, records) {
|
171
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
172
|
+
PreloadManager.getRepository(dataUnit).insert(reference, records);
|
173
|
+
}
|
174
|
+
}
|
175
|
+
static updateRecords(dataUnit, records) {
|
176
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
177
|
+
PreloadManager.getRepository(dataUnit).update(records);
|
178
|
+
}
|
179
|
+
}
|
180
|
+
static removeRecords(dataUnit, records) {
|
181
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
182
|
+
PreloadManager.getRepository(dataUnit).delete(records);
|
183
|
+
}
|
184
|
+
}
|
185
|
+
static async countRecords(dataUnit) {
|
186
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
187
|
+
return PreloadManager.getRepository(dataUnit).count();
|
188
|
+
}
|
189
|
+
return Promise.resolve(0);
|
190
|
+
}
|
191
|
+
static getRepository(dataUnit) {
|
192
|
+
const name = dataUnit.name;
|
193
|
+
if (!PreloadManager._repositories.has(name)) {
|
194
|
+
PreloadManager._repositories.set(name, new ArrayRepository((recordA, recordB) => recordA.__record__id__ === recordB.__record__id__));
|
195
|
+
}
|
196
|
+
return PreloadManager._repositories.get(name);
|
197
|
+
}
|
198
|
+
static async loadFromCache(dataUnit, request) {
|
199
|
+
return new Promise((accept, reject) => {
|
200
|
+
const columnFilters = utils.ColumnFilterManager.getColumnFilters(request.filters);
|
201
|
+
const { limit, offset, sort } = request;
|
202
|
+
PreloadManager.getRepository(dataUnit)
|
203
|
+
.load(utils.ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
204
|
+
.then(loadResult => {
|
205
|
+
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
206
|
+
const { count, result: records } = loadResult;
|
207
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
208
|
+
const lastRecord = offset + Math.min(records.length, limit);
|
209
|
+
const currentPage = offset / limit;
|
210
|
+
const paginationInfo = {
|
211
|
+
count, currentPage, firstRecord, lastRecord,
|
212
|
+
hasMore: stillLoading || (lastRecord < count),
|
213
|
+
total: stillLoading ? undefined : count
|
214
|
+
};
|
215
|
+
accept({ records, paginationInfo });
|
216
|
+
})
|
217
|
+
.catch(reason => reject(reason));
|
218
|
+
});
|
219
|
+
}
|
220
|
+
}
|
221
|
+
PreloadManager._repositories = new Map();
|
222
|
+
PreloadManager._loadingStatus = new Map();
|
223
|
+
|
224
|
+
exports.PreloadManager = PreloadManager;
|
@@ -1,7 +1,12 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
3
|
const core = require('@sankhyalabs/core');
|
4
|
-
const
|
4
|
+
const InMemoryFilterColumnDataSource = require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
|
5
|
+
const PreloadManager = require('./PreloadManager-e26d237f.js');
|
6
|
+
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
8
|
+
|
9
|
+
const InMemoryFilterColumnDataSource__default = /*#__PURE__*/_interopDefaultLegacy(InMemoryFilterColumnDataSource);
|
5
10
|
|
6
11
|
class SnkMultiSelectionListDataSource {
|
7
12
|
setDataUnit(dataUnit) {
|
@@ -21,11 +26,7 @@ class SnkMultiSelectionListDataSource {
|
|
21
26
|
if (fieldName == undefined) {
|
22
27
|
return Promise.resolve(undefined);
|
23
28
|
}
|
24
|
-
|
25
|
-
if (result == undefined) {
|
26
|
-
return Promise.resolve(undefined);
|
27
|
-
}
|
28
|
-
return Promise.resolve(Array.from(result.entries()).map(([label, value]) => ({ label: String(label), value, check: true })));
|
29
|
+
return Promise.resolve(await PreloadManager.PreloadManager.getDistinct(this._dataUnit, fieldName));
|
29
30
|
}
|
30
31
|
fetchData(filterTerm, fieldName) {
|
31
32
|
return new Promise(resolve => {
|
@@ -40,6 +41,9 @@ class SnkMultiSelectionListDataSource {
|
|
40
41
|
});
|
41
42
|
});
|
42
43
|
}
|
44
|
+
sortItems(fieldName, items) {
|
45
|
+
return InMemoryFilterColumnDataSource__default['default'].defaultSorterMultSelectionOption(this._dataUnit, fieldName, items);
|
46
|
+
}
|
43
47
|
}
|
44
48
|
|
45
49
|
exports.SnkMultiSelectionListDataSource = SnkMultiSelectionListDataSource;
|
@@ -4,265 +4,9 @@ const core = require('@sankhyalabs/core');
|
|
4
4
|
const DataFetcher = require('./DataFetcher-713f0749.js');
|
5
5
|
const constants = require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
6
6
|
const UnitMetadata = require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
7
|
+
const PreloadManager = require('./PreloadManager-e26d237f.js');
|
7
8
|
const ResourceIDUtils = require('./ResourceIDUtils-5ff86aa7.js');
|
8
9
|
|
9
|
-
class ArrayRepository {
|
10
|
-
constructor(equalsFunction) {
|
11
|
-
this._list = [];
|
12
|
-
this._equalsFunction = equalsFunction;
|
13
|
-
}
|
14
|
-
async load(filterFunction, sortingFunction, offset, limit) {
|
15
|
-
let result = [].concat(this._list);
|
16
|
-
if (filterFunction != undefined) {
|
17
|
-
result = this._list.filter(item => filterFunction(item));
|
18
|
-
}
|
19
|
-
if (sortingFunction != undefined) {
|
20
|
-
result = result.sort(sortingFunction);
|
21
|
-
}
|
22
|
-
const count = result.length;
|
23
|
-
if (limit != undefined) {
|
24
|
-
const start = offset || 0;
|
25
|
-
const end = limit ? start + limit : result.length;
|
26
|
-
result = result.slice(start, end);
|
27
|
-
}
|
28
|
-
return Promise.resolve({ result, count });
|
29
|
-
}
|
30
|
-
async distict(itemProcessor) {
|
31
|
-
const processedItems = [];
|
32
|
-
let hasEmpty = false;
|
33
|
-
for (const item of this._list) {
|
34
|
-
const processedItem = itemProcessor(item);
|
35
|
-
if (processedItem == undefined) {
|
36
|
-
continue;
|
37
|
-
}
|
38
|
-
if (processedItem.value == undefined) {
|
39
|
-
hasEmpty = true;
|
40
|
-
continue;
|
41
|
-
}
|
42
|
-
processedItems.push(processedItem);
|
43
|
-
}
|
44
|
-
if (hasEmpty) {
|
45
|
-
processedItems.push({ key: "", value: null });
|
46
|
-
}
|
47
|
-
return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
|
48
|
-
}
|
49
|
-
async push(items) {
|
50
|
-
this._list.push(...items);
|
51
|
-
}
|
52
|
-
async clear() {
|
53
|
-
this._list = [];
|
54
|
-
}
|
55
|
-
async delete(items) {
|
56
|
-
this._list = this._list.filter(item => {
|
57
|
-
for (const removed of items) {
|
58
|
-
if (this._equalsFunction(item, removed)) {
|
59
|
-
return false;
|
60
|
-
}
|
61
|
-
}
|
62
|
-
return true;
|
63
|
-
});
|
64
|
-
}
|
65
|
-
async update(items) {
|
66
|
-
this._list = this._list.map(existingItem => {
|
67
|
-
const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
|
68
|
-
return newItem == undefined ? existingItem : newItem;
|
69
|
-
});
|
70
|
-
}
|
71
|
-
async insert(itemReference, items) {
|
72
|
-
const itemPosition = this._list.indexOf(itemReference);
|
73
|
-
if (itemPosition == -1) {
|
74
|
-
this._list.push(...items);
|
75
|
-
return;
|
76
|
-
}
|
77
|
-
this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
|
78
|
-
}
|
79
|
-
isOperating() {
|
80
|
-
return true;
|
81
|
-
}
|
82
|
-
async isEmpty() {
|
83
|
-
return Promise.resolve(this._list.length === 0);
|
84
|
-
}
|
85
|
-
async count() {
|
86
|
-
return Promise.resolve(this._list.length);
|
87
|
-
}
|
88
|
-
}
|
89
|
-
|
90
|
-
const COLUMN_FILTER_PATTERN = /FILTRO_COLUNA_(.+)/;
|
91
|
-
class PreloadManager {
|
92
|
-
static setLoadingStatus(dataUnit, loadingInProgress) {
|
93
|
-
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
94
|
-
}
|
95
|
-
static isCacheEnabled(dataUnit) {
|
96
|
-
const dataUnitResourceId = PreloadManager.getResourceId(dataUnit.name);
|
97
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
98
|
-
return false;
|
99
|
-
}
|
100
|
-
return this.getRepository(dataUnit).isOperating();
|
101
|
-
}
|
102
|
-
static getResourceId(dataUnitName) {
|
103
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
104
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
105
|
-
}
|
106
|
-
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
107
|
-
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
108
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
109
|
-
this.getRepository(dataUnit).push(records);
|
110
|
-
}
|
111
|
-
else {
|
112
|
-
if (resetDatabase) {
|
113
|
-
this._repositories.delete(dataUnit.name);
|
114
|
-
}
|
115
|
-
}
|
116
|
-
}
|
117
|
-
static getSortingFunction(dataUnit, sorting) {
|
118
|
-
if (sorting == undefined || sorting.length == 0) {
|
119
|
-
return undefined;
|
120
|
-
}
|
121
|
-
return (recordA, recordB) => {
|
122
|
-
for (const sort of sorting) {
|
123
|
-
const result = core.FieldComparator.compare(dataUnit.getField(sort.field), recordA, recordB, sort.mode === core.SortMode.ASC);
|
124
|
-
if (result != 0) {
|
125
|
-
return result;
|
126
|
-
}
|
127
|
-
}
|
128
|
-
};
|
129
|
-
}
|
130
|
-
static async getDistinct(dataUnit, fieldName) {
|
131
|
-
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
132
|
-
return Promise.resolve(undefined);
|
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
|
-
}
|
140
|
-
return new Promise((accept, reject) => {
|
141
|
-
PreloadManager.getRepository(dataUnit).distict(record => {
|
142
|
-
if (filterFunction != undefined && !filterFunction(record)) {
|
143
|
-
return undefined;
|
144
|
-
}
|
145
|
-
const fieldValue = record[fieldName];
|
146
|
-
if (fieldValue == undefined) {
|
147
|
-
return { key: null, value: null };
|
148
|
-
}
|
149
|
-
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
150
|
-
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
151
|
-
})
|
152
|
-
.then(result => accept(result))
|
153
|
-
.catch(reason => reject(reason));
|
154
|
-
});
|
155
|
-
}
|
156
|
-
static async loadData(dataUnit, request, loadFromServer) {
|
157
|
-
try {
|
158
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
159
|
-
let useCache = request.source === "EZ_GRID_LOADING_SOURCE" || request.source === core.DataUnit.CHANGING_PAGE_LOADING_SOURCE;
|
160
|
-
if (useCache) {
|
161
|
-
const isCacheEmpty = await PreloadManager.getRepository(dataUnit).isEmpty();
|
162
|
-
if (!isCacheEmpty) {
|
163
|
-
return PreloadManager.loadFromCache(dataUnit, request);
|
164
|
-
}
|
165
|
-
}
|
166
|
-
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
167
|
-
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
168
|
-
}
|
169
|
-
return loadFromServer(dataUnit, request);
|
170
|
-
}
|
171
|
-
catch (error) {
|
172
|
-
console.error(error);
|
173
|
-
return Promise.reject(error);
|
174
|
-
}
|
175
|
-
}
|
176
|
-
static insertRecords(dataUnit, reference, records) {
|
177
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
178
|
-
PreloadManager.getRepository(dataUnit).insert(reference, records);
|
179
|
-
}
|
180
|
-
}
|
181
|
-
static updateRecords(dataUnit, records) {
|
182
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
183
|
-
PreloadManager.getRepository(dataUnit).update(records);
|
184
|
-
}
|
185
|
-
}
|
186
|
-
static removeRecords(dataUnit, records) {
|
187
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
188
|
-
PreloadManager.getRepository(dataUnit).delete(records);
|
189
|
-
}
|
190
|
-
}
|
191
|
-
static async countRecords(dataUnit) {
|
192
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
193
|
-
return PreloadManager.getRepository(dataUnit).count();
|
194
|
-
}
|
195
|
-
return Promise.resolve(0);
|
196
|
-
}
|
197
|
-
static getRepository(dataUnit) {
|
198
|
-
const name = dataUnit.name;
|
199
|
-
if (!PreloadManager._repositories.has(name)) {
|
200
|
-
PreloadManager._repositories.set(name, new ArrayRepository((recordA, recordB) => recordA.__record__id__ === recordB.__record__id__));
|
201
|
-
}
|
202
|
-
return PreloadManager._repositories.get(name);
|
203
|
-
}
|
204
|
-
static getFilterFunction(dataUnit, filters) {
|
205
|
-
if (filters != undefined && filters.length > 0) {
|
206
|
-
return record => {
|
207
|
-
for (const filter of filters) {
|
208
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
209
|
-
return false;
|
210
|
-
}
|
211
|
-
}
|
212
|
-
return true;
|
213
|
-
};
|
214
|
-
}
|
215
|
-
return undefined;
|
216
|
-
}
|
217
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
218
|
-
const fieldValue = record[columnFilter.columnName];
|
219
|
-
for (let param of columnFilter.params) {
|
220
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
221
|
-
if (core.FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
222
|
-
return true;
|
223
|
-
}
|
224
|
-
}
|
225
|
-
return false;
|
226
|
-
}
|
227
|
-
static async loadFromCache(dataUnit, request) {
|
228
|
-
return new Promise((accept, reject) => {
|
229
|
-
const columnFilters = PreloadManager.getColumnFilters(request.filters);
|
230
|
-
const { limit, offset, sort } = request;
|
231
|
-
PreloadManager.getRepository(dataUnit)
|
232
|
-
.load(PreloadManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
233
|
-
.then(loadResult => {
|
234
|
-
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
235
|
-
const { count, result: records } = loadResult;
|
236
|
-
const firstRecord = count == 0 ? 0 : offset + 1;
|
237
|
-
const lastRecord = offset + Math.min(records.length, limit);
|
238
|
-
const currentPage = offset / limit;
|
239
|
-
const paginationInfo = {
|
240
|
-
count, currentPage, firstRecord, lastRecord,
|
241
|
-
hasMore: stillLoading || (lastRecord < count),
|
242
|
-
total: stillLoading ? undefined : count
|
243
|
-
};
|
244
|
-
accept({ records, paginationInfo });
|
245
|
-
})
|
246
|
-
.catch(reason => reject(reason));
|
247
|
-
});
|
248
|
-
}
|
249
|
-
static getColumnFilters(filters) {
|
250
|
-
const columnFilters = new Map();
|
251
|
-
if (filters == undefined || filters.length == 0) {
|
252
|
-
return columnFilters;
|
253
|
-
}
|
254
|
-
filters.forEach(filter => {
|
255
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
256
|
-
if (match) {
|
257
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
258
|
-
}
|
259
|
-
});
|
260
|
-
return columnFilters;
|
261
|
-
}
|
262
|
-
}
|
263
|
-
PreloadManager._repositories = new Map();
|
264
|
-
PreloadManager._loadingStatus = new Map();
|
265
|
-
|
266
10
|
class InMemoryLoader {
|
267
11
|
constructor(metadata, records) {
|
268
12
|
this.metadata = metadata;
|
@@ -534,7 +278,7 @@ class DataUnitDataLoader {
|
|
534
278
|
static async loadData(dataUnit, request) {
|
535
279
|
return new Promise((resolve, reject) => {
|
536
280
|
DataUnitDataLoader.debounce(dataUnit, () => {
|
537
|
-
PreloadManager.loadData(dataUnit, request, this.loadFromServer)
|
281
|
+
PreloadManager.PreloadManager.loadData(dataUnit, request, this.loadFromServer)
|
538
282
|
.then(resp => resolve(resp))
|
539
283
|
.catch(reason => reject(reason));
|
540
284
|
});
|
@@ -571,8 +315,8 @@ class DataUnitDataLoader {
|
|
571
315
|
return Promise.resolve(undefined);
|
572
316
|
}
|
573
317
|
const recreateCache = !dataLoader.canSlice() || responseLoadingInfo.count === 0;
|
574
|
-
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
575
|
-
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
318
|
+
PreloadManager.PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
319
|
+
if (PreloadManager.PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
576
320
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
577
321
|
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
578
322
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
@@ -582,7 +326,7 @@ class DataUnitDataLoader {
|
|
582
326
|
return Promise.resolve(result);
|
583
327
|
}
|
584
328
|
static afterLoadingPage(dataUnit, loadingInfo) {
|
585
|
-
PreloadManager.setLoadingStatus(dataUnit, loadingInfo.loadingInProgress);
|
329
|
+
PreloadManager.PreloadManager.setLoadingStatus(dataUnit, loadingInfo.loadingInProgress);
|
586
330
|
const dataUnitPagination = dataUnit.getPaginationInfo();
|
587
331
|
if (dataUnitPagination == undefined) {
|
588
332
|
return;
|
@@ -729,9 +473,9 @@ class DataUnitFetcher {
|
|
729
473
|
return { entityName: parts[1], resourceID: parts[2] };
|
730
474
|
}
|
731
475
|
getDataUnit(entityName, resourceID, parentDataUnit, configName) {
|
732
|
-
if (PreloadManager.applicationResourceID == undefined) {
|
476
|
+
if (PreloadManager.PreloadManager.applicationResourceID == undefined) {
|
733
477
|
//Por falta de um lugar melhor pra iniciar essa variável, fazemos isso aqui.
|
734
|
-
ResourceIDUtils.ResourceIDUtils.getResourceID().then(resourceID => PreloadManager.applicationResourceID = resourceID);
|
478
|
+
ResourceIDUtils.ResourceIDUtils.getResourceID().then(resourceID => PreloadManager.PreloadManager.applicationResourceID = resourceID);
|
735
479
|
}
|
736
480
|
const duName = `dd://${entityName}/${resourceID}${configName ? "/" + configName : ""}`;
|
737
481
|
const dataUnit = parentDataUnit != undefined ? parentDataUnit.getChildDataunit(duName) : new core.DataUnit(duName);
|
@@ -876,10 +620,10 @@ class DataUnitFetcher {
|
|
876
620
|
});
|
877
621
|
if (addedRecords.length > 0) {
|
878
622
|
const firstRecord = dataUnit.records[0];
|
879
|
-
PreloadManager.insertRecords(dataUnit, firstRecord, addedRecords);
|
623
|
+
PreloadManager.PreloadManager.insertRecords(dataUnit, firstRecord, addedRecords);
|
880
624
|
}
|
881
625
|
const updatedRecords = toUpdate.map(recordId => (Object.assign({}, recordsById.get(recordId))));
|
882
|
-
PreloadManager.updateRecords(dataUnit, updatedRecords);
|
626
|
+
PreloadManager.PreloadManager.updateRecords(dataUnit, updatedRecords);
|
883
627
|
}
|
884
628
|
getTransientInfo(dataUnit, recordID) {
|
885
629
|
const { records } = dataUnit.getSelectionInfo();
|
@@ -896,7 +640,7 @@ class DataUnitFetcher {
|
|
896
640
|
query: this.templateByQuery.get("saveData"),
|
897
641
|
})
|
898
642
|
.then((_resp) => {
|
899
|
-
PreloadManager.removeRecords(dataUnit, dataUnit.records.filter(record => recordIds.includes(record.__record__id__)));
|
643
|
+
PreloadManager.PreloadManager.removeRecords(dataUnit, dataUnit.records.filter(record => recordIds.includes(record.__record__id__)));
|
900
644
|
resolve(recordIds);
|
901
645
|
})
|
902
646
|
.catch((error) => {
|
@@ -932,4 +676,3 @@ class DataUnitFetcher {
|
|
932
676
|
|
933
677
|
exports.DataUnitFetcher = DataUnitFetcher;
|
934
678
|
exports.InMemoryLoader = InMemoryLoader;
|
935
|
-
exports.PreloadManager = PreloadManager;
|
@@ -11,12 +11,14 @@ 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-66c0b7af.js');
|
15
|
+
require('./PreloadManager-e26d237f.js');
|
15
16
|
require('./filter-item-type.enum-aa823a00.js');
|
16
17
|
require('./form-config-fetcher-17775a75.js');
|
17
18
|
const ResourceIDUtils = require('./ResourceIDUtils-5ff86aa7.js');
|
18
19
|
require('./_commonjsHelpers-537d719a.js');
|
19
20
|
require('./PrintUtils-bcaeb82f.js');
|
21
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
20
22
|
|
21
23
|
const SERVICE_ACTION_EXECUTE_JAVA = 'ActionButtonsSP.executeJava';
|
22
24
|
class JavaExecutor {
|
@@ -5,10 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
const index = require('./index-f9e81701.js');
|
6
6
|
const core = require('@sankhyalabs/core');
|
7
7
|
const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
8
|
-
const ConfigStorage = require('./ConfigStorage-
|
8
|
+
const ConfigStorage = require('./ConfigStorage-c15716fd.js');
|
9
9
|
const DataFetcher = require('./DataFetcher-713f0749.js');
|
10
10
|
const authFetcher = require('./auth-fetcher-555ff856.js');
|
11
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
11
|
+
const dataunitFetcher = require('./dataunit-fetcher-66c0b7af.js');
|
12
12
|
const pesquisaFetcher = require('./pesquisa-fetcher-34922b83.js');
|
13
13
|
const SnkMessageBuilder = require('./SnkMessageBuilder-dbc8d14e.js');
|
14
14
|
require('./form-config-fetcher-17775a75.js');
|
@@ -17,6 +17,8 @@ require('./_commonjsHelpers-537d719a.js');
|
|
17
17
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
18
18
|
require('./PrintUtils-bcaeb82f.js');
|
19
19
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
20
|
+
require('./PreloadManager-e26d237f.js');
|
21
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
20
22
|
require('./ResourceIDUtils-5ff86aa7.js');
|
21
23
|
|
22
24
|
class AppletCaller {
|
@@ -7,12 +7,14 @@ const core = require('@sankhyalabs/core');
|
|
7
7
|
const DataFetcher = require('./DataFetcher-713f0749.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-66c0b7af.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');
|
14
14
|
require('./PrintUtils-bcaeb82f.js');
|
15
15
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
16
|
+
require('./PreloadManager-e26d237f.js');
|
17
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
16
18
|
require('./ResourceIDUtils-5ff86aa7.js');
|
17
19
|
require('./index-0e663819.js');
|
18
20
|
require('./index-102ba62d.js');
|
@@ -11,7 +11,8 @@ 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-66c0b7af.js');
|
15
|
+
require('./PreloadManager-e26d237f.js');
|
15
16
|
require('./filter-item-type.enum-aa823a00.js');
|
16
17
|
require('./form-config-fetcher-17775a75.js');
|
17
18
|
const constants = require('./constants-d187e03e.js');
|
@@ -20,6 +21,7 @@ require('./index-102ba62d.js');
|
|
20
21
|
require('./_commonjsHelpers-537d719a.js');
|
21
22
|
require('./PrintUtils-bcaeb82f.js');
|
22
23
|
require('./ResourceIDUtils-5ff86aa7.js');
|
24
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
23
25
|
|
24
26
|
const snkCrudCss = ".sc-snk-crud-h{display:flex;flex-direction:column;height:100%;width:100%}";
|
25
27
|
|