@sankhyalabs/sankhyablocks 8.8.0-rc.9 → 8.8.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/dist/cjs/{ConfigStorage-908ce5bc.js → ConfigStorage-c15716fd.js} +3 -0
- package/dist/cjs/PreloadManager-84466da6.js +224 -0
- package/dist/cjs/{SnkFormConfigManager-793ade39.js → SnkFormConfigManager-29101e20.js} +1 -1
- package/dist/cjs/{SnkMultiSelectionListDataSource-f000a53f.js → SnkMultiSelectionListDataSource-ba5838c2.js} +10 -6
- package/dist/cjs/{dataunit-fetcher-e86cba8a.js → dataunit-fetcher-af1c655d.js} +57 -280
- 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-df1cc4d6.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/dataUnit/InMemoryLoader.js +49 -14
- 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 +62 -67
- package/dist/esm/{ConfigStorage-48648d45.js → ConfigStorage-79c81f36.js} +3 -0
- package/dist/esm/PreloadManager-c1c2f2b4.js +222 -0
- package/dist/esm/{SnkFormConfigManager-3c15f319.js → SnkFormConfigManager-7723f3ec.js} +1 -1
- package/dist/esm/{SnkMultiSelectionListDataSource-922f0941.js → SnkMultiSelectionListDataSource-44494b0e.js} +6 -6
- package/dist/esm/{dataunit-fetcher-ec40608e.js → dataunit-fetcher-d5e6cc8c.js} +50 -272
- 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-d2ebe7c0.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-056cb6c4.entry.js +1 -0
- package/dist/sankhyablocks/p-05f6c9dc.entry.js +1 -0
- package/dist/sankhyablocks/{p-abff11ef.entry.js → p-06e76ed2.entry.js} +1 -1
- package/dist/sankhyablocks/p-094c30cb.js +1 -0
- 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-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-5bb4c940.js +1 -0
- package/dist/sankhyablocks/p-653dc767.entry.js +1 -0
- package/dist/sankhyablocks/p-79a2bcfa.entry.js +1 -0
- package/dist/sankhyablocks/p-7a85dcd3.entry.js +1 -0
- package/dist/sankhyablocks/p-7f4435e2.js +60 -0
- package/dist/sankhyablocks/{p-f07a5363.entry.js → p-848b2e3b.entry.js} +1 -1
- package/dist/sankhyablocks/p-8fcc3171.entry.js +1 -0
- package/dist/sankhyablocks/p-c22c1d8e.js +1 -0
- package/dist/sankhyablocks/p-da655ca9.entry.js +1 -0
- package/dist/sankhyablocks/{p-3c884841.entry.js → p-f661e804.entry.js} +2 -2
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +1 -0
- package/dist/types/lib/dataUnit/InMemoryLoader.d.ts +3 -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
@@ -0,0 +1,222 @@
|
|
1
|
+
import { FieldComparator, SortMode, DataUnit } from '@sankhyalabs/core';
|
2
|
+
import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
3
|
+
|
4
|
+
class ArrayRepository {
|
5
|
+
constructor(equalsFunction) {
|
6
|
+
this._list = [];
|
7
|
+
this._equalsFunction = equalsFunction;
|
8
|
+
}
|
9
|
+
async load(filterFunction, sortingFunction, offset, limit) {
|
10
|
+
let result = [].concat(this._list);
|
11
|
+
if (filterFunction != undefined) {
|
12
|
+
result = this._list.filter(item => filterFunction(item));
|
13
|
+
}
|
14
|
+
if (sortingFunction != undefined) {
|
15
|
+
result = result.sort(sortingFunction);
|
16
|
+
}
|
17
|
+
const count = result.length;
|
18
|
+
if (limit != undefined) {
|
19
|
+
const start = offset || 0;
|
20
|
+
const end = limit ? start + limit : result.length;
|
21
|
+
result = result.slice(start, end);
|
22
|
+
}
|
23
|
+
return Promise.resolve({ result, count });
|
24
|
+
}
|
25
|
+
async distict(itemProcessor) {
|
26
|
+
const processedItems = [];
|
27
|
+
let hasEmpty = false;
|
28
|
+
for (const item of this._list) {
|
29
|
+
const processedItem = itemProcessor(item);
|
30
|
+
if (processedItem == undefined) {
|
31
|
+
continue;
|
32
|
+
}
|
33
|
+
if (processedItem.value == undefined) {
|
34
|
+
hasEmpty = true;
|
35
|
+
continue;
|
36
|
+
}
|
37
|
+
processedItems.push(processedItem);
|
38
|
+
}
|
39
|
+
if (hasEmpty) {
|
40
|
+
processedItems.push({ key: "", value: null });
|
41
|
+
}
|
42
|
+
return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
|
43
|
+
}
|
44
|
+
async push(items) {
|
45
|
+
this._list.push(...items);
|
46
|
+
}
|
47
|
+
async clear() {
|
48
|
+
this._list = [];
|
49
|
+
}
|
50
|
+
async delete(items) {
|
51
|
+
this._list = this._list.filter(item => {
|
52
|
+
for (const removed of items) {
|
53
|
+
if (this._equalsFunction(item, removed)) {
|
54
|
+
return false;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
return true;
|
58
|
+
});
|
59
|
+
}
|
60
|
+
async update(items) {
|
61
|
+
this._list = this._list.map(existingItem => {
|
62
|
+
const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
|
63
|
+
return newItem == undefined ? existingItem : newItem;
|
64
|
+
});
|
65
|
+
}
|
66
|
+
async insert(itemReference, items) {
|
67
|
+
const itemPosition = this._list.indexOf(itemReference);
|
68
|
+
if (itemPosition == -1) {
|
69
|
+
this._list.push(...items);
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
|
73
|
+
}
|
74
|
+
isOperating() {
|
75
|
+
return true;
|
76
|
+
}
|
77
|
+
async isEmpty() {
|
78
|
+
return Promise.resolve(this._list.length === 0);
|
79
|
+
}
|
80
|
+
async count() {
|
81
|
+
return Promise.resolve(this._list.length);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
class PreloadManager {
|
86
|
+
static setLoadingStatus(dataUnit, loadingInProgress) {
|
87
|
+
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
88
|
+
}
|
89
|
+
static isCacheEnabled(_dataUnit) {
|
90
|
+
return true;
|
91
|
+
}
|
92
|
+
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
93
|
+
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
94
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
95
|
+
this.getRepository(dataUnit).push(records);
|
96
|
+
}
|
97
|
+
else {
|
98
|
+
if (resetDatabase) {
|
99
|
+
this._repositories.delete(dataUnit.name);
|
100
|
+
}
|
101
|
+
}
|
102
|
+
}
|
103
|
+
static getSortingFunction(dataUnit, sorting) {
|
104
|
+
if (sorting == undefined || sorting.length == 0) {
|
105
|
+
return undefined;
|
106
|
+
}
|
107
|
+
return (recordA, recordB) => {
|
108
|
+
for (const sort of sorting) {
|
109
|
+
const result = FieldComparator.compare(dataUnit.getField(sort.field), recordA, recordB, sort.mode === SortMode.ASC);
|
110
|
+
if (result != 0) {
|
111
|
+
return result;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
};
|
115
|
+
}
|
116
|
+
static async getDistinct(dataUnit, fieldName) {
|
117
|
+
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
118
|
+
return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
119
|
+
}
|
120
|
+
let filterFunction;
|
121
|
+
const request = dataUnit.getLastLoadRequest();
|
122
|
+
if (request != undefined) {
|
123
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters, fieldName);
|
124
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
125
|
+
}
|
126
|
+
return new Promise((accept, reject) => {
|
127
|
+
PreloadManager.getRepository(dataUnit).distict(record => {
|
128
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
129
|
+
return undefined;
|
130
|
+
}
|
131
|
+
const fieldValue = record[fieldName];
|
132
|
+
if (fieldValue == undefined) {
|
133
|
+
return { key: null, value: null };
|
134
|
+
}
|
135
|
+
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
136
|
+
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
137
|
+
})
|
138
|
+
.then(result => {
|
139
|
+
if (result == undefined) {
|
140
|
+
accept(undefined);
|
141
|
+
return;
|
142
|
+
}
|
143
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
144
|
+
})
|
145
|
+
.catch(reason => reject(reason));
|
146
|
+
});
|
147
|
+
}
|
148
|
+
static async loadData(dataUnit, request, loadFromServer) {
|
149
|
+
try {
|
150
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
151
|
+
let useCache = request.source === "EZ_GRID_LOADING_SOURCE" || request.source === DataUnit.CHANGING_PAGE_LOADING_SOURCE;
|
152
|
+
if (useCache) {
|
153
|
+
const isCacheEmpty = await PreloadManager.getRepository(dataUnit).isEmpty();
|
154
|
+
if (!isCacheEmpty) {
|
155
|
+
return PreloadManager.loadFromCache(dataUnit, request);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
159
|
+
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
160
|
+
}
|
161
|
+
return loadFromServer(dataUnit, request);
|
162
|
+
}
|
163
|
+
catch (error) {
|
164
|
+
console.error(error);
|
165
|
+
return Promise.reject(error);
|
166
|
+
}
|
167
|
+
}
|
168
|
+
static insertRecords(dataUnit, reference, records) {
|
169
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
170
|
+
PreloadManager.getRepository(dataUnit).insert(reference, records);
|
171
|
+
}
|
172
|
+
}
|
173
|
+
static updateRecords(dataUnit, records) {
|
174
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
175
|
+
PreloadManager.getRepository(dataUnit).update(records);
|
176
|
+
}
|
177
|
+
}
|
178
|
+
static removeRecords(dataUnit, records) {
|
179
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
180
|
+
PreloadManager.getRepository(dataUnit).delete(records);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
static async countRecords(dataUnit) {
|
184
|
+
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
185
|
+
return PreloadManager.getRepository(dataUnit).count();
|
186
|
+
}
|
187
|
+
return Promise.resolve(0);
|
188
|
+
}
|
189
|
+
static getRepository(dataUnit) {
|
190
|
+
const name = dataUnit.name;
|
191
|
+
if (!PreloadManager._repositories.has(name)) {
|
192
|
+
PreloadManager._repositories.set(name, new ArrayRepository((recordA, recordB) => recordA.__record__id__ === recordB.__record__id__));
|
193
|
+
}
|
194
|
+
return PreloadManager._repositories.get(name);
|
195
|
+
}
|
196
|
+
static async loadFromCache(dataUnit, request) {
|
197
|
+
return new Promise((accept, reject) => {
|
198
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters, "");
|
199
|
+
const { limit, offset, sort } = request;
|
200
|
+
PreloadManager.getRepository(dataUnit)
|
201
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
202
|
+
.then(loadResult => {
|
203
|
+
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
204
|
+
const { count, result: records } = loadResult;
|
205
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
206
|
+
const lastRecord = offset + Math.min(records.length, limit);
|
207
|
+
const currentPage = offset / limit;
|
208
|
+
const paginationInfo = {
|
209
|
+
count, currentPage, firstRecord, lastRecord,
|
210
|
+
hasMore: stillLoading || (lastRecord < count),
|
211
|
+
total: stillLoading ? undefined : count
|
212
|
+
};
|
213
|
+
accept({ records, paginationInfo });
|
214
|
+
})
|
215
|
+
.catch(reason => reject(reason));
|
216
|
+
});
|
217
|
+
}
|
218
|
+
}
|
219
|
+
PreloadManager._repositories = new Map();
|
220
|
+
PreloadManager._loadingStatus = new Map();
|
221
|
+
|
222
|
+
export { PreloadManager as P };
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { UserInterface, DateUtils } from '@sankhyalabs/core';
|
2
|
-
import
|
2
|
+
import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
|
3
|
+
import { P as PreloadManager } from './PreloadManager-c1c2f2b4.js';
|
3
4
|
|
4
5
|
class SnkMultiSelectionListDataSource {
|
5
6
|
setDataUnit(dataUnit) {
|
@@ -19,11 +20,7 @@ class SnkMultiSelectionListDataSource {
|
|
19
20
|
if (fieldName == undefined) {
|
20
21
|
return Promise.resolve(undefined);
|
21
22
|
}
|
22
|
-
|
23
|
-
if (result == undefined) {
|
24
|
-
return Promise.resolve(undefined);
|
25
|
-
}
|
26
|
-
return Promise.resolve(Array.from(result.entries()).map(([label, value]) => ({ label: String(label), value, check: true })));
|
23
|
+
return Promise.resolve(await PreloadManager.getDistinct(this._dataUnit, fieldName));
|
27
24
|
}
|
28
25
|
fetchData(filterTerm, fieldName) {
|
29
26
|
return new Promise(resolve => {
|
@@ -38,6 +35,9 @@ class SnkMultiSelectionListDataSource {
|
|
38
35
|
});
|
39
36
|
});
|
40
37
|
}
|
38
|
+
sortItems(fieldName, items) {
|
39
|
+
return InMemoryFilterColumnDataSource.defaultSorterMultSelectionOption(this._dataUnit, fieldName, items);
|
40
|
+
}
|
41
41
|
}
|
42
42
|
|
43
43
|
export { SnkMultiSelectionListDataSource as S };
|
@@ -1,265 +1,10 @@
|
|
1
|
-
import {
|
1
|
+
import { DataUnit, DataType, DateUtils, StringUtils, ChangeOperation, UserInterface, DataUnitStorage } from '@sankhyalabs/core';
|
2
2
|
import { D as DataFetcher, d as dist } from './DataFetcher-79f78222.js';
|
3
3
|
import { DISTINCT_FILTER_NAME_PREFIX } from '@sankhyalabs/ezui/dist/collection/utils/constants';
|
4
4
|
import { DataUnitTransient } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
5
|
+
import { P as PreloadManager } from './PreloadManager-c1c2f2b4.js';
|
5
6
|
import { R as ResourceIDUtils } from './ResourceIDUtils-a114189a.js';
|
6
|
-
|
7
|
-
class ArrayRepository {
|
8
|
-
constructor(equalsFunction) {
|
9
|
-
this._list = [];
|
10
|
-
this._equalsFunction = equalsFunction;
|
11
|
-
}
|
12
|
-
async load(filterFunction, sortingFunction, offset, limit) {
|
13
|
-
let result = [].concat(this._list);
|
14
|
-
if (filterFunction != undefined) {
|
15
|
-
result = this._list.filter(item => filterFunction(item));
|
16
|
-
}
|
17
|
-
if (sortingFunction != undefined) {
|
18
|
-
result = result.sort(sortingFunction);
|
19
|
-
}
|
20
|
-
const count = result.length;
|
21
|
-
if (limit != undefined) {
|
22
|
-
const start = offset || 0;
|
23
|
-
const end = limit ? start + limit : result.length;
|
24
|
-
result = result.slice(start, end);
|
25
|
-
}
|
26
|
-
return Promise.resolve({ result, count });
|
27
|
-
}
|
28
|
-
async distict(itemProcessor) {
|
29
|
-
const processedItems = [];
|
30
|
-
let hasEmpty = false;
|
31
|
-
for (const item of this._list) {
|
32
|
-
const processedItem = itemProcessor(item);
|
33
|
-
if (processedItem == undefined) {
|
34
|
-
continue;
|
35
|
-
}
|
36
|
-
if (processedItem.value == undefined) {
|
37
|
-
hasEmpty = true;
|
38
|
-
continue;
|
39
|
-
}
|
40
|
-
processedItems.push(processedItem);
|
41
|
-
}
|
42
|
-
if (hasEmpty) {
|
43
|
-
processedItems.push({ key: "", value: null });
|
44
|
-
}
|
45
|
-
return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
|
46
|
-
}
|
47
|
-
async push(items) {
|
48
|
-
this._list.push(...items);
|
49
|
-
}
|
50
|
-
async clear() {
|
51
|
-
this._list = [];
|
52
|
-
}
|
53
|
-
async delete(items) {
|
54
|
-
this._list = this._list.filter(item => {
|
55
|
-
for (const removed of items) {
|
56
|
-
if (this._equalsFunction(item, removed)) {
|
57
|
-
return false;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
return true;
|
61
|
-
});
|
62
|
-
}
|
63
|
-
async update(items) {
|
64
|
-
this._list = this._list.map(existingItem => {
|
65
|
-
const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
|
66
|
-
return newItem == undefined ? existingItem : newItem;
|
67
|
-
});
|
68
|
-
}
|
69
|
-
async insert(itemReference, items) {
|
70
|
-
const itemPosition = this._list.indexOf(itemReference);
|
71
|
-
if (itemPosition == -1) {
|
72
|
-
this._list.push(...items);
|
73
|
-
return;
|
74
|
-
}
|
75
|
-
this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
|
76
|
-
}
|
77
|
-
isOperating() {
|
78
|
-
return true;
|
79
|
-
}
|
80
|
-
async isEmpty() {
|
81
|
-
return Promise.resolve(this._list.length === 0);
|
82
|
-
}
|
83
|
-
async count() {
|
84
|
-
return Promise.resolve(this._list.length);
|
85
|
-
}
|
86
|
-
}
|
87
|
-
|
88
|
-
const COLUMN_FILTER_PATTERN = /FILTRO_COLUNA_(.+)/;
|
89
|
-
class PreloadManager {
|
90
|
-
static setLoadingStatus(dataUnit, loadingInProgress) {
|
91
|
-
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
92
|
-
}
|
93
|
-
static isCacheEnabled(dataUnit) {
|
94
|
-
const dataUnitResourceId = PreloadManager.getResourceId(dataUnit.name);
|
95
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
96
|
-
return false;
|
97
|
-
}
|
98
|
-
return this.getRepository(dataUnit).isOperating();
|
99
|
-
}
|
100
|
-
static getResourceId(dataUnitName) {
|
101
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
102
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
103
|
-
}
|
104
|
-
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
105
|
-
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
106
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
107
|
-
this.getRepository(dataUnit).push(records);
|
108
|
-
}
|
109
|
-
else {
|
110
|
-
if (resetDatabase) {
|
111
|
-
this._repositories.delete(dataUnit.name);
|
112
|
-
}
|
113
|
-
}
|
114
|
-
}
|
115
|
-
static getSortingFunction(dataUnit, sorting) {
|
116
|
-
if (sorting == undefined || sorting.length == 0) {
|
117
|
-
return undefined;
|
118
|
-
}
|
119
|
-
return (recordA, recordB) => {
|
120
|
-
for (const sort of sorting) {
|
121
|
-
const result = FieldComparator.compare(dataUnit.getField(sort.field), recordA, recordB, sort.mode === SortMode.ASC);
|
122
|
-
if (result != 0) {
|
123
|
-
return result;
|
124
|
-
}
|
125
|
-
}
|
126
|
-
};
|
127
|
-
}
|
128
|
-
static async getDistinct(dataUnit, fieldName) {
|
129
|
-
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
130
|
-
return Promise.resolve(undefined);
|
131
|
-
}
|
132
|
-
let filterFunction;
|
133
|
-
const request = dataUnit.getLastLoadRequest();
|
134
|
-
if (request != undefined) {
|
135
|
-
const columnFilters = PreloadManager.getColumnFilters(request.filters);
|
136
|
-
filterFunction = PreloadManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
137
|
-
}
|
138
|
-
return new Promise((accept, reject) => {
|
139
|
-
PreloadManager.getRepository(dataUnit).distict(record => {
|
140
|
-
if (filterFunction != undefined && !filterFunction(record)) {
|
141
|
-
return undefined;
|
142
|
-
}
|
143
|
-
const fieldValue = record[fieldName];
|
144
|
-
if (fieldValue == undefined) {
|
145
|
-
return { key: null, value: null };
|
146
|
-
}
|
147
|
-
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
148
|
-
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
149
|
-
})
|
150
|
-
.then(result => accept(result))
|
151
|
-
.catch(reason => reject(reason));
|
152
|
-
});
|
153
|
-
}
|
154
|
-
static async loadData(dataUnit, request, loadFromServer) {
|
155
|
-
try {
|
156
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
157
|
-
let useCache = request.source === "EZ_GRID_LOADING_SOURCE" || request.source === DataUnit.CHANGING_PAGE_LOADING_SOURCE;
|
158
|
-
if (useCache) {
|
159
|
-
const isCacheEmpty = await PreloadManager.getRepository(dataUnit).isEmpty();
|
160
|
-
if (!isCacheEmpty) {
|
161
|
-
return PreloadManager.loadFromCache(dataUnit, request);
|
162
|
-
}
|
163
|
-
}
|
164
|
-
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
165
|
-
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
166
|
-
}
|
167
|
-
return loadFromServer(dataUnit, request);
|
168
|
-
}
|
169
|
-
catch (error) {
|
170
|
-
console.error(error);
|
171
|
-
return Promise.reject(error);
|
172
|
-
}
|
173
|
-
}
|
174
|
-
static insertRecords(dataUnit, reference, records) {
|
175
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
176
|
-
PreloadManager.getRepository(dataUnit).insert(reference, records);
|
177
|
-
}
|
178
|
-
}
|
179
|
-
static updateRecords(dataUnit, records) {
|
180
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
181
|
-
PreloadManager.getRepository(dataUnit).update(records);
|
182
|
-
}
|
183
|
-
}
|
184
|
-
static removeRecords(dataUnit, records) {
|
185
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
186
|
-
PreloadManager.getRepository(dataUnit).delete(records);
|
187
|
-
}
|
188
|
-
}
|
189
|
-
static async countRecords(dataUnit) {
|
190
|
-
if (PreloadManager.isCacheEnabled(dataUnit)) {
|
191
|
-
return PreloadManager.getRepository(dataUnit).count();
|
192
|
-
}
|
193
|
-
return Promise.resolve(0);
|
194
|
-
}
|
195
|
-
static getRepository(dataUnit) {
|
196
|
-
const name = dataUnit.name;
|
197
|
-
if (!PreloadManager._repositories.has(name)) {
|
198
|
-
PreloadManager._repositories.set(name, new ArrayRepository((recordA, recordB) => recordA.__record__id__ === recordB.__record__id__));
|
199
|
-
}
|
200
|
-
return PreloadManager._repositories.get(name);
|
201
|
-
}
|
202
|
-
static getFilterFunction(dataUnit, filters) {
|
203
|
-
if (filters != undefined && filters.length > 0) {
|
204
|
-
return record => {
|
205
|
-
for (const filter of filters) {
|
206
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
207
|
-
return false;
|
208
|
-
}
|
209
|
-
}
|
210
|
-
return true;
|
211
|
-
};
|
212
|
-
}
|
213
|
-
return undefined;
|
214
|
-
}
|
215
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
216
|
-
const fieldValue = record[columnFilter.columnName];
|
217
|
-
for (let param of columnFilter.params) {
|
218
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
219
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
220
|
-
return true;
|
221
|
-
}
|
222
|
-
}
|
223
|
-
return false;
|
224
|
-
}
|
225
|
-
static async loadFromCache(dataUnit, request) {
|
226
|
-
return new Promise((accept, reject) => {
|
227
|
-
const columnFilters = PreloadManager.getColumnFilters(request.filters);
|
228
|
-
const { limit, offset, sort } = request;
|
229
|
-
PreloadManager.getRepository(dataUnit)
|
230
|
-
.load(PreloadManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
231
|
-
.then(loadResult => {
|
232
|
-
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
233
|
-
const { count, result: records } = loadResult;
|
234
|
-
const firstRecord = count == 0 ? 0 : offset + 1;
|
235
|
-
const lastRecord = offset + Math.min(records.length, limit);
|
236
|
-
const currentPage = offset / limit;
|
237
|
-
const paginationInfo = {
|
238
|
-
count, currentPage, firstRecord, lastRecord,
|
239
|
-
hasMore: stillLoading || (lastRecord < count),
|
240
|
-
total: stillLoading ? undefined : count
|
241
|
-
};
|
242
|
-
accept({ records, paginationInfo });
|
243
|
-
})
|
244
|
-
.catch(reason => reject(reason));
|
245
|
-
});
|
246
|
-
}
|
247
|
-
static getColumnFilters(filters) {
|
248
|
-
const columnFilters = new Map();
|
249
|
-
if (filters == undefined || filters.length == 0) {
|
250
|
-
return columnFilters;
|
251
|
-
}
|
252
|
-
filters.forEach(filter => {
|
253
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
254
|
-
if (match) {
|
255
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
256
|
-
}
|
257
|
-
});
|
258
|
-
return columnFilters;
|
259
|
-
}
|
260
|
-
}
|
261
|
-
PreloadManager._repositories = new Map();
|
262
|
-
PreloadManager._loadingStatus = new Map();
|
7
|
+
import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
263
8
|
|
264
9
|
class InMemoryLoader {
|
265
10
|
constructor(metadata, records) {
|
@@ -267,21 +12,16 @@ class InMemoryLoader {
|
|
267
12
|
this.records = records;
|
268
13
|
this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
|
269
14
|
this._dataUnit.metadataLoader = () => this.metadaLoader();
|
270
|
-
this._dataUnit.dataLoader = (dataUnit, request) =>
|
15
|
+
this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
|
271
16
|
this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
|
272
17
|
this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
|
273
18
|
this.dataUnit.loadMetadata().then(() => this.dataUnit.loadData());
|
274
19
|
}
|
275
20
|
getRecordsToLoad() {
|
276
|
-
if (this._initialRecords) {
|
277
|
-
|
278
|
-
return this._initialRecords;
|
279
|
-
}
|
280
|
-
finally {
|
281
|
-
this._initialRecords = undefined;
|
282
|
-
}
|
21
|
+
if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
|
22
|
+
this._initialRecords = this.dataUnit.records;
|
283
23
|
}
|
284
|
-
return this.
|
24
|
+
return this._initialRecords;
|
285
25
|
}
|
286
26
|
get dataUnit() {
|
287
27
|
return this._dataUnit;
|
@@ -317,11 +57,10 @@ class InMemoryLoader {
|
|
317
57
|
}
|
318
58
|
return record;
|
319
59
|
});
|
60
|
+
this._initialRecords = newRecords;
|
320
61
|
if (this._dataUnit) {
|
321
|
-
|
322
|
-
|
323
|
-
else {
|
324
|
-
this._initialRecords = newRecords;
|
62
|
+
//Isso força o refresh internamente no datunit
|
63
|
+
this._dataUnit.gotoPage(0);
|
325
64
|
}
|
326
65
|
}
|
327
66
|
get metadata() {
|
@@ -336,6 +75,32 @@ class InMemoryLoader {
|
|
336
75
|
generateUniqueId() {
|
337
76
|
return StringUtils.generateUUID();
|
338
77
|
}
|
78
|
+
inMemoryLoader(dataUnit, request, recordsIn) {
|
79
|
+
let records = this.applyFilter(recordsIn, dataUnit, request.filters);
|
80
|
+
records = this.applySorting(records, dataUnit, request.sort);
|
81
|
+
return Promise.resolve({ records, paginationInfo: buildPaginationInfo(request, records) });
|
82
|
+
}
|
83
|
+
applyFilter(records, dataUnit, filters) {
|
84
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
|
85
|
+
if (columnFilters == undefined || columnFilters.size == 0) {
|
86
|
+
return records;
|
87
|
+
}
|
88
|
+
const filterFunciton = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
89
|
+
if (filterFunciton == undefined) {
|
90
|
+
return records;
|
91
|
+
}
|
92
|
+
return records.filter(filterFunciton);
|
93
|
+
}
|
94
|
+
applySorting(records, dataUnit, sorting) {
|
95
|
+
if (sorting == undefined || sorting.length == 0) {
|
96
|
+
return records;
|
97
|
+
}
|
98
|
+
const sortingFunction = PreloadManager.getSortingFunction(dataUnit, sorting);
|
99
|
+
if (sortingFunction == undefined) {
|
100
|
+
return records;
|
101
|
+
}
|
102
|
+
return records.sort(sortingFunction);
|
103
|
+
}
|
339
104
|
metadaLoader() {
|
340
105
|
return Promise.resolve(this._metadata);
|
341
106
|
}
|
@@ -367,6 +132,19 @@ class InMemoryLoader {
|
|
367
132
|
}
|
368
133
|
}
|
369
134
|
InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = "InMemoryDataUnit";
|
135
|
+
function buildPaginationInfo({ offset, limit }, records) {
|
136
|
+
if (offset === undefined || limit === undefined) {
|
137
|
+
return undefined;
|
138
|
+
}
|
139
|
+
const lastRecord = Math.min(offset + limit, records.length);
|
140
|
+
return {
|
141
|
+
currentPage: Math.ceil(offset / limit),
|
142
|
+
firstRecord: offset,
|
143
|
+
lastRecord: lastRecord,
|
144
|
+
total: records.length,
|
145
|
+
hasMore: !!(records.length - lastRecord),
|
146
|
+
};
|
147
|
+
}
|
370
148
|
|
371
149
|
class DatasetStrategy {
|
372
150
|
canSlice() {
|
@@ -928,4 +706,4 @@ class DataUnitFetcher {
|
|
928
706
|
}
|
929
707
|
}
|
930
708
|
|
931
|
-
export { DataUnitFetcher as D, InMemoryLoader as I
|
709
|
+
export { DataUnitFetcher as D, InMemoryLoader as I };
|
@@ -7,12 +7,14 @@ import './index-1564817d.js';
|
|
7
7
|
import './ISave-4412b20c.js';
|
8
8
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
9
9
|
import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
10
|
-
import './dataunit-fetcher-
|
10
|
+
import './dataunit-fetcher-d5e6cc8c.js';
|
11
|
+
import './PreloadManager-c1c2f2b4.js';
|
11
12
|
import './filter-item-type.enum-5028ed3f.js';
|
12
13
|
import './form-config-fetcher-e1603e66.js';
|
13
14
|
import { R as ResourceIDUtils } from './ResourceIDUtils-a114189a.js';
|
14
15
|
import './_commonjsHelpers-9943807e.js';
|
15
16
|
import './PrintUtils-3e4ff0f5.js';
|
17
|
+
import '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
16
18
|
|
17
19
|
const SERVICE_ACTION_EXECUTE_JAVA = 'ActionButtonsSP.executeJava';
|
18
20
|
class JavaExecutor {
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, g as getElement } from './index-a7d3d3f1.js';
|
2
2
|
import { DateUtils, StringUtils, ObjectUtils, WaitingChangeException, WarningException, ErrorException, OnboardingUtils, DependencyType, ElementIDUtils, DataType, ApplicationContext, ErrorTracking } from '@sankhyalabs/core';
|
3
3
|
import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
|
4
|
-
import { C as ConfigStorage } from './ConfigStorage-
|
4
|
+
import { C as ConfigStorage } from './ConfigStorage-79c81f36.js';
|
5
5
|
import { d as dist, D as DataFetcher, U as UrlUtils } from './DataFetcher-79f78222.js';
|
6
6
|
import { A as AutorizationType, a as AuthFetcher } from './auth-fetcher-e260d0cd.js';
|
7
|
-
import { D as DataUnitFetcher } from './dataunit-fetcher-
|
7
|
+
import { D as DataUnitFetcher } from './dataunit-fetcher-d5e6cc8c.js';
|
8
8
|
import { P as PesquisaFetcher } from './pesquisa-fetcher-8e922c9d.js';
|
9
9
|
import { S as SnkMessageBuilder } from './SnkMessageBuilder-7ac66e9c.js';
|
10
10
|
import './form-config-fetcher-e1603e66.js';
|
@@ -13,6 +13,8 @@ import './_commonjsHelpers-9943807e.js';
|
|
13
13
|
import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
14
14
|
import './PrintUtils-3e4ff0f5.js';
|
15
15
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
16
|
+
import './PreloadManager-c1c2f2b4.js';
|
17
|
+
import '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
16
18
|
import './ResourceIDUtils-a114189a.js';
|
17
19
|
|
18
20
|
class AppletCaller {
|
@@ -3,12 +3,14 @@ import { ApplicationContext, DataType, Action } from '@sankhyalabs/core';
|
|
3
3
|
import { D as DataFetcher } from './DataFetcher-79f78222.js';
|
4
4
|
import { S as SaveErrorsEnum } from './ISave-4412b20c.js';
|
5
5
|
import { c as VIEW_MODE } from './constants-3644f1b6.js';
|
6
|
-
import { D as DataUnitFetcher } from './dataunit-fetcher-
|
6
|
+
import { D as DataUnitFetcher } from './dataunit-fetcher-d5e6cc8c.js';
|
7
7
|
import { T as TaskbarElement } from './taskbar-elements-0a6b8b95.js';
|
8
8
|
import './_commonjsHelpers-9943807e.js';
|
9
9
|
import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
10
10
|
import './PrintUtils-3e4ff0f5.js';
|
11
11
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
12
|
+
import './PreloadManager-c1c2f2b4.js';
|
13
|
+
import '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
12
14
|
import './ResourceIDUtils-a114189a.js';
|
13
15
|
import './index-1564817d.js';
|
14
16
|
import './index-bdf75557.js';
|