@sankhyalabs/sankhyablocks 8.15.0-dev.2 → 8.15.0-dev.20
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-0d507a8f.js → ConfigStorage-302bbbd4.js} +25 -15
- package/dist/cjs/{ISave-d68ce3cd.js → ISave-e91b70a7.js} +1 -0
- package/dist/cjs/{SnkFormConfigManager-467907f6.js → SnkFormConfigManager-71c4768e.js} +1 -1
- package/dist/cjs/{SnkMessageBuilder-7293d0ad.js → SnkMessageBuilder-e7dcf408.js} +13 -0
- package/dist/cjs/{index-0e663819.js → index-0922807b.js} +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{dataunit-fetcher-bdaf9482.js → pesquisa-fetcher-e4a7c4c3.js} +254 -34
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_2.cjs.entry.js +23 -5
- package/dist/cjs/snk-application.cjs.entry.js +74 -6
- package/dist/cjs/snk-attach.cjs.entry.js +395 -57
- package/dist/cjs/snk-crud.cjs.entry.js +5 -6
- package/dist/cjs/snk-data-exporter.cjs.entry.js +4 -4
- package/dist/cjs/{snk-data-unit-1bc69073.js → snk-data-unit-82c08a8c.js} +1 -1
- package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +8 -9
- package/dist/cjs/snk-filter-bar.cjs.entry.js +40 -5
- package/dist/cjs/snk-filter-item.cjs.entry.js +3 -0
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +1 -2
- package/dist/cjs/snk-filter-modal.cjs.entry.js +16 -1
- package/dist/cjs/snk-filter-multi-select.cjs.entry.js +2 -1
- package/dist/cjs/snk-form.cjs.entry.js +2 -2
- package/dist/cjs/snk-grid-config.cjs.entry.js +1 -1
- package/dist/cjs/snk-grid.cjs.entry.js +41 -18
- package/dist/cjs/{snk-guides-viewer-9342bca1.js → snk-guides-viewer-d32c096f.js} +6 -7
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +7 -8
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +2 -2
- package/dist/cjs/snk-pesquisa.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +19 -8
- package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
- package/dist/cjs/{taskbar-elements-b8c428a9.js → taskbar-elements-01b85b99.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/snk-application/snk-application.js +119 -13
- package/dist/collection/components/snk-attach/snk-attach.js +194 -38
- package/dist/collection/components/snk-attach/structure/{crud-config-builder.js → builder/anexo-sistema-crud-config.builder.js} +1 -1
- package/dist/collection/components/snk-attach/structure/builder/attach-crud-config.builder.js +62 -0
- package/dist/collection/components/snk-attach/structure/{taskbar-builder.js → builder/taskbar-builder.js} +1 -1
- package/dist/collection/components/snk-attach/structure/fetcher/facade/fetcher.facade.js +1 -0
- package/dist/collection/components/snk-attach/structure/{data-unit-builder.js → fetcher/factory/anexo-sistema-data-unit.factory.js} +14 -11
- package/dist/collection/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.js +111 -0
- package/dist/collection/components/snk-attach/structure/index.js +6 -3
- package/dist/collection/components/snk-crud/snk-crud.js +2 -2
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +2 -2
- package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +1 -1
- package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +2 -1
- package/dist/collection/components/snk-filter-bar/filter-item/snk-filter-item.js +3 -0
- package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +84 -2
- package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +0 -1
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +84 -3
- package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +5 -1
- package/dist/collection/components/snk-grid/snk-grid.js +39 -16
- package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +1 -1
- package/dist/collection/components/snk-pesquisa/snk-pesquisa.css +2 -4
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +53 -1
- package/dist/collection/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.js +26 -1
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +1 -1
- package/dist/collection/lib/@types/index.js +1 -0
- package/dist/collection/lib/configs/ConfigStorage.js +24 -14
- package/dist/collection/lib/dataUnit/InMemoryLoader.js +1 -1
- package/dist/collection/lib/http/data-fetcher/fetchers/{attach-fetcher.js → AttachFetcher/anexo-sistema-fetcher.js} +16 -15
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/attach-fetcher.js +90 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/facade/attach-fetcher.facade.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/index.js +2 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/interfaces/IDelete.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/AttachFetcher/interfaces/IDownloadKey.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/ISave.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher.js +31 -3
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +55 -31
- package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +1 -1
- package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +7 -1
- package/dist/collection/lib/index.js +1 -1
- package/dist/collection/lib/message/resources/snk-attach.msg.js +13 -0
- package/dist/components/ConfigStorage.js +25 -15
- package/dist/components/SnkMessageBuilder.js +13 -0
- package/dist/components/dataunit-fetcher.js +93 -35
- package/dist/components/index2.js +1 -0
- package/dist/components/snk-actions-button2.js +1 -0
- package/dist/components/snk-application2.js +73 -3
- package/dist/components/snk-attach2.js +400 -56
- package/dist/components/snk-crud.js +1 -1
- package/dist/components/snk-data-exporter2.js +1 -1
- package/dist/components/snk-detail-view2.js +1 -1
- package/dist/components/snk-filter-bar2.js +42 -5
- package/dist/components/snk-filter-item2.js +3 -0
- package/dist/components/snk-filter-modal-item2.js +0 -1
- package/dist/components/snk-filter-modal.js +21 -3
- package/dist/components/snk-filter-multi-select.js +2 -1
- package/dist/components/snk-grid2.js +38 -15
- package/dist/components/snk-personalized-filter2.js +1 -1
- package/dist/components/snk-pesquisa2.js +1 -1
- package/dist/components/snk-simple-crud2.js +15 -1
- package/dist/components/taskbar-actions-button2.js +21 -2
- package/dist/esm/{ConfigStorage-379a9cba.js → ConfigStorage-4151acc8.js} +25 -15
- package/dist/esm/{ISave-4412b20c.js → ISave-d8c8bc59.js} +1 -0
- package/dist/esm/{SnkFormConfigManager-587e9030.js → SnkFormConfigManager-5c7d3771.js} +1 -1
- package/dist/esm/{SnkMessageBuilder-ca843d1b.js → SnkMessageBuilder-0fb796b9.js} +13 -0
- package/dist/esm/{index-1564817d.js → index-0ece87a6.js} +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{dataunit-fetcher-cc1650eb.js → pesquisa-fetcher-fa0c2540.js} +255 -36
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_2.entry.js +23 -5
- package/dist/esm/snk-application.entry.js +74 -6
- package/dist/esm/snk-attach.entry.js +396 -58
- package/dist/esm/snk-crud.entry.js +5 -6
- package/dist/esm/snk-data-exporter.entry.js +4 -4
- package/dist/esm/{snk-data-unit-6208ebf0.js → snk-data-unit-5d201fb3.js} +1 -1
- package/dist/esm/snk-data-unit.entry.js +2 -2
- package/dist/esm/snk-detail-view.entry.js +8 -9
- package/dist/esm/snk-filter-bar.entry.js +40 -5
- package/dist/esm/snk-filter-item.entry.js +3 -0
- package/dist/esm/snk-filter-modal-item.entry.js +1 -2
- package/dist/esm/snk-filter-modal.entry.js +16 -1
- package/dist/esm/snk-filter-multi-select.entry.js +2 -1
- package/dist/esm/snk-form.entry.js +2 -2
- package/dist/esm/snk-grid-config.entry.js +1 -1
- package/dist/esm/snk-grid.entry.js +41 -18
- package/dist/esm/{snk-guides-viewer-9ce9588c.js → snk-guides-viewer-f49613c6.js} +6 -7
- package/dist/esm/snk-guides-viewer.entry.js +7 -8
- package/dist/esm/snk-personalized-filter.entry.js +2 -2
- package/dist/esm/snk-pesquisa.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +17 -6
- package/dist/esm/snk-taskbar.entry.js +2 -2
- package/dist/esm/{taskbar-elements-26c981af.js → taskbar-elements-d4d0b424.js} +1 -1
- package/dist/sankhyablocks/p-02e3a45b.entry.js +1 -0
- package/dist/sankhyablocks/{p-ff6064e7.js → p-05243555.js} +1 -1
- package/dist/sankhyablocks/p-0ec5b2e5.js +1 -0
- package/dist/sankhyablocks/{p-729f5f5b.entry.js → p-1d75d9f9.entry.js} +1 -1
- package/dist/sankhyablocks/{p-9e7d65a4.js → p-21749402.js} +1 -1
- package/dist/sankhyablocks/p-2582537c.entry.js +1 -0
- package/dist/sankhyablocks/p-282789a6.entry.js +1 -0
- package/dist/sankhyablocks/p-374d03f6.js +1 -0
- package/dist/sankhyablocks/p-38289a55.js +1 -0
- package/dist/sankhyablocks/p-3b0e4e08.js +65 -0
- package/dist/sankhyablocks/{p-35fe6e61.entry.js → p-40915359.entry.js} +1 -1
- package/dist/sankhyablocks/{p-2028633c.js → p-573a07c5.js} +1 -1
- package/dist/sankhyablocks/p-62896624.entry.js +1 -0
- package/dist/sankhyablocks/{p-953346b9.entry.js → p-69efa80d.entry.js} +1 -1
- package/dist/sankhyablocks/p-70a4af56.entry.js +1 -0
- package/dist/sankhyablocks/{p-aaa1438e.entry.js → p-761ed32f.entry.js} +1 -1
- package/dist/sankhyablocks/p-7f3c7b09.entry.js +1 -0
- package/dist/sankhyablocks/{p-6977a26c.entry.js → p-86801b08.entry.js} +1 -1
- package/dist/sankhyablocks/p-9b5944a4.entry.js +1 -0
- package/dist/sankhyablocks/p-9bdbc7d8.entry.js +1 -0
- package/dist/sankhyablocks/p-aa95fb2c.js +56 -0
- package/dist/sankhyablocks/p-ac384baf.entry.js +1 -0
- package/dist/sankhyablocks/p-b05ab13d.entry.js +1 -0
- package/dist/sankhyablocks/p-bf2acf72.entry.js +1 -0
- package/dist/sankhyablocks/p-c4874327.entry.js +1 -0
- package/dist/sankhyablocks/{p-247a8b36.entry.js → p-d1791da2.entry.js} +1 -1
- package/dist/sankhyablocks/p-e0fd9555.entry.js +1 -0
- package/dist/sankhyablocks/p-e817f254.entry.js +11 -0
- package/dist/sankhyablocks/{p-32f0935f.js → p-f3d1c48e.js} +1 -1
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-actions-button/subcomponents/snk-actions-form.d.ts +1 -1
- package/dist/types/components/snk-application/snk-application.d.ts +12 -2
- package/dist/types/components/snk-attach/{structure/crud-config-builder.d.ts → interfaces/ICrudConfig.d.ts} +1 -2
- package/dist/types/components/snk-attach/interfaces/TFetcherType.d.ts +1 -0
- package/dist/types/components/snk-attach/snk-attach.d.ts +28 -6
- package/dist/types/components/snk-attach/structure/builder/anexo-sistema-crud-config.builder.d.ts +2 -0
- package/dist/types/components/snk-attach/structure/builder/attach-crud-config.builder.d.ts +31 -0
- package/dist/types/components/snk-attach/structure/{taskbar-builder.d.ts → builder/taskbar-builder.d.ts} +1 -1
- package/dist/types/components/snk-attach/structure/fetcher/facade/fetcher.facade.d.ts +11 -0
- package/dist/types/components/snk-attach/structure/fetcher/factory/anexo-sistema-data-unit.factory.d.ts +17 -0
- package/dist/types/components/snk-attach/structure/fetcher/factory/attach-fetcher-data-unit.factory.d.ts +15 -0
- package/dist/types/components/snk-attach/structure/index.d.ts +6 -3
- package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +1 -1
- package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +19 -1
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +16 -0
- package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +7 -1
- package/dist/types/components/snk-grid/snk-grid.d.ts +1 -0
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +10 -1
- package/dist/types/components/snk-taskbar/elements/taskbar-actions-button/taskbar-actions-button.d.ts +2 -0
- package/dist/types/components/snk-taskbar/subcomponents/field-search.d.ts +1 -0
- package/dist/types/components.d.ts +108 -13
- package/dist/types/lib/@types/index.d.ts +2 -1
- package/dist/types/lib/configs/ConfigStorage.d.ts +4 -0
- package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +1 -1
- package/dist/types/lib/http/data-fetcher/fetchers/{attach-fetcher.d.ts → AttachFetcher/anexo-sistema-fetcher.d.ts} +3 -2
- package/dist/types/lib/http/data-fetcher/fetchers/AttachFetcher/attach-fetcher.d.ts +11 -0
- package/dist/types/lib/http/data-fetcher/fetchers/AttachFetcher/facade/attach-fetcher.facade.d.ts +8 -0
- package/dist/types/lib/http/data-fetcher/fetchers/AttachFetcher/index.d.ts +3 -0
- package/dist/types/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/ISave.d.ts +2 -1
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher.d.ts +2 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +4 -1
- package/dist/types/lib/index.d.ts +1 -1
- package/package.json +15 -6
- package/dist/cjs/pesquisa-fetcher-ef050a47.js +0 -167
- package/dist/esm/pesquisa-fetcher-dd3ca0a5.js +0 -165
- package/dist/sankhyablocks/p-145c4434.js +0 -1
- package/dist/sankhyablocks/p-17dda7a2.entry.js +0 -1
- package/dist/sankhyablocks/p-19f51c6b.entry.js +0 -11
- package/dist/sankhyablocks/p-20726710.entry.js +0 -1
- package/dist/sankhyablocks/p-311c6173.entry.js +0 -1
- package/dist/sankhyablocks/p-4396d1a6.js +0 -56
- package/dist/sankhyablocks/p-44e894af.entry.js +0 -1
- package/dist/sankhyablocks/p-4775a293.entry.js +0 -1
- package/dist/sankhyablocks/p-4b0ea83f.entry.js +0 -1
- package/dist/sankhyablocks/p-5534e08c.js +0 -1
- package/dist/sankhyablocks/p-78777ae0.entry.js +0 -1
- package/dist/sankhyablocks/p-9c3229fc.entry.js +0 -1
- package/dist/sankhyablocks/p-a037f5b4.entry.js +0 -1
- package/dist/sankhyablocks/p-a702a1a2.js +0 -60
- package/dist/sankhyablocks/p-c259545b.entry.js +0 -1
- package/dist/sankhyablocks/p-d1677df0.entry.js +0 -1
- package/dist/sankhyablocks/p-d9bb09b3.js +0 -6
- package/dist/sankhyablocks/p-dd6a8377.js +0 -1
- package/dist/sankhyablocks/p-e138e7d4.entry.js +0 -1
- package/dist/sankhyablocks/p-e1b29d4c.entry.js +0 -1
- package/dist/types/components/snk-attach/structure/data-unit-builder.d.ts +0 -15
- /package/dist/collection/{lib/http/data-fetcher/fetchers/fecthAttach/interfaces/IDelete.js → components/snk-attach/interfaces/ICrudConfig.js} +0 -0
- /package/dist/collection/{lib/http/data-fetcher/fetchers/fecthAttach/interfaces/IDownloadKey.js → components/snk-attach/interfaces/TFetcherType.js} +0 -0
- /package/dist/collection/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/index.js +0 -0
- /package/dist/types/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/IDelete.d.ts +0 -0
- /package/dist/types/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/IDownloadKey.d.ts +0 -0
- /package/dist/types/lib/http/data-fetcher/fetchers/{fecthAttach → AttachFetcher}/interfaces/index.d.ts +0 -0
@@ -171,14 +171,41 @@ export default class DataUnitFetcher {
|
|
171
171
|
});
|
172
172
|
});
|
173
173
|
}
|
174
|
+
addTransientProperties(dataUnit, updatingFields) {
|
175
|
+
const loaderProps = dataUnit.getGlobalLoaderProps();
|
176
|
+
if (loaderProps == undefined || loaderProps.size === 0) {
|
177
|
+
return updatingFields;
|
178
|
+
}
|
179
|
+
if (updatingFields == undefined) {
|
180
|
+
updatingFields = {};
|
181
|
+
}
|
182
|
+
Array.from(loaderProps.entries()).forEach(([name, value]) => {
|
183
|
+
updatingFields[`transient.${name}`] = value;
|
184
|
+
});
|
185
|
+
return updatingFields;
|
186
|
+
}
|
187
|
+
getUpdatingFields(dataUnit, originalUpdatingFields) {
|
188
|
+
if (originalUpdatingFields == undefined) {
|
189
|
+
return;
|
190
|
+
}
|
191
|
+
const updatingFields = Object.assign({}, originalUpdatingFields);
|
192
|
+
Object.keys(updatingFields).forEach(key => {
|
193
|
+
const descriptor = dataUnit.getField(key);
|
194
|
+
if (descriptor != undefined && descriptor.standAlone) {
|
195
|
+
delete updatingFields[key];
|
196
|
+
}
|
197
|
+
});
|
198
|
+
return this.addTransientProperties(dataUnit, updatingFields);
|
199
|
+
}
|
174
200
|
saveData(dataUnit, duChanges) {
|
175
201
|
const updatedRecordsIds = [];
|
176
202
|
const addedRecordsIds = [];
|
177
203
|
const changes = duChanges.map((change) => {
|
178
|
-
const { dataUnit: changeDU, record,
|
204
|
+
const { dataUnit: changeDU, record, operation } = change;
|
179
205
|
const dataUnitInstance = DataUnitStorage.get(changeDU);
|
206
|
+
const updatingFields = this.getUpdatingFields(dataUnitInstance, change.updatingFields);
|
180
207
|
let parsedUpdatingFields;
|
181
|
-
if (updatingFields) {
|
208
|
+
if (updatingFields != undefined) {
|
182
209
|
parsedUpdatingFields = Object.entries(updatingFields).map(([fieldName, value]) => {
|
183
210
|
const descriptor = dataUnitInstance.getField(fieldName);
|
184
211
|
const dataType = descriptor ? descriptor.dataType : DataType.TEXT;
|
@@ -226,7 +253,8 @@ export default class DataUnitFetcher {
|
|
226
253
|
}
|
227
254
|
responseRecord.fields.forEach(({ name, value }) => {
|
228
255
|
var _a;
|
229
|
-
|
256
|
+
const valueFromString = (_a = dataUnitInstance === null || dataUnitInstance === void 0 ? void 0 : dataUnitInstance.valueFromString) === null || _a === void 0 ? void 0 : _a.call(dataUnitInstance, name, value);
|
257
|
+
duRecord[name] = (valueFromString !== undefined) ? valueFromString : value;
|
230
258
|
});
|
231
259
|
dataUnitRecords.push(duRecord);
|
232
260
|
});
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { StringUtils, UserInterface } from
|
1
|
+
import { ApplicationContext, StringUtils, UserInterface, } from '@sankhyalabs/core';
|
2
2
|
import { DataFetcher } from "../../../DataFetcher";
|
3
3
|
import DataUnitFetcher from "../dataunit-fetcher";
|
4
4
|
import InMemoryLoader from "../../../../../dataUnit/InMemoryLoader";
|
@@ -6,30 +6,39 @@ export class DatasetStrategy {
|
|
6
6
|
canSlice() {
|
7
7
|
return false;
|
8
8
|
}
|
9
|
+
processSortingSide(request, dataUnit, serverSideFilters) {
|
10
|
+
const localSorting = [];
|
11
|
+
const serverSorting = [];
|
12
|
+
if (request.sort != undefined) {
|
13
|
+
if (serverSideFilters.length === 0) {
|
14
|
+
return { localSorting: request.sort, serverSorting: [] };
|
15
|
+
}
|
16
|
+
for (const sort of request.sort) {
|
17
|
+
const descriptor = dataUnit.getField(sort.field);
|
18
|
+
const local = descriptor != undefined
|
19
|
+
&& descriptor.properties != undefined
|
20
|
+
&& descriptor.properties.calculated === "true";
|
21
|
+
if (local) {
|
22
|
+
localSorting.push(sort);
|
23
|
+
}
|
24
|
+
else {
|
25
|
+
serverSorting.push(sort);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
return { localSorting, serverSorting };
|
30
|
+
}
|
9
31
|
async load(dataUnit, request, loadingInfo) {
|
32
|
+
var _a, _b;
|
10
33
|
if (dataUnit.metadata == undefined) {
|
11
34
|
return Promise.resolve({ records: [], loadingInfo });
|
12
35
|
}
|
13
36
|
try {
|
14
|
-
const
|
15
|
-
const serverSorting =
|
16
|
-
if (request.sort != undefined) {
|
17
|
-
for (const sort of request.sort) {
|
18
|
-
const descriptor = dataUnit.getField(sort.field);
|
19
|
-
const local = descriptor != undefined
|
20
|
-
&& descriptor.properties != undefined
|
21
|
-
&& descriptor.properties.calculated === "true";
|
22
|
-
if (local) {
|
23
|
-
localSorting.push(sort);
|
24
|
-
}
|
25
|
-
else {
|
26
|
-
serverSorting.push(sort);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
37
|
+
const serverSideFilters = (_b = (_a = request.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => !filter.name.startsWith("FILTRO_COLUNA_"))) !== null && _b !== void 0 ? _b : [];
|
38
|
+
const { localSorting, serverSorting } = this.processSortingSide(request, dataUnit, serverSideFilters);
|
30
39
|
const fields = this.getFieldsList(dataUnit);
|
31
40
|
const serviceName = "DatasetSP.loadRecords";
|
32
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
41
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting, serverSideFilters);
|
33
42
|
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
34
43
|
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
35
44
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
@@ -51,13 +60,21 @@ export class DatasetStrategy {
|
|
51
60
|
getFieldsList(dataUnit) {
|
52
61
|
let fields = ["__record__id__", "__record__label__"];
|
53
62
|
dataUnit.metadata.fields.forEach((descriptor) => {
|
54
|
-
if (descriptor.standAlone)
|
63
|
+
if (descriptor.standAlone)
|
55
64
|
return;
|
56
|
-
}
|
57
65
|
fields = fields.concat(this.getFieldNames(descriptor));
|
58
66
|
});
|
59
67
|
return fields;
|
60
68
|
}
|
69
|
+
getStandAloneFieldsList(dataUnit) {
|
70
|
+
let fields = {};
|
71
|
+
dataUnit.metadata.fields.forEach((currentField) => {
|
72
|
+
if (!currentField.standAlone)
|
73
|
+
return;
|
74
|
+
fields = Object.assign(Object.assign({}, fields), { [currentField.name]: { fieldType: currentField.dataType, userType: currentField.userInterface } });
|
75
|
+
});
|
76
|
+
return fields;
|
77
|
+
}
|
61
78
|
getFieldNames(descriptor) {
|
62
79
|
const descriptionField = this.getSearchDescriptionField(descriptor);
|
63
80
|
if (descriptionField == undefined) {
|
@@ -65,7 +82,7 @@ export class DatasetStrategy {
|
|
65
82
|
}
|
66
83
|
return [descriptor.name, descriptionField];
|
67
84
|
}
|
68
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
85
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting, serverSideFilters) {
|
69
86
|
const dataSetID = dataUnit.dataUnitId;
|
70
87
|
const dataUnitName = dataUnit.name;
|
71
88
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -80,25 +97,25 @@ export class DatasetStrategy {
|
|
80
97
|
totalRecordsCount: loadingInfo.count,
|
81
98
|
pagerID: loadingInfo.pagerId,
|
82
99
|
standAlone: false,
|
83
|
-
standAloneFieldsMD: {
|
84
|
-
__record__id__: { "fieldType": "S", "userType": "P" },
|
85
|
-
__record__label__: { "fieldType": "S", "userType": "P" }
|
86
|
-
},
|
100
|
+
standAloneFieldsMD: Object.assign({ __record__id__: { "fieldType": "S", "userType": "P" }, __record__label__: { "fieldType": "S", "userType": "P" } }, this.getStandAloneFieldsList(dataUnit)),
|
87
101
|
tryJoinedFields: true,
|
88
102
|
parallelLoader: useParallelLoader,
|
89
|
-
crudListener:
|
90
|
-
txProperties: this.getTxProperties(
|
103
|
+
crudListener: `br.com.sankhya.bff.${this.getModuleName()}.BFFDataUnitDatasetAdapter`,
|
104
|
+
txProperties: this.getTxProperties(dataUnit, request, sorting, serverSideFilters),
|
91
105
|
useDefaultRowsLimit: false
|
92
106
|
}
|
93
107
|
};
|
94
108
|
return JSON.stringify(requestBody);
|
95
109
|
}
|
96
|
-
|
97
|
-
|
110
|
+
getModuleName() {
|
111
|
+
const app = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
112
|
+
const moduleName = app.getModuleName();
|
113
|
+
return moduleName.replace("-bff", "");
|
114
|
+
}
|
115
|
+
getTxProperties(dataUnit, request, sorting, serverSideFilters) {
|
98
116
|
const txProperties = {
|
99
|
-
"__DATA_UNIT_ADAPTER__[dataUnitName]":
|
117
|
+
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnit.name
|
100
118
|
};
|
101
|
-
const serverSideFilters = (_b = (_a = request.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => !filter.name.startsWith("FILTRO_COLUNA_"))) !== null && _b !== void 0 ? _b : [];
|
102
119
|
if (serverSideFilters.length !== 0) {
|
103
120
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
104
121
|
}
|
@@ -108,6 +125,13 @@ export class DatasetStrategy {
|
|
108
125
|
if (request.parentRecordId != undefined) {
|
109
126
|
txProperties["__DATA_UNIT_ADAPTER__[parentRecordId]"] = request.parentRecordId;
|
110
127
|
}
|
128
|
+
const loaderProps = dataUnit.getGlobalLoaderProps();
|
129
|
+
if (loaderProps == undefined || loaderProps.size === 0) {
|
130
|
+
return txProperties;
|
131
|
+
}
|
132
|
+
Array.from(loaderProps.entries()).forEach(([name, value]) => {
|
133
|
+
txProperties[name] = value;
|
134
|
+
});
|
111
135
|
return txProperties;
|
112
136
|
}
|
113
137
|
processRecords(dataUnit, fields, responseRecords) {
|
@@ -107,7 +107,7 @@ export default class FilterBarConfigFetcher extends ResourceFetcher {
|
|
107
107
|
multilistValueArray = Array.isArray(multilistValueArray) ? multilistValueArray : [multilistValueArray];
|
108
108
|
// Existem cenários onde o HTML5 não salva o Id do filtro, apenas seu label e value
|
109
109
|
multilistValueArray = multilistValueArray.map(itemRaw => {
|
110
|
-
return Object.assign(Object.assign({}, itemRaw), { id: itemRaw.id ? itemRaw.id : itemRaw.value });
|
110
|
+
return Object.assign(Object.assign({}, itemRaw), { id: (itemRaw.id !== undefined) ? itemRaw.id : itemRaw.value });
|
111
111
|
});
|
112
112
|
item.value = ObjectUtils.copy(multilistValueArray);
|
113
113
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { DataType } from "@sankhyalabs/core";
|
1
|
+
import { ApplicationContext, DataType } from "@sankhyalabs/core";
|
2
2
|
import { gql } from "graphql-request";
|
3
3
|
import { DataFetcher } from "../DataFetcher";
|
4
4
|
export class PesquisaFetcher {
|
@@ -67,6 +67,12 @@ export class PesquisaFetcher {
|
|
67
67
|
externalCriteria.params = {
|
68
68
|
param: values.criteria.params.map(param => {
|
69
69
|
let value = param.value;
|
70
|
+
if (typeof value === "string") {
|
71
|
+
const match = /CTX\{([^}]+)\}/.exec(value);
|
72
|
+
if (match) {
|
73
|
+
value = ApplicationContext.getContextValue(`__SNK__APPLICATION__FILTER__CONTEXT(${match[1]})__`);
|
74
|
+
}
|
75
|
+
}
|
70
76
|
let type = param.dataType;
|
71
77
|
if (type === DataType.OBJECT) {
|
72
78
|
value = value.value;
|
@@ -4,7 +4,7 @@ export { CrudUtils } from './utils/CrudUtils';
|
|
4
4
|
export { PresentationMode } from "./@types";
|
5
5
|
export { TotalsFetcher } from './http/data-fetcher/fetchers/totals-fetcher';
|
6
6
|
export { default as ApplicationConfigFetcher } from './http/data-fetcher/fetchers/application-config-fetcher';
|
7
|
-
export { AttachFetcher } from './http/data-fetcher/fetchers/
|
7
|
+
export { AttachFetcher, AnexoSistemaFetcher } from './http/data-fetcher/fetchers/AttachFetcher';
|
8
8
|
export { default as DataUnitFetcher } from './http/data-fetcher/fetchers/data-unit/dataunit-fetcher';
|
9
9
|
export { default as FilterBarConfigFetcher } from './http/data-fetcher/fetchers/filter-bar-config-fetcher';
|
10
10
|
export { FormConfigFetcher } from './http/data-fetcher/fetchers/form-config-fetcher';
|
@@ -17,11 +17,24 @@ export const snkAttachMessages = {
|
|
17
17
|
anyLinkOrFileFilled: {
|
18
18
|
title: "Atenção",
|
19
19
|
message: `É necessário preencher o campo "Link" ou anexar um arquivo.`
|
20
|
+
},
|
21
|
+
descriptionCannotBeChanged: {
|
22
|
+
title: "Atenção",
|
23
|
+
message: "O campo 'Descrição' não pode ser alterado."
|
20
24
|
}
|
21
25
|
},
|
22
26
|
taskbar: {
|
23
27
|
titleDownload: "Fazer download",
|
24
28
|
titleLink: "Abrir link",
|
29
|
+
},
|
30
|
+
attachMetadata: {
|
31
|
+
lblCode: "Código",
|
32
|
+
lblDescription: "Descrição",
|
33
|
+
lblFileOrLink: "Arquivo / Link",
|
34
|
+
lblUser: "Usuário",
|
35
|
+
lblDate: "Data de alteração",
|
36
|
+
lblFile: "Arquivo",
|
37
|
+
lblSubTitle: "Clique para selecionar um arquivo",
|
25
38
|
}
|
26
39
|
};
|
27
40
|
export default snkAttachMessages;
|
@@ -108,7 +108,7 @@ class FilterBarConfigFetcher extends ResourceFetcher {
|
|
108
108
|
multilistValueArray = Array.isArray(multilistValueArray) ? multilistValueArray : [multilistValueArray];
|
109
109
|
// Existem cenários onde o HTML5 não salva o Id do filtro, apenas seu label e value
|
110
110
|
multilistValueArray = multilistValueArray.map(itemRaw => {
|
111
|
-
return Object.assign(Object.assign({}, itemRaw), { id: itemRaw.id ? itemRaw.id : itemRaw.value });
|
111
|
+
return Object.assign(Object.assign({}, itemRaw), { id: (itemRaw.id !== undefined) ? itemRaw.id : itemRaw.value });
|
112
112
|
});
|
113
113
|
item.value = ObjectUtils.copy(multilistValueArray);
|
114
114
|
}
|
@@ -351,11 +351,12 @@ class PersonalizedFilterFetcher {
|
|
351
351
|
}
|
352
352
|
}
|
353
353
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
354
|
+
var CONFIG_SOURCE;
|
355
|
+
(function (CONFIG_SOURCE) {
|
356
|
+
CONFIG_SOURCE["form"] = "form";
|
357
|
+
CONFIG_SOURCE["grid"] = "grid";
|
358
|
+
CONFIG_SOURCE["filterBar"] = "filterBar";
|
359
|
+
})(CONFIG_SOURCE || (CONFIG_SOURCE = {}));
|
359
360
|
class ConfigStorage {
|
360
361
|
static preload(resourceID, configName) {
|
361
362
|
ConfigStorage.loadFormConfig(configName, resourceID);
|
@@ -383,13 +384,11 @@ class ConfigStorage {
|
|
383
384
|
return ConfigStorage.configById.get(cacheID);
|
384
385
|
}
|
385
386
|
static async saveFilterBarConfig(config, name, resourceID) {
|
386
|
-
|
387
|
-
this.configById.delete(cacheID);
|
387
|
+
await this.deleteFilterBarConfigCache(name, resourceID);
|
388
388
|
return this.filterBarConfigFetcher.saveConfig(config, resourceID, name);
|
389
389
|
}
|
390
390
|
static async saveFormConfig(config, name, resourceID) {
|
391
|
-
|
392
|
-
this.configById.delete(cacheID);
|
391
|
+
await this.deleteFormConfigCache(name, resourceID);
|
393
392
|
return this.formConfigFetcher.saveConfig(config, name, resourceID);
|
394
393
|
}
|
395
394
|
static async saveCardState(config, name, resourceID) {
|
@@ -399,18 +398,16 @@ class ConfigStorage {
|
|
399
398
|
if (config == undefined) {
|
400
399
|
return;
|
401
400
|
}
|
402
|
-
|
403
|
-
this.configById.delete(cacheID);
|
401
|
+
await this.deleteGridConfigCache(name, resourceID);
|
404
402
|
return this.gridConfigFetcher.saveConfig(config, name, resourceID);
|
405
403
|
}
|
406
404
|
static async loadPersonalizedFilter(filterId, resourceID, configName) {
|
407
405
|
return this.personalizedFilterFetcher.loadPersonalizedFilter(resourceID, filterId, configName);
|
408
406
|
}
|
409
407
|
static async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
410
|
-
//Ao criar ou alterar um filtro personalizado,
|
408
|
+
//Ao criar ou alterar um filtro personalizado,
|
411
409
|
//precisamos remover o cache do status da filterbar.
|
412
|
-
|
413
|
-
this.configById.delete(cacheID);
|
410
|
+
await this.deleteFilterBarConfigCache(configName, resourceID);
|
414
411
|
return this.personalizedFilterFetcher.savePersonalizedFilter(personalizedFilter, resourceID, configName);
|
415
412
|
}
|
416
413
|
static async removePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
@@ -419,6 +416,19 @@ class ConfigStorage {
|
|
419
416
|
static async validatePersonalizedFilter(dataUnitName, expression) {
|
420
417
|
return this.personalizedFilterFetcher.validatePersonalizedFilter(dataUnitName, expression);
|
421
418
|
}
|
419
|
+
static async deleteGridConfigCache(name, resourceID) {
|
420
|
+
await this.deleteConfigCache(name, resourceID, CONFIG_SOURCE.grid);
|
421
|
+
}
|
422
|
+
static async deleteFormConfigCache(name, resourceID) {
|
423
|
+
await this.deleteConfigCache(name, resourceID, CONFIG_SOURCE.form);
|
424
|
+
}
|
425
|
+
static async deleteFilterBarConfigCache(name, resourceID) {
|
426
|
+
await this.deleteConfigCache(name, resourceID, CONFIG_SOURCE.filterBar);
|
427
|
+
}
|
428
|
+
static async deleteConfigCache(name, resourceID, source) {
|
429
|
+
const cacheID = ConfigStorage.buildCacheID(name, source, resourceID);
|
430
|
+
this.configById.delete(cacheID);
|
431
|
+
}
|
422
432
|
static buildCacheID(name, source, resourceID) {
|
423
433
|
if (name == undefined) {
|
424
434
|
return `req_${source}_${resourceID}`;
|
@@ -351,11 +351,24 @@ const snkAttachMessages = {
|
|
351
351
|
anyLinkOrFileFilled: {
|
352
352
|
title: "Atenção",
|
353
353
|
message: `É necessário preencher o campo "Link" ou anexar um arquivo.`
|
354
|
+
},
|
355
|
+
descriptionCannotBeChanged: {
|
356
|
+
title: "Atenção",
|
357
|
+
message: "O campo 'Descrição' não pode ser alterado."
|
354
358
|
}
|
355
359
|
},
|
356
360
|
taskbar: {
|
357
361
|
titleDownload: "Fazer download",
|
358
362
|
titleLink: "Abrir link",
|
363
|
+
},
|
364
|
+
attachMetadata: {
|
365
|
+
lblCode: "Código",
|
366
|
+
lblDescription: "Descrição",
|
367
|
+
lblFileOrLink: "Arquivo / Link",
|
368
|
+
lblUser: "Usuário",
|
369
|
+
lblDate: "Data de alteração",
|
370
|
+
lblFile: "Arquivo",
|
371
|
+
lblSubTitle: "Clique para selecionar um arquivo",
|
359
372
|
}
|
360
373
|
};
|
361
374
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { DataType, FieldComparator, SortMode, DataUnit, DateUtils, StringUtils, ChangeOperation, UserInterface, DataUnitStorage } from '@sankhyalabs/core';
|
1
|
+
import { DataType, ApplicationContext, FieldComparator, SortMode, DataUnit, DateUtils, StringUtils, ChangeOperation, UserInterface, DataUnitStorage } from '@sankhyalabs/core';
|
2
2
|
import { d as dist, D as DataFetcher } from './DataFetcher.js';
|
3
3
|
import { DISTINCT_FILTER_NAME_PREFIX } from '@sankhyalabs/ezui/dist/collection/utils/constants';
|
4
4
|
import { DataUnitTransient } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
@@ -71,6 +71,12 @@ class PesquisaFetcher {
|
|
71
71
|
externalCriteria.params = {
|
72
72
|
param: values.criteria.params.map(param => {
|
73
73
|
let value = param.value;
|
74
|
+
if (typeof value === "string") {
|
75
|
+
const match = /CTX\{([^}]+)\}/.exec(value);
|
76
|
+
if (match) {
|
77
|
+
value = ApplicationContext.getContextValue(`__SNK__APPLICATION__FILTER__CONTEXT(${match[1]})__`);
|
78
|
+
}
|
79
|
+
}
|
74
80
|
let type = param.dataType;
|
75
81
|
if (type === DataType.OBJECT) {
|
76
82
|
value = value.value;
|
@@ -396,7 +402,7 @@ class InMemoryLoader {
|
|
396
402
|
this.dataUnit.loadMetadata().then(() => this.dataUnit.loadData());
|
397
403
|
}
|
398
404
|
getRecordsToLoad() {
|
399
|
-
if (this._initialRecords == undefined
|
405
|
+
if (this._initialRecords == undefined || this.dataUnit.records.length > 0) {
|
400
406
|
this._initialRecords = this.dataUnit.records;
|
401
407
|
}
|
402
408
|
return this._initialRecords;
|
@@ -531,30 +537,39 @@ class DatasetStrategy {
|
|
531
537
|
canSlice() {
|
532
538
|
return false;
|
533
539
|
}
|
540
|
+
processSortingSide(request, dataUnit, serverSideFilters) {
|
541
|
+
const localSorting = [];
|
542
|
+
const serverSorting = [];
|
543
|
+
if (request.sort != undefined) {
|
544
|
+
if (serverSideFilters.length === 0) {
|
545
|
+
return { localSorting: request.sort, serverSorting: [] };
|
546
|
+
}
|
547
|
+
for (const sort of request.sort) {
|
548
|
+
const descriptor = dataUnit.getField(sort.field);
|
549
|
+
const local = descriptor != undefined
|
550
|
+
&& descriptor.properties != undefined
|
551
|
+
&& descriptor.properties.calculated === "true";
|
552
|
+
if (local) {
|
553
|
+
localSorting.push(sort);
|
554
|
+
}
|
555
|
+
else {
|
556
|
+
serverSorting.push(sort);
|
557
|
+
}
|
558
|
+
}
|
559
|
+
}
|
560
|
+
return { localSorting, serverSorting };
|
561
|
+
}
|
534
562
|
async load(dataUnit, request, loadingInfo) {
|
563
|
+
var _a, _b;
|
535
564
|
if (dataUnit.metadata == undefined) {
|
536
565
|
return Promise.resolve({ records: [], loadingInfo });
|
537
566
|
}
|
538
567
|
try {
|
539
|
-
const
|
540
|
-
const serverSorting =
|
541
|
-
if (request.sort != undefined) {
|
542
|
-
for (const sort of request.sort) {
|
543
|
-
const descriptor = dataUnit.getField(sort.field);
|
544
|
-
const local = descriptor != undefined
|
545
|
-
&& descriptor.properties != undefined
|
546
|
-
&& descriptor.properties.calculated === "true";
|
547
|
-
if (local) {
|
548
|
-
localSorting.push(sort);
|
549
|
-
}
|
550
|
-
else {
|
551
|
-
serverSorting.push(sort);
|
552
|
-
}
|
553
|
-
}
|
554
|
-
}
|
568
|
+
const serverSideFilters = (_b = (_a = request.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => !filter.name.startsWith("FILTRO_COLUNA_"))) !== null && _b !== void 0 ? _b : [];
|
569
|
+
const { localSorting, serverSorting } = this.processSortingSide(request, dataUnit, serverSideFilters);
|
555
570
|
const fields = this.getFieldsList(dataUnit);
|
556
571
|
const serviceName = "DatasetSP.loadRecords";
|
557
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
572
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting, serverSideFilters);
|
558
573
|
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
559
574
|
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
560
575
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
@@ -576,13 +591,21 @@ class DatasetStrategy {
|
|
576
591
|
getFieldsList(dataUnit) {
|
577
592
|
let fields = ["__record__id__", "__record__label__"];
|
578
593
|
dataUnit.metadata.fields.forEach((descriptor) => {
|
579
|
-
if (descriptor.standAlone)
|
594
|
+
if (descriptor.standAlone)
|
580
595
|
return;
|
581
|
-
}
|
582
596
|
fields = fields.concat(this.getFieldNames(descriptor));
|
583
597
|
});
|
584
598
|
return fields;
|
585
599
|
}
|
600
|
+
getStandAloneFieldsList(dataUnit) {
|
601
|
+
let fields = {};
|
602
|
+
dataUnit.metadata.fields.forEach((currentField) => {
|
603
|
+
if (!currentField.standAlone)
|
604
|
+
return;
|
605
|
+
fields = Object.assign(Object.assign({}, fields), { [currentField.name]: { fieldType: currentField.dataType, userType: currentField.userInterface } });
|
606
|
+
});
|
607
|
+
return fields;
|
608
|
+
}
|
586
609
|
getFieldNames(descriptor) {
|
587
610
|
const descriptionField = this.getSearchDescriptionField(descriptor);
|
588
611
|
if (descriptionField == undefined) {
|
@@ -590,7 +613,7 @@ class DatasetStrategy {
|
|
590
613
|
}
|
591
614
|
return [descriptor.name, descriptionField];
|
592
615
|
}
|
593
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
616
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting, serverSideFilters) {
|
594
617
|
const dataSetID = dataUnit.dataUnitId;
|
595
618
|
const dataUnitName = dataUnit.name;
|
596
619
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -605,25 +628,25 @@ class DatasetStrategy {
|
|
605
628
|
totalRecordsCount: loadingInfo.count,
|
606
629
|
pagerID: loadingInfo.pagerId,
|
607
630
|
standAlone: false,
|
608
|
-
standAloneFieldsMD: {
|
609
|
-
__record__id__: { "fieldType": "S", "userType": "P" },
|
610
|
-
__record__label__: { "fieldType": "S", "userType": "P" }
|
611
|
-
},
|
631
|
+
standAloneFieldsMD: Object.assign({ __record__id__: { "fieldType": "S", "userType": "P" }, __record__label__: { "fieldType": "S", "userType": "P" } }, this.getStandAloneFieldsList(dataUnit)),
|
612
632
|
tryJoinedFields: true,
|
613
633
|
parallelLoader: useParallelLoader,
|
614
|
-
crudListener:
|
615
|
-
txProperties: this.getTxProperties(
|
634
|
+
crudListener: `br.com.sankhya.bff.${this.getModuleName()}.BFFDataUnitDatasetAdapter`,
|
635
|
+
txProperties: this.getTxProperties(dataUnit, request, sorting, serverSideFilters),
|
616
636
|
useDefaultRowsLimit: false
|
617
637
|
}
|
618
638
|
};
|
619
639
|
return JSON.stringify(requestBody);
|
620
640
|
}
|
621
|
-
|
622
|
-
|
641
|
+
getModuleName() {
|
642
|
+
const app = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
643
|
+
const moduleName = app.getModuleName();
|
644
|
+
return moduleName.replace("-bff", "");
|
645
|
+
}
|
646
|
+
getTxProperties(dataUnit, request, sorting, serverSideFilters) {
|
623
647
|
const txProperties = {
|
624
|
-
"__DATA_UNIT_ADAPTER__[dataUnitName]":
|
648
|
+
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnit.name
|
625
649
|
};
|
626
|
-
const serverSideFilters = (_b = (_a = request.filters) === null || _a === void 0 ? void 0 : _a.filter(filter => !filter.name.startsWith("FILTRO_COLUNA_"))) !== null && _b !== void 0 ? _b : [];
|
627
650
|
if (serverSideFilters.length !== 0) {
|
628
651
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
629
652
|
}
|
@@ -633,6 +656,13 @@ class DatasetStrategy {
|
|
633
656
|
if (request.parentRecordId != undefined) {
|
634
657
|
txProperties["__DATA_UNIT_ADAPTER__[parentRecordId]"] = request.parentRecordId;
|
635
658
|
}
|
659
|
+
const loaderProps = dataUnit.getGlobalLoaderProps();
|
660
|
+
if (loaderProps == undefined || loaderProps.size === 0) {
|
661
|
+
return txProperties;
|
662
|
+
}
|
663
|
+
Array.from(loaderProps.entries()).forEach(([name, value]) => {
|
664
|
+
txProperties[name] = value;
|
665
|
+
});
|
636
666
|
return txProperties;
|
637
667
|
}
|
638
668
|
processRecords(dataUnit, fields, responseRecords) {
|
@@ -962,14 +992,41 @@ class DataUnitFetcher {
|
|
962
992
|
});
|
963
993
|
});
|
964
994
|
}
|
995
|
+
addTransientProperties(dataUnit, updatingFields) {
|
996
|
+
const loaderProps = dataUnit.getGlobalLoaderProps();
|
997
|
+
if (loaderProps == undefined || loaderProps.size === 0) {
|
998
|
+
return updatingFields;
|
999
|
+
}
|
1000
|
+
if (updatingFields == undefined) {
|
1001
|
+
updatingFields = {};
|
1002
|
+
}
|
1003
|
+
Array.from(loaderProps.entries()).forEach(([name, value]) => {
|
1004
|
+
updatingFields[`transient.${name}`] = value;
|
1005
|
+
});
|
1006
|
+
return updatingFields;
|
1007
|
+
}
|
1008
|
+
getUpdatingFields(dataUnit, originalUpdatingFields) {
|
1009
|
+
if (originalUpdatingFields == undefined) {
|
1010
|
+
return;
|
1011
|
+
}
|
1012
|
+
const updatingFields = Object.assign({}, originalUpdatingFields);
|
1013
|
+
Object.keys(updatingFields).forEach(key => {
|
1014
|
+
const descriptor = dataUnit.getField(key);
|
1015
|
+
if (descriptor != undefined && descriptor.standAlone) {
|
1016
|
+
delete updatingFields[key];
|
1017
|
+
}
|
1018
|
+
});
|
1019
|
+
return this.addTransientProperties(dataUnit, updatingFields);
|
1020
|
+
}
|
965
1021
|
saveData(dataUnit, duChanges) {
|
966
1022
|
const updatedRecordsIds = [];
|
967
1023
|
const addedRecordsIds = [];
|
968
1024
|
const changes = duChanges.map((change) => {
|
969
|
-
const { dataUnit: changeDU, record,
|
1025
|
+
const { dataUnit: changeDU, record, operation } = change;
|
970
1026
|
const dataUnitInstance = DataUnitStorage.get(changeDU);
|
1027
|
+
const updatingFields = this.getUpdatingFields(dataUnitInstance, change.updatingFields);
|
971
1028
|
let parsedUpdatingFields;
|
972
|
-
if (updatingFields) {
|
1029
|
+
if (updatingFields != undefined) {
|
973
1030
|
parsedUpdatingFields = Object.entries(updatingFields).map(([fieldName, value]) => {
|
974
1031
|
const descriptor = dataUnitInstance.getField(fieldName);
|
975
1032
|
const dataType = descriptor ? descriptor.dataType : DataType.TEXT;
|
@@ -1017,7 +1074,8 @@ class DataUnitFetcher {
|
|
1017
1074
|
}
|
1018
1075
|
responseRecord.fields.forEach(({ name, value }) => {
|
1019
1076
|
var _a;
|
1020
|
-
|
1077
|
+
const valueFromString = (_a = dataUnitInstance === null || dataUnitInstance === void 0 ? void 0 : dataUnitInstance.valueFromString) === null || _a === void 0 ? void 0 : _a.call(dataUnitInstance, name, value);
|
1078
|
+
duRecord[name] = (valueFromString !== undefined) ? valueFromString : value;
|
1021
1079
|
});
|
1022
1080
|
dataUnitRecords.push(duRecord);
|
1023
1081
|
});
|
@@ -2,6 +2,7 @@ var PresentationMode;
|
|
2
2
|
(function (PresentationMode) {
|
3
3
|
PresentationMode["PRIMARY"] = "primary";
|
4
4
|
PresentationMode["SECONDARY"] = "secondary";
|
5
|
+
PresentationMode["SINGLE_TASKBAR"] = "singleTaskbar";
|
5
6
|
})(PresentationMode || (PresentationMode = {}));
|
6
7
|
var DataExporterOption;
|
7
8
|
(function (DataExporterOption) {
|
@@ -163,6 +163,7 @@ var SaveErrorsEnum;
|
|
163
163
|
SaveErrorsEnum["LINK_AND_FILE_AT_THE_SAME_TIME"] = "LINK_AND_FILE_AT_THE_SAME_TIME";
|
164
164
|
SaveErrorsEnum["ANY_LINK_OR_FILE_FILLED"] = "ANY_LINK_OR_FILE_FILLED";
|
165
165
|
SaveErrorsEnum["UNKNOWN"] = "UNKNOWN";
|
166
|
+
SaveErrorsEnum["DESCRIPTION_CANNOT_BE_CHANGED"] = "DESCRIPTION_CANNOT_BE_CHANGED";
|
166
167
|
})(SaveErrorsEnum || (SaveErrorsEnum = {}));
|
167
168
|
|
168
169
|
const MASTER_ROW_PROPERTY = "__MASTER_ROW__";
|