@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-KB-55889.1 → 0.0.0-bugfix-dev-KB-72883.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/{IExporterProvider-9ac15aaf.js → ContinuousInsertUtils-29b65619.js} +36 -3
- 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-ed17da6b.js → snk-data-unit-47202e42.js} +24 -18
- 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-filter-bar.cjs.entry.js +19 -15
- package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +1 -1
- package/dist/cjs/snk-grid.cjs.entry.js +53 -14
- 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-bar.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +44 -13
- 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-data-unit/snk-data-unit.js +22 -16
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-checkbox-list.js +1 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.css +1 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +44 -14
- package/dist/collection/components/snk-grid/snk-grid.css +1 -1
- package/dist/collection/components/snk-grid/snk-grid.js +66 -7
- package/dist/collection/components/snk-simple-bar/snk-simple-bar.js +1 -1
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.css +0 -1
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +59 -9
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
- package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +3 -3
- 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} +40 -5
- 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 +23 -17
- package/dist/components/snk-detail-view2.js +8 -3
- package/dist/components/snk-filter-bar2.js +20 -15
- package/dist/components/snk-filter-checkbox-list.js +1 -1
- package/dist/components/snk-grid2.js +49 -8
- package/dist/components/snk-simple-bar2.js +1 -1
- package/dist/components/snk-simple-crud2.js +40 -7
- package/dist/esm/{IExporterProvider-09df2e3e.js → ContinuousInsertUtils-30caa626.js} +37 -5
- 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-6888df8f.js → snk-data-unit-de45e0e1.js} +24 -18
- package/dist/esm/snk-data-unit.entry.js +3 -3
- package/dist/esm/snk-detail-view.entry.js +4 -4
- package/dist/esm/snk-filter-bar.entry.js +19 -15
- package/dist/esm/snk-filter-checkbox-list.entry.js +1 -1
- package/dist/esm/snk-grid.entry.js +48 -9
- 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-bar.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +40 -9
- package/dist/sankhyablocks/p-17425c72.js +1 -0
- package/dist/sankhyablocks/p-23736d75.js +1 -0
- package/dist/sankhyablocks/p-2923c1b5.js +1 -0
- package/dist/sankhyablocks/p-3e3cc017.js +1 -0
- package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
- package/dist/sankhyablocks/{p-aaa3ee68.entry.js → p-5f157b09.entry.js} +1 -1
- package/dist/sankhyablocks/{p-559bfb9b.entry.js → p-62e048c6.entry.js} +1 -1
- 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-9eaf913b.entry.js +1 -0
- package/dist/sankhyablocks/{p-640140b3.entry.js → p-a42e7a1e.entry.js} +1 -1
- package/dist/sankhyablocks/p-b9679243.entry.js +1 -0
- package/dist/sankhyablocks/{p-9cbef862.js → p-bccfc262.js} +1 -1
- package/dist/sankhyablocks/p-c2e468c9.entry.js +1 -0
- package/dist/sankhyablocks/p-d11f58d2.entry.js +1 -0
- package/dist/sankhyablocks/{p-439a50fb.entry.js → p-da34270e.entry.js} +1 -1
- 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-data-unit/snk-data-unit.d.ts +2 -2
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
- package/dist/types/components/snk-grid/snk-grid.d.ts +11 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +9 -0
- package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
- package/dist/types/components.d.ts +40 -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-88aa931b.entry.js +0 -1
- package/dist/sankhyablocks/p-a31e761f.js +0 -1
- package/dist/sankhyablocks/p-b2caaaf9.entry.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,6 +418,14 @@ 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, () => {
|
|
423
|
+
this._enableContinuousInsert = !this._enableContinuousInsert;
|
|
424
|
+
this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
|
|
425
|
+
}));
|
|
426
|
+
}
|
|
427
|
+
if (this.isGridInsertActive())
|
|
428
|
+
return hardList;
|
|
397
429
|
if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
|
|
398
430
|
const taskbarID = this.getTopTaskBarId();
|
|
399
431
|
return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this._dataState, this.actionsList));
|
|
@@ -411,12 +443,20 @@ export class SnkGrid {
|
|
|
411
443
|
}
|
|
412
444
|
this._showSnkFilterBar = true;
|
|
413
445
|
}
|
|
446
|
+
getGridHeaderButtons() {
|
|
447
|
+
if (this.isGridInsertActive())
|
|
448
|
+
return TaskbarElement.MORE_OPTIONS;
|
|
449
|
+
return this._headerTaskbarProcessor.buttons;
|
|
450
|
+
}
|
|
451
|
+
isGridInsertActive() {
|
|
452
|
+
return this.enableGridInsert && this._dataUnit.hasNewRecord();
|
|
453
|
+
}
|
|
414
454
|
render() {
|
|
415
455
|
if (!this._dataUnit) {
|
|
416
456
|
return undefined;
|
|
417
457
|
}
|
|
418
|
-
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--
|
|
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.
|
|
458
|
+
return (h("div", { class: "snk-grid__container ez-flex ez-flex--column ez-flex-item--auto ez-padding--large" }, h("div", { class: "snk-grid__header ez-margin-bottom--extra-small" }, this._showSnkFilterBar &&
|
|
459
|
+
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
460
|
}
|
|
421
461
|
static get is() { return "snk-grid"; }
|
|
422
462
|
static get encapsulation() { return "scoped"; }
|
|
@@ -862,6 +902,24 @@ export class SnkGrid {
|
|
|
862
902
|
"attribute": "auto-focus",
|
|
863
903
|
"reflect": false,
|
|
864
904
|
"defaultValue": "true"
|
|
905
|
+
},
|
|
906
|
+
"enableGridInsert": {
|
|
907
|
+
"type": "boolean",
|
|
908
|
+
"mutable": false,
|
|
909
|
+
"complexType": {
|
|
910
|
+
"original": "boolean",
|
|
911
|
+
"resolved": "boolean",
|
|
912
|
+
"references": {}
|
|
913
|
+
},
|
|
914
|
+
"required": false,
|
|
915
|
+
"optional": true,
|
|
916
|
+
"docs": {
|
|
917
|
+
"tags": [],
|
|
918
|
+
"text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
|
|
919
|
+
},
|
|
920
|
+
"attribute": "enable-grid-insert",
|
|
921
|
+
"reflect": false,
|
|
922
|
+
"defaultValue": "false"
|
|
865
923
|
}
|
|
866
924
|
};
|
|
867
925
|
}
|
|
@@ -871,7 +929,8 @@ export class SnkGrid {
|
|
|
871
929
|
"_dataState": {},
|
|
872
930
|
"_gridConfig": {},
|
|
873
931
|
"_popUpGridConfig": {},
|
|
874
|
-
"_showSnkFilterBar": {}
|
|
932
|
+
"_showSnkFilterBar": {},
|
|
933
|
+
"_enableContinuousInsert": {}
|
|
875
934
|
};
|
|
876
935
|
}
|
|
877
936
|
static get events() {
|
|
@@ -26,7 +26,7 @@ export class SnkSimpleBar {
|
|
|
26
26
|
this._application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
|
27
27
|
}
|
|
28
28
|
render() {
|
|
29
|
-
return (h("div", { class: "simple-bar__container ez-margin-vertical--
|
|
29
|
+
return (h("div", { class: "simple-bar__container ez-margin-vertical--small ez-padding--extra-small" }, h("div", { class: "simple-bar__left-slot" }, h("ez-button", { class: "ez-padding-right--medium", title: this.getMessage('snkSimpleBar.backTitle'), mode: 'icon', iconName: "arrow_back", size: 'medium', onClick: () => this.exit.emit() }), h("div", { class: "simple-bar__column" }, h("h1", { class: "ez-title ez-title--primary ez-title--extra-large" }, this.label), h("ez-breadcrumb", { items: this.breadcrumbItens, onSelectedItem: ({ detail }) => this.clickBreadcrumbItem.emit(detail) }))), h("div", { class: "simple-bar__right-slot" }, h("slot", { name: "rightSlot" }))));
|
|
30
30
|
}
|
|
31
31
|
static get is() { return "snk-simple-bar"; }
|
|
32
32
|
static get encapsulation() { return "scoped"; }
|
|
@@ -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,21 @@ 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, () => {
|
|
586
|
+
this._enableContinuousInsert = !this._enableContinuousInsert;
|
|
587
|
+
this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
|
|
588
|
+
}));
|
|
589
|
+
}
|
|
590
|
+
if (this.isGridInsertActive())
|
|
591
|
+
return hardList;
|
|
568
592
|
if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
|
|
569
593
|
const taskbarID = this.getTopTaskBarId();
|
|
570
594
|
return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this.dataState, this.actionsList));
|
|
571
595
|
}
|
|
572
|
-
|
|
596
|
+
if (this.actionsList)
|
|
597
|
+
return hardList.concat(this.actionsList);
|
|
598
|
+
return hardList;
|
|
573
599
|
}
|
|
574
600
|
getTopTaskBarId() {
|
|
575
601
|
var _a;
|
|
@@ -688,16 +714,21 @@ export class SnkSimpleCrud {
|
|
|
688
714
|
}
|
|
689
715
|
this._formConfigManager.setConfig(this.formConfig);
|
|
690
716
|
}
|
|
717
|
+
handleDataUnitOnInsertionMode() {
|
|
718
|
+
if (this.enableGridInsert)
|
|
719
|
+
return;
|
|
720
|
+
this.goToView(VIEW_MODE.FORM);
|
|
721
|
+
}
|
|
691
722
|
/* istanbul ignore next */
|
|
692
723
|
render() {
|
|
693
724
|
var _a;
|
|
694
725
|
if (this.dataUnit == undefined) {
|
|
695
726
|
return;
|
|
696
727
|
}
|
|
697
|
-
const taskbarContent = (h("snk-taskbar", { class: this._currentViewMode === VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--
|
|
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:
|
|
728
|
+
const taskbarContent = (h("snk-taskbar", { class: this._currentViewMode === VIEW_MODE.FORM && "ez-box ez-box--shadow ez-padding--small", 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" })));
|
|
729
|
+
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
730
|
? 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() }))));
|
|
731
|
+
: 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
732
|
}
|
|
702
733
|
static get is() { return "snk-simple-crud"; }
|
|
703
734
|
static get encapsulation() { return "scoped"; }
|
|
@@ -903,6 +934,24 @@ export class SnkSimpleCrud {
|
|
|
903
934
|
"attribute": "resource-i-d",
|
|
904
935
|
"reflect": false
|
|
905
936
|
},
|
|
937
|
+
"enableGridInsert": {
|
|
938
|
+
"type": "boolean",
|
|
939
|
+
"mutable": false,
|
|
940
|
+
"complexType": {
|
|
941
|
+
"original": "boolean",
|
|
942
|
+
"resolved": "boolean",
|
|
943
|
+
"references": {}
|
|
944
|
+
},
|
|
945
|
+
"required": false,
|
|
946
|
+
"optional": true,
|
|
947
|
+
"docs": {
|
|
948
|
+
"tags": [],
|
|
949
|
+
"text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
|
|
950
|
+
},
|
|
951
|
+
"attribute": "enable-grid-insert",
|
|
952
|
+
"reflect": false,
|
|
953
|
+
"defaultValue": "false"
|
|
954
|
+
},
|
|
906
955
|
"taskbarManager": {
|
|
907
956
|
"type": "unknown",
|
|
908
957
|
"mutable": false,
|
|
@@ -1133,7 +1182,8 @@ export class SnkSimpleCrud {
|
|
|
1133
1182
|
"_fieldToGetFocus": {},
|
|
1134
1183
|
"_customContainerId": {},
|
|
1135
1184
|
"_formFields": {},
|
|
1136
|
-
"_fieldsProps": {}
|
|
1185
|
+
"_fieldsProps": {},
|
|
1186
|
+
"_enableContinuousInsert": {}
|
|
1137
1187
|
};
|
|
1138
1188
|
}
|
|
1139
1189
|
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) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NumberUtils, ObjectUtils } from "@sankhyalabs/core";
|
|
1
|
+
import { NumberUtils, ObjectUtils, StringUtils } from "@sankhyalabs/core";
|
|
2
2
|
export default class RmPrecisionCustomValueFormatter {
|
|
3
3
|
setGrid(grid) {
|
|
4
4
|
if (this._grid) {
|
|
@@ -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;
|
|
@@ -16,7 +16,7 @@ export default class RmPrecisionCustomValueFormatter {
|
|
|
16
16
|
}
|
|
17
17
|
format(currentValue, column, recordId) {
|
|
18
18
|
var _a;
|
|
19
|
-
if (
|
|
19
|
+
if (StringUtils.isEmpty(currentValue)) {
|
|
20
20
|
return currentValue;
|
|
21
21
|
}
|
|
22
22
|
const rowMetadata = (_a = this._dataState) === null || _a === void 0 ? void 0 : _a.metadataByRow.get(recordId);
|
|
@@ -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, StringUtils, NumberUtils, DataType } 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;
|
|
@@ -225,7 +229,7 @@ class RmPrecisionCustomValueFormatter {
|
|
|
225
229
|
}
|
|
226
230
|
format(currentValue, column, recordId) {
|
|
227
231
|
var _a;
|
|
228
|
-
if (
|
|
232
|
+
if (StringUtils.isEmpty(currentValue)) {
|
|
229
233
|
return currentValue;
|
|
230
234
|
}
|
|
231
235
|
const rowMetadata = (_a = this._dataState) === null || _a === void 0 ? void 0 : _a.metadataByRow.get(recordId);
|
|
@@ -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 };
|