@sankhyalabs/sankhyablocks 8.16.0-dev.3 → 8.16.0-dev.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ConfigStorage-942ce74b.js → ConfigStorage-ecc0ed20.js} +3 -2
- package/dist/cjs/{IExporterProvider-597949f9.js → ContinuousInsertUtils-807730a8.js} +39 -6
- package/dist/cjs/{DataFetcher-313debd8.js → DataFetcher-cadeef8e.js} +21 -15
- package/dist/cjs/{RecordIDUtils-3735135c.js → GetSelectedRecordsIDsInfo-bd50caf1.js} +10 -10
- package/dist/cjs/{SnkFormConfigManager-1b13bacd.js → SnkFormConfigManager-f1c92f79.js} +74 -20
- package/dist/cjs/{SnkMessageBuilder-722b104e.js → SnkMessageBuilder-bae64d0d.js} +7 -3
- package/dist/cjs/{auth-fetcher-54f5ff9d.js → auth-fetcher-d68841bc.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-688d3f05.js → dataunit-fetcher-f89461c1.js} +46 -18
- package/dist/cjs/{field-search-f56aa7d6.js → field-search-68e34bf4.js} +5 -1
- package/dist/cjs/{form-config-fetcher-2dd00e5b.js → form-config-fetcher-ed497282.js} +5 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{pesquisa-fetcher-680e198f.js → pesquisa-fetcher-ca89181c.js} +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_4.cjs.entry.js +17 -14
- package/dist/cjs/snk-application.cjs.entry.js +7 -7
- package/dist/cjs/snk-attach.cjs.entry.js +37 -28
- package/dist/cjs/snk-crud.cjs.entry.js +14 -6
- package/dist/cjs/snk-data-exporter.cjs.entry.js +19 -18
- package/dist/cjs/{snk-data-unit-685272e7.js → snk-data-unit-668dc5e8.js} +42 -22
- package/dist/cjs/snk-data-unit.cjs.entry.js +5 -5
- package/dist/cjs/snk-detail-view.cjs.entry.js +12 -13
- package/dist/cjs/snk-exporter-email-sender.cjs.entry.js +1 -1
- package/dist/cjs/snk-filter-bar.cjs.entry.js +37 -25
- package/dist/cjs/snk-filter-checkbox-list.cjs.entry.js +1 -1
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
- package/dist/cjs/snk-form-config.cjs.entry.js +17 -6
- package/dist/cjs/snk-form.cjs.entry.js +7 -6
- package/dist/cjs/snk-grid.cjs.entry.js +61 -21
- package/dist/cjs/{snk-guides-viewer-67605336.js → snk-guides-viewer-68777d37.js} +24 -12
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -9
- package/dist/cjs/snk-personalized-filter.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 +64 -26
- package/dist/cjs/snk-taskbar.cjs.entry.js +23 -1
- package/dist/collection/components/snk-actions-button/actions/index.js +12 -9
- package/dist/collection/components/snk-attach/snk-attach.js +24 -15
- 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 +78 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +3 -4
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +51 -6
- package/dist/collection/components/snk-data-exporter/exporter-email-sender/options-step.js +1 -1
- package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +4 -4
- package/dist/collection/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.js +5 -5
- package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +1 -1
- package/dist/collection/components/snk-data-exporter/providers/ServerSideExporterProvider.js +1 -1
- package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +2 -2
- package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +2 -2
- package/dist/collection/components/snk-data-exporter/test/resources/ClientSideExporterStrategyResources.js +4 -4
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +57 -20
- 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 +59 -21
- package/dist/collection/components/snk-form/snk-form.js +2 -2
- package/dist/collection/components/snk-form-config/SnkFormConfigManager.js +72 -18
- package/dist/collection/components/snk-form-config/snk-form-config.css +8 -3
- package/dist/collection/components/snk-form-config/snk-form-config.js +14 -3
- package/dist/collection/components/snk-grid/snk-grid.css +2 -0
- package/dist/collection/components/snk-grid/snk-grid.js +68 -8
- 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 +89 -15
- package/dist/collection/components/snk-taskbar/processor/taskbar-processor.js +5 -1
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +64 -0
- package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +3 -3
- package/dist/collection/lib/configs/ConfigStorage.js +1 -0
- 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/DataFetcher.js +22 -16
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/anexo-sistema-fetcher.js +7 -5
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -2
- package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +4 -1
- package/dist/collection/lib/message/resources/snk-data-unit.msg.js +1 -1
- package/dist/collection/lib/message/resources/snk-exporter.msg.js +1 -1
- package/dist/collection/lib/message/resources/snk-grid.msg.js +5 -1
- package/dist/collection/lib/utils/ContinuousInsertUtils.js +31 -0
- package/dist/collection/{components/snk-data-exporter/utils/RecordIDUtils.js → lib/utils/GetSelectedRecordsIDsInfo.js} +9 -9
- package/dist/components/ConfigStorage.js +1 -0
- package/dist/components/{IExporterProvider.js → ContinuousInsertUtils.js} +40 -5
- package/dist/components/DataFetcher.js +22 -16
- package/dist/{esm/RecordIDUtils-87d02110.js → components/GetSelectedRecordsIDsInfo.js} +10 -10
- package/dist/components/SnkFormConfigManager.js +72 -18
- package/dist/components/SnkMessageBuilder.js +7 -3
- package/dist/components/dataunit-fetcher.js +45 -15
- package/dist/components/form-config-fetcher.js +4 -1
- package/dist/components/snk-actions-button2.js +12 -9
- package/dist/components/snk-attach2.js +33 -24
- package/dist/components/snk-crud.js +12 -1
- package/dist/components/snk-data-exporter2.js +12 -11
- package/dist/components/snk-data-unit2.js +44 -60
- package/dist/components/snk-detail-view2.js +24 -11
- package/dist/components/snk-exporter-email-sender2.js +1 -1
- package/dist/components/snk-filter-bar2.js +35 -22
- package/dist/components/snk-filter-checkbox-list.js +1 -1
- package/dist/components/snk-form-config2.js +15 -4
- package/dist/components/snk-form.js +2 -2
- package/dist/components/snk-grid2.js +53 -11
- package/dist/components/snk-simple-bar2.js +1 -1
- package/dist/components/snk-simple-crud2.js +57 -15
- package/dist/components/snk-taskbar2.js +24 -2
- package/dist/esm/{ConfigStorage-86187da3.js → ConfigStorage-7b36d041.js} +3 -2
- package/dist/esm/{IExporterProvider-63a188b6.js → ContinuousInsertUtils-1a82a768.js} +40 -8
- package/dist/esm/{DataFetcher-c1baf61d.js → DataFetcher-a9c598f2.js} +22 -16
- package/dist/esm/GetSelectedRecordsIDsInfo-9fa41508.js +41 -0
- package/dist/esm/{SnkFormConfigManager-d4554df9.js → SnkFormConfigManager-139f09fa.js} +74 -20
- package/dist/esm/{SnkMessageBuilder-89925609.js → SnkMessageBuilder-6fff4a4c.js} +7 -3
- package/dist/esm/{auth-fetcher-039abba3.js → auth-fetcher-749d880f.js} +1 -1
- package/dist/esm/{dataunit-fetcher-264191b2.js → dataunit-fetcher-c24c76c6.js} +46 -16
- package/dist/esm/{field-search-efbe307f.js → field-search-f8b1d91e.js} +5 -1
- package/dist/esm/{form-config-fetcher-30fb808f.js → form-config-fetcher-adbe5d34.js} +5 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{pesquisa-fetcher-03c8f919.js → pesquisa-fetcher-8edaa8cd.js} +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_4.entry.js +17 -14
- package/dist/esm/snk-application.entry.js +7 -7
- package/dist/esm/snk-attach.entry.js +37 -28
- package/dist/esm/snk-crud.entry.js +14 -6
- package/dist/esm/snk-data-exporter.entry.js +19 -18
- package/dist/esm/{snk-data-unit-63f83504.js → snk-data-unit-0fdfb6c2.js} +42 -22
- package/dist/esm/snk-data-unit.entry.js +5 -5
- package/dist/esm/snk-detail-view.entry.js +12 -13
- package/dist/esm/snk-exporter-email-sender.entry.js +1 -1
- package/dist/esm/snk-filter-bar.entry.js +37 -25
- package/dist/esm/snk-filter-checkbox-list.entry.js +1 -1
- package/dist/esm/snk-filter-modal-item.entry.js +3 -3
- package/dist/esm/snk-form-config.entry.js +17 -6
- package/dist/esm/snk-form.entry.js +7 -6
- package/dist/esm/snk-grid.entry.js +56 -16
- package/dist/esm/{snk-guides-viewer-151f6091.js → snk-guides-viewer-b5dd30e6.js} +24 -12
- package/dist/esm/snk-guides-viewer.entry.js +9 -9
- package/dist/esm/snk-personalized-filter.entry.js +3 -3
- package/dist/esm/snk-simple-bar.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +60 -22
- package/dist/esm/snk-taskbar.entry.js +23 -1
- package/dist/sankhyablocks/p-0035ad6e.entry.js +1 -0
- package/dist/sankhyablocks/{p-df5451c7.js → p-06421fdb.js} +2 -2
- package/dist/sankhyablocks/p-16a1dd18.entry.js +1 -0
- package/dist/sankhyablocks/p-17425c72.js +1 -0
- package/dist/sankhyablocks/p-18ed15f4.entry.js +1 -0
- package/dist/sankhyablocks/{p-af8efd95.js → p-1bf06cd3.js} +2 -2
- package/dist/sankhyablocks/{p-a1d72395.entry.js → p-212213d9.entry.js} +1 -1
- package/dist/sankhyablocks/p-23736d75.js +1 -0
- package/dist/sankhyablocks/p-3ae9d08a.js +1 -0
- package/dist/sankhyablocks/p-3e3cc017.js +1 -0
- package/dist/sankhyablocks/p-430e4d3c.entry.js +1 -0
- package/dist/sankhyablocks/{p-aff76a53.js → p-4d9549cf.js} +2 -2
- package/dist/sankhyablocks/p-50779ad3.entry.js +1 -0
- package/dist/sankhyablocks/p-5dd8cf4f.js +1 -0
- package/dist/sankhyablocks/{p-aaa3ee68.entry.js → p-5f157b09.entry.js} +1 -1
- package/dist/sankhyablocks/p-60b29483.entry.js +1 -0
- package/dist/sankhyablocks/p-694e1c4a.entry.js +1 -0
- package/dist/sankhyablocks/p-7ac7932c.js +60 -0
- package/dist/sankhyablocks/p-7dd49d15.js +1 -0
- package/dist/sankhyablocks/p-7eef0898.entry.js +1 -0
- package/dist/sankhyablocks/{p-82a0bfb0.entry.js → p-a42e7a1e.entry.js} +2 -2
- package/dist/sankhyablocks/p-afbb070d.js +1 -0
- package/dist/sankhyablocks/p-b9679243.entry.js +1 -0
- package/dist/sankhyablocks/p-b9c67e45.entry.js +1 -0
- package/dist/sankhyablocks/p-c2e468c9.entry.js +1 -0
- package/dist/sankhyablocks/{p-913a9979.js → p-ca5ec380.js} +1 -1
- package/dist/sankhyablocks/p-d80a84fd.entry.js +1 -0
- package/dist/sankhyablocks/p-d836f72b.entry.js +1 -0
- package/dist/sankhyablocks/p-e16e87fc.entry.js +1 -0
- package/dist/sankhyablocks/p-eb9f0407.entry.js +1 -0
- package/dist/sankhyablocks/p-f3434fc4.js +1 -0
- package/dist/sankhyablocks/{p-eae7a817.entry.js → p-fb34e0cf.entry.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-actions-button/actions/index.d.ts +1 -0
- package/dist/types/components/snk-attach/snk-attach.d.ts +1 -0
- package/dist/types/components/snk-crud/snk-crud.d.ts +13 -0
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +11 -0
- package/dist/types/components/snk-data-exporter/test/resources/ClientSideExporterStrategyResources.d.ts +3 -3
- package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +7 -0
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +5 -0
- package/dist/types/components/snk-form-config/SnkFormConfigManager.d.ts +9 -4
- package/dist/types/components/snk-grid/snk-grid.d.ts +12 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +14 -0
- package/dist/types/components/snk-taskbar/processor/taskbar-processor.d.ts +1 -0
- package/dist/types/components/snk-taskbar/snk-taskbar.d.ts +11 -0
- package/dist/types/components.d.ts +89 -0
- package/dist/types/lib/dataUnit/dataUnitInMemoryUtils.d.ts +12 -2
- package/dist/types/lib/http/data-fetcher/fetchers/AttachFetcher/anexo-sistema-fetcher.d.ts +3 -2
- package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +1 -1
- package/dist/types/lib/utils/ContinuousInsertUtils.d.ts +10 -0
- package/dist/types/lib/utils/GetSelectedRecordsIDsInfo.d.ts +3 -0
- package/package.json +2 -2
- package/dist/sankhyablocks/p-14a08904.entry.js +0 -1
- package/dist/sankhyablocks/p-14b9f964.entry.js +0 -1
- package/dist/sankhyablocks/p-219f888d.entry.js +0 -1
- package/dist/sankhyablocks/p-3a212712.js +0 -1
- package/dist/sankhyablocks/p-3a216b81.entry.js +0 -1
- package/dist/sankhyablocks/p-47b60deb.entry.js +0 -1
- package/dist/sankhyablocks/p-7505da04.entry.js +0 -1
- package/dist/sankhyablocks/p-75f83d1d.entry.js +0 -1
- package/dist/sankhyablocks/p-7a337364.js +0 -1
- package/dist/sankhyablocks/p-829d4045.js +0 -1
- package/dist/sankhyablocks/p-88aa931b.entry.js +0 -1
- package/dist/sankhyablocks/p-8fc470e5.entry.js +0 -1
- package/dist/sankhyablocks/p-941bf3ef.entry.js +0 -1
- package/dist/sankhyablocks/p-9863d682.js +0 -1
- package/dist/sankhyablocks/p-b4b21558.entry.js +0 -1
- package/dist/sankhyablocks/p-bad55caa.entry.js +0 -1
- package/dist/sankhyablocks/p-c053256c.entry.js +0 -1
- package/dist/sankhyablocks/p-c2495304.js +0 -1
- package/dist/sankhyablocks/p-c5268346.entry.js +0 -1
- package/dist/sankhyablocks/p-cefba299.js +0 -1
- package/dist/sankhyablocks/p-dc7c9047.js +0 -1
- package/dist/sankhyablocks/p-f2809746.entry.js +0 -1
- package/dist/sankhyablocks/p-fcac4dfc.js +0 -1
- package/dist/sankhyablocks/p-fe79f83a.js +0 -60
- package/dist/types/components/snk-data-exporter/utils/RecordIDUtils.d.ts +0 -3
|
@@ -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();
|
|
@@ -22,11 +23,11 @@ export class SnkSimpleCrud {
|
|
|
22
23
|
this._customEditors = new Map();
|
|
23
24
|
this._customRenders = new Map();
|
|
24
25
|
this._taskbarProcessor = new TaskbarProcessor({
|
|
25
|
-
"snkSimpleCrudTaskbar.form_regular": this.getButtons(false, [TaskbarElement.GRID_MODE]),
|
|
26
|
+
"snkSimpleCrudTaskbar.form_regular": this.getButtons(false, [TaskbarElement.GRID_MODE], true),
|
|
26
27
|
"snkSimpleCrudTaskbar.grid_regular": this.getButtons(false, [TaskbarElement.DATA_EXPORTER, TaskbarElement.FORM_MODE]),
|
|
27
|
-
"snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE]),
|
|
28
|
+
"snkSimpleCrudTaskbar.form_selected": this.getButtons(true, [TaskbarElement.GRID_MODE], true),
|
|
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;
|
|
@@ -56,6 +59,7 @@ export class SnkSimpleCrud {
|
|
|
56
59
|
this.formLegacyConfigName = undefined;
|
|
57
60
|
this.ignoreReadOnlyFormFields = false;
|
|
58
61
|
this.autoFocus = true;
|
|
62
|
+
this.domainMessagesBuilder = undefined;
|
|
59
63
|
this.autoLoad = undefined;
|
|
60
64
|
}
|
|
61
65
|
/**
|
|
@@ -114,8 +118,19 @@ export class SnkSimpleCrud {
|
|
|
114
118
|
newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
|
|
115
119
|
this._fieldsProps = newCustomFieldProps;
|
|
116
120
|
}
|
|
117
|
-
|
|
118
|
-
|
|
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
|
+
}
|
|
128
|
+
getButtons(selected, extraButtons, removeRefresh) {
|
|
129
|
+
let btnList = selected ? REGULAR_SELECTED_BTNS : REGULAR_DEFAULT_BTNS;
|
|
130
|
+
if (removeRefresh) {
|
|
131
|
+
btnList = btnList.filter(item => item !== TaskbarElement.REFRESH);
|
|
132
|
+
}
|
|
133
|
+
return this.addConfigButton(this.resolveInMemoryBtns(btnList)
|
|
119
134
|
.concat(extraButtons));
|
|
120
135
|
}
|
|
121
136
|
addConfigButton(buttons) {
|
|
@@ -196,7 +211,6 @@ export class SnkSimpleCrud {
|
|
|
196
211
|
await this.setFieldProp(field, 'precision', rmPrecision);
|
|
197
212
|
await this.setFieldProp(field, 'prettyPrecision', rmPrecision);
|
|
198
213
|
}
|
|
199
|
-
;
|
|
200
214
|
this._rmPrecisionCustomValueFormatter.setDataState(this.dataState);
|
|
201
215
|
}
|
|
202
216
|
async handleUpdateGridLegacyConfig(newValue, oldValue) {
|
|
@@ -278,7 +292,7 @@ export class SnkSimpleCrud {
|
|
|
278
292
|
return;
|
|
279
293
|
}
|
|
280
294
|
if (this._formConfigManager == undefined) {
|
|
281
|
-
this._formConfigManager = new SnkFormConfigManager(this.configName, this.resolveResourceID());
|
|
295
|
+
this._formConfigManager = new SnkFormConfigManager(this.configName, this.resolveResourceID(), undefined, this.dataUnit);
|
|
282
296
|
this._formConfigManager.setConfig(this.formConfig);
|
|
283
297
|
}
|
|
284
298
|
if (this.formConfigIsLoaded() && !forceLoad) {
|
|
@@ -319,6 +333,10 @@ export class SnkSimpleCrud {
|
|
|
319
333
|
this.onModeChange();
|
|
320
334
|
this.configDatasource();
|
|
321
335
|
this._rmPrecisionCustomValueFormatter = new RmPrecisionCustomValueFormatter();
|
|
336
|
+
this._continuousInsertUtils = new ContinuousInsertUtils(this.application, this.resolveResourceID(), this.configName);
|
|
337
|
+
if (this.enableGridInsert) {
|
|
338
|
+
this._continuousInsertUtils.getConfig().then(value => this._enableContinuousInsert = value);
|
|
339
|
+
}
|
|
322
340
|
}
|
|
323
341
|
componentDidLoad() {
|
|
324
342
|
CSSVarsUtils.applyVarsGrid(this._element, this._grid);
|
|
@@ -553,6 +571,9 @@ export class SnkSimpleCrud {
|
|
|
553
571
|
const options = filteredFields.map(field => ({ value: field.name, label: field.label }));
|
|
554
572
|
return Promise.resolve(options);
|
|
555
573
|
}
|
|
574
|
+
isGridInsertActive() {
|
|
575
|
+
return this.enableGridInsert && this.dataUnit.hasNewRecord();
|
|
576
|
+
}
|
|
556
577
|
getActionsList() {
|
|
557
578
|
var _a, _b;
|
|
558
579
|
const hardList = [{
|
|
@@ -564,11 +585,22 @@ export class SnkSimpleCrud {
|
|
|
564
585
|
? this.getColumnSearch(actionButton, item)
|
|
565
586
|
: this.getFieldSearch(actionButton, item)
|
|
566
587
|
}];
|
|
588
|
+
if (this.enableGridInsert) {
|
|
589
|
+
hardList.push(this._continuousInsertUtils.actionContinuousInsert(this._enableContinuousInsert, this.handleEnableContinuousInsert));
|
|
590
|
+
}
|
|
591
|
+
if (this.isGridInsertActive())
|
|
592
|
+
return hardList;
|
|
567
593
|
if (this.taskbarManager != undefined && this.taskbarManager.getMoreOptions != undefined) {
|
|
568
594
|
const taskbarID = this.getTopTaskBarId();
|
|
569
595
|
return hardList.concat(this.taskbarManager.getMoreOptions(taskbarID, this.configName, this.dataState, this.actionsList));
|
|
570
596
|
}
|
|
571
|
-
|
|
597
|
+
if (this.actionsList)
|
|
598
|
+
return hardList.concat(this.actionsList);
|
|
599
|
+
return hardList;
|
|
600
|
+
}
|
|
601
|
+
handleEnableContinuousInsert() {
|
|
602
|
+
this._enableContinuousInsert = !this._enableContinuousInsert;
|
|
603
|
+
this._continuousInsertUtils.handleSaveConfig(this._enableContinuousInsert);
|
|
572
604
|
}
|
|
573
605
|
getTopTaskBarId() {
|
|
574
606
|
var _a;
|
|
@@ -672,8 +704,8 @@ export class SnkSimpleCrud {
|
|
|
672
704
|
return StringUtils.isEmpty(this.resourceID) ? this._resourceID : this.resourceID;
|
|
673
705
|
}
|
|
674
706
|
getFormConfig() {
|
|
675
|
-
var _a
|
|
676
|
-
const configFromManager = (_a = this._formConfigManager) === null || _a === void 0 ? void 0 : _a.getConfig(
|
|
707
|
+
var _a;
|
|
708
|
+
const configFromManager = (_a = this._formConfigManager) === null || _a === void 0 ? void 0 : _a.getConfig(this.dataUnit, this.ignoreReadOnlyFormFields);
|
|
677
709
|
if (!this.configName && !configFromManager) {
|
|
678
710
|
return this.formConfig;
|
|
679
711
|
}
|
|
@@ -687,15 +719,21 @@ export class SnkSimpleCrud {
|
|
|
687
719
|
}
|
|
688
720
|
this._formConfigManager.setConfig(this.formConfig);
|
|
689
721
|
}
|
|
722
|
+
handleDataUnitOnInsertionMode() {
|
|
723
|
+
if (this.enableGridInsert)
|
|
724
|
+
return;
|
|
725
|
+
this.goToView(VIEW_MODE.FORM);
|
|
726
|
+
}
|
|
690
727
|
/* istanbul ignore next */
|
|
691
728
|
render() {
|
|
692
729
|
var _a;
|
|
693
730
|
if (this.dataUnit == undefined) {
|
|
694
731
|
return;
|
|
695
732
|
}
|
|
696
|
-
|
|
733
|
+
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" })));
|
|
734
|
+
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)
|
|
697
735
|
? undefined
|
|
698
|
-
: this._multiSelectionListDataSource, useEnterLikeTab: this.useEnterLikeTab, autoFocus: this.autoFocus }, 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() }))));
|
|
736
|
+
: 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() }))));
|
|
699
737
|
}
|
|
700
738
|
static get is() { return "snk-simple-crud"; }
|
|
701
739
|
static get encapsulation() { return "scoped"; }
|
|
@@ -901,6 +939,24 @@ export class SnkSimpleCrud {
|
|
|
901
939
|
"attribute": "resource-i-d",
|
|
902
940
|
"reflect": false
|
|
903
941
|
},
|
|
942
|
+
"enableGridInsert": {
|
|
943
|
+
"type": "boolean",
|
|
944
|
+
"mutable": false,
|
|
945
|
+
"complexType": {
|
|
946
|
+
"original": "boolean",
|
|
947
|
+
"resolved": "boolean",
|
|
948
|
+
"references": {}
|
|
949
|
+
},
|
|
950
|
+
"required": false,
|
|
951
|
+
"optional": true,
|
|
952
|
+
"docs": {
|
|
953
|
+
"tags": [],
|
|
954
|
+
"text": "Ativa inser\u00E7\u00E3o de registros no modo grade."
|
|
955
|
+
},
|
|
956
|
+
"attribute": "enable-grid-insert",
|
|
957
|
+
"reflect": false,
|
|
958
|
+
"defaultValue": "false"
|
|
959
|
+
},
|
|
904
960
|
"taskbarManager": {
|
|
905
961
|
"type": "unknown",
|
|
906
962
|
"mutable": false,
|
|
@@ -1086,6 +1142,23 @@ export class SnkSimpleCrud {
|
|
|
1086
1142
|
"reflect": false,
|
|
1087
1143
|
"defaultValue": "true"
|
|
1088
1144
|
},
|
|
1145
|
+
"domainMessagesBuilder": {
|
|
1146
|
+
"type": "string",
|
|
1147
|
+
"mutable": false,
|
|
1148
|
+
"complexType": {
|
|
1149
|
+
"original": "string",
|
|
1150
|
+
"resolved": "string",
|
|
1151
|
+
"references": {}
|
|
1152
|
+
},
|
|
1153
|
+
"required": false,
|
|
1154
|
+
"optional": false,
|
|
1155
|
+
"docs": {
|
|
1156
|
+
"tags": [],
|
|
1157
|
+
"text": "Define a chave customizada para sobrescrever as mensagens (N\u00E3o pegando pela entidade)"
|
|
1158
|
+
},
|
|
1159
|
+
"attribute": "domain-messages-builder",
|
|
1160
|
+
"reflect": false
|
|
1161
|
+
},
|
|
1089
1162
|
"autoLoad": {
|
|
1090
1163
|
"type": "boolean",
|
|
1091
1164
|
"mutable": false,
|
|
@@ -1114,7 +1187,8 @@ export class SnkSimpleCrud {
|
|
|
1114
1187
|
"_fieldToGetFocus": {},
|
|
1115
1188
|
"_customContainerId": {},
|
|
1116
1189
|
"_formFields": {},
|
|
1117
|
-
"_fieldsProps": {}
|
|
1190
|
+
"_fieldsProps": {},
|
|
1191
|
+
"_enableContinuousInsert": {}
|
|
1118
1192
|
};
|
|
1119
1193
|
}
|
|
1120
1194
|
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) {
|
|
@@ -29,6 +29,7 @@ export class SnkTaskbar {
|
|
|
29
29
|
this.onSaveEvent = (action) => {
|
|
30
30
|
switch (action.type) {
|
|
31
31
|
case DUAction.FIELD_INVALIDATED:
|
|
32
|
+
case DUAction.INVALIDATE_CLEAN:
|
|
32
33
|
case DUAction.DATA_SAVED:
|
|
33
34
|
case DUAction.SAVING_ERROR:
|
|
34
35
|
this._isWaitingForSave = false;
|
|
@@ -67,6 +68,16 @@ export class SnkTaskbar {
|
|
|
67
68
|
this.getCustomElements(true);
|
|
68
69
|
}
|
|
69
70
|
}
|
|
71
|
+
handleTaskbarSaveLocker() {
|
|
72
|
+
if (this._isWaitingForSave !== true) {
|
|
73
|
+
this._isWaitingForSave = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
handleTaskbarSaveUnlocker() {
|
|
77
|
+
if (this._isWaitingForSave === true) {
|
|
78
|
+
this._isWaitingForSave = false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
70
81
|
hasToSearchCustomElements(event) {
|
|
71
82
|
return this.customSlotId === event.detail && !this._slotContainer;
|
|
72
83
|
}
|
|
@@ -85,6 +96,14 @@ export class SnkTaskbar {
|
|
|
85
96
|
this._hasToUpdateOverFlow = true;
|
|
86
97
|
}
|
|
87
98
|
}
|
|
99
|
+
observeIsWaitingForSave(newValue, oldValue) {
|
|
100
|
+
if (newValue == true && oldValue == false) {
|
|
101
|
+
this.taskbarSaveLocker.emit();
|
|
102
|
+
}
|
|
103
|
+
if (newValue == false && oldValue == true) {
|
|
104
|
+
this.taskbarSaveUnlocker.emit();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
88
107
|
// Internal methods
|
|
89
108
|
elementsFromString(strButtons) {
|
|
90
109
|
const elements = [];
|
|
@@ -719,6 +738,36 @@ export class SnkTaskbar {
|
|
|
719
738
|
"resolved": "string",
|
|
720
739
|
"references": {}
|
|
721
740
|
}
|
|
741
|
+
}, {
|
|
742
|
+
"method": "taskbarSaveLocker",
|
|
743
|
+
"name": "taskbarSaveLocker",
|
|
744
|
+
"bubbles": true,
|
|
745
|
+
"cancelable": true,
|
|
746
|
+
"composed": true,
|
|
747
|
+
"docs": {
|
|
748
|
+
"tags": [],
|
|
749
|
+
"text": "Emitido sempre que um save \u00E9 iniciado pela taskbar."
|
|
750
|
+
},
|
|
751
|
+
"complexType": {
|
|
752
|
+
"original": "void",
|
|
753
|
+
"resolved": "void",
|
|
754
|
+
"references": {}
|
|
755
|
+
}
|
|
756
|
+
}, {
|
|
757
|
+
"method": "taskbarSaveUnlocker",
|
|
758
|
+
"name": "taskbarSaveUnlocker",
|
|
759
|
+
"bubbles": true,
|
|
760
|
+
"cancelable": true,
|
|
761
|
+
"composed": true,
|
|
762
|
+
"docs": {
|
|
763
|
+
"tags": [],
|
|
764
|
+
"text": "Emitido sempre que o ocorre alguma action que libera o save."
|
|
765
|
+
},
|
|
766
|
+
"complexType": {
|
|
767
|
+
"original": "void",
|
|
768
|
+
"resolved": "void",
|
|
769
|
+
"references": {}
|
|
770
|
+
}
|
|
722
771
|
}];
|
|
723
772
|
}
|
|
724
773
|
static get elementRef() { return "_element"; }
|
|
@@ -732,6 +781,9 @@ export class SnkTaskbar {
|
|
|
732
781
|
}, {
|
|
733
782
|
"propName": "_lastWidth",
|
|
734
783
|
"methodName": "observeLastWidth"
|
|
784
|
+
}, {
|
|
785
|
+
"propName": "_isWaitingForSave",
|
|
786
|
+
"methodName": "observeIsWaitingForSave"
|
|
735
787
|
}];
|
|
736
788
|
}
|
|
737
789
|
static get listeners() {
|
|
@@ -741,6 +793,18 @@ export class SnkTaskbar {
|
|
|
741
793
|
"target": "window",
|
|
742
794
|
"capture": false,
|
|
743
795
|
"passive": false
|
|
796
|
+
}, {
|
|
797
|
+
"name": "taskbarSaveLocker",
|
|
798
|
+
"method": "handleTaskbarSaveLocker",
|
|
799
|
+
"target": "window",
|
|
800
|
+
"capture": false,
|
|
801
|
+
"passive": false
|
|
802
|
+
}, {
|
|
803
|
+
"name": "taskbarSaveUnlocker",
|
|
804
|
+
"method": "handleTaskbarSaveUnlocker",
|
|
805
|
+
"target": "window",
|
|
806
|
+
"capture": false,
|
|
807
|
+
"passive": false
|
|
744
808
|
}];
|
|
745
809
|
}
|
|
746
810
|
}
|
|
@@ -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);
|
|
@@ -71,6 +71,7 @@ export class ConfigStorage {
|
|
|
71
71
|
if (config == undefined) {
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
+
name = this.handleLegacyConfigAsString(name, CONFIG_SOURCE.grid);
|
|
74
75
|
await this.deleteGridConfigCache(name, resourceID);
|
|
75
76
|
return this.gridConfigFetcher.saveConfig(config, name, resourceID);
|
|
76
77
|
}
|
|
@@ -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
|
}
|
|
@@ -6,7 +6,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
6
6
|
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
7
7
|
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
|
8
8
|
};
|
|
9
|
-
import { ApplicationContext, ErrorException, ObjectUtils, StringUtils, WarningException } from '@sankhyalabs/core';
|
|
9
|
+
import { ApplicationContext, ErrorException, ServiceCanceledException, ObjectUtils, StringUtils, WarningException } from '@sankhyalabs/core';
|
|
10
10
|
import { batchRequests } from 'graphql-request';
|
|
11
11
|
import UrlUtils from "../../../lib/utils/urlutils";
|
|
12
12
|
import { PrintUtils } from '../../utils/PrintUtils';
|
|
@@ -352,6 +352,7 @@ export class DataFetcher {
|
|
|
352
352
|
}
|
|
353
353
|
}
|
|
354
354
|
async executePendingRequest(watingRequestsById) {
|
|
355
|
+
var _a, _b;
|
|
355
356
|
const requestsBatch = [];
|
|
356
357
|
let quietMode = true;
|
|
357
358
|
watingRequestsById.forEach((waitingReq) => {
|
|
@@ -362,31 +363,36 @@ export class DataFetcher {
|
|
|
362
363
|
const response = await this.fecthGraphQL(requestsBatch, quietMode);
|
|
363
364
|
const { data: dataResponse, errors: errorsResponse, extensions } = response;
|
|
364
365
|
//Reject promises with errors from query
|
|
365
|
-
|
|
366
|
-
Object.
|
|
367
|
-
|
|
366
|
+
for (const errorResponse of errorsResponse) {
|
|
367
|
+
const values = Object.values(errorResponse);
|
|
368
|
+
for (const value of values) {
|
|
369
|
+
const waitingRequest = watingRequestsById.get(value.request.variables[value.index].queryID);
|
|
368
370
|
const hasClientEvent = await this.proccesGraphQLClientEvents(extensions, waitingRequest.request, waitingRequest.resolve, waitingRequest.reject);
|
|
369
|
-
Promise.race([
|
|
371
|
+
const data = await Promise.race([
|
|
370
372
|
waitingRequest.promise,
|
|
371
373
|
new Promise((resolve) => {
|
|
372
374
|
resolve(false);
|
|
373
375
|
})
|
|
374
|
-
])
|
|
375
|
-
|
|
376
|
-
if (
|
|
377
|
-
(((_a = watingRequestsById.get(
|
|
376
|
+
]);
|
|
377
|
+
if (!hasClientEvent || data === false) {
|
|
378
|
+
if (Object.keys(errorResponse[0].extensions).includes("SERVICE_CANCELED") || Object.keys(extensions).includes("isServiceCancelled")) {
|
|
379
|
+
(((_a = watingRequestsById.get(value.request.variables[value.index].queryID)) === null || _a === void 0 ? void 0 : _a.reject) || Promise.reject)(new ServiceCanceledException("Service canceled", value.message));
|
|
378
380
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
381
|
+
else {
|
|
382
|
+
(((_b = watingRequestsById.get(value.request.variables[value.index].queryID)) === null || _b === void 0 ? void 0 : _b.reject) || Promise.reject)(new ErrorException("Falha detectada", value.message));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
382
387
|
//Resolve promises with data from query
|
|
383
|
-
|
|
384
|
-
Object.entries(data)
|
|
388
|
+
for (const data of dataResponse) {
|
|
389
|
+
const entries = Object.entries(data);
|
|
390
|
+
for (const [key, val] of entries) {
|
|
385
391
|
const waitingRequest = watingRequestsById.get(key);
|
|
386
392
|
await this.proccesGraphQLClientEvents(extensions, waitingRequest.request, waitingRequest.resolve, waitingRequest.reject);
|
|
387
393
|
((waitingRequest === null || waitingRequest === void 0 ? void 0 : waitingRequest.resolve) || Promise.resolve)(val);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
390
396
|
}
|
|
391
397
|
buildGraphQlURL(quietMode) {
|
|
392
398
|
const urlParams = UrlUtils.getQueryParams(location.search);
|
package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/anexo-sistema-fetcher.js
CHANGED
|
@@ -6,21 +6,23 @@ const SERVICE = {
|
|
|
6
6
|
download: "AnexoSistemaSP.baixar",
|
|
7
7
|
};
|
|
8
8
|
export class AnexoSistemaFetcher {
|
|
9
|
-
constructor(entityName,
|
|
9
|
+
constructor(entityName, dataUnitName) {
|
|
10
10
|
var _a;
|
|
11
11
|
this.entityName = entityName;
|
|
12
|
-
this.registerKey = registerKey;
|
|
13
12
|
this.dataUnitName = dataUnitName;
|
|
14
13
|
this.validateFields = (fields) => {
|
|
15
14
|
if (!!fields.LINK && !!fields.NOMEARQUIVO)
|
|
16
15
|
throw new Error(SaveErrorsEnum.LINK_AND_FILE_AT_THE_SAME_TIME);
|
|
17
16
|
if (!fields.LINK && !fields.NOMEARQUIVO)
|
|
18
17
|
throw new Error(SaveErrorsEnum.ANY_LINK_OR_FILE_FILLED);
|
|
19
|
-
if (!this.
|
|
18
|
+
if (!this._registerKey)
|
|
20
19
|
throw new Error('Register key can not be null');
|
|
21
20
|
};
|
|
22
21
|
this.resourceID = (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID));
|
|
23
22
|
}
|
|
23
|
+
set registerKey(registerKey) {
|
|
24
|
+
this._registerKey = registerKey;
|
|
25
|
+
}
|
|
24
26
|
async save(change) {
|
|
25
27
|
var _a, _b;
|
|
26
28
|
let { updatingFields: fields } = change;
|
|
@@ -39,7 +41,7 @@ export class AnexoSistemaFetcher {
|
|
|
39
41
|
nameAttach: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.name,
|
|
40
42
|
link: fields.LINK,
|
|
41
43
|
nameEntity: this.entityName,
|
|
42
|
-
pkEntity: this.
|
|
44
|
+
pkEntity: this._registerKey,
|
|
43
45
|
typeAcess: fields.TIPOACESSO,
|
|
44
46
|
typeApres: fields.TIPOAPRES,
|
|
45
47
|
}
|
|
@@ -79,7 +81,7 @@ export class AnexoSistemaFetcher {
|
|
|
79
81
|
nameAttach: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.name,
|
|
80
82
|
link: fields.LINK,
|
|
81
83
|
nameEntity: this.entityName,
|
|
82
|
-
pkEntity: this.
|
|
84
|
+
pkEntity: this._registerKey,
|
|
83
85
|
typeAcess: fields.TIPOACESSO,
|
|
84
86
|
typeApres: fields.TIPOAPRES,
|
|
85
87
|
}
|
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) {
|
|
@@ -155,7 +155,10 @@ export class FormConfigFetcher extends ResourceFetcher {
|
|
|
155
155
|
query: this.queryConfig.get("fetchDefaultConfig"),
|
|
156
156
|
})
|
|
157
157
|
.then((result) => {
|
|
158
|
-
|
|
158
|
+
if (!(result === null || result === void 0 ? void 0 : result.resource)) {
|
|
159
|
+
resolve(null);
|
|
160
|
+
}
|
|
161
|
+
resolve(ObjectUtils.stringToObject(result === null || result === void 0 ? void 0 : result.resource));
|
|
159
162
|
})
|
|
160
163
|
.catch((error) => {
|
|
161
164
|
reject(error);
|
|
@@ -7,7 +7,7 @@ const snkExporterMessages = {
|
|
|
7
7
|
emailSenderOptStep_subtitle: "Primeiro, escolha o formato do arquivo",
|
|
8
8
|
emailSenderOptStep_lblFormat: "Formato:",
|
|
9
9
|
emailSenderOptStep_formatPDF: "PDF (.pdf)",
|
|
10
|
-
|
|
10
|
+
emailSenderOptStep_formatXLS: "Planilha (.xls)",
|
|
11
11
|
emailSenderOptStep_export: "Exportar:",
|
|
12
12
|
emailSenderOptStep_allData: "Toda a grade",
|
|
13
13
|
emailSenderOptStep_currentPage: "Somente a página atual",
|
|
@@ -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",
|