@sankhyalabs/sankhyablocks 8.8.0-dev.3 → 8.8.0-rc.10
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-bdb539ce.js → ConfigStorage-908ce5bc.js} +2 -2
- package/dist/cjs/{DataFetcher-016f1661.js → DataFetcher-713f0749.js} +2 -2
- package/dist/cjs/PreloadManager-e26d237f.js +224 -0
- package/dist/cjs/{SnkFormConfigManager-c9d38de1.js → SnkFormConfigManager-793ade39.js} +2 -2
- package/dist/cjs/{SnkMultiSelectionListDataSource-45893a0c.js → SnkMultiSelectionListDataSource-d74d2336.js} +10 -6
- package/dist/cjs/{auth-fetcher-73ee0989.js → auth-fetcher-555ff856.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-2454608a.js → dataunit-fetcher-66c0b7af.js} +46 -276
- package/dist/cjs/{form-config-fetcher-5e5ec5be.js → form-config-fetcher-17775a75.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{pesquisa-fetcher-63a8c652.js → pesquisa-fetcher-34922b83.js} +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button.cjs.entry.js +6 -4
- package/dist/cjs/snk-application.cjs.entry.js +16 -6
- package/dist/cjs/snk-attach.cjs.entry.js +4 -2
- package/dist/cjs/snk-crud.cjs.entry.js +7 -5
- package/dist/cjs/snk-data-exporter.cjs.entry.js +1 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +24 -8
- package/dist/cjs/snk-filter-bar.cjs.entry.js +19 -4
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
- package/dist/cjs/snk-form-config.cjs.entry.js +2 -2
- package/dist/cjs/snk-form.cjs.entry.js +4 -4
- package/dist/cjs/snk-grid-config.cjs.entry.js +3 -3
- package/dist/cjs/snk-grid.cjs.entry.js +8 -7
- package/dist/cjs/{snk-guides-viewer-018c1c8e.js → snk-guides-viewer-2317c71e.js} +78 -5
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -7
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
- package/dist/cjs/snk-simple-crud.cjs.entry.js +8 -5
- package/dist/collection/components/snk-application/snk-application.js +1 -0
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +18 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +80 -8
- package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +17 -2
- package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/collection/components/snk-grid/snk-grid.js +1 -0
- package/dist/collection/lib/http/data-fetcher/DataFetcher.js +2 -2
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +6 -1
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +3 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +21 -61
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +28 -9
- package/dist/collection/lib/workspace/workspace.js +7 -0
- package/dist/components/DataFetcher.js +2 -2
- package/dist/components/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/components/dataunit-fetcher.js +59 -70
- package/dist/components/snk-application2.js +8 -0
- package/dist/components/snk-detail-view2.js +88 -2
- package/dist/components/snk-filter-bar2.js +17 -2
- package/dist/components/snk-grid2.js +1 -0
- package/dist/esm/{ConfigStorage-9840d004.js → ConfigStorage-48648d45.js} +2 -2
- package/dist/esm/{DataFetcher-07935045.js → DataFetcher-79f78222.js} +2 -2
- package/dist/esm/PreloadManager-8826b96a.js +222 -0
- package/dist/esm/{SnkFormConfigManager-a7c4ac16.js → SnkFormConfigManager-3c15f319.js} +2 -2
- package/dist/esm/{SnkMultiSelectionListDataSource-a0b69ac4.js → SnkMultiSelectionListDataSource-27572f47.js} +6 -6
- package/dist/esm/{auth-fetcher-1afab780.js → auth-fetcher-e260d0cd.js} +1 -1
- package/dist/esm/{dataunit-fetcher-493182bc.js → dataunit-fetcher-831feb12.js} +39 -268
- package/dist/esm/{form-config-fetcher-5b886892.js → form-config-fetcher-e1603e66.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{pesquisa-fetcher-7c46996d.js → pesquisa-fetcher-8e922c9d.js} +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button.entry.js +6 -4
- package/dist/esm/snk-application.entry.js +16 -6
- package/dist/esm/snk-attach.entry.js +4 -2
- package/dist/esm/snk-crud.entry.js +7 -5
- package/dist/esm/snk-data-exporter.entry.js +1 -1
- package/dist/esm/snk-detail-view.entry.js +24 -8
- package/dist/esm/snk-filter-bar.entry.js +20 -5
- package/dist/esm/snk-filter-modal-item.entry.js +3 -3
- package/dist/esm/snk-form-config.entry.js +2 -2
- package/dist/esm/snk-form.entry.js +4 -4
- package/dist/esm/snk-grid-config.entry.js +3 -3
- package/dist/esm/snk-grid.entry.js +8 -7
- package/dist/esm/{snk-guides-viewer-7c120bc6.js → snk-guides-viewer-3ba271c1.js} +79 -6
- package/dist/esm/snk-guides-viewer.entry.js +9 -7
- package/dist/esm/snk-personalized-filter.entry.js +3 -3
- package/dist/esm/snk-simple-crud.entry.js +8 -5
- package/dist/sankhyablocks/p-25882572.entry.js +1 -0
- package/dist/sankhyablocks/{p-b19c272c.js → p-2b39abbc.js} +1 -1
- package/dist/sankhyablocks/{p-1b985000.entry.js → p-2ecd9a19.entry.js} +1 -1
- package/dist/sankhyablocks/p-3926383d.entry.js +1 -0
- package/dist/sankhyablocks/{p-de9eb242.entry.js → p-395567f3.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-efb2e247.js → p-41d156dd.js} +1 -1
- package/dist/sankhyablocks/{p-0f2b03e5.js → p-4651b43f.js} +1 -1
- package/dist/sankhyablocks/p-57543969.js +1 -0
- package/dist/sankhyablocks/p-5f6113c8.js +60 -0
- package/dist/sankhyablocks/{p-54efcc8d.entry.js → p-747043a5.entry.js} +1 -1
- package/dist/sankhyablocks/p-77756526.js +1 -0
- package/dist/sankhyablocks/{p-96dd0c41.js → p-8015cbfb.js} +1 -1
- package/dist/sankhyablocks/{p-562896d0.entry.js → p-80692cbd.entry.js} +1 -1
- package/dist/sankhyablocks/p-a1cce4f5.entry.js +1 -0
- package/dist/sankhyablocks/{p-afdb6ddc.entry.js → p-abff11ef.entry.js} +1 -1
- package/dist/sankhyablocks/{p-9246d7df.entry.js → p-afacdce6.entry.js} +1 -1
- package/dist/sankhyablocks/p-b86bee20.entry.js +11 -0
- package/dist/sankhyablocks/{p-4f7b9c50.js → p-c9399ce6.js} +1 -1
- package/dist/sankhyablocks/p-d0b36421.js +1 -0
- package/dist/sankhyablocks/p-eb25c85f.entry.js +1 -0
- package/dist/sankhyablocks/p-f07a5363.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-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +3 -0
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +22 -11
- 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/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/ILoadingInfo.d.ts +2 -0
- package/dist/types/lib/workspace/workspace.d.ts +1 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-21d01a8c.entry.js +0 -1
- package/dist/sankhyablocks/p-43f36d85.entry.js +0 -1
- package/dist/sankhyablocks/p-53091bcd.js +0 -1
- package/dist/sankhyablocks/p-7650d823.js +0 -1
- package/dist/sankhyablocks/p-8f7e0bbd.entry.js +0 -1
- package/dist/sankhyablocks/p-9256574e.entry.js +0 -11
- package/dist/sankhyablocks/p-b9b7bfce.entry.js +0 -1
- package/dist/sankhyablocks/p-bdfcc2e2.js +0 -59
- package/dist/sankhyablocks/p-db45a464.entry.js +0 -1
- package/dist/sankhyablocks/p-de1196c8.js +0 -1
- package/dist/sankhyablocks/p-e13c3fbc.entry.js +0 -1
- package/dist/sankhyablocks/p-e33b308f.entry.js +0 -1
- package/dist/sankhyablocks/p-f34b9087.entry.js +0 -1
@@ -2,6 +2,7 @@ import { DataType, FieldComparator, SortMode, DataUnit, defaultDataLoader, DateU
|
|
2
2
|
import { d as dist, D as DataFetcher } 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';
|
5
|
+
import { ColumnFilterManager } from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils';
|
5
6
|
import { R as ResourceIDUtils } from './ResourceIDUtils.js';
|
6
7
|
|
7
8
|
class PesquisaFetcher {
|
@@ -192,6 +193,9 @@ class ArrayRepository {
|
|
192
193
|
for (const item of this._list) {
|
193
194
|
const processedItem = itemProcessor(item);
|
194
195
|
if (processedItem == undefined) {
|
196
|
+
continue;
|
197
|
+
}
|
198
|
+
if (processedItem.value == undefined) {
|
195
199
|
hasEmpty = true;
|
196
200
|
continue;
|
197
201
|
}
|
@@ -243,21 +247,12 @@ class ArrayRepository {
|
|
243
247
|
}
|
244
248
|
}
|
245
249
|
|
246
|
-
const COLUMN_FILTER_PATTERN = /FILTRO_COLUNA_(.+)/;
|
247
250
|
class PreloadManager {
|
248
251
|
static setLoadingStatus(dataUnit, loadingInProgress) {
|
249
252
|
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
250
253
|
}
|
251
|
-
static isCacheEnabled(
|
252
|
-
|
253
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
254
|
-
return false;
|
255
|
-
}
|
256
|
-
return this.getRepository(dataUnit).isOperating();
|
257
|
-
}
|
258
|
-
static getResourceId(dataUnitName) {
|
259
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
260
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
254
|
+
static isCacheEnabled(_dataUnit) {
|
255
|
+
return true;
|
261
256
|
}
|
262
257
|
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
263
258
|
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
@@ -285,27 +280,32 @@ class PreloadManager {
|
|
285
280
|
}
|
286
281
|
static async getDistinct(dataUnit, fieldName) {
|
287
282
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
288
|
-
return Promise.resolve(
|
283
|
+
return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
284
|
+
}
|
285
|
+
let filterFunction;
|
286
|
+
const request = dataUnit.getLastLoadRequest();
|
287
|
+
if (request != undefined) {
|
288
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
289
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
289
290
|
}
|
290
291
|
return new Promise((accept, reject) => {
|
291
292
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
293
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
294
|
+
return undefined;
|
295
|
+
}
|
292
296
|
const fieldValue = record[fieldName];
|
293
297
|
if (fieldValue == undefined) {
|
294
|
-
return
|
298
|
+
return { key: null, value: null };
|
295
299
|
}
|
296
300
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
297
301
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
298
302
|
})
|
299
303
|
.then(result => {
|
300
|
-
if (result
|
301
|
-
|
302
|
-
const sortedMap = new Map(Array.from(result.entries())
|
303
|
-
.sort((itemA, itemB) => FieldComparator.compareValues(field, itemA[1], itemB[1]))
|
304
|
-
.map(([key, value]) => key === "" ? ["(Vazio)", value] : [key, value]));
|
305
|
-
accept(sortedMap);
|
304
|
+
if (result == undefined) {
|
305
|
+
accept(undefined);
|
306
306
|
return;
|
307
307
|
}
|
308
|
-
accept(result);
|
308
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
309
309
|
})
|
310
310
|
.catch(reason => reject(reason));
|
311
311
|
});
|
@@ -320,7 +320,7 @@ class PreloadManager {
|
|
320
320
|
return PreloadManager.loadFromCache(dataUnit, request);
|
321
321
|
}
|
322
322
|
}
|
323
|
-
//Como não vamos aproveitar o cache, ele precisa ser
|
323
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
324
324
|
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
325
325
|
}
|
326
326
|
return loadFromServer(dataUnit, request);
|
@@ -358,39 +358,16 @@ class PreloadManager {
|
|
358
358
|
}
|
359
359
|
return PreloadManager._repositories.get(name);
|
360
360
|
}
|
361
|
-
static getFilterFunction(dataUnit, filters) {
|
362
|
-
if (filters != undefined && filters.length > 0) {
|
363
|
-
return record => {
|
364
|
-
for (const filter of filters) {
|
365
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
366
|
-
return false;
|
367
|
-
}
|
368
|
-
}
|
369
|
-
return true;
|
370
|
-
};
|
371
|
-
}
|
372
|
-
return undefined;
|
373
|
-
}
|
374
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
375
|
-
const fieldValue = record[columnFilter.columnName];
|
376
|
-
for (let param of columnFilter.params) {
|
377
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
378
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
379
|
-
return true;
|
380
|
-
}
|
381
|
-
}
|
382
|
-
return false;
|
383
|
-
}
|
384
361
|
static async loadFromCache(dataUnit, request) {
|
385
362
|
return new Promise((accept, reject) => {
|
386
|
-
const columnFilters =
|
363
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
387
364
|
const { limit, offset, sort } = request;
|
388
365
|
PreloadManager.getRepository(dataUnit)
|
389
|
-
.load(
|
366
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
390
367
|
.then(loadResult => {
|
391
368
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
392
369
|
const { count, result: records } = loadResult;
|
393
|
-
const firstRecord = count == 0 ?
|
370
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
394
371
|
const lastRecord = offset + Math.min(records.length, limit);
|
395
372
|
const currentPage = offset / limit;
|
396
373
|
const paginationInfo = {
|
@@ -403,19 +380,6 @@ class PreloadManager {
|
|
403
380
|
.catch(reason => reject(reason));
|
404
381
|
});
|
405
382
|
}
|
406
|
-
static getColumnFilters(filters) {
|
407
|
-
const columnFilters = new Map();
|
408
|
-
if (filters == undefined || filters.length == 0) {
|
409
|
-
return columnFilters;
|
410
|
-
}
|
411
|
-
filters.forEach(filter => {
|
412
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
413
|
-
if (match) {
|
414
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
415
|
-
}
|
416
|
-
});
|
417
|
-
return columnFilters;
|
418
|
-
}
|
419
383
|
}
|
420
384
|
PreloadManager._repositories = new Map();
|
421
385
|
PreloadManager._loadingStatus = new Map();
|
@@ -536,17 +500,36 @@ class DatasetStrategy {
|
|
536
500
|
return Promise.resolve({ records: [], loadingInfo });
|
537
501
|
}
|
538
502
|
try {
|
503
|
+
const localSorting = [];
|
504
|
+
const serverSorting = [];
|
505
|
+
if (request.sort != undefined) {
|
506
|
+
for (const sort of request.sort) {
|
507
|
+
const descriptor = dataUnit.getField(sort.field);
|
508
|
+
const local = descriptor != undefined
|
509
|
+
&& descriptor.properties != undefined
|
510
|
+
&& descriptor.properties.calculated === "true";
|
511
|
+
if (local) {
|
512
|
+
localSorting.push(sort);
|
513
|
+
}
|
514
|
+
else {
|
515
|
+
serverSorting.push(sort);
|
516
|
+
}
|
517
|
+
}
|
518
|
+
}
|
539
519
|
const fields = this.getFieldsList(dataUnit);
|
540
520
|
const serviceName = "DatasetSP.loadRecords";
|
541
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo);
|
542
|
-
const {
|
521
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
522
|
+
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
523
|
+
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
543
524
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
544
525
|
const loadingInProgress = pagerId != undefined;
|
545
526
|
const count = loadingInfo.count + records.length;
|
527
|
+
const needReload = !loadingInProgress && localSorting.length > 0;
|
546
528
|
return Promise.resolve({
|
547
529
|
records,
|
548
530
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
549
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count
|
531
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
532
|
+
needReload })
|
550
533
|
});
|
551
534
|
}
|
552
535
|
catch (error) {
|
@@ -556,9 +539,10 @@ class DatasetStrategy {
|
|
556
539
|
}
|
557
540
|
getFieldsList(dataUnit) {
|
558
541
|
let fields = ["__record__id__", "__record__label__"];
|
559
|
-
dataUnit.metadata.fields.forEach(descriptor => {
|
560
|
-
if (descriptor.standAlone)
|
542
|
+
dataUnit.metadata.fields.forEach((descriptor) => {
|
543
|
+
if (descriptor.standAlone) {
|
561
544
|
return;
|
545
|
+
}
|
562
546
|
fields = fields.concat(this.getFieldNames(descriptor));
|
563
547
|
});
|
564
548
|
return fields;
|
@@ -570,7 +554,7 @@ class DatasetStrategy {
|
|
570
554
|
}
|
571
555
|
return [descriptor.name, descriptionField];
|
572
556
|
}
|
573
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo) {
|
557
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
574
558
|
const dataSetID = dataUnit.dataUnitId;
|
575
559
|
const dataUnitName = dataUnit.name;
|
576
560
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -591,13 +575,13 @@ class DatasetStrategy {
|
|
591
575
|
tryJoinedFields: true,
|
592
576
|
parallelLoader: true,
|
593
577
|
crudListener: "br.com.sankhya.modelcore.dataset.DataUnitDatasetAdapter",
|
594
|
-
txProperties: this.getTxProperties(dataUnitName, request),
|
578
|
+
txProperties: this.getTxProperties(dataUnitName, request, sorting),
|
595
579
|
useDefaultRowsLimit: false
|
596
580
|
}
|
597
581
|
};
|
598
582
|
return JSON.stringify(requestBody);
|
599
583
|
}
|
600
|
-
getTxProperties(dataUnitName, request) {
|
584
|
+
getTxProperties(dataUnitName, request, sorting) {
|
601
585
|
const txProperties = {
|
602
586
|
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnitName
|
603
587
|
};
|
@@ -605,7 +589,6 @@ class DatasetStrategy {
|
|
605
589
|
if (serverSideFilters.length !== 0) {
|
606
590
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
607
591
|
}
|
608
|
-
const sorting = request.sort;
|
609
592
|
if (sorting != undefined && sorting.length !== 0) {
|
610
593
|
txProperties["__DATA_UNIT_ADAPTER__[sorting]"] = JSON.stringify(sorting);
|
611
594
|
}
|
@@ -712,7 +695,7 @@ class DataUnitDataLoader {
|
|
712
695
|
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
713
696
|
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
714
697
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
715
|
-
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1 });
|
698
|
+
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
716
699
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
717
700
|
.then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
|
718
701
|
.catch(reason => console.error(reason));
|
@@ -730,6 +713,11 @@ class DataUnitDataLoader {
|
|
730
713
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { count }));
|
731
714
|
return;
|
732
715
|
}
|
716
|
+
if (loadingInfo.needReload) {
|
717
|
+
//Ir para a primeira página, faz com que o loadData seja chamado novamente
|
718
|
+
dataUnit.gotoPage(0);
|
719
|
+
return;
|
720
|
+
}
|
733
721
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { total: count, count }));
|
734
722
|
}
|
735
723
|
static registryLoading(dataUnit, loadingInfo) {
|
@@ -795,6 +783,7 @@ class DataUnitFetcher {
|
|
795
783
|
defaultValue
|
796
784
|
label
|
797
785
|
visible
|
786
|
+
standAlone
|
798
787
|
readOnly
|
799
788
|
required
|
800
789
|
dataType
|
@@ -170,6 +170,13 @@ class Workspace {
|
|
170
170
|
var _a;
|
171
171
|
(_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.setScreenToUseOldLayout();
|
172
172
|
}
|
173
|
+
static applicationClick() {
|
174
|
+
var _a, _b;
|
175
|
+
if (!((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.applicationClick)) {
|
176
|
+
return;
|
177
|
+
}
|
178
|
+
(_b = window["workspace"]) === null || _b === void 0 ? void 0 : _b.applicationClick();
|
179
|
+
}
|
173
180
|
}
|
174
181
|
Workspace.resourceID = (_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID;
|
175
182
|
|
@@ -1047,6 +1054,7 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
|
|
1047
1054
|
}, 100);
|
1048
1055
|
ErrorTracking.init();
|
1049
1056
|
ConfigStorage.preload(this.applicationResourceID, this.configName);
|
1057
|
+
document.addEventListener("click", () => Workspace.applicationClick());
|
1050
1058
|
}
|
1051
1059
|
connectedCallback() {
|
1052
1060
|
ApplicationContext.setContextValue("__SNK__APPLICATION__", this);
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Fragment, forceUpdate, Host } from '@stencil/core/internal/client';
|
2
|
+
import { Action, ElementIDUtils } from '@sankhyalabs/core';
|
2
3
|
import { S as SnkFormConfigManager } from './SnkFormConfigManager.js';
|
3
4
|
import { buildFormMetadata, FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
|
4
5
|
import './DataFetcher.js';
|
5
6
|
import './dataunit-fetcher.js';
|
6
|
-
import { ElementIDUtils } from '@sankhyalabs/core';
|
7
7
|
import { P as PresentationMode } from './index2.js';
|
8
8
|
import { d as defineCustomElement$t } from './snk-actions-button2.js';
|
9
9
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
@@ -165,6 +165,12 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
165
165
|
this._breadcrumbItems = breadcrumbs;
|
166
166
|
});
|
167
167
|
});
|
168
|
+
this._guides = this._guides.map(guide => {
|
169
|
+
if (guide.id === guideItem.id) {
|
170
|
+
return Object.assign(Object.assign({}, guide), guideItem);
|
171
|
+
}
|
172
|
+
return guide;
|
173
|
+
});
|
168
174
|
}
|
169
175
|
}
|
170
176
|
loadTaskbarProcessor() {
|
@@ -292,6 +298,28 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
292
298
|
this._guideNavigator.getCurrentPath().then(breadcrumbs => {
|
293
299
|
this._breadcrumbItems = breadcrumbs;
|
294
300
|
});
|
301
|
+
this.resetGuideBadge(currentItem);
|
302
|
+
}
|
303
|
+
resetGuideBadge(selectedGuide) {
|
304
|
+
var _a;
|
305
|
+
this._guides = [...(_a = this._guides) === null || _a === void 0 ? void 0 : _a.map(guide => {
|
306
|
+
if (this.canClearGuideBadge(guide, selectedGuide.id)) {
|
307
|
+
return Object.assign(Object.assign({}, guide), { badge: null });
|
308
|
+
}
|
309
|
+
return guide;
|
310
|
+
})];
|
311
|
+
}
|
312
|
+
canClearGuideBadge(guide, idToCheck) {
|
313
|
+
return (guide.id === idToCheck) || this.isIncludedInChildrenList(guide, idToCheck);
|
314
|
+
}
|
315
|
+
isIncludedInChildrenList(guide, guideId) {
|
316
|
+
return this.hasChildren(guide) && this.getChildrenIdList(guide).includes(guideId);
|
317
|
+
}
|
318
|
+
hasChildren(guide) {
|
319
|
+
return guide.children && Array.isArray(guide.children);
|
320
|
+
}
|
321
|
+
getChildrenIdList(guide) {
|
322
|
+
return (guide.children).map(guideChild => guideChild.id);
|
295
323
|
}
|
296
324
|
getConfigViewMode() {
|
297
325
|
return VIEW_MODE.GRID;
|
@@ -341,6 +369,50 @@ const SnkGuidesViewer = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
|
|
341
369
|
var _a;
|
342
370
|
return h("div", { class: `ez-col ez-flex-item--align-center ez-col--sd-6 ez-col--tb-6 ${this.presentationMode != PresentationMode.SECONDARY ? 'ez-align--right' : 'ez-padding-bottom--medium'}` }, h("snk-taskbar", { key: "guideViewerTaskbar", "data-element-id": "guideViewer", configName: this.configName, buttons: this._taskbarProcessor.buttons, disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, actionsList: this.actionsList, messagesBuilder: this.messagesBuilder, presentationMode: this.presentationMode, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-taskbar-owner": "master", dataUnit: this.dataUnit, resourceID: this.resourceID, customSlotId: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" })));
|
343
371
|
}
|
372
|
+
async dataUnitActionHandler(action) {
|
373
|
+
var _a;
|
374
|
+
if (action.type === Action.FIELD_INVALIDATED) {
|
375
|
+
const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
|
376
|
+
await this.addErrorBadgeToGuide(guideName);
|
377
|
+
await this.openGuideNavigator(guideName);
|
378
|
+
}
|
379
|
+
}
|
380
|
+
async addErrorBadgeToGuide(guideName) {
|
381
|
+
var _a;
|
382
|
+
this._guides = [...(_a = this._guides) === null || _a === void 0 ? void 0 : _a.map(guide => {
|
383
|
+
return Object.assign(Object.assign({}, guide), { badge: this.getBadge(guide, guideName) });
|
384
|
+
})];
|
385
|
+
}
|
386
|
+
async openGuideNavigator(guideName) {
|
387
|
+
if (this.selectedGuide.id !== guideName) {
|
388
|
+
await this._guideNavigator.openGuideNavidator();
|
389
|
+
}
|
390
|
+
}
|
391
|
+
getBadge(guide, tabName) {
|
392
|
+
var _a;
|
393
|
+
if (this.selectedGuide.id === tabName) {
|
394
|
+
return null;
|
395
|
+
}
|
396
|
+
if (tabName === guide.id) {
|
397
|
+
return "error";
|
398
|
+
}
|
399
|
+
return (_a = guide.badge) !== null && _a !== void 0 ? _a : null;
|
400
|
+
}
|
401
|
+
getGuideName(fieldName) {
|
402
|
+
var _a;
|
403
|
+
for (const sheet of this._masterFormMetadata.getAllSheets()) {
|
404
|
+
const formFields = (_a = sheet[1]) === null || _a === void 0 ? void 0 : _a.fields;
|
405
|
+
for (const field of formFields) {
|
406
|
+
if (field.name === fieldName) {
|
407
|
+
return sheet[0];
|
408
|
+
}
|
409
|
+
}
|
410
|
+
}
|
411
|
+
return "";
|
412
|
+
}
|
413
|
+
componentDidLoad() {
|
414
|
+
this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
415
|
+
}
|
344
416
|
render() {
|
345
417
|
var _a, _b;
|
346
418
|
if (this._formEditorConfigManager != undefined) {
|
@@ -615,6 +687,10 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
615
687
|
this.canEdit = true;
|
616
688
|
this.taskbarCustomContainerId = undefined;
|
617
689
|
}
|
690
|
+
observeDataUnit(newDataUnit, oldDataUnit) {
|
691
|
+
newDataUnit === null || newDataUnit === void 0 ? void 0 : newDataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
692
|
+
oldDataUnit === null || oldDataUnit === void 0 ? void 0 : oldDataUnit.unsubscribe(this.dataUnitActionHandler);
|
693
|
+
}
|
618
694
|
observerDataState(newValue, oldValue) {
|
619
695
|
const openInsertion = !(oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
|
620
696
|
const closeInsertion = (oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && !(newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
|
@@ -780,12 +856,22 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
780
856
|
this.messagesBuilder = new SnkMessageBuilder(this.entityName);
|
781
857
|
}
|
782
858
|
}
|
859
|
+
async dataUnitActionHandler(action) {
|
860
|
+
if (action.type === Action.FIELD_INVALIDATED) {
|
861
|
+
this.addErrorBadgeToBranchGuide();
|
862
|
+
}
|
863
|
+
}
|
864
|
+
addErrorBadgeToBranchGuide() {
|
865
|
+
this.branchGuide = Object.assign(Object.assign({}, this.branchGuide), { badge: 'error' });
|
866
|
+
this.snkDetailGuidesChange.emit(new GuideBuilder(this.branchGuide, this._formMetadata, this.dataUnit));
|
867
|
+
}
|
783
868
|
render() {
|
784
869
|
this.updateLabel();
|
785
870
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
786
871
|
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-flex 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 ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }))), 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: PresentationMode.SECONDARY, 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) }))))));
|
787
872
|
}
|
788
873
|
static get watchers() { return {
|
874
|
+
"dataUnit": ["observeDataUnit"],
|
789
875
|
"dataState": ["observerDataState"]
|
790
876
|
}; }
|
791
877
|
static get style() { return snkDetailViewCss; }
|
@@ -800,7 +886,7 @@ const SnkDetailView = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
800
886
|
"selectedForm": [1025, "selected-form"],
|
801
887
|
"dataState": [1040],
|
802
888
|
"messagesBuilder": [1040],
|
803
|
-
"branchGuide": [
|
889
|
+
"branchGuide": [1040],
|
804
890
|
"canEdit": [4, "can-edit"],
|
805
891
|
"taskbarCustomContainerId": [1, "taskbar-custom-container-id"],
|
806
892
|
"_disabledButtons": [32],
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
2
|
-
import { DataType, ObjectUtils, ElementIDUtils, ErrorException, ApplicationContext } from '@sankhyalabs/core';
|
2
|
+
import { DataType, StringUtils, ObjectUtils, ElementIDUtils, ErrorException, ApplicationContext } from '@sankhyalabs/core';
|
3
3
|
import { EzScrollDirection } from '@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection';
|
4
4
|
import { C as ConfigStorage } from './ConfigStorage.js';
|
5
5
|
import { toString } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
|
@@ -107,8 +107,11 @@ function buildSearch(item) {
|
|
107
107
|
return { name: id, expression, params: [{ name: id, dataType: DataType.TEXT, value: toString(DataType.TEXT, value.value) }] };
|
108
108
|
}
|
109
109
|
function buildText(item) {
|
110
|
-
|
110
|
+
let { id, value, props } = item;
|
111
111
|
const expression = props.expression;
|
112
|
+
if (!StringUtils.isEmpty(props.likeAs)) {
|
113
|
+
value = buildLikeValue(value, props.likeAs);
|
114
|
+
}
|
112
115
|
return { name: id, expression, params: [{ name: id, dataType: DataType.TEXT, value: toString(DataType.TEXT, value) }] };
|
113
116
|
}
|
114
117
|
function buildNumber(item) {
|
@@ -116,6 +119,18 @@ function buildNumber(item) {
|
|
116
119
|
const expression = props.expression;
|
117
120
|
return { name: id, expression, params: [{ name: id, dataType: DataType.NUMBER, value: toString(DataType.NUMBER, value) }] };
|
118
121
|
}
|
122
|
+
function buildLikeValue(valueAsString, likeAs) {
|
123
|
+
if (likeAs === "CONTANIS") {
|
124
|
+
return `%${valueAsString}%`;
|
125
|
+
}
|
126
|
+
else if (likeAs === "STARTS_WITH") {
|
127
|
+
return `${valueAsString}%`;
|
128
|
+
}
|
129
|
+
else if (likeAs === "ENDS_WITH") {
|
130
|
+
return `%${valueAsString}`;
|
131
|
+
}
|
132
|
+
return valueAsString;
|
133
|
+
}
|
119
134
|
function buildPersonalized(item) {
|
120
135
|
const { id, groupedItems = [] } = item;
|
121
136
|
const activeFilters = groupedItems.filter(groupItem => !!groupItem.visible);
|
@@ -116,6 +116,7 @@ const SnkGrid = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
116
116
|
if (this._gridConfig && this._dataUnit) {
|
117
117
|
this._dataUnit.defaultSorting = this._gridConfig
|
118
118
|
.columns
|
119
|
+
.filter(col => col.ascending != undefined)
|
119
120
|
.sort((colA, colB) => colA.orderIndex - colB.orderIndex)
|
120
121
|
.map(({ name: field, ascending }) => {
|
121
122
|
const { dataType } = this._dataUnit.getField(field);
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import { R as ResourceFetcher, F as FormConfigFetcher } from './form-config-fetcher-
|
1
|
+
import { R as ResourceFetcher, F as FormConfigFetcher } from './form-config-fetcher-e1603e66.js';
|
2
2
|
import { F as FilterItemType } from './filter-item-type.enum-5028ed3f.js';
|
3
3
|
import { ObjectUtils } from '@sankhyalabs/core';
|
4
|
-
import { d as dist, D as DataFetcher } from './DataFetcher-
|
4
|
+
import { d as dist, D as DataFetcher } from './DataFetcher-79f78222.js';
|
5
5
|
|
6
6
|
class GridConfigFetcher extends ResourceFetcher {
|
7
7
|
constructor() {
|
@@ -6729,9 +6729,9 @@ class DataFetcher {
|
|
6729
6729
|
const urlParams = UrlUtils.getQueryParams(location.search);
|
6730
6730
|
return {
|
6731
6731
|
baseUrl: `${this.resolveURL()}/${module}/service.sbr`,
|
6732
|
-
appName: "SankhyaBlocks",
|
6732
|
+
appName: window['APPLICATION_NAME'] || "SankhyaBlocks",
|
6733
6733
|
mgeSession: `${window['mgeSession'] || urlParams.get("mgeSession")}`,
|
6734
|
-
globalID:
|
6734
|
+
globalID: window['GLOBALID'] || StringUtils.generateUUID(),
|
6735
6735
|
resourceID: (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID))
|
6736
6736
|
};
|
6737
6737
|
}
|