@sankhyalabs/sankhyablocks 8.16.0-dev.22 → 8.16.0-dev.24
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/{IExporterProvider-9ac15aaf.js → ContinuousInsertUtils-b32220f0.js} +35 -2
- package/dist/cjs/{SnkMessageBuilder-cceebbae.js → SnkMessageBuilder-bae64d0d.js} +5 -1
- package/dist/cjs/{dataunit-fetcher-4b12f70c.js → dataunit-fetcher-f89461c1.js} +45 -17
- package/dist/cjs/{field-search-f56aa7d6.js → field-search-68e34bf4.js} +5 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_4.cjs.entry.js +1 -1
- package/dist/cjs/snk-application.cjs.entry.js +2 -2
- package/dist/cjs/snk-attach.cjs.entry.js +2 -4
- package/dist/cjs/snk-crud.cjs.entry.js +5 -2
- package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
- package/dist/cjs/{snk-data-unit-2f2e6f8c.js → snk-data-unit-004f781a.js} +2 -2
- package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
- package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
- package/dist/cjs/snk-grid.cjs.entry.js +52 -12
- package/dist/cjs/{snk-guides-viewer-866447ab.js → snk-guides-viewer-68777d37.js} +8 -4
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
- package/dist/cjs/snk-simple-crud.cjs.entry.js +43 -11
- package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +2 -4
- package/dist/collection/components/snk-crud/snk-crud.js +22 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +24 -2
- package/dist/collection/components/snk-grid/snk-grid.js +66 -6
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +59 -8
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
- package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +1 -1
- package/dist/collection/lib/dataUnit/InMemoryLoader.js +2 -4
- package/dist/collection/lib/dataUnit/dataUnitInMemoryUtils.js +34 -9
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
- package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
- package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
- package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +39 -4
- package/dist/components/SnkMessageBuilder.js +5 -1
- package/dist/components/dataunit-fetcher.js +45 -15
- package/dist/components/snk-attach2.js +2 -4
- package/dist/components/snk-crud.js +5 -1
- package/dist/components/snk-data-unit2.js +1 -1
- package/dist/components/snk-detail-view2.js +8 -3
- package/dist/components/snk-grid2.js +48 -6
- package/dist/components/snk-simple-crud2.js +39 -5
- package/dist/esm/{IExporterProvider-09df2e3e.js → ContinuousInsertUtils-aae77a37.js} +36 -4
- package/dist/esm/{SnkMessageBuilder-ae87b754.js → SnkMessageBuilder-6fff4a4c.js} +5 -1
- package/dist/esm/{dataunit-fetcher-3aac1a53.js → dataunit-fetcher-c24c76c6.js} +45 -15
- package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_4.entry.js +1 -1
- package/dist/esm/snk-application.entry.js +2 -2
- package/dist/esm/snk-attach.entry.js +2 -4
- package/dist/esm/snk-crud.entry.js +5 -2
- package/dist/esm/snk-data-exporter.entry.js +3 -3
- package/dist/esm/{snk-data-unit-acf3dd64.js → snk-data-unit-a90ce6f2.js} +2 -2
- package/dist/esm/snk-data-unit.entry.js +3 -3
- package/dist/esm/snk-detail-view.entry.js +4 -4
- package/dist/esm/snk-grid.entry.js +47 -7
- package/dist/esm/{snk-guides-viewer-cb8a0b48.js → snk-guides-viewer-b5dd30e6.js} +8 -4
- package/dist/esm/snk-guides-viewer.entry.js +3 -3
- package/dist/esm/snk-simple-crud.entry.js +39 -7
- package/dist/sankhyablocks/p-17425c72.js +1 -0
- package/dist/sankhyablocks/p-23736d75.js +1 -0
- package/dist/sankhyablocks/p-3e3cc017.js +1 -0
- package/dist/sankhyablocks/{p-8d7e2747.entry.js → p-43a73838.entry.js} +1 -1
- package/dist/sankhyablocks/p-47a038a3.js +1 -0
- package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
- package/dist/sankhyablocks/{p-16969508.entry.js → p-694e1c4a.entry.js} +1 -1
- package/dist/sankhyablocks/p-7ac7932c.js +60 -0
- package/dist/sankhyablocks/{p-bc4b94d2.entry.js → p-7eef0898.entry.js} +1 -1
- package/dist/sankhyablocks/{p-8862ba4a.entry.js → p-7f918d0b.entry.js} +1 -1
- package/dist/sankhyablocks/{p-ce6eed2c.js → p-9132a0a1.js} +1 -1
- package/dist/sankhyablocks/p-9bc1c239.entry.js +1 -0
- package/dist/sankhyablocks/{p-640140b3.entry.js → p-a42e7a1e.entry.js} +1 -1
- package/dist/sankhyablocks/p-b0ef9faa.entry.js +1 -0
- package/dist/sankhyablocks/p-e16e87fc.entry.js +1 -0
- package/dist/sankhyablocks/{p-3d542b58.entry.js → p-eb9f0407.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +5 -0
- package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +10 -0
- package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
- package/dist/types/components.d.ts +32 -0
- package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +12 -2
- package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-0e9a872d.entry.js +0 -1
- package/dist/sankhyablocks/p-1ab19772.js +0 -1
- package/dist/sankhyablocks/p-1f47a0b2.entry.js +0 -1
- package/dist/sankhyablocks/p-3757394b.entry.js +0 -1
- package/dist/sankhyablocks/p-53c1d25d.entry.js +0 -1
- package/dist/sankhyablocks/p-7c4aabe2.js +0 -1
- package/dist/sankhyablocks/p-a31e761f.js +0 -1
- package/dist/sankhyablocks/p-c2495304.js +0 -1
- package/dist/sankhyablocks/p-f8698ad3.js +0 -60
@@ -1,4 +1,4 @@
|
|
1
|
-
import { h, Fragment } from '@stencil/core';
|
1
|
+
import { h, Fragment, } from '@stencil/core';
|
2
2
|
import { Action as DUAction, ApplicationContext, ElementIDUtils, StringUtils } from '@sankhyalabs/core';
|
3
3
|
import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
|
4
4
|
import { ConfigStorage } from '../../lib/configs/ConfigStorage';
|
@@ -11,6 +11,7 @@ import { buildFieldSearch, openFieldSearch } from '../snk-taskbar/subcomponents/
|
|
11
11
|
import { CrudUtils } from '../../lib';
|
12
12
|
import RmPrecisionCustomValueFormatter from '../../lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter';
|
13
13
|
import ServerSideExporterProvider from '../snk-data-exporter/providers/ServerSideExporterProvider';
|
14
|
+
import { ContinuousInsertUtils } from '../../lib/utils/ContinuousInsertUtils';
|
14
15
|
export class SnkGrid {
|
15
16
|
constructor() {
|
16
17
|
this._customEditors = new Map();
|
@@ -19,7 +20,7 @@ export class SnkGrid {
|
|
19
20
|
"snkGridTopTaskbar.regular": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
|
20
21
|
"snkGridTopTaskbar.regular.secondary": ["FORM_MODE", "CONFIGURATOR", "INSERT"],
|
21
22
|
"snkGridTopTaskbar.regular.singleTaskbar": [],
|
22
|
-
"snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE"],
|
23
|
+
"snkGridTopTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()],
|
23
24
|
"snkGridTopTaskbar.finish_edition.secondary": [],
|
24
25
|
"snkGridTopTaskbar.finish_edition.singleTaskbar": [],
|
25
26
|
});
|
@@ -32,7 +33,7 @@ export class SnkGrid {
|
|
32
33
|
"snkGridHeaderTaskbar.singleTaskbar.selected": ["UPDATE", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "ATTACH", "FORM_MODE", "CONFIGURATOR", "REFRESH", "DATA_EXPORTER", "ACTIONS_BUTTON"],
|
33
34
|
"snkGridHeaderTaskbar.singleTaskbar.detail.unselected": ["INSERT", "FORM_MODE", "CONFIGURATOR", "REFRESH", "MORE_OPTIONS"],
|
34
35
|
"snkGridHeaderTaskbar.singleTaskbar.detail.selected": ["UPDATE", "ATTACH", "CLONE", "REMOVE", "MORE_OPTIONS", "DIVIDER", "FORM_MODE", "CONFIGURATOR", "REFRESH"],
|
35
|
-
"snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE"]
|
36
|
+
"snkGridHeaderTaskbar.singleTaskbar.finish_edition": ["CANCEL", "SAVE", this.handleAddFormMode()]
|
36
37
|
});
|
37
38
|
this.dataUnitInterceptor = {
|
38
39
|
interceptAction: async (action) => {
|
@@ -47,6 +48,7 @@ export class SnkGrid {
|
|
47
48
|
this._gridConfig = undefined;
|
48
49
|
this._popUpGridConfig = false;
|
49
50
|
this._showSnkFilterBar = true;
|
51
|
+
this._enableContinuousInsert = false;
|
50
52
|
this.columnFilterDataSource = new SnkMultiSelectionListDataSource();
|
51
53
|
this.configName = undefined;
|
52
54
|
this.filterBarTitle = undefined;
|
@@ -70,6 +72,7 @@ export class SnkGrid {
|
|
70
72
|
this.filterBarLegacyConfigName = undefined;
|
71
73
|
this.autoLoad = undefined;
|
72
74
|
this.autoFocus = true;
|
75
|
+
this.enableGridInsert = false;
|
73
76
|
}
|
74
77
|
/**
|
75
78
|
* Exibe a janela de configurações da grade.
|
@@ -156,6 +159,16 @@ export class SnkGrid {
|
|
156
159
|
async setFocus() {
|
157
160
|
this._grid.setFocus();
|
158
161
|
}
|
162
|
+
async handleClick(event) {
|
163
|
+
if (this.hasToBlockEvent(event)) {
|
164
|
+
event.preventDefault();
|
165
|
+
event.stopPropagation();
|
166
|
+
await this._dataUnit.cancelEdition();
|
167
|
+
}
|
168
|
+
}
|
169
|
+
hasToBlockEvent(event) {
|
170
|
+
return this._snkFilterBar.contains(event.target) && this.enableGridInsert && this._dataUnit.hasNewRecord();
|
171
|
+
}
|
159
172
|
async handleGridLegacyConfigName(newLegacyConfig, oldLegacyConfig) {
|
160
173
|
if (!newLegacyConfig) {
|
161
174
|
return;
|
@@ -166,6 +179,9 @@ export class SnkGrid {
|
|
166
179
|
this.addGridLegacyConfigName();
|
167
180
|
this.loadConfig();
|
168
181
|
}
|
182
|
+
handleAddFormMode() {
|
183
|
+
return this.enableGridInsert ? TaskbarElement.FORM_MODE : "";
|
184
|
+
}
|
169
185
|
openGridConfig() {
|
170
186
|
this._grid.getColumnsState()
|
171
187
|
.then((gridColumns) => {
|
@@ -290,13 +306,21 @@ export class SnkGrid {
|
|
290
306
|
}
|
291
307
|
parent = parent.parentElement;
|
292
308
|
}
|
309
|
+
if (this._snkFilterBar) {
|
310
|
+
this._snkFilterBar.addEventListener('click', this.handleClick);
|
311
|
+
}
|
293
312
|
this._rmPrecisionCustomValueFormatter = new RmPrecisionCustomValueFormatter();
|
294
313
|
this.addGridLegacyConfigName();
|
295
314
|
this.loadConfig();
|
315
|
+
this._continuousInsertUtils = new ContinuousInsertUtils(this._application, this.resourceID, this.configName);
|
316
|
+
if (this.enableGridInsert) {
|
317
|
+
this._continuousInsertUtils.getConfig().then(value => this._enableContinuousInsert = value);
|
318
|
+
}
|
296
319
|
}
|
297
320
|
componentDidRender() {
|
321
|
+
var _a, _b;
|
298
322
|
this._rmPrecisionCustomValueFormatter.setGrid(this._grid);
|
299
|
-
this.loadGridCustomFormatters(this._dataUnit.metadata.fields);
|
323
|
+
this.loadGridCustomFormatters((_b = (_a = this._dataUnit) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.fields);
|
300
324
|
this.setCustomRenders();
|
301
325
|
this.setCustomEditors();
|
302
326
|
}
|
@@ -394,12 +418,21 @@ export class SnkGrid {
|
|
394
418
|
eagerInitialize: true,
|
395
419
|
itemBuilder: (actionButton, item) => this.getColumnSearch(actionButton, item)
|
396
420
|
}];
|
421
|
+
if (this.enableGridInsert) {
|
422
|
+
hardList.push(this._continuousInsertUtils.actionContinuousInsert(this._enableContinuousInsert, this.handleEnableContinuousInsert));
|
423
|
+
}
|
424
|
+
if (this.isGridInsertActive())
|
425
|
+
return hardList;
|
397
426
|
if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
|
398
427
|
const taskbarID = this.getTopTaskBarId();
|
399
428
|
return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this._dataState, this.actionsList));
|
400
429
|
}
|
401
430
|
return hardList.concat(this.actionsList);
|
402
431
|
}
|
432
|
+
handleEnableContinuousInsert() {
|
433
|
+
this._enableContinuousInsert = !this._enableContinuousInsert;
|
434
|
+
this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
|
435
|
+
}
|
403
436
|
handleFilterConfigUpdated(filterConfig) {
|
404
437
|
if (!filterConfig.length) {
|
405
438
|
this._showSnkFilterBar = false;
|
@@ -411,12 +444,20 @@ export class SnkGrid {
|
|
411
444
|
}
|
412
445
|
this._showSnkFilterBar = true;
|
413
446
|
}
|
447
|
+
getGridHeaderButtons() {
|
448
|
+
if (this.isGridInsertActive())
|
449
|
+
return TaskbarElement.MORE_OPTIONS;
|
450
|
+
return this._headerTaskbarProcessor.buttons;
|
451
|
+
}
|
452
|
+
isGridInsertActive() {
|
453
|
+
return this.enableGridInsert && this._dataUnit.hasNewRecord();
|
454
|
+
}
|
414
455
|
render() {
|
415
456
|
if (!this._dataUnit) {
|
416
457
|
return undefined;
|
417
458
|
}
|
418
459
|
return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto" }, h("div", { class: "snk-grid__header ez-margin-bottom--medium" }, this._showSnkFilterBar &&
|
419
|
-
h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad }), h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none' }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.
|
460
|
+
h(Fragment, null, h("snk-filter-bar", { ref: (ref) => this._snkFilterBar = ref, title: this.filterBarTitle, dataUnit: this._dataUnit, "data-element-id": "gridFilter", class: "snk-grid__filter-bar ez-align--top", configName: this.configName, messagesBuilder: this.messagesBuilder, resourceID: this.resourceID, onConfigUpdated: evt => this.handleFilterConfigUpdated(evt.detail), disablePersonalizedFilter: this.disablePersonalizedFilter, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad }), h("hr", { class: "ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-grid__header-divider" })), h("snk-taskbar", { class: "ez-padding-left--medium", "data-element-id": "grid_top", key: "topTaskbar", configName: this.configName, dataUnit: this._dataUnit, messagesBuilder: this.messagesBuilder, buttons: this._topTaskbarProcessor.buttons, disabledButtons: this._topTaskbarProcessor.disabledButtons, customButtons: this._topTaskbarProcessor.customButtons, primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.topTaskbarCustomSlotId, overflowStrategy: 'none' }, h("slot", { name: this.topTaskbarCustomSlotId }))), h("ez-grid", { ref: ref => this._grid = ref, class: (this.presentationMode === PresentationMode.SECONDARY ? "snk-grid-container__without-shadow " : "") + "snk-grid__table", "data-element-id": "embedded", dataUnit: this._dataUnit, key: "grid-" + this._snkDataUnit.entityName, config: this._gridConfig, onConfigChange: (evt) => { this.gridConfigChangeHandler(evt); }, onEzDoubleClick: (evt) => this.gridDoubleClick.emit(evt.detail), statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, columnfilterDataSource: this.columnFilterDataSource, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, recordsValidator: this.recordsValidator, canEdit: this.canEdit, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert }, h("snk-taskbar", { id: 'teste', dataUnit: this._dataUnit, configName: this.configName, messagesBuilder: this.messagesBuilder, "data-element-id": "grid_left", buttons: this.getGridHeaderButtons(), presentationMode: this.presentationMode, disabledButtons: this._headerTaskbarProcessor.disabledButtons, customButtons: this._headerTaskbarProcessor.customButtons, slot: "leftButtons", actionsList: this.getActionsList(), primaryButton: this.getPrimaryButton(), resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: this.gridHeaderCustomSlotId }, h("slot", { name: this.gridHeaderCustomSlotId }))), h("div", { class: "ez-col ez-col--sd-12" }, h("slot", { name: "SnkGridFooter" })), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._popUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this._gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resourceID }))));
|
420
461
|
}
|
421
462
|
static get is() { return "snk-grid"; }
|
422
463
|
static get encapsulation() { return "scoped"; }
|
@@ -862,6 +903,24 @@ export class SnkGrid {
|
|
862
903
|
"attribute": "auto-focus",
|
863
904
|
"reflect": false,
|
864
905
|
"defaultValue": "true"
|
906
|
+
},
|
907
|
+
"enableGridInsert": {
|
908
|
+
"type": "boolean",
|
909
|
+
"mutable": false,
|
910
|
+
"complexType": {
|
911
|
+
"original": "boolean",
|
912
|
+
"resolved": "boolean",
|
913
|
+
"references": {}
|
914
|
+
},
|
915
|
+
"required": false,
|
916
|
+
"optional": true,
|
917
|
+
"docs": {
|
918
|
+
"tags": [],
|
919
|
+
"text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
|
920
|
+
},
|
921
|
+
"attribute": "enable-grid-insert",
|
922
|
+
"reflect": false,
|
923
|
+
"defaultValue": "false"
|
865
924
|
}
|
866
925
|
};
|
867
926
|
}
|
@@ -871,7 +930,8 @@ export class SnkGrid {
|
|
871
930
|
"_dataState": {},
|
872
931
|
"_gridConfig": {},
|
873
932
|
"_popUpGridConfig": {},
|
874
|
-
"_showSnkFilterBar": {}
|
933
|
+
"_showSnkFilterBar": {},
|
934
|
+
"_enableContinuousInsert": {}
|
875
935
|
};
|
876
936
|
}
|
877
937
|
static get events() {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ApplicationContext, DataType, ElementIDUtils, FloatingManager, JSUtils, ObjectUtils, StringUtils, UserInterface, } from '@sankhyalabs/core';
|
2
|
-
import { CSSVarsUtils } from
|
2
|
+
import { CSSVarsUtils } from '@sankhyalabs/ezui/dist/collection/utils';
|
3
3
|
import { h } from '@stencil/core';
|
4
4
|
import { SIMPLE_CRUD_MODE, VIEW_MODE } from '../../lib/utils/constants';
|
5
5
|
import { TaskbarElement } from '../snk-taskbar/elements/taskbar-elements';
|
@@ -13,7 +13,8 @@ import { SnkFormConfigManager } from '../snk-form-config/SnkFormConfigManager';
|
|
13
13
|
import { REGULAR_DEFAULT_BTNS, REGULAR_SELECTED_BTNS } from './regular-buttons';
|
14
14
|
import RmPrecisionCustomValueFormatter from '../../lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter';
|
15
15
|
import ClientSideExporterProvider from '../snk-data-exporter/providers/ClientSideExporterProvider';
|
16
|
-
import store from
|
16
|
+
import store from '../../lib/store';
|
17
|
+
import { ContinuousInsertUtils } from '../../lib/utils/ContinuousInsertUtils';
|
17
18
|
export class SnkSimpleCrud {
|
18
19
|
constructor() {
|
19
20
|
this._multiSelectionListDataSource = new SnkMultiSelectionListDataSource();
|
@@ -26,7 +27,7 @@ export class SnkSimpleCrud {
|
|
26
27
|
"snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
|
27
28
|
"snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE]),
|
28
29
|
"snkSimpleCrudTaskbar.grid_selected": this.getButtons(true, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
|
29
|
-
"snkSimpleCrudTaskbar.finish_edition":
|
30
|
+
"snkSimpleCrudTaskbar.finish_edition": this.getFinishEditionButtonsCallback.bind(this)
|
30
31
|
});
|
31
32
|
this._showPopUpGridConfig = false;
|
32
33
|
this._showFormConfig = false;
|
@@ -42,10 +43,12 @@ export class SnkSimpleCrud {
|
|
42
43
|
this.formConfig = undefined;
|
43
44
|
this._formFields = [];
|
44
45
|
this._fieldsProps = new Map();
|
46
|
+
this._enableContinuousInsert = true;
|
45
47
|
this.multipleSelection = undefined;
|
46
48
|
this.useCancelConfirm = true;
|
47
49
|
this.pageSize = 150;
|
48
50
|
this.resourceID = undefined;
|
51
|
+
this.enableGridInsert = false;
|
49
52
|
this.taskbarManager = undefined;
|
50
53
|
this.messagesBuilder = undefined;
|
51
54
|
this.useEnterLikeTab = false;
|
@@ -115,6 +118,13 @@ export class SnkSimpleCrud {
|
|
115
118
|
newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
|
116
119
|
this._fieldsProps = newCustomFieldProps;
|
117
120
|
}
|
121
|
+
getFinishEditionButtonsCallback() {
|
122
|
+
const btns = ["CANCEL", "SAVE"];
|
123
|
+
if (this.enableGridInsert && this._currentViewMode !== VIEW_MODE.ATTACHMENT) {
|
124
|
+
btns.push(this._currentViewMode === VIEW_MODE.GRID ? TaskbarElement.FORM_MODE : TaskbarElement.GRID_MODE);
|
125
|
+
}
|
126
|
+
return btns;
|
127
|
+
}
|
118
128
|
getButtons(selected, extraButtons) {
|
119
129
|
return this.addConfigButton(this.resolveInMemoryBtns(selected ? REGULAR_SELECTED_BTNS : REGULAR_DEFAULT_BTNS)
|
120
130
|
.concat(extraButtons));
|
@@ -197,7 +207,6 @@ export class SnkSimpleCrud {
|
|
197
207
|
await this.setFieldProp(field, 'precision', rmPrecision);
|
198
208
|
await this.setFieldProp(field, 'prettyPrecision', rmPrecision);
|
199
209
|
}
|
200
|
-
;
|
201
210
|
this._rmPrecisionCustomValueFormatter.setDataState(this.dataState);
|
202
211
|
}
|
203
212
|
async handleUpdateGridLegacyConfig(newValue, oldValue) {
|
@@ -320,6 +329,10 @@ export class SnkSimpleCrud {
|
|
320
329
|
this.onModeChange();
|
321
330
|
this.configDatasource();
|
322
331
|
this._rmPrecisionCustomValueFormatter = new RmPrecisionCustomValueFormatter();
|
332
|
+
this._continuousInsertUtils = new ContinuousInsertUtils(this.application, this.resolveResourceID(), this.configName);
|
333
|
+
if (this.enableGridInsert) {
|
334
|
+
this._continuousInsertUtils.getConfig().then(value => this._enableContinuousInsert = value);
|
335
|
+
}
|
323
336
|
}
|
324
337
|
componentDidLoad() {
|
325
338
|
CSSVarsUtils.applyVarsGrid(this._element, this._grid);
|
@@ -554,6 +567,9 @@ export class SnkSimpleCrud {
|
|
554
567
|
const options = filteredFields.map(field => ({ value: field.name, label: field.label }));
|
555
568
|
return Promise.resolve(options);
|
556
569
|
}
|
570
|
+
isGridInsertActive() {
|
571
|
+
return this.enableGridInsert && this.dataUnit.hasNewRecord();
|
572
|
+
}
|
557
573
|
getActionsList() {
|
558
574
|
var _a, _b;
|
559
575
|
const hardList = [{
|
@@ -565,11 +581,22 @@ export class SnkSimpleCrud {
|
|
565
581
|
? this.getColumnSearch(actionButton, item)
|
566
582
|
: this.getFieldSearch(actionButton, item)
|
567
583
|
}];
|
584
|
+
if (this.enableGridInsert) {
|
585
|
+
hardList.push(this._continuousInsertUtils.actionContinuousInsert(this._enableContinuousInsert, this.handleEnableContinuousInsert));
|
586
|
+
}
|
587
|
+
if (this.isGridInsertActive())
|
588
|
+
return hardList;
|
568
589
|
if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
|
569
590
|
const taskbarID = this.getTopTaskBarId();
|
570
591
|
return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this.dataState, this.actionsList));
|
571
592
|
}
|
572
|
-
|
593
|
+
if (this.actionsList)
|
594
|
+
return hardList.concat(this.actionsList);
|
595
|
+
return hardList;
|
596
|
+
}
|
597
|
+
handleEnableContinuousInsert() {
|
598
|
+
this._enableContinuousInsert = !this._enableContinuousInsert;
|
599
|
+
this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
|
573
600
|
}
|
574
601
|
getTopTaskBarId() {
|
575
602
|
var _a;
|
@@ -688,6 +715,11 @@ export class SnkSimpleCrud {
|
|
688
715
|
}
|
689
716
|
this._formConfigManager.setConfig(this.formConfig);
|
690
717
|
}
|
718
|
+
handleDataUnitOnInsertionMode() {
|
719
|
+
if (this.enableGridInsert)
|
720
|
+
return;
|
721
|
+
this.goToView(VIEW_MODE.FORM);
|
722
|
+
}
|
691
723
|
/* istanbul ignore next */
|
692
724
|
render() {
|
693
725
|
var _a;
|
@@ -695,9 +727,9 @@ export class SnkSimpleCrud {
|
|
695
727
|
return;
|
696
728
|
}
|
697
729
|
const taskbarContent = (h("snk-taskbar", { class: this._currentViewMode === VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--medium", dataUnit: this.dataUnit, primaryButton: ((_a = this.dataState) === null || _a === void 0 ? void 0 : _a.isDirty) ? "SAVE" : "INSERT", "data-element-id": "grid_left", messagesBuilder: this.messagesBuilder, buttons: this._taskbarProcessor.buttons, actionsList: this.getActionsList(), disabledButtons: this._taskbarProcessor.disabledButtons, customButtons: this._taskbarProcessor.customButtons, "data-exporter-store-key": this.getDataExporterStoreKey(), slot: "leftButtons", presentationMode: PresentationMode.SECONDARY }, h("slot", { name: "TASKBAR_CUSTOM_ELEMENTS" })));
|
698
|
-
return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode:
|
730
|
+
return (h("snk-data-unit", { ref: ref => this._snkDataUnit = ref, class: "simple-crud__container", dataUnit: this.dataUnit, useCancelConfirm: this.useCancelConfirm, onDataStateChange: evt => this.onDataStateChange(evt), onCancelEdition: this.handleCancelEdit.bind(this), pageSize: this.getPageSize(), onInsertionMode: this.handleDataUnitOnInsertionMode.bind(this), onDataUnitReady: (evt) => this.dataUnitReady.emit(evt.detail), ignoreSaveMessage: this._currentViewMode === VIEW_MODE.GRID, onMessagesBuilderUpdated: evt => this.messagesBuilder = evt.detail, onDataUnitFieldsHidded: this.updateFormConfig.bind(this), domainMessagesBuilder: this.domainMessagesBuilder }, h("header", null, h("slot", { name: "snkSimpleCrudHeader" })), h("section", { class: "ez-box ez-box--shadow simple-crud__container-section" }, this._currentViewMode === VIEW_MODE.FORM && taskbarContent, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "simple-crud" }, h("stack-item", null, h("ez-grid", { class: "ez-margin-bottom--large", ref: ref => this._grid = ref, dataUnit: this.dataUnit, config: this.gridConfig, "no-header": true, multipleSelection: this.multipleSelection, onEzDoubleClick: () => this.goToView(VIEW_MODE.FORM), onConfigChange: evt => this.gridConfigChangeHandler(evt), columnfilterDataSource: this.dataUnit.name && this.dataUnit.name.includes(InMemoryLoader.IN_MEMORY_DATA_UNIT_NAME)
|
699
731
|
? undefined
|
700
|
-
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus }, this._currentViewMode === VIEW_MODE.GRID && taskbarContent, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large ${this.handleShowFormConfig() ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this.handleShowFormConfig() && h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
|
732
|
+
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableContinuousInsert: this._enableContinuousInsert }, this._currentViewMode === VIEW_MODE.GRID && taskbarContent, h("div", { slot: "footer" }, h("slot", { name: "snkSimpleCrudFooter" })))), h("stack-item", null, h("ez-form", { ref: (ref) => this._form = ref, class: `ez-margin-top--large ${this.handleShowFormConfig() ? "simple-crud__form--hidden" : ""}`, dataUnit: this.dataUnit, config: this.getFormConfig(), fieldToFocus: this._fieldToGetFocus, onEzFormSetFields: (evt) => this.handleFormSetFields(evt.detail), onEzFormRequestClearFieldToFocus: this.clearFieldToFocusHandler.bind(this) }), this.handleShowFormConfig() && h("snk-form-config", { messagesBuilder: this.messagesBuilder, dataUnit: this.dataUnit, configManager: this._formConfigManager, onConfigClose: () => this.closeFormConfig() })), this.messagesBuilder && h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.goToView(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showConfiguratorButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this.resolveResourceID(), customContainerId: this._customContainerId })), h("div", { id: `${this._customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }))), h("ez-modal", { modalSize: "small", closeEsc: false, closeOutsideClick: false, opened: this._showPopUpGridConfig, onEzCloseModal: () => this.closeGridConfig() }, h("snk-grid-config", { ref: ref => this._snkGridConfig = ref, config: this.gridConfig, "data-element-id": this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME), selectedIndex: 0, configName: this.configName, onConfigChange: (evt) => this.modalConfigChangeHandler(evt), onConfigCancel: () => this.closeGridConfig(), resourceID: this.resolveResourceID() }))));
|
701
733
|
}
|
702
734
|
static get is() { return "snk-simple-crud"; }
|
703
735
|
static get encapsulation() { return "scoped"; }
|
@@ -903,6 +935,24 @@ export class SnkSimpleCrud {
|
|
903
935
|
"attribute": "resource-i-d",
|
904
936
|
"reflect": false
|
905
937
|
},
|
938
|
+
"enableGridInsert": {
|
939
|
+
"type": "boolean",
|
940
|
+
"mutable": false,
|
941
|
+
"complexType": {
|
942
|
+
"original": "boolean",
|
943
|
+
"resolved": "boolean",
|
944
|
+
"references": {}
|
945
|
+
},
|
946
|
+
"required": false,
|
947
|
+
"optional": true,
|
948
|
+
"docs": {
|
949
|
+
"tags": [],
|
950
|
+
"text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
|
951
|
+
},
|
952
|
+
"attribute": "enable-grid-insert",
|
953
|
+
"reflect": false,
|
954
|
+
"defaultValue": "false"
|
955
|
+
},
|
906
956
|
"taskbarManager": {
|
907
957
|
"type": "unknown",
|
908
958
|
"mutable": false,
|
@@ -1133,7 +1183,8 @@ export class SnkSimpleCrud {
|
|
1133
1183
|
"_fieldToGetFocus": {},
|
1134
1184
|
"_customContainerId": {},
|
1135
1185
|
"_formFields": {},
|
1136
|
-
"_fieldsProps": {}
|
1186
|
+
"_fieldsProps": {},
|
1187
|
+
"_enableContinuousInsert": {}
|
1137
1188
|
};
|
1138
1189
|
}
|
1139
1190
|
static get events() {
|
@@ -29,12 +29,16 @@ export default class TaskbarProcessor {
|
|
29
29
|
});
|
30
30
|
}
|
31
31
|
getButtonsArray(taskbarId, taskbarManager, dataState) {
|
32
|
-
const defaults = this.
|
32
|
+
const defaults = this.getButtonsFromKey(taskbarId);
|
33
33
|
if (taskbarManager) {
|
34
34
|
return taskbarManager.getButtons(taskbarId, dataState, [...defaults]);
|
35
35
|
}
|
36
36
|
return defaults;
|
37
37
|
}
|
38
|
+
getButtonsFromKey(taskbarId) {
|
39
|
+
const btnsValue = this._defaultButtons[taskbarId];
|
40
|
+
return typeof btnsValue === 'function' ? btnsValue() : btnsValue;
|
41
|
+
}
|
38
42
|
isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabled) {
|
39
43
|
const originalValue = disabled.includes(buttonName) ? false : true;
|
40
44
|
if (taskbarManager && taskbarManager.isEnabled) {
|
@@ -8,7 +8,7 @@ export default class RmPrecisionCustomValueFormatter {
|
|
8
8
|
this.refreshSelectedRows();
|
9
9
|
}
|
10
10
|
setDataState(dataState) {
|
11
|
-
if (ObjectUtils.
|
11
|
+
if (this._dataState && ObjectUtils.equals(dataState === null || dataState === void 0 ? void 0 : dataState.metadataByRow, this._dataState.metadataByRow)) {
|
12
12
|
return;
|
13
13
|
}
|
14
14
|
this._dataState = dataState;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { ChangeOperation, DataType, DataUnit, DateUtils, StringUtils, } from '@sankhyalabs/core';
|
2
|
-
import {
|
2
|
+
import { buildLoadDataResponse } from './dataUnitInMemoryUtils';
|
3
3
|
export default class InMemoryLoader {
|
4
4
|
constructor(metadata, records, config) {
|
5
5
|
this.metadata = metadata;
|
@@ -82,9 +82,7 @@ export default class InMemoryLoader {
|
|
82
82
|
return StringUtils.generateUUID();
|
83
83
|
}
|
84
84
|
inMemoryLoader(dataUnit, request, recordsIn) {
|
85
|
-
|
86
|
-
records = applySorting(records, dataUnit, request.sort);
|
87
|
-
return Promise.resolve({ records, paginationInfo: buildPaginationInfo(records, request.offset, request.limit) });
|
85
|
+
return buildLoadDataResponse(recordsIn, dataUnit, request);
|
88
86
|
}
|
89
87
|
metadaLoader() {
|
90
88
|
return Promise.resolve(this._metadata);
|
@@ -11,6 +11,21 @@ export function applyFilter(records, dataUnit, filters) {
|
|
11
11
|
}
|
12
12
|
return records.filter(filterFunction);
|
13
13
|
}
|
14
|
+
export function buildLoadDataResponse(recordsIn, dataUnit, request) {
|
15
|
+
let records = recordsIn ? [...recordsIn] : [];
|
16
|
+
records = applyFilter(records, dataUnit, request.filters);
|
17
|
+
records = applySorting(records, dataUnit, request.sort);
|
18
|
+
const { offset, limit } = request;
|
19
|
+
const paginationInfoBuilderParams = {
|
20
|
+
recordsLength: records.length,
|
21
|
+
offset,
|
22
|
+
recordsPerPage: limit,
|
23
|
+
};
|
24
|
+
return Promise.resolve({
|
25
|
+
records: getPagesByRecords(records, offset, limit),
|
26
|
+
paginationInfo: buildPaginationInfo(paginationInfoBuilderParams),
|
27
|
+
});
|
28
|
+
}
|
14
29
|
export function applySorting(records, dataUnit, sorting) {
|
15
30
|
if (sorting == undefined || sorting.length == 0) {
|
16
31
|
return records;
|
@@ -21,17 +36,27 @@ export function applySorting(records, dataUnit, sorting) {
|
|
21
36
|
}
|
22
37
|
return records.sort(sortingFunction);
|
23
38
|
}
|
24
|
-
|
25
|
-
|
26
|
-
|
39
|
+
function hasValidLimitAndOffset(offset, limit) {
|
40
|
+
return offset >= 0 && limit >= 0;
|
41
|
+
}
|
42
|
+
export function getPagesByRecords(records, offset = 0, limit = 0) {
|
43
|
+
if (!records || !records.length || !hasValidLimitAndOffset(offset, limit))
|
44
|
+
return [];
|
45
|
+
if (limit === 0 && offset === 0)
|
46
|
+
return records;
|
47
|
+
return records.slice(offset, offset + limit);
|
48
|
+
}
|
49
|
+
export function buildPaginationInfo({ recordsLength = 0, offset = 0, recordsPerPage = 0 }) {
|
50
|
+
if (!recordsLength) {
|
51
|
+
return { currentPage: 0, firstRecord: 0, lastRecord: 0, total: 0, hasMore: false };
|
27
52
|
}
|
28
|
-
const
|
29
|
-
const lastRecord = Math.min(
|
53
|
+
const lastRecordIndex = offset + recordsPerPage;
|
54
|
+
const lastRecord = lastRecordIndex ? Math.min(lastRecordIndex, recordsLength) : recordsLength;
|
30
55
|
return {
|
31
|
-
currentPage:
|
32
|
-
firstRecord: offset,
|
56
|
+
currentPage: recordsPerPage === 0 ? 0 : Math.ceil(offset / recordsPerPage),
|
57
|
+
firstRecord: offset + 1,
|
33
58
|
lastRecord: lastRecord,
|
34
|
-
total:
|
35
|
-
hasMore:
|
59
|
+
total: recordsLength,
|
60
|
+
hasMore: lastRecord < recordsLength,
|
36
61
|
};
|
37
62
|
}
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -44,12 +44,19 @@ export class DatasetStrategy {
|
|
44
44
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
45
45
|
const loadingInProgress = pagerId != undefined;
|
46
46
|
const count = loadingInfo.count + records.length;
|
47
|
+
const isInsertingNewRecord = dataUnit.hasNewRecord();
|
47
48
|
const needReload = !loadingInProgress && localSorting.length > 0;
|
49
|
+
/**
|
50
|
+
* Caso precise recarregar dados, porém está no meio de uma inserção, os dados não devem recarregados instantaneamente,
|
51
|
+
* Mas sim, sinalizar que o dataUnit está aguardando para der recarregado.
|
52
|
+
*/
|
53
|
+
if (needReload && isInsertingNewRecord) {
|
54
|
+
dataUnit.setWaitingToReload(true);
|
55
|
+
}
|
48
56
|
return Promise.resolve({
|
49
57
|
records,
|
50
58
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
51
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
52
|
-
needReload })
|
59
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count, needReload: needReload && !isInsertingNewRecord })
|
53
60
|
});
|
54
61
|
}
|
55
62
|
catch (error) {
|
@@ -1,5 +1,9 @@
|
|
1
1
|
export const snkGridMessages = {
|
2
|
-
findColumn: "Busca de colunas"
|
2
|
+
findColumn: "Busca de colunas",
|
3
|
+
cancelConfirmation: {
|
4
|
+
title: "Aviso",
|
5
|
+
message: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?</b>",
|
6
|
+
}
|
3
7
|
};
|
4
8
|
export const snkGridConfigMessages = {
|
5
9
|
gridConfiguration: "Configuração da Grade",
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { h } from '@stencil/core';
|
2
|
+
import { StringUtils } from '@sankhyalabs/core';
|
3
|
+
export class ContinuousInsertUtils {
|
4
|
+
constructor(snkApplication, resourceID, configName) {
|
5
|
+
this.snkApplication = snkApplication;
|
6
|
+
this.keyConfigEnableContinuousInsert = `${resourceID}enableContinuousInsert${configName ? configName : ''}`;
|
7
|
+
}
|
8
|
+
handleSaveConfig(enableContinuousInsert) {
|
9
|
+
return this.snkApplication.saveConfig(this.keyConfigEnableContinuousInsert, enableContinuousInsert);
|
10
|
+
}
|
11
|
+
getConfig() {
|
12
|
+
return this.snkApplication.getConfig(this.keyConfigEnableContinuousInsert).then(value => {
|
13
|
+
if (value) {
|
14
|
+
return value == "true" ? true : false;
|
15
|
+
}
|
16
|
+
return false;
|
17
|
+
}).catch(() => {
|
18
|
+
return false;
|
19
|
+
});
|
20
|
+
}
|
21
|
+
actionContinuousInsert(enableContinuousInsert, handleEnableContinuousInsert) {
|
22
|
+
return {
|
23
|
+
value: StringUtils.generateUUID(),
|
24
|
+
label: enableContinuousInsert ? 'Desativar inclusão contínua' : 'Ativar inclusão contínua',
|
25
|
+
enabled: true,
|
26
|
+
itemBuilder: () => {
|
27
|
+
return (h("div", { class: "ez-dropdown__item-wrapper", onClick: () => handleEnableContinuousInsert() }, h("span", { class: "ez-dropdown__item-label" }, enableContinuousInsert ? 'Desativar inclusão contínua' : 'Ativar inclusão contínua')));
|
28
|
+
},
|
29
|
+
};
|
30
|
+
}
|
31
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { D as DataFetcher } from './DataFetcher.js';
|
2
2
|
import './pesquisa-fetcher.js';
|
3
|
-
import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, NumberUtils, DataType } from '@sankhyalabs/core';
|
3
|
+
import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, NumberUtils, DataType, StringUtils } from '@sankhyalabs/core';
|
4
4
|
import './ISave.js';
|
5
5
|
import '@sankhyalabs/ezui/dist/collection/utils/constants';
|
6
6
|
import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
@@ -124,12 +124,16 @@ class TaskbarProcessor {
|
|
124
124
|
});
|
125
125
|
}
|
126
126
|
getButtonsArray(taskbarId, taskbarManager, dataState) {
|
127
|
-
const defaults = this.
|
127
|
+
const defaults = this.getButtonsFromKey(taskbarId);
|
128
128
|
if (taskbarManager) {
|
129
129
|
return taskbarManager.getButtons(taskbarId, dataState, [...defaults]);
|
130
130
|
}
|
131
131
|
return defaults;
|
132
132
|
}
|
133
|
+
getButtonsFromKey(taskbarId) {
|
134
|
+
const btnsValue = this._defaultButtons[taskbarId];
|
135
|
+
return typeof btnsValue === 'function' ? btnsValue() : btnsValue;
|
136
|
+
}
|
133
137
|
isEnabled(taskbarId, taskbarManager, buttonName, dataState, disabled) {
|
134
138
|
const originalValue = disabled.includes(buttonName) ? false : true;
|
135
139
|
if (taskbarManager && taskbarManager.isEnabled) {
|
@@ -217,7 +221,7 @@ class RmPrecisionCustomValueFormatter {
|
|
217
221
|
this.refreshSelectedRows();
|
218
222
|
}
|
219
223
|
setDataState(dataState) {
|
220
|
-
if (ObjectUtils.
|
224
|
+
if (this._dataState && ObjectUtils.equals(dataState === null || dataState === void 0 ? void 0 : dataState.metadataByRow, this._dataState.metadataByRow)) {
|
221
225
|
return;
|
222
226
|
}
|
223
227
|
this._dataState = dataState;
|
@@ -295,4 +299,35 @@ class CommonsExporter {
|
|
295
299
|
}
|
296
300
|
}
|
297
301
|
|
298
|
-
|
302
|
+
class ContinuousInsertUtils {
|
303
|
+
constructor(snkApplication, resourceID, configName) {
|
304
|
+
this.snkApplication = snkApplication;
|
305
|
+
this.keyConfigEnableContinuousInsert = `${resourceID}enableContinuousInsert${configName ? configName : ''}`;
|
306
|
+
}
|
307
|
+
handleSaveConfig(enableContinuousInsert) {
|
308
|
+
return this.snkApplication.saveConfig(this.keyConfigEnableContinuousInsert, enableContinuousInsert);
|
309
|
+
}
|
310
|
+
getConfig() {
|
311
|
+
return this.snkApplication.getConfig(this.keyConfigEnableContinuousInsert).then(value => {
|
312
|
+
if (value) {
|
313
|
+
return value == "true" ? true : false;
|
314
|
+
}
|
315
|
+
return false;
|
316
|
+
}).catch(() => {
|
317
|
+
return false;
|
318
|
+
});
|
319
|
+
}
|
320
|
+
actionContinuousInsert(enableContinuousInsert, handleEnableContinuousInsert) {
|
321
|
+
return {
|
322
|
+
value: StringUtils.generateUUID(),
|
323
|
+
label: enableContinuousInsert ? 'Desativar inclusão contínua' : 'Ativar inclusão contínua',
|
324
|
+
enabled: true,
|
325
|
+
itemBuilder: () => {
|
326
|
+
return (h("div", { class: "ez-dropdown__item-wrapper", onClick: () => handleEnableContinuousInsert() },
|
327
|
+
h("span", { class: "ez-dropdown__item-label" }, enableContinuousInsert ? 'Desativar inclusão contínua' : 'Ativar inclusão contínua')));
|
328
|
+
},
|
329
|
+
};
|
330
|
+
}
|
331
|
+
}
|
332
|
+
|
333
|
+
export { CommonsExporter as C, RmPrecisionCustomValueFormatter as R, SnkMultiSelectionListDataSource as S, TaskbarProcessor as T, CrudUtils as a, buildFieldSearch as b, ContinuousInsertUtils as c, openFieldSearch as o };
|
@@ -245,7 +245,11 @@ const snkConfiguratorMessages = {
|
|
245
245
|
};
|
246
246
|
|
247
247
|
const snkGridMessages = {
|
248
|
-
findColumn: "Busca de colunas"
|
248
|
+
findColumn: "Busca de colunas",
|
249
|
+
cancelConfirmation: {
|
250
|
+
title: "Aviso",
|
251
|
+
message: "As alterações realizadas serão descartadas<br/><br/><b>Você realmente gostaria de cancelar?</b>",
|
252
|
+
}
|
249
253
|
};
|
250
254
|
const snkGridConfigMessages = {
|
251
255
|
gridConfiguration: "Configuração da Grade",
|