@sankhyalabs/sankhyablocks 8.15.3 → 8.16.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{ConfigStorage-942ce74b.js → ConfigStorage-a343e418.js} +1 -0
- package/dist/cjs/{SnkMultiSelectionListDataSource-3c08d25c.js → IExporterProvider-597949f9.js} +94 -4
- package/dist/cjs/RecordIDUtils-3735135c.js +43 -0
- package/dist/cjs/{SnkFormConfigManager-f9dc0d28.js → SnkFormConfigManager-166cbd1f.js} +8 -7
- package/dist/cjs/{SnkMessageBuilder-66aa2557.js → SnkMessageBuilder-897ffd08.js} +9 -13
- package/dist/cjs/{pesquisa-fetcher-562d281f.js → dataunit-fetcher-688d3f05.js} +87 -180
- package/dist/cjs/{index-0922807b.js → index-1dfc7a6e.js} +5 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pesquisa-fetcher-680e198f.js +166 -0
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button_4.cjs.entry.js +5 -3
- package/dist/cjs/snk-application.cjs.entry.js +35 -12
- package/dist/cjs/snk-attach.cjs.entry.js +71 -46
- package/dist/cjs/snk-crud.cjs.entry.js +101 -10
- package/dist/cjs/snk-data-exporter.cjs.entry.js +315 -85
- package/dist/cjs/snk-data-unit-8fa7917a.js +689 -0
- package/dist/cjs/snk-data-unit.cjs.entry.js +12 -2
- package/dist/cjs/snk-detail-view.cjs.entry.js +50 -10
- package/dist/cjs/snk-filter-bar.cjs.entry.js +6 -2
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +1 -1
- package/dist/cjs/snk-form-config.cjs.entry.js +1 -1
- package/dist/cjs/snk-form-view.cjs.entry.js +67 -0
- package/dist/cjs/snk-form.cjs.entry.js +52 -7
- package/dist/cjs/snk-grid.cjs.entry.js +165 -108
- package/dist/cjs/{snk-guides-viewer-bb6087cd.js → snk-guides-viewer-9c682034.js} +43 -10
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -7
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +1 -1
- package/dist/cjs/snk-simple-crud.cjs.entry.js +268 -40
- package/dist/cjs/snk-taskbar.cjs.entry.js +4 -3
- package/dist/cjs/{taskbar-elements-3ecd1278.js → taskbar-elements-9ad1f9c0.js} +3 -3
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/snk-application/snk-application.js +35 -11
- package/dist/collection/components/snk-attach/snk-attach.js +67 -44
- package/dist/collection/components/snk-crud/interfaces/PropsCustomEditor.js +1 -0
- package/dist/collection/components/snk-crud/interfaces/PropsCustomRender.js +1 -0
- package/dist/collection/components/snk-crud/snk-crud.js +305 -7
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +136 -2
- package/dist/collection/components/snk-crud/subcomponents/snk-form-view.js +161 -0
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +134 -7
- package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +97 -0
- package/dist/collection/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.js +74 -0
- package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +54 -1
- package/dist/collection/components/snk-data-exporter/interfaces/IExporterStrategy.js +1 -0
- package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +58 -0
- package/dist/collection/components/snk-data-exporter/providers/ServerSideExporterProvider.js +55 -0
- package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +59 -52
- package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +62 -0
- package/dist/collection/components/snk-data-exporter/test/resources/ClientSideExporterStrategyResources.js +88 -0
- package/dist/collection/components/snk-data-exporter/utils/ParserExport.js +20 -0
- package/dist/collection/components/snk-data-exporter/utils/RecordIDUtils.js +38 -0
- package/dist/collection/components/snk-data-unit/snk-data-unit.js +538 -218
- package/dist/collection/components/snk-data-unit/test/resources/metadataMock.js +24 -0
- package/dist/collection/components/snk-data-unit/test/resources/parentMetadataMock.js +18 -0
- package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +22 -1
- package/dist/collection/components/snk-form/snk-form.js +102 -5
- package/dist/collection/components/snk-form-config/SnkFormConfigManager.js +7 -6
- package/dist/collection/components/snk-form-config/snk-form-config.js +1 -1
- package/dist/collection/components/snk-grid/snk-grid.js +240 -101
- package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +406 -20
- package/dist/collection/components/snk-taskbar/elements/taskbar-elements.js +2 -2
- package/dist/collection/components/snk-taskbar/snk-taskbar.js +2 -1
- package/dist/collection/lib/@types/index.js +5 -0
- package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +35 -0
- package/dist/collection/lib/configs/ConfigStorage.js +1 -0
- package/dist/collection/lib/dataUnit/InMemoryLoader.js +7 -3
- package/dist/collection/lib/dataUnit/ValueFormatter.js +4 -0
- package/dist/collection/lib/dataUnit/interfaces/InMemoryLoaderConfig.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +3 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +4 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +11 -13
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/interfaces/IBuildRequestBodyLoadRowMetadata.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/interfaces/IRowMetadata.js +1 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +53 -4
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/test/resources/metadataMock.js +22 -0
- package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +4 -4
- package/dist/collection/lib/message/SnkMessageBuilder.js +5 -12
- package/dist/collection/lib/message/resources/snk-data-exporter.msg.js +2 -0
- package/dist/collection/lib/message/resources/snk-data-unit.msg.js +2 -1
- package/dist/components/ConfigStorage.js +1 -0
- package/dist/components/{field-search.js → IExporterProvider.js} +93 -6
- package/dist/components/ISave.js +47 -0
- package/dist/components/SnkFormConfigManager.js +7 -6
- package/dist/components/SnkMessageBuilder.js +9 -13
- package/dist/components/dataunit-fetcher.js +84 -182
- package/dist/components/index2.js +198 -33
- package/dist/components/pesquisa-fetcher.js +164 -0
- package/dist/components/snk-actions-button2.js +4 -11
- package/dist/components/snk-application2.js +31 -9
- package/dist/components/snk-attach2.js +65 -41
- package/dist/components/snk-crud.js +110 -11
- package/dist/components/snk-data-exporter2.js +309 -85
- package/dist/components/snk-data-unit2.js +485 -216
- package/dist/components/snk-detail-view2.js +96 -14
- package/dist/components/snk-expression-item2.js +1 -1
- package/dist/components/snk-filter-bar2.js +6 -1
- package/dist/components/snk-form-config2.js +1 -1
- package/dist/components/snk-form-view2.js +72 -1
- package/dist/components/snk-form.js +53 -6
- package/dist/components/snk-grid2.js +168 -106
- package/dist/components/snk-personalized-filter2.js +1 -1
- package/dist/components/snk-simple-crud2.js +263 -25
- package/dist/components/snk-taskbar2.js +6 -5
- package/dist/esm/{ConfigStorage-86187da3.js → ConfigStorage-3806514e.js} +1 -0
- package/dist/esm/{SnkMultiSelectionListDataSource-6a879955.js → IExporterProvider-63a188b6.js} +93 -5
- package/dist/esm/RecordIDUtils-87d02110.js +41 -0
- package/dist/esm/{SnkFormConfigManager-f53f9f87.js → SnkFormConfigManager-31b24066.js} +8 -7
- package/dist/esm/{SnkMessageBuilder-0a4becdd.js → SnkMessageBuilder-571462fb.js} +9 -13
- package/dist/esm/{pesquisa-fetcher-c7ce8ee7.js → dataunit-fetcher-264191b2.js} +83 -181
- package/dist/esm/{index-0ece87a6.js → index-3aa4977a.js} +6 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pesquisa-fetcher-03c8f919.js +164 -0
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button_4.entry.js +5 -3
- package/dist/esm/snk-application.entry.js +34 -11
- package/dist/esm/snk-attach.entry.js +66 -41
- package/dist/esm/snk-crud.entry.js +101 -10
- package/dist/esm/snk-data-exporter.entry.js +316 -86
- package/dist/esm/snk-data-unit-f5cbe64b.js +687 -0
- package/dist/esm/snk-data-unit.entry.js +12 -2
- package/dist/esm/snk-detail-view.entry.js +50 -10
- package/dist/esm/snk-filter-bar.entry.js +6 -2
- package/dist/esm/snk-filter-modal-item.entry.js +1 -1
- package/dist/esm/snk-form-config.entry.js +1 -1
- package/dist/esm/snk-form-view.entry.js +67 -0
- package/dist/esm/snk-form.entry.js +52 -7
- package/dist/esm/snk-grid.entry.js +163 -106
- package/dist/esm/{snk-guides-viewer-1d95ebf2.js → snk-guides-viewer-8f6960a2.js} +43 -10
- package/dist/esm/snk-guides-viewer.entry.js +9 -7
- package/dist/esm/snk-personalized-filter.entry.js +1 -1
- package/dist/esm/snk-simple-crud.entry.js +256 -28
- package/dist/esm/snk-taskbar.entry.js +4 -3
- package/dist/esm/{taskbar-elements-2473c8ac.js → taskbar-elements-d59867f1.js} +3 -3
- package/dist/sankhyablocks/p-17def7cd.js +1 -0
- package/dist/sankhyablocks/p-1db45d26.entry.js +1 -0
- package/dist/sankhyablocks/p-28ee0972.js +1 -0
- package/dist/sankhyablocks/p-2a408684.js +1 -0
- package/dist/sankhyablocks/{p-eae7a817.entry.js → p-2c68b3ae.entry.js} +1 -1
- package/dist/sankhyablocks/p-30cf616e.js +1 -0
- package/dist/sankhyablocks/p-3a212712.js +1 -0
- package/dist/sankhyablocks/p-450c60e4.entry.js +1 -0
- package/dist/sankhyablocks/{p-a1d72395.entry.js → p-47db7e88.entry.js} +1 -1
- package/dist/sankhyablocks/p-4e5e1313.entry.js +1 -0
- package/dist/sankhyablocks/{p-aff76a53.js → p-52920496.js} +1 -1
- package/dist/sankhyablocks/p-62ba211a.entry.js +1 -0
- package/dist/sankhyablocks/p-6bb2f3e9.entry.js +1 -0
- package/dist/sankhyablocks/p-7505da04.entry.js +1 -0
- package/dist/sankhyablocks/p-7619bdb1.entry.js +11 -0
- package/dist/sankhyablocks/p-7a85fd49.entry.js +1 -0
- package/dist/sankhyablocks/{p-ae4fc9a9.js → p-7e7a7473.js} +1 -1
- package/dist/sankhyablocks/p-7ef9c55c.js +1 -0
- package/dist/sankhyablocks/p-80042dc6.entry.js +1 -0
- package/dist/sankhyablocks/p-8c59edd7.entry.js +1 -0
- package/dist/sankhyablocks/p-9606509c.entry.js +1 -0
- package/dist/sankhyablocks/p-9863d682.js +1 -0
- package/dist/sankhyablocks/p-ae93d46a.entry.js +1 -0
- package/dist/sankhyablocks/p-af8efd95.js +6 -0
- package/dist/sankhyablocks/p-d6e26ea8.entry.js +1 -0
- package/dist/sankhyablocks/p-f2809746.entry.js +1 -0
- package/dist/sankhyablocks/p-f4450320.entry.js +1 -0
- package/dist/sankhyablocks/p-fe79f83a.js +60 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-application/snk-application.d.ts +7 -3
- package/dist/types/components/snk-attach/snk-attach.d.ts +11 -9
- package/dist/types/components/snk-crud/interfaces/PropsCustomEditor.d.ts +4 -0
- package/dist/types/components/snk-crud/interfaces/PropsCustomRender.d.ts +4 -0
- package/dist/types/components/snk-crud/snk-crud.d.ts +45 -1
- package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +23 -0
- package/dist/types/components/snk-crud/subcomponents/snk-form-view.d.ts +28 -3
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +24 -0
- package/dist/types/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.d.ts +14 -0
- package/dist/types/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.d.ts +12 -0
- package/dist/types/components/snk-data-exporter/interfaces/IExporterProvider.d.ts +24 -4
- package/dist/types/components/snk-data-exporter/interfaces/IExporterStrategy.d.ts +5 -0
- package/dist/types/components/snk-data-exporter/providers/ClientSideExporterProvider.d.ts +17 -0
- package/dist/types/components/snk-data-exporter/providers/ServerSideExporterProvider.d.ts +17 -0
- package/dist/types/components/snk-data-exporter/snk-data-exporter.d.ts +4 -1
- package/dist/types/components/snk-data-exporter/structure/ItemBuilder.d.ts +21 -0
- package/dist/types/components/snk-data-exporter/test/resources/ClientSideExporterStrategyResources.d.ts +77 -0
- package/dist/types/components/snk-data-exporter/utils/ParserExport.d.ts +4 -0
- package/dist/types/components/snk-data-exporter/utils/RecordIDUtils.d.ts +3 -0
- package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +66 -2
- package/dist/types/components/snk-data-unit/test/resources/metadataMock.d.ts +3 -0
- package/dist/types/components/snk-data-unit/test/resources/parentMetadataMock.d.ts +3 -0
- package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +4 -0
- package/dist/types/components/snk-form/snk-form.d.ts +14 -0
- package/dist/types/components/snk-form-config/SnkFormConfigManager.d.ts +2 -2
- package/dist/types/components/snk-grid/snk-grid.d.ts +46 -6
- package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +62 -4
- package/dist/types/components/snk-taskbar/elements/taskbar-elements.d.ts +1 -1
- package/dist/types/components.d.ts +261 -4
- package/dist/types/lib/@types/index.d.ts +5 -0
- package/dist/types/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.d.ts +11 -0
- package/dist/types/lib/dataUnit/InMemoryLoader.d.ts +2 -1
- package/dist/types/lib/dataUnit/ValueFormatter.d.ts +2 -0
- package/dist/types/lib/dataUnit/interfaces/InMemoryLoaderConfig.d.ts +3 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.d.ts +2 -1
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.d.ts +1 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +1 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/IBuildRequestBodyLoadRowMetadata.d.ts +10 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/IRowMetadata.d.ts +7 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +6 -0
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/test/resources/metadataMock.d.ts +20 -0
- package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IExporterColumnMetadata.d.ts +3 -0
- package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +2 -1
- package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +1 -0
- package/package.json +1 -1
- package/dist/cjs/snk-data-unit-41c29713.js +0 -462
- package/dist/collection/lib/http/data-fetcher/fetchers/fetchDataExporter/index.js +0 -34
- package/dist/components/index3.js +0 -199
- package/dist/esm/snk-data-unit-de1d140d.js +0 -460
- package/dist/sankhyablocks/p-032fe52e.js +0 -1
- package/dist/sankhyablocks/p-03dcc5ff.entry.js +0 -1
- package/dist/sankhyablocks/p-0594db5a.entry.js +0 -1
- package/dist/sankhyablocks/p-06e13db2.js +0 -1
- package/dist/sankhyablocks/p-07a61550.entry.js +0 -1
- package/dist/sankhyablocks/p-1403a4b6.entry.js +0 -1
- package/dist/sankhyablocks/p-14a08904.entry.js +0 -1
- package/dist/sankhyablocks/p-15802c59.entry.js +0 -1
- package/dist/sankhyablocks/p-235dc7b1.js +0 -65
- package/dist/sankhyablocks/p-32556aa6.js +0 -1
- package/dist/sankhyablocks/p-38289a55.js +0 -1
- package/dist/sankhyablocks/p-3c632d48.js +0 -1
- package/dist/sankhyablocks/p-3f833983.entry.js +0 -1
- package/dist/sankhyablocks/p-52c8e589.js +0 -1
- package/dist/sankhyablocks/p-5e1502b6.entry.js +0 -11
- package/dist/sankhyablocks/p-74d349c3.entry.js +0 -1
- package/dist/sankhyablocks/p-93167e28.entry.js +0 -1
- package/dist/sankhyablocks/p-add17f6a.entry.js +0 -1
- package/dist/sankhyablocks/p-bd47dd16.entry.js +0 -1
- package/dist/sankhyablocks/p-c1f88236.entry.js +0 -1
- package/dist/sankhyablocks/p-ccdd5332.entry.js +0 -1
- package/dist/sankhyablocks/p-ee9536bc.entry.js +0 -1
- package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/index.d.ts +0 -3
package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
import { UserInterface } from "@sankhyalabs/core";
|
2
|
+
import { DataFetcher } from "../../../lib";
|
3
|
+
import { getOptionKey, getVisibleColumns } from "../utils/ParserExport";
|
4
|
+
import { DataExporterType } from "../../../lib/@types";
|
5
|
+
export default class ClientSideExporterStrategy {
|
6
|
+
constructor(provider) {
|
7
|
+
this._provider = provider;
|
8
|
+
}
|
9
|
+
async getParsedColumns() {
|
10
|
+
const columns = await this._provider.getColumnsMetadata();
|
11
|
+
const visibleColumns = getVisibleColumns(columns);
|
12
|
+
return visibleColumns;
|
13
|
+
}
|
14
|
+
async executeExport(resolveProps) {
|
15
|
+
const { methodName, titleGrid } = resolveProps;
|
16
|
+
const records = await this._provider.getRecords();
|
17
|
+
const columns = [DataExporterType.EXPORT_TO_PDF, DataExporterType.EXPORT_PAGE_TO_PDF, DataExporterType.EXPORT_PDF_TO_EMAIL, DataExporterType.EXPORT_ALL_RECORDS_TO_PDF].includes(getOptionKey(resolveProps === null || resolveProps === void 0 ? void 0 : resolveProps.exportOption)) ? await this.getParsedColumns() : await this._provider.getColumnsMetadata();
|
18
|
+
const [serviceName, processor] = this.getExecutor(methodName);
|
19
|
+
const payload = {
|
20
|
+
serviceName,
|
21
|
+
requestBody: {
|
22
|
+
grid: {
|
23
|
+
titleGrid,
|
24
|
+
columns: this.buildColumnsObject(columns),
|
25
|
+
rows: this.buildRowsObject(columns, records),
|
26
|
+
customOptions: { xlsxExtension: false }
|
27
|
+
}
|
28
|
+
}
|
29
|
+
};
|
30
|
+
return new Promise((resolve, reject) => {
|
31
|
+
DataFetcher.get()
|
32
|
+
.callServiceBroker(serviceName, payload)
|
33
|
+
.then(result => resolve(processor(result)))
|
34
|
+
.catch(error => reject(error));
|
35
|
+
});
|
36
|
+
}
|
37
|
+
getExecutor(methodName) {
|
38
|
+
if (methodName === "exportToPDF") {
|
39
|
+
return [
|
40
|
+
"GridPDFBuilderSP.buildPDFFromJson",
|
41
|
+
responseBody => ({
|
42
|
+
fileSessionKey: responseBody.chavePDF.valor,
|
43
|
+
canPrint: responseBody.permiteImprimir.valor === "S",
|
44
|
+
canExport: responseBody.permiteExportar.valor === "S",
|
45
|
+
canSendEmail: responseBody.canSendEmail.valor === "S",
|
46
|
+
useAppPrint: true
|
47
|
+
})
|
48
|
+
];
|
49
|
+
}
|
50
|
+
return [
|
51
|
+
"GridXLSBuilderSP.buildXLSFromJson",
|
52
|
+
responseBody => ({
|
53
|
+
fileSessionKey: responseBody.chaveXLS.valor,
|
54
|
+
canPrint: false,
|
55
|
+
canExport: false,
|
56
|
+
useAppPrint: false,
|
57
|
+
canSendEmail: false
|
58
|
+
})
|
59
|
+
];
|
60
|
+
}
|
61
|
+
buildColumnsObject(columns) {
|
62
|
+
return {
|
63
|
+
column: columns.map((column, index) => {
|
64
|
+
const { label, id, width, userInterface } = column;
|
65
|
+
return Object.assign({ index: index + 1, id,
|
66
|
+
label,
|
67
|
+
width, presentationType: "P" }, (TYPE_MAP[userInterface] || { type: "S", align: "left" }));
|
68
|
+
})
|
69
|
+
};
|
70
|
+
}
|
71
|
+
buildRowsObject(columns, records) {
|
72
|
+
return {
|
73
|
+
row: records.map(rawRecord => {
|
74
|
+
const record = {};
|
75
|
+
columns.forEach((column, index) => record["c" + (index + 1)] = { $: this.formatValue(rawRecord, column) });
|
76
|
+
return record;
|
77
|
+
})
|
78
|
+
};
|
79
|
+
}
|
80
|
+
formatValue(record, column) {
|
81
|
+
if (this._provider.formatValue != undefined) {
|
82
|
+
return this._provider.formatValue(record, column);
|
83
|
+
}
|
84
|
+
return record[column.id] || "";
|
85
|
+
}
|
86
|
+
}
|
87
|
+
class FormatedRecord {
|
88
|
+
}
|
89
|
+
const TYPE_MAP = {
|
90
|
+
[UserInterface.DATE]: { type: "D", align: "center" },
|
91
|
+
[UserInterface.DATETIME]: { type: "H", align: "center" },
|
92
|
+
[UserInterface.TIME]: { type: "I", align: "right" },
|
93
|
+
[UserInterface.ELAPSEDTIME]: { type: "I", align: "right" },
|
94
|
+
[UserInterface.DECIMALNUMBER]: { type: "F", align: "right" },
|
95
|
+
[UserInterface.INTEGERNUMBER]: { type: "I", align: "right" },
|
96
|
+
[UserInterface.SEARCH]: { type: "S", align: "right" }
|
97
|
+
};
|
package/dist/collection/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.js
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
2
|
+
var t = {};
|
3
|
+
for (var p in s)
|
4
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
5
|
+
t[p] = s[p];
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
9
|
+
t[p[i]] = s[p[i]];
|
10
|
+
}
|
11
|
+
return t;
|
12
|
+
};
|
13
|
+
import { ApplicationContext, ObjectUtils } from "@sankhyalabs/core";
|
14
|
+
import { DataFetcher } from '../../../lib/http/data-fetcher/DataFetcher';
|
15
|
+
import { DataExporterOption, DataExporterType } from "../../../lib/@types";
|
16
|
+
import { getOptionKey, getVisibleColumns } from "../utils/ParserExport";
|
17
|
+
export default class ServerSideExporterStrategy {
|
18
|
+
constructor(provider) {
|
19
|
+
this._provider = provider;
|
20
|
+
}
|
21
|
+
async getParsedColumns() {
|
22
|
+
const columns = await this._provider.getColumnsMetadata();
|
23
|
+
const visibleColumns = getVisibleColumns(columns);
|
24
|
+
return visibleColumns;
|
25
|
+
}
|
26
|
+
async getParams(resolveProps) {
|
27
|
+
var _a, _b, _c, _d, _e, _f;
|
28
|
+
const filters = (_b = (_a = this._provider).getFilters) === null || _b === void 0 ? void 0 : _b.call(_a);
|
29
|
+
const columns = [DataExporterType.EXPORT_TO_PDF, DataExporterType.EXPORT_PAGE_TO_PDF, DataExporterType.EXPORT_PDF_TO_EMAIL, DataExporterType.EXPORT_ALL_RECORDS_TO_PDF].includes(getOptionKey(resolveProps === null || resolveProps === void 0 ? void 0 : resolveProps.exportOption)) ? await this.getParsedColumns() : await this._provider.getColumnsMetadata();
|
30
|
+
const sort = (_d = (_c = this._provider).getOrders) === null || _d === void 0 ? void 0 : _d.call(_c);
|
31
|
+
const resourceURI = (_f = (_e = this._provider).getResourceURI) === null || _f === void 0 ? void 0 : _f.call(_e);
|
32
|
+
const selectedIDs = this._provider.getSelectedIDs();
|
33
|
+
const option = resolveProps.exportOption;
|
34
|
+
const currentPageOptions = [
|
35
|
+
DataExporterOption.EXPORT_PAGE_TO_PDF,
|
36
|
+
DataExporterOption.EXPORT_PAGE_TO_XLS
|
37
|
+
];
|
38
|
+
delete resolveProps.exportOption;
|
39
|
+
let params = Object.assign({ filters,
|
40
|
+
columns,
|
41
|
+
sort,
|
42
|
+
resourceURI, selectedIDs: selectedIDs.slice(0, this._provider.getExportLimit()) }, resolveProps);
|
43
|
+
if (currentPageOptions.includes(option) || resolveProps.type == "page") {
|
44
|
+
const offset = this._provider.getOffset();
|
45
|
+
const limit = this._provider.getPageSize();
|
46
|
+
params = Object.assign(Object.assign({}, params), { offset,
|
47
|
+
limit, selectedIDs: [] });
|
48
|
+
}
|
49
|
+
else if (resolveProps.type == "all") {
|
50
|
+
params = Object.assign(Object.assign({}, params), { offset: 0, limit: this._provider.getExportLimit(), selectedIDs: [] });
|
51
|
+
}
|
52
|
+
return Promise.resolve(params);
|
53
|
+
}
|
54
|
+
async executeExport(resolveProps) {
|
55
|
+
const _a = await this.getParams(resolveProps), { methodName } = _a, requestBody = __rest(_a, ["methodName"]);
|
56
|
+
const application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
|
57
|
+
const serviceName = `${application.getModuleName()}@DataExporterSPBean.${methodName}`;
|
58
|
+
const payload = { serviceName, requestBody };
|
59
|
+
return new Promise((resolve, reject) => {
|
60
|
+
DataFetcher.get()
|
61
|
+
.callServiceBroker(serviceName, ObjectUtils.objectToString(payload))
|
62
|
+
.then(result => resolve(this.getFormatResponse(result)))
|
63
|
+
.catch(error => reject(error));
|
64
|
+
});
|
65
|
+
}
|
66
|
+
getFormatResponse(result) {
|
67
|
+
var _a;
|
68
|
+
const response = (_a = result === null || result === void 0 ? void 0 : result.json) === null || _a === void 0 ? void 0 : _a.$;
|
69
|
+
if (response == undefined) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
return ObjectUtils.stringToObject(response);
|
73
|
+
}
|
74
|
+
}
|
@@ -1 +1,54 @@
|
|
1
|
-
|
1
|
+
import { UserInterface } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
|
2
|
+
import { DataType } from '@sankhyalabs/core';
|
3
|
+
export class CommonsExporter {
|
4
|
+
constructor(dataUnit, grid) {
|
5
|
+
this.dataUnit = dataUnit;
|
6
|
+
this.grid = grid;
|
7
|
+
}
|
8
|
+
async getColumnsMetadata() {
|
9
|
+
var _a;
|
10
|
+
this.columnsState = await ((_a = this.grid) === null || _a === void 0 ? void 0 : _a.getColumnsState()) || [];
|
11
|
+
return await this.buildColumnsMetadata(this.columnsState);
|
12
|
+
}
|
13
|
+
getColumnsState() {
|
14
|
+
return this.columnsState;
|
15
|
+
}
|
16
|
+
async buildColumnsMetadata(gridColumns) {
|
17
|
+
var _a, _b;
|
18
|
+
const columnsMetadata = [];
|
19
|
+
for (const column of gridColumns) {
|
20
|
+
/**
|
21
|
+
* TODO: Analisar e criar uma melhor forma de tratar essa validação do "RECDESP".
|
22
|
+
*/
|
23
|
+
if (column.hidden && column.name !== "RECDESP") {
|
24
|
+
continue;
|
25
|
+
}
|
26
|
+
const fieldData = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getField(column.name);
|
27
|
+
const customFormatter = await this.grid.getCustomValueFormatter(column.name);
|
28
|
+
const columnData = {
|
29
|
+
label: column.label,
|
30
|
+
id: column.name,
|
31
|
+
width: column.width,
|
32
|
+
type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
|
33
|
+
userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
|
34
|
+
customFormatter
|
35
|
+
};
|
36
|
+
columnsMetadata.push(columnData);
|
37
|
+
if (((_b = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _b === void 0 ? void 0 : _b.DESCRIPTIONFIELD) != undefined) {
|
38
|
+
const mergedFrom = fieldData.properties.mergedFrom;
|
39
|
+
const descriptionField = `${fieldData.properties.ENTITYNAME}.${fieldData.properties.DESCRIPTIONFIELD}`;
|
40
|
+
const descriptionColumn = {
|
41
|
+
label: fieldData.properties.DESCRIPTIONENTITY,
|
42
|
+
id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
|
43
|
+
width: column.width,
|
44
|
+
type: DataType.TEXT,
|
45
|
+
userInterface: UserInterface.LONGTEXT,
|
46
|
+
descriptionFrom: fieldData.name
|
47
|
+
};
|
48
|
+
columnsMetadata.push(descriptionColumn);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
;
|
52
|
+
return columnsMetadata || [];
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,58 @@
|
|
1
|
+
import { CommonsExporter } from "../interfaces/IExporterProvider";
|
2
|
+
import { UserInterface } from "@sankhyalabs/core";
|
3
|
+
import { getSelectedIDs } from "../utils/RecordIDUtils";
|
4
|
+
import { DataExporterOption } from "../../../lib/@types";
|
5
|
+
export default class ClientSideExporterProvider extends CommonsExporter {
|
6
|
+
getSelectedNumber() {
|
7
|
+
return this.dataUnit.getSelectionInfo().length;
|
8
|
+
}
|
9
|
+
getTotalRecords() {
|
10
|
+
var _a, _b, _c;
|
11
|
+
const { total } = ((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getPaginationInfo()) || {};
|
12
|
+
return total !== null && total !== void 0 ? total : (_c = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length;
|
13
|
+
}
|
14
|
+
getSelectedIDs() {
|
15
|
+
return getSelectedIDs(this.dataUnit);
|
16
|
+
}
|
17
|
+
getRecordID() {
|
18
|
+
var _a, _b, _c;
|
19
|
+
return (_c = (_b = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.__record__id__;
|
20
|
+
}
|
21
|
+
async getRecords() {
|
22
|
+
if (this.dataUnit.records.length === 0) {
|
23
|
+
return Promise.resolve([]);
|
24
|
+
}
|
25
|
+
const selectionInfo = this.dataUnit.getSelectionInfo();
|
26
|
+
const records = selectionInfo.isEmpty() || selectionInfo.isAllRecords() ? await selectionInfo.getAllRecords() : selectionInfo.records;
|
27
|
+
return Promise.resolve(records == undefined ? [] : records);
|
28
|
+
}
|
29
|
+
getHiddenOptions() {
|
30
|
+
return [
|
31
|
+
DataExporterOption.EXPORT_BY_EMAIL,
|
32
|
+
DataExporterOption.EXPORT_PDF_TO_EMAIL,
|
33
|
+
DataExporterOption.EXPORT_XLS_TO_EMAIL,
|
34
|
+
DataExporterOption.EXPORT_PAGE_TO_PDF,
|
35
|
+
DataExporterOption.EXPORT_PAGE_TO_XLS
|
36
|
+
];
|
37
|
+
}
|
38
|
+
formatValue(record, column) {
|
39
|
+
const { id, descriptionFrom } = column;
|
40
|
+
const value = record[descriptionFrom || id];
|
41
|
+
if (value == undefined) {
|
42
|
+
return "";
|
43
|
+
}
|
44
|
+
if (descriptionFrom != undefined) {
|
45
|
+
return value.label;
|
46
|
+
}
|
47
|
+
const fieldDescriptor = this.dataUnit.getField(id);
|
48
|
+
if (fieldDescriptor.userInterface === UserInterface.SEARCH) {
|
49
|
+
return value.value;
|
50
|
+
}
|
51
|
+
if (column.customFormatter) {
|
52
|
+
const ezGridColumn = this.getColumnsState().find(columnState => column.id === columnState.name);
|
53
|
+
const formattedValue = column.customFormatter.format(value, ezGridColumn, record.__record__id__);
|
54
|
+
return formattedValue;
|
55
|
+
}
|
56
|
+
return this.dataUnit.getFormattedValue(id, value);
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import { CommonsExporter } from "../interfaces/IExporterProvider";
|
2
|
+
import { getSelectedIDs } from "../utils/RecordIDUtils";
|
3
|
+
export default class ServerSideExporterProvider extends CommonsExporter {
|
4
|
+
getFilters() {
|
5
|
+
var _a;
|
6
|
+
return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getAppliedFilters();
|
7
|
+
}
|
8
|
+
getOrders() {
|
9
|
+
var _a;
|
10
|
+
return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getSort();
|
11
|
+
}
|
12
|
+
getResourceURI() {
|
13
|
+
var _a;
|
14
|
+
return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.name;
|
15
|
+
}
|
16
|
+
getSelectedNumber() {
|
17
|
+
return this.dataUnit.getSelectionInfo().length;
|
18
|
+
}
|
19
|
+
getTotalRecords() {
|
20
|
+
var _a, _b, _c;
|
21
|
+
const { total } = ((_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getPaginationInfo()) || {};
|
22
|
+
return total !== null && total !== void 0 ? total : (_c = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length;
|
23
|
+
}
|
24
|
+
getSelectedIDs() {
|
25
|
+
return getSelectedIDs(this.dataUnit);
|
26
|
+
}
|
27
|
+
getOffset() {
|
28
|
+
return this.getExporterOffset(this.getPaginationInfo());
|
29
|
+
}
|
30
|
+
getPageSize() {
|
31
|
+
var _a;
|
32
|
+
return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.pageSize;
|
33
|
+
}
|
34
|
+
getExportLimit() {
|
35
|
+
return 5000;
|
36
|
+
}
|
37
|
+
getRecordID() {
|
38
|
+
var _a, _b, _c;
|
39
|
+
return (_c = (_b = (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.records) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.__record__id__;
|
40
|
+
}
|
41
|
+
getPaginationInfo() {
|
42
|
+
var _a;
|
43
|
+
return (_a = this.dataUnit) === null || _a === void 0 ? void 0 : _a.getPaginationInfo();
|
44
|
+
}
|
45
|
+
getExporterOffset(paginationInfo) {
|
46
|
+
if (paginationInfo == undefined) {
|
47
|
+
return;
|
48
|
+
}
|
49
|
+
const offset = paginationInfo.firstRecord;
|
50
|
+
if (offset > 0) {
|
51
|
+
return (offset - 1);
|
52
|
+
}
|
53
|
+
return offset;
|
54
|
+
}
|
55
|
+
}
|
@@ -4,17 +4,15 @@ import { ApplicationUtils, DialogType } from '@sankhyalabs/ezui/dist/collection/
|
|
4
4
|
import { ItemBuilder } from './structure/ItemBuilder';
|
5
5
|
import { DataExporterFormat, DataExporterOption, DataExporterType } from '../../lib/@types';
|
6
6
|
import { REPORT_LAUNCHER_RESOURCE_ID } from '../../lib/utils/constants';
|
7
|
-
import fetchDataExporter from '../../lib/http/data-fetcher/fetchers/fetchDataExporter';
|
8
7
|
import fileViewer from '../../lib/utils/fileViewer';
|
9
8
|
import getPersonalizedReports from '../../lib/http/data-fetcher/fetchers/fetchDataExporter/personalized-reports-fetcher';
|
10
9
|
import { SnkDataUnit } from '../snk-data-unit/snk-data-unit';
|
11
|
-
|
10
|
+
import ServerSideExporterStrategy from './exporter-strategy/ServerSideExporterStrategy';
|
11
|
+
import ClientSideExporterStrategy from './exporter-strategy/ClientSideExporterStrategy';
|
12
12
|
export class SnkDataExporter {
|
13
13
|
constructor() {
|
14
14
|
this._selectedNumber = 0;
|
15
15
|
this._customPrefix = "$custom$";
|
16
|
-
this._items = [];
|
17
|
-
this._showDropdown = false;
|
18
16
|
this._releasedToExport = [
|
19
17
|
DataExporterOption.EXPORT_TO_PDF,
|
20
18
|
DataExporterOption.EXPORT_TO_XLS,
|
@@ -22,8 +20,12 @@ export class SnkDataExporter {
|
|
22
20
|
DataExporterOption.EXPORT_PDF_TO_EMAIL,
|
23
21
|
DataExporterOption.EXPORT_XLS_TO_EMAIL,
|
24
22
|
DataExporterOption.EXPORT_PAGE_TO_PDF,
|
25
|
-
DataExporterOption.EXPORT_PAGE_TO_XLS
|
23
|
+
DataExporterOption.EXPORT_PAGE_TO_XLS,
|
24
|
+
DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF,
|
25
|
+
DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS,
|
26
26
|
];
|
27
|
+
this._items = [];
|
28
|
+
this._showDropdown = false;
|
27
29
|
this.provider = null;
|
28
30
|
this.messagesBuilder = undefined;
|
29
31
|
}
|
@@ -94,31 +96,7 @@ export class SnkDataExporter {
|
|
94
96
|
if (this.provider == undefined || resolveProps == undefined || callbackResolver == undefined) {
|
95
97
|
return;
|
96
98
|
}
|
97
|
-
|
98
|
-
const columns = await this.provider.getColumnsMetadata();
|
99
|
-
const sort = this.provider.getOrders();
|
100
|
-
const resourceURI = this.provider.getResourceURI();
|
101
|
-
const selectedIDs = this.provider.getSelectedIDs();
|
102
|
-
const option = resolveProps.exportOption;
|
103
|
-
const currentPageOptions = [
|
104
|
-
DataExporterOption.EXPORT_PAGE_TO_PDF,
|
105
|
-
DataExporterOption.EXPORT_PAGE_TO_XLS
|
106
|
-
];
|
107
|
-
delete resolveProps.exportOption;
|
108
|
-
let params = Object.assign({ filters,
|
109
|
-
columns,
|
110
|
-
sort,
|
111
|
-
resourceURI, selectedIDs: selectedIDs.slice(0, LIMIT_PER_EXPORT) }, resolveProps);
|
112
|
-
if (currentPageOptions.includes(option) || resolveProps.type == "page") {
|
113
|
-
const offset = this.provider.getOffset();
|
114
|
-
const limit = this.provider.getLimit();
|
115
|
-
params = Object.assign(Object.assign({}, params), { offset,
|
116
|
-
limit, selectedIDs: [] });
|
117
|
-
}
|
118
|
-
else if (resolveProps.type == "all") {
|
119
|
-
params = Object.assign(Object.assign({}, params), { offset: 0, limit: LIMIT_PER_EXPORT, selectedIDs: [] });
|
120
|
-
}
|
121
|
-
fetchDataExporter(params)
|
99
|
+
this.getExporterStrategy().executeExport(resolveProps)
|
122
100
|
.then((result) => callbackResolver(result))
|
123
101
|
.catch((exception) => {
|
124
102
|
console.error(exception);
|
@@ -126,14 +104,26 @@ export class SnkDataExporter {
|
|
126
104
|
ApplicationUtils.error(title || this.getMessage("snkDataExporter.message.exportError"), statusMessage || message || this.getMessage("snkDataExporter.message.unknownFailure"));
|
127
105
|
});
|
128
106
|
}
|
107
|
+
getExporterStrategy() {
|
108
|
+
return this.provider.getRecords == undefined ? new ServerSideExporterStrategy(this.provider) : new ClientSideExporterStrategy(this.provider);
|
109
|
+
}
|
129
110
|
getOptionKey(option) {
|
130
111
|
return Object.keys(DataExporterOption)
|
131
112
|
.find((key) => {
|
132
113
|
return DataExporterOption[key] === option;
|
133
114
|
});
|
134
115
|
}
|
135
|
-
|
136
|
-
|
116
|
+
getExportType(option) {
|
117
|
+
if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF || option === DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS) {
|
118
|
+
return 'all';
|
119
|
+
}
|
120
|
+
if (option === DataExporterOption.EXPORT_PAGE_TO_PDF || option === DataExporterOption.EXPORT_PAGE_TO_XLS) {
|
121
|
+
return 'page';
|
122
|
+
}
|
123
|
+
return 'selection';
|
124
|
+
}
|
125
|
+
async dispatchExporter(option) {
|
126
|
+
var _a, _b, _c;
|
137
127
|
const optionKey = this.getOptionKey(option);
|
138
128
|
const fileType = (_a = DataExporterType[optionKey]) !== null && _a !== void 0 ? _a : DataExporterType.EXPORT_TO_PDF;
|
139
129
|
const isDownload = DataExporterType[optionKey] === DataExporterType.EXPORT_TO_XLS;
|
@@ -142,15 +132,21 @@ export class SnkDataExporter {
|
|
142
132
|
fileName: this._appLabel,
|
143
133
|
titleGrid: this._appLabel,
|
144
134
|
exportOption: option,
|
145
|
-
limit:
|
135
|
+
limit: (_c = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getExportLimit) === null || _c === void 0 ? void 0 : _c.call(_b),
|
136
|
+
type: this.getExportType(option),
|
146
137
|
};
|
147
|
-
this.resolveExporter(params, (response) => {
|
148
|
-
|
149
|
-
|
138
|
+
await this.resolveExporter(params, (response) => {
|
139
|
+
if (response.canExport || fileType === DataExporterType.EXPORT_TO_PDF) {
|
140
|
+
fileViewer(Object.assign(Object.assign({}, response), { fileType,
|
141
|
+
isDownload }));
|
142
|
+
}
|
143
|
+
else {
|
144
|
+
ApplicationUtils.error(this.getMessage("snkDataExporter.title.permission"), this.getMessage("snkDataExporter.message.exportPermission"));
|
145
|
+
}
|
150
146
|
});
|
151
147
|
}
|
152
148
|
async processExporter(evt) {
|
153
|
-
var _a, _b, _c, _d;
|
149
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
154
150
|
const item = evt === null || evt === void 0 ? void 0 : evt.detail;
|
155
151
|
const exportCurrentPageOptions = [DataExporterOption.EXPORT_PAGE_TO_PDF, DataExporterOption.EXPORT_PAGE_TO_XLS];
|
156
152
|
const isCustomReport = (_a = item === null || item === void 0 ? void 0 : item.id) === null || _a === void 0 ? void 0 : _a.includes(this._customPrefix);
|
@@ -158,18 +154,19 @@ export class SnkDataExporter {
|
|
158
154
|
return;
|
159
155
|
const selectedRecords = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getSelectedIDs();
|
160
156
|
const totalRecords = (_c = this.provider) === null || _c === void 0 ? void 0 : _c.getTotalRecords();
|
161
|
-
const totalPerPage = (_d = this.provider) === null || _d === void 0 ? void 0 : _d.
|
157
|
+
const totalPerPage = (_e = (_d = this.provider) === null || _d === void 0 ? void 0 : _d.getPageSize) === null || _e === void 0 ? void 0 : _e.call(_d);
|
158
|
+
const exportLimit = (_g = (_f = this.provider) === null || _f === void 0 ? void 0 : _f.getExportLimit) === null || _g === void 0 ? void 0 : _g.call(_f);
|
162
159
|
let limitExceeded = false;
|
163
|
-
if ((exportCurrentPageOptions.includes(item === null || item === void 0 ? void 0 : item.id) && totalPerPage <=
|
160
|
+
if ((exportCurrentPageOptions.includes(item === null || item === void 0 ? void 0 : item.id) && totalPerPage <= exportLimit) || isCustomReport) {
|
164
161
|
limitExceeded = false;
|
165
162
|
}
|
166
163
|
else if (selectedRecords === null || selectedRecords === void 0 ? void 0 : selectedRecords.length) {
|
167
|
-
limitExceeded = selectedRecords.length >
|
164
|
+
limitExceeded = selectedRecords.length > exportLimit;
|
168
165
|
}
|
169
|
-
else if (totalRecords >
|
166
|
+
else if (totalRecords > exportLimit)
|
170
167
|
limitExceeded = true;
|
171
168
|
if (limitExceeded) {
|
172
|
-
const formattedLimit =
|
169
|
+
const formattedLimit = exportLimit.toLocaleString('pt-BR', { minimumFractionDigits: 0 });
|
173
170
|
const limitModalMessages = {
|
174
171
|
title: this.getMessage("snkDataExporter.limitExceeded.title"),
|
175
172
|
description: `
|
@@ -194,7 +191,7 @@ export class SnkDataExporter {
|
|
194
191
|
this._showDropdown = false;
|
195
192
|
return;
|
196
193
|
}
|
197
|
-
if (!this.
|
194
|
+
if (!this.getFilteredReleasedToExport().includes(item === null || item === void 0 ? void 0 : item.id)) {
|
198
195
|
return;
|
199
196
|
}
|
200
197
|
if (item.id === DataExporterOption.EXPORT_BY_EMAIL) {
|
@@ -205,9 +202,20 @@ export class SnkDataExporter {
|
|
205
202
|
}
|
206
203
|
this._showDropdown = false;
|
207
204
|
}
|
205
|
+
getFilteredReleasedToExport() {
|
206
|
+
var _a, _b;
|
207
|
+
if (this.provider == undefined) {
|
208
|
+
return this._releasedToExport;
|
209
|
+
}
|
210
|
+
const hiddenOptions = (_b = (_a = this.provider).getHiddenOptions) === null || _b === void 0 ? void 0 : _b.call(_a);
|
211
|
+
if (hiddenOptions == undefined) {
|
212
|
+
return this._releasedToExport;
|
213
|
+
}
|
214
|
+
return this._releasedToExport.filter(option => !hiddenOptions.includes(option));
|
215
|
+
}
|
208
216
|
loadItems() {
|
209
217
|
const items = [];
|
210
|
-
this.
|
218
|
+
this.getFilteredReleasedToExport()
|
211
219
|
.forEach((option) => {
|
212
220
|
var _a;
|
213
221
|
(_a = this._itemBuilder) === null || _a === void 0 ? void 0 : _a.setExportOption(option, items);
|
@@ -215,8 +223,8 @@ export class SnkDataExporter {
|
|
215
223
|
this.loadPersonalizedItems(items);
|
216
224
|
}
|
217
225
|
async loadPersonalizedItems(items) {
|
218
|
-
var _a;
|
219
|
-
const recordID = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getRecordID();
|
226
|
+
var _a, _b;
|
227
|
+
const recordID = (_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getRecordID) === null || _b === void 0 ? void 0 : _b.call(_a);
|
220
228
|
if (recordID == undefined) {
|
221
229
|
this._items = items;
|
222
230
|
return;
|
@@ -232,10 +240,10 @@ export class SnkDataExporter {
|
|
232
240
|
this._items = items;
|
233
241
|
}
|
234
242
|
openPersonalizedReports(option) {
|
235
|
-
var _a;
|
243
|
+
var _a, _b;
|
236
244
|
const pkObject = [];
|
237
245
|
const appId = (option === null || option === void 0 ? void 0 : option.replace(this._customPrefix, "")) || "";
|
238
|
-
(_a = this.provider) === null || _a === void 0 ? void 0 : _a.getSelectedIDs().forEach(({ name, type, value }, index) => {
|
246
|
+
(_b = (_a = this.provider) === null || _a === void 0 ? void 0 : _a.getSelectedIDs) === null || _b === void 0 ? void 0 : _b.call(_a).forEach(({ name, type, value }, index) => {
|
239
247
|
const fields = {};
|
240
248
|
fields['fields'] = [];
|
241
249
|
// Se for o primeiro elemento, adiciona essa primeira PK
|
@@ -260,8 +268,8 @@ export class SnkDataExporter {
|
|
260
268
|
}
|
261
269
|
}
|
262
270
|
loadDropdown() {
|
263
|
-
var _a
|
264
|
-
this._selectedNumber = ((
|
271
|
+
var _a;
|
272
|
+
this._selectedNumber = ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.getSelectedNumber()) || 0;
|
265
273
|
this._itemBuilder = new ItemBuilder(this.getMessage.bind(this), this._selectedNumber);
|
266
274
|
this.loadItems();
|
267
275
|
}
|
@@ -371,8 +379,7 @@ export class SnkDataExporter {
|
|
371
379
|
static get states() {
|
372
380
|
return {
|
373
381
|
"_items": {},
|
374
|
-
"_showDropdown": {}
|
375
|
-
"_releasedToExport": {}
|
382
|
+
"_showDropdown": {}
|
376
383
|
};
|
377
384
|
}
|
378
385
|
static get elementRef() { return "_element"; }
|
@@ -19,6 +19,9 @@ export class ItemBuilder {
|
|
19
19
|
items.push(this.getExportToXLS(groupName));
|
20
20
|
}
|
21
21
|
this.setExportCurrentPage(option, items);
|
22
|
+
if (this._selectedNumber > 0) {
|
23
|
+
this.setExportAllRecords(option, items);
|
24
|
+
}
|
22
25
|
this.setExportByEmail(option, items);
|
23
26
|
}
|
24
27
|
/**
|
@@ -49,6 +52,34 @@ export class ItemBuilder {
|
|
49
52
|
}
|
50
53
|
}
|
51
54
|
}
|
55
|
+
/**
|
56
|
+
* Método responsável por inserir os itens de exportação para todos os registros.
|
57
|
+
* @param option - Nome da opção que será inserida no array.
|
58
|
+
* @param items - Array que será alimentado com as opções permitidas.
|
59
|
+
*/
|
60
|
+
setExportAllRecords(option, items) {
|
61
|
+
var _a;
|
62
|
+
const pageOptions = [DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF, DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS];
|
63
|
+
if (option === DataExporterOption.EXPORT_ALL_RECORDS) {
|
64
|
+
items.push(this.getAllRecords());
|
65
|
+
}
|
66
|
+
if (pageOptions.includes(option)) {
|
67
|
+
let item = items.find((item) => item.id === DataExporterOption.EXPORT_ALL_RECORDS);
|
68
|
+
if (item == undefined) {
|
69
|
+
items.push(this.getAllRecords());
|
70
|
+
item = items.find((item) => item.id === DataExporterOption.EXPORT_ALL_RECORDS);
|
71
|
+
}
|
72
|
+
if (!((_a = item.children) === null || _a === void 0 ? void 0 : _a.length)) {
|
73
|
+
item.children = [];
|
74
|
+
}
|
75
|
+
if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF) {
|
76
|
+
item.children.push(this.getExportAllRecordsToPDF());
|
77
|
+
}
|
78
|
+
if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS) {
|
79
|
+
item.children.push(this.getExportAllRecordsToXLS());
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
52
83
|
/**
|
53
84
|
* Método responsável por inserir os itens de exportação por e-mail.
|
54
85
|
* @param option - Nome da opção que será inserida no array.
|
@@ -94,6 +125,17 @@ export class ItemBuilder {
|
|
94
125
|
group: this._getMessage("snkDataExporter.group.custom")
|
95
126
|
};
|
96
127
|
}
|
128
|
+
/**
|
129
|
+
* Método responsável por capturar o objeto com todos os dados de exportação.
|
130
|
+
* @returns Retorna o objeto com todos os dados de exportação.
|
131
|
+
*/
|
132
|
+
getAllRecords() {
|
133
|
+
return {
|
134
|
+
id: DataExporterOption.EXPORT_ALL_RECORDS,
|
135
|
+
label: this._getMessage("snkDataExporter.label.allRecords"),
|
136
|
+
group: this._getMessage("snkDataExporter.group.custom")
|
137
|
+
};
|
138
|
+
}
|
97
139
|
/**
|
98
140
|
* Método responsável por capturar o objeto com os dados de exportação personalizada em PDF.
|
99
141
|
* @returns Retorna o objeto com os dados de exportação personalizada em PDF.
|
@@ -114,6 +156,26 @@ export class ItemBuilder {
|
|
114
156
|
label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`
|
115
157
|
};
|
116
158
|
}
|
159
|
+
/**
|
160
|
+
* Método responsável por capturar o objeto com todos os dados de exportação em PDF.
|
161
|
+
* @returns Retorna o objeto com todos os dados de exportação em PDF.
|
162
|
+
*/
|
163
|
+
getExportAllRecordsToPDF() {
|
164
|
+
return {
|
165
|
+
id: DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF,
|
166
|
+
label: "PDF (.pdf)"
|
167
|
+
};
|
168
|
+
}
|
169
|
+
/**
|
170
|
+
* Método responsável por capturar o objeto com todos os dados de exportação em XLS.
|
171
|
+
* @returns Retorna o objeto com todos os dados de exportação em XLS.
|
172
|
+
*/
|
173
|
+
getExportAllRecordsToXLS() {
|
174
|
+
return {
|
175
|
+
id: DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS,
|
176
|
+
label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`
|
177
|
+
};
|
178
|
+
}
|
117
179
|
/**
|
118
180
|
* Método responsável por capturar o objeto com os dados de exportação por e-mail.
|
119
181
|
* @returns Retorna o objeto com os dados de exportação por e-mail.
|