@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
@@ -5,13 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
const index = require('./index-f9e81701.js');
|
6
6
|
const core = require('@sankhyalabs/core');
|
7
7
|
const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-1aeb625d.js');
|
8
|
-
const ConfigStorage = require('./ConfigStorage-
|
8
|
+
const ConfigStorage = require('./ConfigStorage-908ce5bc.js');
|
9
9
|
const utils = require('@sankhyalabs/ezui/dist/collection/utils');
|
10
10
|
const index$1 = require('./index-c5771aba.js');
|
11
11
|
const index$2 = require('./index-102ba62d.js');
|
12
12
|
require('./filter-item-type.enum-aa823a00.js');
|
13
|
-
require('./form-config-fetcher-
|
14
|
-
require('./DataFetcher-
|
13
|
+
require('./form-config-fetcher-17775a75.js');
|
14
|
+
require('./DataFetcher-713f0749.js');
|
15
15
|
require('./_commonjsHelpers-537d719a.js');
|
16
16
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
17
17
|
require('./PrintUtils-bcaeb82f.js');
|
@@ -6,21 +6,24 @@ const index = require('./index-f9e81701.js');
|
|
6
6
|
const core = require('@sankhyalabs/core');
|
7
7
|
const constants = require('./constants-d187e03e.js');
|
8
8
|
const taskbarElements = require('./taskbar-elements-39949c7a.js');
|
9
|
-
require('./DataFetcher-
|
10
|
-
require('./pesquisa-fetcher-
|
9
|
+
require('./DataFetcher-713f0749.js');
|
10
|
+
require('./pesquisa-fetcher-34922b83.js');
|
11
11
|
const index$1 = require('./index-0e663819.js');
|
12
12
|
require('./ISave-d68ce3cd.js');
|
13
13
|
require('@sankhyalabs/ezui/dist/collection/utils/constants');
|
14
14
|
require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
|
15
|
-
const dataunitFetcher = require('./dataunit-fetcher-
|
15
|
+
const dataunitFetcher = require('./dataunit-fetcher-66c0b7af.js');
|
16
|
+
require('./PreloadManager-e26d237f.js');
|
16
17
|
require('./filter-item-type.enum-aa823a00.js');
|
17
|
-
require('./form-config-fetcher-
|
18
|
+
require('./form-config-fetcher-17775a75.js');
|
18
19
|
const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
|
19
|
-
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-
|
20
|
+
const SnkMultiSelectionListDataSource = require('./SnkMultiSelectionListDataSource-d74d2336.js');
|
20
21
|
require('./index-102ba62d.js');
|
21
22
|
require('./_commonjsHelpers-537d719a.js');
|
22
23
|
require('./PrintUtils-bcaeb82f.js');
|
23
24
|
require('./ResourceIDUtils-5ff86aa7.js');
|
25
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
|
26
|
+
require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
|
24
27
|
|
25
28
|
const snkSimpleCrudCss = ".sc-snk-simple-crud-h{display:flex;height:100%;width:100%}.simple-crud__container.sc-snk-simple-crud{display:grid;grid-template-rows:max-content;row-gap:12px;height:100%;width:100%}.simple-crud__container-section.sc-snk-simple-crud{flex-wrap:unset;flex-direction:column}ez-grid.sc-snk-simple-crud{--ez-grid__container--shadow:none;min-height:300px}ez-form.sc-snk-simple-crud{min-height:300px}";
|
26
29
|
|
@@ -830,6 +830,7 @@ export class SnkApplication {
|
|
830
830
|
}, 100);
|
831
831
|
ErrorTracking.init();
|
832
832
|
ConfigStorage.preload(this.applicationResourceID, this.configName);
|
833
|
+
document.addEventListener("click", () => Workspace.applicationClick());
|
833
834
|
}
|
834
835
|
connectedCallback() {
|
835
836
|
ApplicationContext.setContextValue("__SNK__APPLICATION__", this);
|
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,4 @@
|
|
1
|
-
import { DataType } from "@sankhyalabs/core";
|
1
|
+
import { DataType, StringUtils } from "@sankhyalabs/core";
|
2
2
|
import { toString } from "@sankhyalabs/core/dist/dataunit/metadata/DataType";
|
3
3
|
import FilterItemType from "../filter-item-type.enum";
|
4
4
|
import { FilterOperand } from "../../../snk-personalized-filter/interfaces/index";
|
@@ -93,8 +93,11 @@ function buildSearch(item) {
|
|
93
93
|
return { name: id, expression, params: [{ name: id, dataType: DataType.TEXT, value: toString(DataType.TEXT, value.value) }] };
|
94
94
|
}
|
95
95
|
function buildText(item) {
|
96
|
-
|
96
|
+
let { id, value, props } = item;
|
97
97
|
const expression = props.expression;
|
98
|
+
if (!StringUtils.isEmpty(props.likeAs)) {
|
99
|
+
value = buildLikeValue(value, props.likeAs);
|
100
|
+
}
|
98
101
|
return { name: id, expression, params: [{ name: id, dataType: DataType.TEXT, value: toString(DataType.TEXT, value) }] };
|
99
102
|
}
|
100
103
|
function buildNumber(item) {
|
@@ -102,6 +105,18 @@ function buildNumber(item) {
|
|
102
105
|
const expression = props.expression;
|
103
106
|
return { name: id, expression, params: [{ name: id, dataType: DataType.NUMBER, value: toString(DataType.NUMBER, value) }] };
|
104
107
|
}
|
108
|
+
function buildLikeValue(valueAsString, likeAs) {
|
109
|
+
if (likeAs === "CONTANIS") {
|
110
|
+
return `%${valueAsString}%`;
|
111
|
+
}
|
112
|
+
else if (likeAs === "STARTS_WITH") {
|
113
|
+
return `${valueAsString}%`;
|
114
|
+
}
|
115
|
+
else if (likeAs === "ENDS_WITH") {
|
116
|
+
return `%${valueAsString}`;
|
117
|
+
}
|
118
|
+
return valueAsString;
|
119
|
+
}
|
105
120
|
function buildPersonalized(item) {
|
106
121
|
const { id, groupedItems = [] } = item;
|
107
122
|
const activeFilters = groupedItems.filter(groupItem => !!groupItem.visible);
|
@@ -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
|
}
|
@@ -95,6 +95,7 @@ export class SnkGrid {
|
|
95
95
|
if (this._gridConfig && this._dataUnit) {
|
96
96
|
this._dataUnit.defaultSorting = this._gridConfig
|
97
97
|
.columns
|
98
|
+
.filter(col => col.ascending != undefined)
|
98
99
|
.sort((colA, colB) => colA.orderIndex - colB.orderIndex)
|
99
100
|
.map(({ name: field, ascending }) => {
|
100
101
|
const { dataType } = this._dataUnit.getField(field);
|
@@ -233,9 +233,9 @@ export class DataFetcher {
|
|
233
233
|
const urlParams = UrlUtils.getQueryParams(location.search);
|
234
234
|
return {
|
235
235
|
baseUrl: `${this.resolveURL()}/${module}/service.sbr`,
|
236
|
-
appName: "SankhyaBlocks",
|
236
|
+
appName: window['APPLICATION_NAME'] || "SankhyaBlocks",
|
237
237
|
mgeSession: `${window['mgeSession'] || urlParams.get("mgeSession")}`,
|
238
|
-
globalID:
|
238
|
+
globalID: window['GLOBALID'] || StringUtils.generateUUID(),
|
239
239
|
resourceID: (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID))
|
240
240
|
};
|
241
241
|
}
|
@@ -55,7 +55,7 @@ export default class DataUnitDataLoader {
|
|
55
55
|
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
56
56
|
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
57
57
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
58
|
-
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1 });
|
58
|
+
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
59
59
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
60
60
|
.then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
|
61
61
|
.catch(reason => console.error(reason));
|
@@ -73,6 +73,11 @@ export default class DataUnitDataLoader {
|
|
73
73
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { count }));
|
74
74
|
return;
|
75
75
|
}
|
76
|
+
if (loadingInfo.needReload) {
|
77
|
+
//Ir para a primeira página, faz com que o loadData seja chamado novamente
|
78
|
+
dataUnit.gotoPage(0);
|
79
|
+
return;
|
80
|
+
}
|
76
81
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { total: count, count }));
|
77
82
|
}
|
78
83
|
static registryLoading(dataUnit, loadingInfo) {
|
@@ -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,27 +34,32 @@ 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));
|
38
|
+
}
|
39
|
+
let filterFunction;
|
40
|
+
const request = dataUnit.getLastLoadRequest();
|
41
|
+
if (request != undefined) {
|
42
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
43
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
47
44
|
}
|
48
45
|
return new Promise((accept, reject) => {
|
49
46
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
47
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
48
|
+
return undefined;
|
49
|
+
}
|
50
50
|
const fieldValue = record[fieldName];
|
51
51
|
if (fieldValue == undefined) {
|
52
|
-
return
|
52
|
+
return { key: null, value: null };
|
53
53
|
}
|
54
54
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
55
55
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
56
56
|
})
|
57
57
|
.then(result => {
|
58
|
-
if (result
|
59
|
-
|
60
|
-
const sortedMap = new Map(Array.from(result.entries())
|
61
|
-
.sort((itemA, itemB) => FieldComparator.compareValues(field, itemA[1], itemB[1]))
|
62
|
-
.map(([key, value]) => key === "" ? ["(Vazio)", value] : [key, value]));
|
63
|
-
accept(sortedMap);
|
58
|
+
if (result == undefined) {
|
59
|
+
accept(undefined);
|
64
60
|
return;
|
65
61
|
}
|
66
|
-
accept(result);
|
62
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
67
63
|
})
|
68
64
|
.catch(reason => reject(reason));
|
69
65
|
});
|
@@ -78,7 +74,7 @@ export default class PreloadManager {
|
|
78
74
|
return PreloadManager.loadFromCache(dataUnit, request);
|
79
75
|
}
|
80
76
|
}
|
81
|
-
//Como não vamos aproveitar o cache, ele precisa ser
|
77
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
82
78
|
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
83
79
|
}
|
84
80
|
return loadFromServer(dataUnit, request);
|
@@ -116,39 +112,16 @@ export default class PreloadManager {
|
|
116
112
|
}
|
117
113
|
return PreloadManager._repositories.get(name);
|
118
114
|
}
|
119
|
-
static getFilterFunction(dataUnit, filters) {
|
120
|
-
if (filters != undefined && filters.length > 0) {
|
121
|
-
return record => {
|
122
|
-
for (const filter of filters) {
|
123
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
124
|
-
return false;
|
125
|
-
}
|
126
|
-
}
|
127
|
-
return true;
|
128
|
-
};
|
129
|
-
}
|
130
|
-
return undefined;
|
131
|
-
}
|
132
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
133
|
-
const fieldValue = record[columnFilter.columnName];
|
134
|
-
for (let param of columnFilter.params) {
|
135
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
136
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
137
|
-
return true;
|
138
|
-
}
|
139
|
-
}
|
140
|
-
return false;
|
141
|
-
}
|
142
115
|
static async loadFromCache(dataUnit, request) {
|
143
116
|
return new Promise((accept, reject) => {
|
144
|
-
const columnFilters =
|
117
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
145
118
|
const { limit, offset, sort } = request;
|
146
119
|
PreloadManager.getRepository(dataUnit)
|
147
|
-
.load(
|
120
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
148
121
|
.then(loadResult => {
|
149
122
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
150
123
|
const { count, result: records } = loadResult;
|
151
|
-
const firstRecord = count == 0 ?
|
124
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
152
125
|
const lastRecord = offset + Math.min(records.length, limit);
|
153
126
|
const currentPage = offset / limit;
|
154
127
|
const paginationInfo = {
|
@@ -161,19 +134,6 @@ export default class PreloadManager {
|
|
161
134
|
.catch(reason => reject(reason));
|
162
135
|
});
|
163
136
|
}
|
164
|
-
static getColumnFilters(filters) {
|
165
|
-
const columnFilters = new Map();
|
166
|
-
if (filters == undefined || filters.length == 0) {
|
167
|
-
return columnFilters;
|
168
|
-
}
|
169
|
-
filters.forEach(filter => {
|
170
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
171
|
-
if (match) {
|
172
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
173
|
-
}
|
174
|
-
});
|
175
|
-
return columnFilters;
|
176
|
-
}
|
177
137
|
}
|
178
138
|
PreloadManager._repositories = new Map();
|
179
139
|
PreloadManager._loadingStatus = new Map();
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -11,17 +11,36 @@ export class DatasetStrategy {
|
|
11
11
|
return Promise.resolve({ records: [], loadingInfo });
|
12
12
|
}
|
13
13
|
try {
|
14
|
+
const localSorting = [];
|
15
|
+
const serverSorting = [];
|
16
|
+
if (request.sort != undefined) {
|
17
|
+
for (const sort of request.sort) {
|
18
|
+
const descriptor = dataUnit.getField(sort.field);
|
19
|
+
const local = descriptor != undefined
|
20
|
+
&& descriptor.properties != undefined
|
21
|
+
&& descriptor.properties.calculated === "true";
|
22
|
+
if (local) {
|
23
|
+
localSorting.push(sort);
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
serverSorting.push(sort);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
14
30
|
const fields = this.getFieldsList(dataUnit);
|
15
31
|
const serviceName = "DatasetSP.loadRecords";
|
16
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo);
|
17
|
-
const {
|
32
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
33
|
+
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
34
|
+
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
18
35
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
19
36
|
const loadingInProgress = pagerId != undefined;
|
20
37
|
const count = loadingInfo.count + records.length;
|
38
|
+
const needReload = !loadingInProgress && localSorting.length > 0;
|
21
39
|
return Promise.resolve({
|
22
40
|
records,
|
23
41
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
24
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count
|
42
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
43
|
+
needReload })
|
25
44
|
});
|
26
45
|
}
|
27
46
|
catch (error) {
|
@@ -31,9 +50,10 @@ export class DatasetStrategy {
|
|
31
50
|
}
|
32
51
|
getFieldsList(dataUnit) {
|
33
52
|
let fields = ["__record__id__", "__record__label__"];
|
34
|
-
dataUnit.metadata.fields.forEach(descriptor => {
|
35
|
-
if (descriptor.standAlone)
|
53
|
+
dataUnit.metadata.fields.forEach((descriptor) => {
|
54
|
+
if (descriptor.standAlone) {
|
36
55
|
return;
|
56
|
+
}
|
37
57
|
fields = fields.concat(this.getFieldNames(descriptor));
|
38
58
|
});
|
39
59
|
return fields;
|
@@ -45,7 +65,7 @@ export class DatasetStrategy {
|
|
45
65
|
}
|
46
66
|
return [descriptor.name, descriptionField];
|
47
67
|
}
|
48
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo) {
|
68
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
49
69
|
const dataSetID = dataUnit.dataUnitId;
|
50
70
|
const dataUnitName = dataUnit.name;
|
51
71
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -66,13 +86,13 @@ export class DatasetStrategy {
|
|
66
86
|
tryJoinedFields: true,
|
67
87
|
parallelLoader: true,
|
68
88
|
crudListener: "br.com.sankhya.modelcore.dataset.DataUnitDatasetAdapter",
|
69
|
-
txProperties: this.getTxProperties(dataUnitName, request),
|
89
|
+
txProperties: this.getTxProperties(dataUnitName, request, sorting),
|
70
90
|
useDefaultRowsLimit: false
|
71
91
|
}
|
72
92
|
};
|
73
93
|
return JSON.stringify(requestBody);
|
74
94
|
}
|
75
|
-
getTxProperties(dataUnitName, request) {
|
95
|
+
getTxProperties(dataUnitName, request, sorting) {
|
76
96
|
const txProperties = {
|
77
97
|
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnitName
|
78
98
|
};
|
@@ -80,7 +100,6 @@ export class DatasetStrategy {
|
|
80
100
|
if (serverSideFilters.length !== 0) {
|
81
101
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
82
102
|
}
|
83
|
-
const sorting = request.sort;
|
84
103
|
if (sorting != undefined && sorting.length !== 0) {
|
85
104
|
txProperties["__DATA_UNIT_ADAPTER__[sorting]"] = JSON.stringify(sorting);
|
86
105
|
}
|
@@ -23,5 +23,12 @@ export default class Workspace {
|
|
23
23
|
var _a;
|
24
24
|
(_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.setScreenToUseOldLayout();
|
25
25
|
}
|
26
|
+
static applicationClick() {
|
27
|
+
var _a, _b;
|
28
|
+
if (!((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.applicationClick)) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
(_b = window["workspace"]) === null || _b === void 0 ? void 0 : _b.applicationClick();
|
32
|
+
}
|
26
33
|
}
|
27
34
|
Workspace.resourceID = (_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID;
|
@@ -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
|
}
|
@@ -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 };
|