@sankhyalabs/sankhyablocks 8.8.0-rc.8 → 8.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ConfigStorage-908ce5bc.js → ConfigStorage-c15716fd.js} +3 -0
- package/dist/cjs/PreloadManager-e26d237f.js +224 -0
- package/dist/cjs/{SnkFormConfigManager-793ade39.js → SnkFormConfigManager-29101e20.js} +1 -1
- package/dist/cjs/{SnkMultiSelectionListDataSource-f000a53f.js → SnkMultiSelectionListDataSource-d74d2336.js} +10 -6
- package/dist/cjs/{dataunit-fetcher-e86cba8a.js → dataunit-fetcher-66c0b7af.js} +10 -267
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- 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 +21 -5
- 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-f31449a8.js → snk-guides-viewer-b173ce35.js} +75 -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-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-grid/filtercolumn/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +15 -54
- package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +3 -0
- package/dist/components/ConfigStorage.js +3 -0
- package/dist/components/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/components/dataunit-fetcher.js +15 -53
- package/dist/components/snk-detail-view2.js +88 -2
- package/dist/esm/{ConfigStorage-48648d45.js → ConfigStorage-79c81f36.js} +3 -0
- package/dist/esm/PreloadManager-8826b96a.js +222 -0
- package/dist/esm/{SnkFormConfigManager-3c15f319.js → SnkFormConfigManager-7723f3ec.js} +1 -1
- package/dist/esm/{SnkMultiSelectionListDataSource-922f0941.js → SnkMultiSelectionListDataSource-27572f47.js} +6 -6
- package/dist/esm/{dataunit-fetcher-ec40608e.js → dataunit-fetcher-831feb12.js} +3 -259
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- 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 +21 -5
- 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-9ecebfc3.js → snk-guides-viewer-e62e0edc.js} +76 -3
- package/dist/esm/snk-guides-viewer.entry.js +6 -4
- package/dist/esm/snk-personalized-filter.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +5 -2
- package/dist/sankhyablocks/{p-abff11ef.entry.js → p-06e76ed2.entry.js} +1 -1
- package/dist/sankhyablocks/p-29176742.js +56 -0
- package/dist/sankhyablocks/{p-8015cbfb.js → p-2e6f1666.js} +1 -1
- package/dist/sankhyablocks/{p-2ecd9a19.entry.js → p-3bf4df20.entry.js} +1 -1
- package/dist/sankhyablocks/p-3c4f0354.js +1 -0
- package/dist/sankhyablocks/p-3ccb321d.entry.js +1 -0
- package/dist/sankhyablocks/{p-afacdce6.entry.js → p-47e4b6c9.entry.js} +1 -1
- package/dist/sankhyablocks/{p-395567f3.entry.js → p-4f5b995d.entry.js} +1 -1
- package/dist/sankhyablocks/p-5f6113c8.js +60 -0
- package/dist/sankhyablocks/{p-3c884841.entry.js → p-72b32e25.entry.js} +2 -2
- package/dist/sankhyablocks/p-77756526.js +1 -0
- package/dist/sankhyablocks/{p-f07a5363.entry.js → p-848b2e3b.entry.js} +1 -1
- package/dist/sankhyablocks/p-862e5bf6.entry.js +1 -0
- package/dist/sankhyablocks/p-95b05e58.entry.js +1 -0
- package/dist/sankhyablocks/p-a1cce4f5.entry.js +1 -0
- package/dist/sankhyablocks/p-d32fe25e.js +1 -0
- package/dist/sankhyablocks/p-eb1561bf.entry.js +1 -0
- package/dist/sankhyablocks/p-f1743d68.entry.js +1 -0
- package/dist/sankhyablocks/p-f2e798f1.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-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/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-4f74a21b.entry.js +0 -1
- package/dist/sankhyablocks/p-83954fc0.entry.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-efc9b851.entry.js +0 -1
- package/dist/sankhyablocks/p-f518057c.js +0 -1
package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { Action } from '@sankhyalabs/core';
|
1
2
|
import { Host, forceUpdate, h } from '@stencil/core';
|
2
3
|
import { SnkFormConfigManager } from '../../../snk-form/SnkFormConfigManager';
|
3
4
|
import { buildFormMetadata } from "@sankhyalabs/ezui/dist/collection/utils/form";
|
@@ -26,6 +27,10 @@ export class SnkDetailView {
|
|
26
27
|
this.canEdit = true;
|
27
28
|
this.taskbarCustomContainerId = undefined;
|
28
29
|
}
|
30
|
+
observeDataUnit(newDataUnit, oldDataUnit) {
|
31
|
+
newDataUnit === null || newDataUnit === void 0 ? void 0 : newDataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
32
|
+
oldDataUnit === null || oldDataUnit === void 0 ? void 0 : oldDataUnit.unsubscribe(this.dataUnitActionHandler);
|
33
|
+
}
|
29
34
|
observerDataState(newValue, oldValue) {
|
30
35
|
const openInsertion = !(oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && (newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
|
31
36
|
const closeInsertion = (oldValue === null || oldValue === void 0 ? void 0 : oldValue.insertionMode) && !(newValue === null || newValue === void 0 ? void 0 : newValue.insertionMode);
|
@@ -191,6 +196,15 @@ export class SnkDetailView {
|
|
191
196
|
this.messagesBuilder = new SnkMessageBuilder(this.entityName);
|
192
197
|
}
|
193
198
|
}
|
199
|
+
async dataUnitActionHandler(action) {
|
200
|
+
if (action.type === Action.FIELD_INVALIDATED) {
|
201
|
+
this.addErrorBadgeToBranchGuide();
|
202
|
+
}
|
203
|
+
}
|
204
|
+
addErrorBadgeToBranchGuide() {
|
205
|
+
this.branchGuide = Object.assign(Object.assign({}, this.branchGuide), { badge: 'error' });
|
206
|
+
this.snkDetailGuidesChange.emit(new GuideBuilder(this.branchGuide, this._formMetadata, this.dataUnit));
|
207
|
+
}
|
194
208
|
render() {
|
195
209
|
this.updateLabel();
|
196
210
|
//const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
|
@@ -400,7 +414,7 @@ export class SnkDetailView {
|
|
400
414
|
},
|
401
415
|
"branchGuide": {
|
402
416
|
"type": "unknown",
|
403
|
-
"mutable":
|
417
|
+
"mutable": true,
|
404
418
|
"complexType": {
|
405
419
|
"original": "IGuideItem",
|
406
420
|
"resolved": "IGuideItem",
|
@@ -589,6 +603,9 @@ export class SnkDetailView {
|
|
589
603
|
}
|
590
604
|
static get watchers() {
|
591
605
|
return [{
|
606
|
+
"propName": "dataUnit",
|
607
|
+
"methodName": "observeDataUnit"
|
608
|
+
}, {
|
592
609
|
"propName": "dataState",
|
593
610
|
"methodName": "observerDataState"
|
594
611
|
}];
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { ElementIDUtils } from
|
2
|
-
import { Fragment, h } from
|
3
|
-
import { SnkFormConfigManager } from
|
4
|
-
import {
|
5
|
-
import TaskbarProcessor from
|
6
|
-
import { TaskbarElement } from
|
7
|
-
import { VIEW_MODE } from
|
8
|
-
import { PresentationMode } from
|
1
|
+
import { Action as DUAction, ElementIDUtils } from '@sankhyalabs/core';
|
2
|
+
import { Fragment, h } from '@stencil/core';
|
3
|
+
import { SnkFormConfigManager } from '../../snk-form/SnkFormConfigManager';
|
4
|
+
import { buildFormMetadata, FormMetadata } from '@sankhyalabs/ezui/dist/collection/utils/form';
|
5
|
+
import TaskbarProcessor from '../../snk-taskbar/processor/taskbar-processor';
|
6
|
+
import { TaskbarElement } from '../../snk-taskbar/elements/taskbar-elements';
|
7
|
+
import { VIEW_MODE } from '../../../lib/utils/constants';
|
8
|
+
import { PresentationMode } from '../../../lib';
|
9
9
|
import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
|
10
10
|
const FORM_NAME_PREFIX = "__FORM:";
|
11
11
|
export class SnkGuidesViewer {
|
@@ -123,6 +123,12 @@ export class SnkGuidesViewer {
|
|
123
123
|
this._breadcrumbItems = breadcrumbs;
|
124
124
|
});
|
125
125
|
});
|
126
|
+
this._guides = this._guides.map(guide => {
|
127
|
+
if (guide.id === guideItem.id) {
|
128
|
+
return Object.assign(Object.assign({}, guide), guideItem);
|
129
|
+
}
|
130
|
+
return guide;
|
131
|
+
});
|
126
132
|
}
|
127
133
|
}
|
128
134
|
loadTaskbarProcessor() {
|
@@ -250,6 +256,28 @@ export class SnkGuidesViewer {
|
|
250
256
|
this._guideNavigator.getCurrentPath().then(breadcrumbs => {
|
251
257
|
this._breadcrumbItems = breadcrumbs;
|
252
258
|
});
|
259
|
+
this.resetGuideBadge(currentItem);
|
260
|
+
}
|
261
|
+
resetGuideBadge(selectedGuide) {
|
262
|
+
var _a;
|
263
|
+
this._guides = [...(_a = this._guides) === null || _a === void 0 ? void 0 : _a.map(guide => {
|
264
|
+
if (this.canClearGuideBadge(guide, selectedGuide.id)) {
|
265
|
+
return Object.assign(Object.assign({}, guide), { badge: null });
|
266
|
+
}
|
267
|
+
return guide;
|
268
|
+
})];
|
269
|
+
}
|
270
|
+
canClearGuideBadge(guide, idToCheck) {
|
271
|
+
return (guide.id === idToCheck) || this.isIncludedInChildrenList(guide, idToCheck);
|
272
|
+
}
|
273
|
+
isIncludedInChildrenList(guide, guideId) {
|
274
|
+
return this.hasChildren(guide) && this.getChildrenIdList(guide).includes(guideId);
|
275
|
+
}
|
276
|
+
hasChildren(guide) {
|
277
|
+
return guide.children && Array.isArray(guide.children);
|
278
|
+
}
|
279
|
+
getChildrenIdList(guide) {
|
280
|
+
return (guide.children).map(guideChild => guideChild.id);
|
253
281
|
}
|
254
282
|
getConfigViewMode() {
|
255
283
|
return VIEW_MODE.GRID;
|
@@ -299,6 +327,50 @@ export class SnkGuidesViewer {
|
|
299
327
|
var _a;
|
300
328
|
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" })));
|
301
329
|
}
|
330
|
+
async dataUnitActionHandler(action) {
|
331
|
+
var _a;
|
332
|
+
if (action.type === DUAction.FIELD_INVALIDATED) {
|
333
|
+
const guideName = this.getGuideName((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fieldName);
|
334
|
+
await this.addErrorBadgeToGuide(guideName);
|
335
|
+
await this.openGuideNavigator(guideName);
|
336
|
+
}
|
337
|
+
}
|
338
|
+
async addErrorBadgeToGuide(guideName) {
|
339
|
+
var _a;
|
340
|
+
this._guides = [...(_a = this._guides) === null || _a === void 0 ? void 0 : _a.map(guide => {
|
341
|
+
return Object.assign(Object.assign({}, guide), { badge: this.getBadge(guide, guideName) });
|
342
|
+
})];
|
343
|
+
}
|
344
|
+
async openGuideNavigator(guideName) {
|
345
|
+
if (this.selectedGuide.id !== guideName) {
|
346
|
+
await this._guideNavigator.openGuideNavidator();
|
347
|
+
}
|
348
|
+
}
|
349
|
+
getBadge(guide, tabName) {
|
350
|
+
var _a;
|
351
|
+
if (this.selectedGuide.id === tabName) {
|
352
|
+
return null;
|
353
|
+
}
|
354
|
+
if (tabName === guide.id) {
|
355
|
+
return "error";
|
356
|
+
}
|
357
|
+
return (_a = guide.badge) !== null && _a !== void 0 ? _a : null;
|
358
|
+
}
|
359
|
+
getGuideName(fieldName) {
|
360
|
+
var _a;
|
361
|
+
for (const sheet of this._masterFormMetadata.getAllSheets()) {
|
362
|
+
const formFields = (_a = sheet[1]) === null || _a === void 0 ? void 0 : _a.fields;
|
363
|
+
for (const field of formFields) {
|
364
|
+
if (field.name === fieldName) {
|
365
|
+
return sheet[0];
|
366
|
+
}
|
367
|
+
}
|
368
|
+
}
|
369
|
+
return "";
|
370
|
+
}
|
371
|
+
componentDidLoad() {
|
372
|
+
this.dataUnit.subscribe(this.dataUnitActionHandler.bind(this));
|
373
|
+
}
|
302
374
|
render() {
|
303
375
|
var _a, _b;
|
304
376
|
if (this._formEditorConfigManager != undefined) {
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { DateUtils, UserInterface } from '@sankhyalabs/core';
|
2
|
+
import { default as InMemoryFilterColumnDataSource } from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
|
2
3
|
import PreloadManager from '../../../lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager';
|
3
4
|
export default class SnkMultiSelectionListDataSource {
|
4
5
|
setDataUnit(dataUnit) {
|
@@ -18,11 +19,7 @@ export default class SnkMultiSelectionListDataSource {
|
|
18
19
|
if (fieldName == undefined) {
|
19
20
|
return Promise.resolve(undefined);
|
20
21
|
}
|
21
|
-
|
22
|
-
if (result == undefined) {
|
23
|
-
return Promise.resolve(undefined);
|
24
|
-
}
|
25
|
-
return Promise.resolve(Array.from(result.entries()).map(([label, value]) => ({ label: String(label), value, check: true })));
|
22
|
+
return Promise.resolve(await PreloadManager.getDistinct(this._dataUnit, fieldName));
|
26
23
|
}
|
27
24
|
fetchData(filterTerm, fieldName) {
|
28
25
|
return new Promise(resolve => {
|
@@ -37,4 +34,7 @@ export default class SnkMultiSelectionListDataSource {
|
|
37
34
|
});
|
38
35
|
});
|
39
36
|
}
|
37
|
+
sortItems(fieldName, items) {
|
38
|
+
return InMemoryFilterColumnDataSource.defaultSorterMultSelectionOption(this._dataUnit, fieldName, items);
|
39
|
+
}
|
40
40
|
}
|
@@ -1,21 +1,12 @@
|
|
1
1
|
import { DataUnit, FieldComparator, SortMode } from "@sankhyalabs/core";
|
2
|
-
import DataUnitFetcher from "../dataunit-fetcher";
|
3
2
|
import { ArrayRepository } from "./ArrayRepository";
|
4
|
-
|
3
|
+
import { ColumnFilterManager } from "@sankhyalabs/ezui/dist/collection/components/ez-grid/utils";
|
5
4
|
export default class PreloadManager {
|
6
5
|
static setLoadingStatus(dataUnit, loadingInProgress) {
|
7
6
|
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
8
7
|
}
|
9
|
-
static isCacheEnabled(
|
10
|
-
|
11
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
12
|
-
return false;
|
13
|
-
}
|
14
|
-
return this.getRepository(dataUnit).isOperating();
|
15
|
-
}
|
16
|
-
static getResourceId(dataUnitName) {
|
17
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
18
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
8
|
+
static isCacheEnabled(_dataUnit) {
|
9
|
+
return true;
|
19
10
|
}
|
20
11
|
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
21
12
|
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
@@ -43,13 +34,13 @@ export default class PreloadManager {
|
|
43
34
|
}
|
44
35
|
static async getDistinct(dataUnit, fieldName) {
|
45
36
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
46
|
-
return Promise.resolve(
|
37
|
+
return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
47
38
|
}
|
48
39
|
let filterFunction;
|
49
40
|
const request = dataUnit.getLastLoadRequest();
|
50
41
|
if (request != undefined) {
|
51
|
-
const columnFilters =
|
52
|
-
filterFunction =
|
42
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
43
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
53
44
|
}
|
54
45
|
return new Promise((accept, reject) => {
|
55
46
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
@@ -63,7 +54,13 @@ export default class PreloadManager {
|
|
63
54
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
64
55
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
65
56
|
})
|
66
|
-
.then(result =>
|
57
|
+
.then(result => {
|
58
|
+
if (result == undefined) {
|
59
|
+
accept(undefined);
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
63
|
+
})
|
67
64
|
.catch(reason => reject(reason));
|
68
65
|
});
|
69
66
|
}
|
@@ -115,35 +112,12 @@ export default class PreloadManager {
|
|
115
112
|
}
|
116
113
|
return PreloadManager._repositories.get(name);
|
117
114
|
}
|
118
|
-
static getFilterFunction(dataUnit, filters) {
|
119
|
-
if (filters != undefined && filters.length > 0) {
|
120
|
-
return record => {
|
121
|
-
for (const filter of filters) {
|
122
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
123
|
-
return false;
|
124
|
-
}
|
125
|
-
}
|
126
|
-
return true;
|
127
|
-
};
|
128
|
-
}
|
129
|
-
return undefined;
|
130
|
-
}
|
131
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
132
|
-
const fieldValue = record[columnFilter.columnName];
|
133
|
-
for (let param of columnFilter.params) {
|
134
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
135
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
136
|
-
return true;
|
137
|
-
}
|
138
|
-
}
|
139
|
-
return false;
|
140
|
-
}
|
141
115
|
static async loadFromCache(dataUnit, request) {
|
142
116
|
return new Promise((accept, reject) => {
|
143
|
-
const columnFilters =
|
117
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
144
118
|
const { limit, offset, sort } = request;
|
145
119
|
PreloadManager.getRepository(dataUnit)
|
146
|
-
.load(
|
120
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
147
121
|
.then(loadResult => {
|
148
122
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
149
123
|
const { count, result: records } = loadResult;
|
@@ -160,19 +134,6 @@ export default class PreloadManager {
|
|
160
134
|
.catch(reason => reject(reason));
|
161
135
|
});
|
162
136
|
}
|
163
|
-
static getColumnFilters(filters) {
|
164
|
-
const columnFilters = new Map();
|
165
|
-
if (filters == undefined || filters.length == 0) {
|
166
|
-
return columnFilters;
|
167
|
-
}
|
168
|
-
filters.forEach(filter => {
|
169
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
170
|
-
if (match) {
|
171
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
172
|
-
}
|
173
|
-
});
|
174
|
-
return columnFilters;
|
175
|
-
}
|
176
137
|
}
|
177
138
|
PreloadManager._repositories = new Map();
|
178
139
|
PreloadManager._loadingStatus = new Map();
|
@@ -91,6 +91,9 @@ export default class PersonalizedFilterFetcher {
|
|
91
91
|
});
|
92
92
|
}
|
93
93
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
94
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
95
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
96
|
+
}
|
94
97
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
95
98
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
96
99
|
return new Promise((resolve, reject) => {
|
@@ -271,6 +271,9 @@ class PersonalizedFilterFetcher {
|
|
271
271
|
});
|
272
272
|
}
|
273
273
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
274
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
275
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
276
|
+
}
|
274
277
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
275
278
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
276
279
|
return new Promise((resolve, reject) => {
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { UserInterface, DateUtils } from '@sankhyalabs/core';
|
2
|
+
import InMemoryFilterColumnDataSource from '@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource';
|
2
3
|
import { a as PreloadManager } from './dataunit-fetcher.js';
|
3
4
|
|
4
5
|
class TaskbarProcessor {
|
@@ -65,11 +66,7 @@ class SnkMultiSelectionListDataSource {
|
|
65
66
|
if (fieldName == undefined) {
|
66
67
|
return Promise.resolve(undefined);
|
67
68
|
}
|
68
|
-
|
69
|
-
if (result == undefined) {
|
70
|
-
return Promise.resolve(undefined);
|
71
|
-
}
|
72
|
-
return Promise.resolve(Array.from(result.entries()).map(([label, value]) => ({ label: String(label), value, check: true })));
|
69
|
+
return Promise.resolve(await PreloadManager.getDistinct(this._dataUnit, fieldName));
|
73
70
|
}
|
74
71
|
fetchData(filterTerm, fieldName) {
|
75
72
|
return new Promise(resolve => {
|
@@ -84,6 +81,9 @@ class SnkMultiSelectionListDataSource {
|
|
84
81
|
});
|
85
82
|
});
|
86
83
|
}
|
84
|
+
sortItems(fieldName, items) {
|
85
|
+
return InMemoryFilterColumnDataSource.defaultSorterMultSelectionOption(this._dataUnit, fieldName, items);
|
86
|
+
}
|
87
87
|
}
|
88
88
|
|
89
89
|
export { SnkMultiSelectionListDataSource as S, TaskbarProcessor as T };
|
@@ -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 {
|
@@ -246,21 +247,12 @@ class ArrayRepository {
|
|
246
247
|
}
|
247
248
|
}
|
248
249
|
|
249
|
-
const COLUMN_FILTER_PATTERN = /FILTRO_COLUNA_(.+)/;
|
250
250
|
class PreloadManager {
|
251
251
|
static setLoadingStatus(dataUnit, loadingInProgress) {
|
252
252
|
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
253
253
|
}
|
254
|
-
static isCacheEnabled(
|
255
|
-
|
256
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
257
|
-
return false;
|
258
|
-
}
|
259
|
-
return this.getRepository(dataUnit).isOperating();
|
260
|
-
}
|
261
|
-
static getResourceId(dataUnitName) {
|
262
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
263
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
254
|
+
static isCacheEnabled(_dataUnit) {
|
255
|
+
return true;
|
264
256
|
}
|
265
257
|
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
266
258
|
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
@@ -288,13 +280,13 @@ class PreloadManager {
|
|
288
280
|
}
|
289
281
|
static async getDistinct(dataUnit, fieldName) {
|
290
282
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
291
|
-
return Promise.resolve(
|
283
|
+
return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
292
284
|
}
|
293
285
|
let filterFunction;
|
294
286
|
const request = dataUnit.getLastLoadRequest();
|
295
287
|
if (request != undefined) {
|
296
|
-
const columnFilters =
|
297
|
-
filterFunction =
|
288
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
289
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
298
290
|
}
|
299
291
|
return new Promise((accept, reject) => {
|
300
292
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
@@ -308,7 +300,13 @@ class PreloadManager {
|
|
308
300
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
309
301
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
310
302
|
})
|
311
|
-
.then(result =>
|
303
|
+
.then(result => {
|
304
|
+
if (result == undefined) {
|
305
|
+
accept(undefined);
|
306
|
+
return;
|
307
|
+
}
|
308
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
309
|
+
})
|
312
310
|
.catch(reason => reject(reason));
|
313
311
|
});
|
314
312
|
}
|
@@ -360,35 +358,12 @@ class PreloadManager {
|
|
360
358
|
}
|
361
359
|
return PreloadManager._repositories.get(name);
|
362
360
|
}
|
363
|
-
static getFilterFunction(dataUnit, filters) {
|
364
|
-
if (filters != undefined && filters.length > 0) {
|
365
|
-
return record => {
|
366
|
-
for (const filter of filters) {
|
367
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
368
|
-
return false;
|
369
|
-
}
|
370
|
-
}
|
371
|
-
return true;
|
372
|
-
};
|
373
|
-
}
|
374
|
-
return undefined;
|
375
|
-
}
|
376
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
377
|
-
const fieldValue = record[columnFilter.columnName];
|
378
|
-
for (let param of columnFilter.params) {
|
379
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
380
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
381
|
-
return true;
|
382
|
-
}
|
383
|
-
}
|
384
|
-
return false;
|
385
|
-
}
|
386
361
|
static async loadFromCache(dataUnit, request) {
|
387
362
|
return new Promise((accept, reject) => {
|
388
|
-
const columnFilters =
|
363
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
389
364
|
const { limit, offset, sort } = request;
|
390
365
|
PreloadManager.getRepository(dataUnit)
|
391
|
-
.load(
|
366
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
392
367
|
.then(loadResult => {
|
393
368
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
394
369
|
const { count, result: records } = loadResult;
|
@@ -405,19 +380,6 @@ class PreloadManager {
|
|
405
380
|
.catch(reason => reject(reason));
|
406
381
|
});
|
407
382
|
}
|
408
|
-
static getColumnFilters(filters) {
|
409
|
-
const columnFilters = new Map();
|
410
|
-
if (filters == undefined || filters.length == 0) {
|
411
|
-
return columnFilters;
|
412
|
-
}
|
413
|
-
filters.forEach(filter => {
|
414
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
415
|
-
if (match) {
|
416
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
417
|
-
}
|
418
|
-
});
|
419
|
-
return columnFilters;
|
420
|
-
}
|
421
383
|
}
|
422
384
|
PreloadManager._repositories = new Map();
|
423
385
|
PreloadManager._loadingStatus = new Map();
|
@@ -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],
|
@@ -271,6 +271,9 @@ class PersonalizedFilterFetcher {
|
|
271
271
|
});
|
272
272
|
}
|
273
273
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
274
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
275
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
276
|
+
}
|
274
277
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
275
278
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
276
279
|
return new Promise((resolve, reject) => {
|