@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-74406.1 → 0.0.0-bugfix-dev-KB-83855.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/{ClientSideExporterProvider-6b781452.js → ClientSideExporterProvider-2f5f350c.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-8291ac21.js → dataunit-fetcher-449d51a3.js} +11 -161
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pesquisa-grid_2.cjs.entry.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_5.cjs.entry.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +1 -1
- package/dist/cjs/snk-attach.cjs.entry.js +2 -2
- package/dist/cjs/snk-crud.cjs.entry.js +3 -2
- package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
- package/dist/cjs/{snk-data-unit-d75e6220.js → snk-data-unit-bbd384bf.js} +4 -2
- package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +5 -4
- package/dist/cjs/snk-grid.cjs.entry.js +2 -2
- package/dist/cjs/{snk-guides-viewer-a029ff50.js → snk-guides-viewer-495a2d2f.js} +2 -2
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +2 -2
- package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +2 -2
- package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -3
- package/dist/collection/components/snk-crud/snk-crud.js +26 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.css +10 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +25 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +1 -1
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +3 -1
- package/dist/collection/lib/dataUnit/InMemoryLoader.js +12 -101
- package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +7 -53
- package/dist/components/dataunit-fetcher.js +30 -179
- package/dist/components/snk-attach2.js +3 -3
- package/dist/components/snk-crud.js +4 -2
- package/dist/components/snk-data-unit2.js +3 -1
- package/dist/components/snk-detail-view2.js +5 -3
- package/dist/esm/{ClientSideExporterProvider-ff89c7e9.js → ClientSideExporterProvider-3537805a.js} +1 -1
- package/dist/esm/{dataunit-fetcher-5247a708.js → dataunit-fetcher-91b094f2.js} +13 -162
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pesquisa-grid_2.entry.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_5.entry.js +1 -1
- package/dist/esm/snk-application.entry.js +1 -1
- package/dist/esm/snk-attach.entry.js +3 -3
- package/dist/esm/snk-crud.entry.js +4 -3
- package/dist/esm/snk-data-exporter.entry.js +2 -2
- package/dist/esm/{snk-data-unit-bfd10c71.js → snk-data-unit-b03bb5cf.js} +4 -2
- package/dist/esm/snk-data-unit.entry.js +2 -2
- package/dist/esm/snk-detail-view.entry.js +5 -4
- package/dist/esm/snk-grid.entry.js +2 -2
- package/dist/esm/{snk-guides-viewer-fa45714d.js → snk-guides-viewer-cd2814a0.js} +2 -2
- package/dist/esm/snk-guides-viewer.entry.js +2 -2
- package/dist/esm/snk-pesquisa.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +2 -2
- package/dist/sankhyablocks/{p-b0ff53b7.entry.js → p-13391b3d.entry.js} +1 -1
- package/dist/sankhyablocks/p-23b47a92.js +1 -0
- package/dist/sankhyablocks/p-3653374d.js +60 -0
- package/dist/sankhyablocks/{p-c82deea7.entry.js → p-389ba782.entry.js} +1 -1
- package/dist/sankhyablocks/{p-f8db6795.entry.js → p-44efbeed.entry.js} +1 -1
- package/dist/sankhyablocks/p-4d87cd45.entry.js +1 -0
- package/dist/sankhyablocks/{p-e36f89d1.entry.js → p-4fa79d68.entry.js} +1 -1
- package/dist/sankhyablocks/p-51e88546.js +1 -0
- package/dist/sankhyablocks/{p-40e323f9.js → p-5dd7f4c7.js} +1 -1
- package/dist/sankhyablocks/{p-aa1a0f3e.entry.js → p-6234bda8.entry.js} +1 -1
- package/dist/sankhyablocks/p-64230808.entry.js +1 -0
- package/dist/sankhyablocks/{p-e10faff0.entry.js → p-647f9830.entry.js} +1 -1
- package/dist/sankhyablocks/{p-172848d4.entry.js → p-8ecac412.entry.js} +1 -1
- package/dist/sankhyablocks/{p-d2d0535f.entry.js → p-ad5e4f9d.entry.js} +1 -1
- package/dist/sankhyablocks/p-ca316523.entry.js +1 -0
- package/dist/sankhyablocks/{p-700a4cc3.entry.js → p-ee53b000.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-crud/snk-crud.d.ts +5 -0
- package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +5 -0
- package/dist/types/components.d.ts +17 -1
- package/dist/types/lib/dataUnit/InMemoryLoader.d.ts +4 -11
- package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +3 -6
- package/dist/types/lib/dataUnit/interfaces/InMemoryLoaderConfig.d.ts +2 -2
- package/package.json +1 -1
- package/dist/sankhyablocks/p-0b00d69c.entry.js +0 -1
- package/dist/sankhyablocks/p-29d08446.entry.js +0 -1
- package/dist/sankhyablocks/p-38179225.js +0 -60
- package/dist/sankhyablocks/p-655bdd60.js +0 -1
- package/dist/sankhyablocks/p-b02e58fd.entry.js +0 -1
- package/dist/sankhyablocks/p-de9da2f2.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ObjectUtils, DataUnit,
|
|
1
|
+
import { DataUnitInMemoryLoader, ObjectUtils, DataUnit, ApplicationContext, StringUtils, UserInterface, DataUnitStorage, DataType, ChangeOperation } from '@sankhyalabs/core';
|
|
2
2
|
import { D as DataFetcher, d as dist } from './DataFetcher.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';
|
|
@@ -6,6 +6,34 @@ import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/component
|
|
|
6
6
|
import SortingUtils from '@sankhyalabs/core/dist/utils/SortingUtils';
|
|
7
7
|
import { R as ResourceIDUtils } from './ResourceIDUtils.js';
|
|
8
8
|
|
|
9
|
+
class InMemoryLoader {
|
|
10
|
+
constructor(metadata, records, config) {
|
|
11
|
+
this._dataUnitInMemoryLoader = new DataUnitInMemoryLoader(metadata, records, config);
|
|
12
|
+
}
|
|
13
|
+
get dataUnit() {
|
|
14
|
+
return this._dataUnitInMemoryLoader.dataUnit;
|
|
15
|
+
}
|
|
16
|
+
get records() {
|
|
17
|
+
return this._dataUnitInMemoryLoader.records;
|
|
18
|
+
}
|
|
19
|
+
set records(records) {
|
|
20
|
+
this._dataUnitInMemoryLoader.records = records;
|
|
21
|
+
}
|
|
22
|
+
get metadata() {
|
|
23
|
+
return this._dataUnitInMemoryLoader.metadata;
|
|
24
|
+
}
|
|
25
|
+
set metadata(metadata) {
|
|
26
|
+
this._dataUnitInMemoryLoader.metadata = metadata;
|
|
27
|
+
}
|
|
28
|
+
removeLoader(_dataUnit, recordIds) {
|
|
29
|
+
return this._dataUnitInMemoryLoader.removeLoader(_dataUnit, recordIds);
|
|
30
|
+
}
|
|
31
|
+
static getConvertedValue(descriptor, strValue, dateFormat) {
|
|
32
|
+
return DataUnitInMemoryLoader.getConvertedValue(descriptor, strValue, dateFormat);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME;
|
|
36
|
+
|
|
9
37
|
class ArrayRepository {
|
|
10
38
|
constructor(equalsFunction) {
|
|
11
39
|
this._list = [];
|
|
@@ -238,183 +266,6 @@ class PreloadManager {
|
|
|
238
266
|
PreloadManager._repositories = new Map();
|
|
239
267
|
PreloadManager._loadingStatus = new Map();
|
|
240
268
|
|
|
241
|
-
function applyFilter(records, dataUnit, filters) {
|
|
242
|
-
const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
|
|
243
|
-
if (!(columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.size)) {
|
|
244
|
-
return records;
|
|
245
|
-
}
|
|
246
|
-
const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
|
247
|
-
if (filterFunction == undefined) {
|
|
248
|
-
return records;
|
|
249
|
-
}
|
|
250
|
-
return records.filter(filterFunction);
|
|
251
|
-
}
|
|
252
|
-
function buildLoadDataResponse(recordsIn, dataUnit, request) {
|
|
253
|
-
let records = recordsIn ? [...recordsIn] : [];
|
|
254
|
-
records = applyFilter(records, dataUnit, request.filters);
|
|
255
|
-
records = applySorting(records, dataUnit, request.sort);
|
|
256
|
-
const { offset, limit } = request;
|
|
257
|
-
const paginationInfoBuilderParams = {
|
|
258
|
-
recordsLength: records.length,
|
|
259
|
-
offset,
|
|
260
|
-
recordsPerPage: limit,
|
|
261
|
-
};
|
|
262
|
-
return Promise.resolve({
|
|
263
|
-
records: getPagesByRecords(records, offset, limit),
|
|
264
|
-
paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
function applySorting(records, dataUnit, sorting) {
|
|
268
|
-
if (sorting == undefined || sorting.length == 0) {
|
|
269
|
-
return records;
|
|
270
|
-
}
|
|
271
|
-
const sortingFunction = PreloadManager.getSortingFunction(dataUnit, sorting);
|
|
272
|
-
if (sortingFunction == undefined) {
|
|
273
|
-
return records;
|
|
274
|
-
}
|
|
275
|
-
return records.sort(sortingFunction);
|
|
276
|
-
}
|
|
277
|
-
function hasValidLimitAndOffset(offset, limit) {
|
|
278
|
-
return offset >= 0 && limit >= 0;
|
|
279
|
-
}
|
|
280
|
-
function getPagesByRecords(records, offset = 0, limit = 0) {
|
|
281
|
-
if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
|
|
282
|
-
return [];
|
|
283
|
-
if (limit === 0 && offset === 0)
|
|
284
|
-
return records;
|
|
285
|
-
return records.slice(offset, offset + limit);
|
|
286
|
-
}
|
|
287
|
-
function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
|
|
288
|
-
if (!recordsLength) {
|
|
289
|
-
return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
|
|
290
|
-
}
|
|
291
|
-
const lastRecordIndex = offset + recordsPerPage;
|
|
292
|
-
const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
|
|
293
|
-
return {
|
|
294
|
-
currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
|
|
295
|
-
firstRecord: offset + 1,
|
|
296
|
-
lastRecord: lastRecord,
|
|
297
|
-
total: recordsLength,
|
|
298
|
-
hasMore: lastRecord < recordsLength,
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
class InMemoryLoader {
|
|
303
|
-
constructor(metadata, records, config) {
|
|
304
|
-
this.metadata = metadata;
|
|
305
|
-
this.records = records;
|
|
306
|
-
this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
|
|
307
|
-
this._dataUnit.pageSize = 150;
|
|
308
|
-
this._dataUnit.metadataLoader = () => this.metadaLoader();
|
|
309
|
-
this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
|
|
310
|
-
this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
|
|
311
|
-
this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
|
|
312
|
-
this.dataUnit.loadMetadata().then(() => {
|
|
313
|
-
if ((config === null || config === void 0 ? void 0 : config.autoLoad) !== false) {
|
|
314
|
-
this.dataUnit.loadData();
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
getRecordsToLoad() {
|
|
319
|
-
if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
|
|
320
|
-
this._initialRecords = this.dataUnit.records;
|
|
321
|
-
}
|
|
322
|
-
const addedRecords = this.dataUnit.getAddedRecords();
|
|
323
|
-
if (addedRecords) {
|
|
324
|
-
return [...this._initialRecords, ...addedRecords];
|
|
325
|
-
}
|
|
326
|
-
return this._initialRecords;
|
|
327
|
-
}
|
|
328
|
-
get dataUnit() {
|
|
329
|
-
return this._dataUnit;
|
|
330
|
-
}
|
|
331
|
-
get records() {
|
|
332
|
-
return this.dataUnit.records;
|
|
333
|
-
}
|
|
334
|
-
static getConvertedValue(descriptor, strValue) {
|
|
335
|
-
if (descriptor.dataType === DataType.BOOLEAN) {
|
|
336
|
-
return strValue === "S";
|
|
337
|
-
}
|
|
338
|
-
if (descriptor.dataType === DataType.NUMBER) {
|
|
339
|
-
return Number(strValue);
|
|
340
|
-
}
|
|
341
|
-
if (descriptor.dataType === DataType.DATE) {
|
|
342
|
-
return DateUtils.strToDate(strValue, true);
|
|
343
|
-
}
|
|
344
|
-
if (descriptor.dataType === DataType.OBJECT) {
|
|
345
|
-
return JSON.parse(strValue);
|
|
346
|
-
}
|
|
347
|
-
return strValue;
|
|
348
|
-
}
|
|
349
|
-
set records(records) {
|
|
350
|
-
const columns = this._metadata ? new Map(this._metadata.fields.map(descriptor => [descriptor.name, descriptor])) : undefined;
|
|
351
|
-
const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
|
|
352
|
-
if (!record["__record__id__"]) {
|
|
353
|
-
record["__record__id__"] = this.generateUniqueId();
|
|
354
|
-
}
|
|
355
|
-
if (columns != undefined) {
|
|
356
|
-
for (const name in record) {
|
|
357
|
-
const value = record[name];
|
|
358
|
-
if (typeof value === "string" && columns.has(name)) {
|
|
359
|
-
record[name] = InMemoryLoader.getConvertedValue(columns.get(name), value);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return record;
|
|
364
|
-
});
|
|
365
|
-
this._initialRecords = newRecords;
|
|
366
|
-
if (this._dataUnit) {
|
|
367
|
-
//Isso força o refresh internamente no datunit
|
|
368
|
-
this._dataUnit.loadData();
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
get metadata() {
|
|
372
|
-
return this._metadata;
|
|
373
|
-
}
|
|
374
|
-
set metadata(metadata) {
|
|
375
|
-
this._metadata = metadata;
|
|
376
|
-
if (this._dataUnit) {
|
|
377
|
-
this._dataUnit.metadata = this._metadata;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
generateUniqueId() {
|
|
381
|
-
return StringUtils.generateUUID();
|
|
382
|
-
}
|
|
383
|
-
inMemoryLoader(dataUnit, request, recordsIn) {
|
|
384
|
-
return buildLoadDataResponse(recordsIn, dataUnit, request);
|
|
385
|
-
}
|
|
386
|
-
metadaLoader() {
|
|
387
|
-
return Promise.resolve(this._metadata);
|
|
388
|
-
}
|
|
389
|
-
saveLoader(_dataUnit, changes) {
|
|
390
|
-
return new Promise((resolve) => {
|
|
391
|
-
let dataUnitRecords = [];
|
|
392
|
-
changes.forEach(change => {
|
|
393
|
-
let { record, updatingFields, operation } = change;
|
|
394
|
-
const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
|
|
395
|
-
if (operation === ChangeOperation.INSERT ||
|
|
396
|
-
operation === ChangeOperation.COPY) {
|
|
397
|
-
changedRecord["__old__id__"] = record["__record__id__"];
|
|
398
|
-
changedRecord["__record__id__"] = this.generateUniqueId();
|
|
399
|
-
this.records.push(changedRecord);
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
const recordIndex = this.records.findIndex(r => r["__record__id__"] == changedRecord["__record__id__"]);
|
|
403
|
-
this.records[recordIndex] = changedRecord;
|
|
404
|
-
}
|
|
405
|
-
dataUnitRecords.push(changedRecord);
|
|
406
|
-
});
|
|
407
|
-
resolve(dataUnitRecords);
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
removeLoader(_dataUnit, recordIds) {
|
|
411
|
-
return new Promise((resolve) => {
|
|
412
|
-
resolve(recordIds);
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = "InMemoryDataUnit";
|
|
417
|
-
|
|
418
269
|
function getRecordValue(record, fieldName) {
|
|
419
270
|
var _a, _b;
|
|
420
271
|
return ((_a = record[fieldName]) === null || _a === void 0 ? void 0 : _a.value) !== undefined ? (_b = record[fieldName]) === null || _b === void 0 ? void 0 : _b.value : record[fieldName];
|
|
@@ -1250,4 +1101,4 @@ class DataUnitFetcher {
|
|
|
1250
1101
|
}
|
|
1251
1102
|
}
|
|
1252
1103
|
|
|
1253
|
-
export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a,
|
|
1104
|
+
export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a, getRecordValue as g };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
|
|
2
|
-
import { ApplicationContext, DataType, Action, UserInterface, StringUtils, DataUnit } from '@sankhyalabs/core';
|
|
2
|
+
import { ApplicationContext, DataType, Action, UserInterface, StringUtils, DataUnitLoaderUtils, DataUnit } from '@sankhyalabs/core';
|
|
3
3
|
import { D as DataFetcher } from './DataFetcher.js';
|
|
4
4
|
import { S as SaveErrorsEnum } from './ISave.js';
|
|
5
|
-
import { P as PreloadManager,
|
|
5
|
+
import { P as PreloadManager, D as DataUnitFetcher, I as InMemoryLoader } from './dataunit-fetcher.js';
|
|
6
6
|
import './filter-item-type.enum.js';
|
|
7
7
|
import './form-config-fetcher.js';
|
|
8
8
|
import { V as VIEW_MODE } from './constants.js';
|
|
@@ -462,7 +462,7 @@ class AttachFetcherDataUnitFactory {
|
|
|
462
462
|
});
|
|
463
463
|
this._records = records;
|
|
464
464
|
}
|
|
465
|
-
return buildLoadDataResponse(this._records, dataUnit, request);
|
|
465
|
+
return DataUnitLoaderUtils.buildLoadDataResponse(this._records, dataUnit, request);
|
|
466
466
|
}
|
|
467
467
|
saveLoader(changes, fetcher) {
|
|
468
468
|
return new Promise((resolve) => {
|
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
|
|
|
2
2
|
import { StringUtils, ElementIDUtils, ApplicationContext, JSUtils, FloatingManager } from '@sankhyalabs/core';
|
|
3
3
|
import { T as TaskbarElement, d as defineCustomElement$3 } from './snk-taskbar2.js';
|
|
4
4
|
import './DataFetcher.js';
|
|
5
|
-
import { P as PresentationMode } from './ISave.js';
|
|
5
|
+
import { P as PresentationMode, E as ExporterStrategy } from './ISave.js';
|
|
6
6
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
|
7
7
|
import '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
|
8
8
|
import './dataunit-fetcher.js';
|
|
@@ -86,6 +86,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
86
86
|
this.domainMessagesBuilder = undefined;
|
|
87
87
|
this.ignoreReadOnlyFormFields = undefined;
|
|
88
88
|
this.setCustomFormTitle = undefined;
|
|
89
|
+
this.strategyExporter = ExporterStrategy.SERVER_SIDE;
|
|
89
90
|
this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
|
|
90
91
|
}
|
|
91
92
|
/**
|
|
@@ -420,7 +421,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
420
421
|
return;
|
|
421
422
|
}
|
|
422
423
|
this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
|
|
423
|
-
return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
|
|
424
|
+
return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
|
|
424
425
|
}
|
|
425
426
|
get _element() { return this; }
|
|
426
427
|
static get watchers() { return {
|
|
@@ -452,6 +453,7 @@ const SnkCrud$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
452
453
|
"domainMessagesBuilder": [1, "domain-messages-builder"],
|
|
453
454
|
"ignoreReadOnlyFormFields": [4, "ignore-read-only-form-fields"],
|
|
454
455
|
"setCustomFormTitle": [16],
|
|
456
|
+
"strategyExporter": [1025, "strategy-exporter"],
|
|
455
457
|
"_dataUnit": [32],
|
|
456
458
|
"_dataState": [32],
|
|
457
459
|
"attachmentRegisterKey": [32],
|
|
@@ -257,7 +257,9 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
257
257
|
return new DataUnitAction(Action.RECORDS_COPIED, this.handleRecordsCopied(action.payload));
|
|
258
258
|
}
|
|
259
259
|
async interceptDataChange(action) {
|
|
260
|
-
|
|
260
|
+
var _a;
|
|
261
|
+
const recordId = (_a = this.dataUnit.getSelectedRecord()) === null || _a === void 0 ? void 0 : _a.__record__id__;
|
|
262
|
+
if (this.isAllowed("UPDATE") || this.dataUnit.isNewRecord(recordId)) {
|
|
261
263
|
return action;
|
|
262
264
|
}
|
|
263
265
|
if (this._openedAlert) {
|
|
@@ -327,7 +327,7 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
|
327
327
|
else {
|
|
328
328
|
detailBranch = this.selectedGuide;
|
|
329
329
|
}
|
|
330
|
-
content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders }));
|
|
330
|
+
content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders, presentationMode: this.presentationMode }));
|
|
331
331
|
}
|
|
332
332
|
else {
|
|
333
333
|
const cardId = this.selectedGuide.id;
|
|
@@ -805,7 +805,7 @@ class GuideBuilder {
|
|
|
805
805
|
}
|
|
806
806
|
}
|
|
807
807
|
|
|
808
|
-
const snkDetailViewCss = ".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px}.detail-header.sc-snk-detail-view{padding-bottom:0}";
|
|
808
|
+
const snkDetailViewCss = ".sc-snk-detail-view-h{display:flex;row-gap:24px;flex-direction:column;width:100%;height:100%}.level-path.sc-snk-detail-view{color:var(--color--title-primary, #2B3A54);font-weight:var(--text-weight--medium, 400);padding-right:3px}.form-taskbar.sc-snk-detail-view{padding-bottom:var(--space--medium)}.grid-container.sc-snk-detail-view{background-color:#FFF;min-height:100px;height:100%}.detail-header.sc-snk-detail-view{padding-bottom:0}snk-data-unit.sc-snk-detail-view{flex:1}snk-grid.sc-snk-detail-view{height:calc(100% - 43px)}";
|
|
809
809
|
|
|
810
810
|
const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
811
811
|
constructor() {
|
|
@@ -832,6 +832,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
832
832
|
this.taskbarCustomContainerId = undefined;
|
|
833
833
|
this.customEditors = undefined;
|
|
834
834
|
this.customRenders = undefined;
|
|
835
|
+
this.presentationMode = PresentationMode.SECONDARY;
|
|
835
836
|
}
|
|
836
837
|
observeDataUnit(newDataUnit, oldDataUnit) {
|
|
837
838
|
newDataUnit === null || newDataUnit === void 0 ? void 0 : newDataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
|
@@ -1051,7 +1052,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
1051
1052
|
render() {
|
|
1052
1053
|
this.updateLabel();
|
|
1053
1054
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
|
1054
|
-
return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-
|
|
1055
|
+
return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems) }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" })))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
|
|
1055
1056
|
}
|
|
1056
1057
|
static get watchers() { return {
|
|
1057
1058
|
"dataUnit": ["observeDataUnit"],
|
|
@@ -1076,6 +1077,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
1076
1077
|
"taskbarCustomContainerId": [1, "taskbar-custom-container-id"],
|
|
1077
1078
|
"customEditors": [16],
|
|
1078
1079
|
"customRenders": [16],
|
|
1080
|
+
"presentationMode": [1, "presentation-mode"],
|
|
1079
1081
|
"_disabledButtons": [32],
|
|
1080
1082
|
"_currentView": [32],
|
|
1081
1083
|
"attachmentRegisterKey": [32],
|
package/dist/esm/{ClientSideExporterProvider-ff89c7e9.js → ClientSideExporterProvider-3537805a.js}
RENAMED
|
@@ -5,7 +5,7 @@ import { D as DataExporterOption } from './index-b40568ff.js';
|
|
|
5
5
|
import './ISave-d8c8bc59.js';
|
|
6
6
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
|
7
7
|
import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
|
8
|
-
import { P as PreloadManager } from './dataunit-fetcher-
|
|
8
|
+
import { P as PreloadManager } from './dataunit-fetcher-91b094f2.js';
|
|
9
9
|
import './filter-item-type.enum-d45e026f.js';
|
|
10
10
|
import './form-config-fetcher-126e2471.js';
|
|
11
11
|
import './constants-75abb876.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ObjectUtils, DataUnit,
|
|
1
|
+
import { ObjectUtils, DataUnit, DataUnitInMemoryLoader, ApplicationContext, StringUtils, UserInterface, DataUnitStorage, DataType, ChangeOperation } from '@sankhyalabs/core';
|
|
2
2
|
import { D as DataFetcher, d as dist } from './DataFetcher-5221b992.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';
|
|
@@ -238,182 +238,33 @@ class PreloadManager {
|
|
|
238
238
|
PreloadManager._repositories = new Map();
|
|
239
239
|
PreloadManager._loadingStatus = new Map();
|
|
240
240
|
|
|
241
|
-
function applyFilter(records, dataUnit, filters) {
|
|
242
|
-
const columnFilters = ColumnFilterManager.getColumnFilters(filters, "");
|
|
243
|
-
if (!(columnFilters === null || columnFilters === void 0 ? void 0 : columnFilters.size)) {
|
|
244
|
-
return records;
|
|
245
|
-
}
|
|
246
|
-
const filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
|
247
|
-
if (filterFunction == undefined) {
|
|
248
|
-
return records;
|
|
249
|
-
}
|
|
250
|
-
return records.filter(filterFunction);
|
|
251
|
-
}
|
|
252
|
-
function buildLoadDataResponse(recordsIn, dataUnit, request) {
|
|
253
|
-
let records = recordsIn ? [...recordsIn] : [];
|
|
254
|
-
records = applyFilter(records, dataUnit, request.filters);
|
|
255
|
-
records = applySorting(records, dataUnit, request.sort);
|
|
256
|
-
const { offset, limit } = request;
|
|
257
|
-
const paginationInfoBuilderParams = {
|
|
258
|
-
recordsLength: records.length,
|
|
259
|
-
offset,
|
|
260
|
-
recordsPerPage: limit,
|
|
261
|
-
};
|
|
262
|
-
return Promise.resolve({
|
|
263
|
-
records: getPagesByRecords(records, offset, limit),
|
|
264
|
-
paginationInfo: dataUnit.pageSize ? buildPaginationInfo(paginationInfoBuilderParams) : undefined,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
function applySorting(records, dataUnit, sorting) {
|
|
268
|
-
if (sorting == undefined || sorting.length == 0) {
|
|
269
|
-
return records;
|
|
270
|
-
}
|
|
271
|
-
const sortingFunction = PreloadManager.getSortingFunction(dataUnit, sorting);
|
|
272
|
-
if (sortingFunction == undefined) {
|
|
273
|
-
return records;
|
|
274
|
-
}
|
|
275
|
-
return records.sort(sortingFunction);
|
|
276
|
-
}
|
|
277
|
-
function hasValidLimitAndOffset(offset, limit) {
|
|
278
|
-
return offset >= 0 && limit >= 0;
|
|
279
|
-
}
|
|
280
|
-
function getPagesByRecords(records, offset = 0, limit = 0) {
|
|
281
|
-
if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
|
|
282
|
-
return [];
|
|
283
|
-
if (limit === 0 && offset === 0)
|
|
284
|
-
return records;
|
|
285
|
-
return records.slice(offset, offset + limit);
|
|
286
|
-
}
|
|
287
|
-
function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
|
|
288
|
-
if (!recordsLength) {
|
|
289
|
-
return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
|
|
290
|
-
}
|
|
291
|
-
const lastRecordIndex = offset + recordsPerPage;
|
|
292
|
-
const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
|
|
293
|
-
return {
|
|
294
|
-
currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
|
|
295
|
-
firstRecord: offset + 1,
|
|
296
|
-
lastRecord: lastRecord,
|
|
297
|
-
total: recordsLength,
|
|
298
|
-
hasMore: lastRecord < recordsLength,
|
|
299
|
-
};
|
|
300
|
-
}
|
|
301
|
-
|
|
302
241
|
class InMemoryLoader {
|
|
303
242
|
constructor(metadata, records, config) {
|
|
304
|
-
this.
|
|
305
|
-
this.records = records;
|
|
306
|
-
this._dataUnit = new DataUnit(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME);
|
|
307
|
-
this._dataUnit.pageSize = 150;
|
|
308
|
-
this._dataUnit.metadataLoader = () => this.metadaLoader();
|
|
309
|
-
this._dataUnit.dataLoader = (dataUnit, request) => this.inMemoryLoader(dataUnit, request, this.getRecordsToLoad());
|
|
310
|
-
this._dataUnit.saveLoader = (_dataUnit, changes) => this.saveLoader(_dataUnit, changes);
|
|
311
|
-
this._dataUnit.removeLoader = (_dataUnit, recordIds) => this.removeLoader(_dataUnit, recordIds);
|
|
312
|
-
this.dataUnit.loadMetadata().then(() => {
|
|
313
|
-
if ((config === null || config === void 0 ? void 0 : config.autoLoad) !== false) {
|
|
314
|
-
this.dataUnit.loadData();
|
|
315
|
-
}
|
|
316
|
-
});
|
|
317
|
-
}
|
|
318
|
-
getRecordsToLoad() {
|
|
319
|
-
if (this._initialRecords == undefined && this.dataUnit.records.length > 0) {
|
|
320
|
-
this._initialRecords = this.dataUnit.records;
|
|
321
|
-
}
|
|
322
|
-
const addedRecords = this.dataUnit.getAddedRecords();
|
|
323
|
-
if (addedRecords) {
|
|
324
|
-
return [...this._initialRecords, ...addedRecords];
|
|
325
|
-
}
|
|
326
|
-
return this._initialRecords;
|
|
243
|
+
this._dataUnitInMemoryLoader = new DataUnitInMemoryLoader(metadata, records, config);
|
|
327
244
|
}
|
|
328
245
|
get dataUnit() {
|
|
329
|
-
return this.
|
|
246
|
+
return this._dataUnitInMemoryLoader.dataUnit;
|
|
330
247
|
}
|
|
331
248
|
get records() {
|
|
332
|
-
return this.
|
|
333
|
-
}
|
|
334
|
-
static getConvertedValue(descriptor, strValue) {
|
|
335
|
-
if (descriptor.dataType === DataType.BOOLEAN) {
|
|
336
|
-
return strValue === "S";
|
|
337
|
-
}
|
|
338
|
-
if (descriptor.dataType === DataType.NUMBER) {
|
|
339
|
-
return Number(strValue);
|
|
340
|
-
}
|
|
341
|
-
if (descriptor.dataType === DataType.DATE) {
|
|
342
|
-
return DateUtils.strToDate(strValue, true);
|
|
343
|
-
}
|
|
344
|
-
if (descriptor.dataType === DataType.OBJECT) {
|
|
345
|
-
return JSON.parse(strValue);
|
|
346
|
-
}
|
|
347
|
-
return strValue;
|
|
249
|
+
return this._dataUnitInMemoryLoader.records;
|
|
348
250
|
}
|
|
349
251
|
set records(records) {
|
|
350
|
-
|
|
351
|
-
const newRecords = records === null || records === void 0 ? void 0 : records.map(record => {
|
|
352
|
-
if (!record["__record__id__"]) {
|
|
353
|
-
record["__record__id__"] = this.generateUniqueId();
|
|
354
|
-
}
|
|
355
|
-
if (columns != undefined) {
|
|
356
|
-
for (const name in record) {
|
|
357
|
-
const value = record[name];
|
|
358
|
-
if (typeof value === "string" && columns.has(name)) {
|
|
359
|
-
record[name] = InMemoryLoader.getConvertedValue(columns.get(name), value);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
return record;
|
|
364
|
-
});
|
|
365
|
-
this._initialRecords = newRecords;
|
|
366
|
-
if (this._dataUnit) {
|
|
367
|
-
//Isso força o refresh internamente no datunit
|
|
368
|
-
this._dataUnit.loadData();
|
|
369
|
-
}
|
|
252
|
+
this._dataUnitInMemoryLoader.records = records;
|
|
370
253
|
}
|
|
371
254
|
get metadata() {
|
|
372
|
-
return this.
|
|
255
|
+
return this._dataUnitInMemoryLoader.metadata;
|
|
373
256
|
}
|
|
374
257
|
set metadata(metadata) {
|
|
375
|
-
this.
|
|
376
|
-
if (this._dataUnit) {
|
|
377
|
-
this._dataUnit.metadata = this._metadata;
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
generateUniqueId() {
|
|
381
|
-
return StringUtils.generateUUID();
|
|
382
|
-
}
|
|
383
|
-
inMemoryLoader(dataUnit, request, recordsIn) {
|
|
384
|
-
return buildLoadDataResponse(recordsIn, dataUnit, request);
|
|
385
|
-
}
|
|
386
|
-
metadaLoader() {
|
|
387
|
-
return Promise.resolve(this._metadata);
|
|
388
|
-
}
|
|
389
|
-
saveLoader(_dataUnit, changes) {
|
|
390
|
-
return new Promise((resolve) => {
|
|
391
|
-
let dataUnitRecords = [];
|
|
392
|
-
changes.forEach(change => {
|
|
393
|
-
let { record, updatingFields, operation } = change;
|
|
394
|
-
const changedRecord = Object.assign(Object.assign({}, record), updatingFields);
|
|
395
|
-
if (operation === ChangeOperation.INSERT ||
|
|
396
|
-
operation === ChangeOperation.COPY) {
|
|
397
|
-
changedRecord["__old__id__"] = record["__record__id__"];
|
|
398
|
-
changedRecord["__record__id__"] = this.generateUniqueId();
|
|
399
|
-
this.records.push(changedRecord);
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
const recordIndex = this.records.findIndex(r => r["__record__id__"] == changedRecord["__record__id__"]);
|
|
403
|
-
this.records[recordIndex] = changedRecord;
|
|
404
|
-
}
|
|
405
|
-
dataUnitRecords.push(changedRecord);
|
|
406
|
-
});
|
|
407
|
-
resolve(dataUnitRecords);
|
|
408
|
-
});
|
|
258
|
+
this._dataUnitInMemoryLoader.metadata = metadata;
|
|
409
259
|
}
|
|
410
260
|
removeLoader(_dataUnit, recordIds) {
|
|
411
|
-
return
|
|
412
|
-
|
|
413
|
-
|
|
261
|
+
return this._dataUnitInMemoryLoader.removeLoader(_dataUnit, recordIds);
|
|
262
|
+
}
|
|
263
|
+
static getConvertedValue(descriptor, strValue, dateFormat) {
|
|
264
|
+
return DataUnitInMemoryLoader.getConvertedValue(descriptor, strValue, dateFormat);
|
|
414
265
|
}
|
|
415
266
|
}
|
|
416
|
-
InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME =
|
|
267
|
+
InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME = DataUnitInMemoryLoader.IN_MEMORY_DATA_UNIT_NAME;
|
|
417
268
|
|
|
418
269
|
function getRecordValue(record, fieldName) {
|
|
419
270
|
var _a, _b;
|
|
@@ -1250,4 +1101,4 @@ class DataUnitFetcher {
|
|
|
1250
1101
|
}
|
|
1251
1102
|
}
|
|
1252
1103
|
|
|
1253
|
-
export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a,
|
|
1104
|
+
export { DataUnitFetcher as D, InMemoryLoader as I, PreloadManager as P, DatasetStrategy as a, getRecordValue as g };
|