@sankhyalabs/sankhyablocks 8.15.0-dev.81 → 8.15.0-dev.83

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.
Files changed (84) hide show
  1. package/dist/cjs/{IExporterProvider-0c814e9a.js → IExporterProvider-c78cb1b8.js} +3 -3
  2. package/dist/cjs/{SnkMessageBuilder-4a95fe86.js → SnkMessageBuilder-722b104e.js} +2 -0
  3. package/dist/cjs/{index-0922807b.js → index-1dfc7a6e.js} +5 -0
  4. package/dist/cjs/snk-actions-button_4.cjs.entry.js +1 -1
  5. package/dist/cjs/snk-application.cjs.entry.js +10 -15
  6. package/dist/cjs/snk-attach.cjs.entry.js +2 -2
  7. package/dist/cjs/snk-crud.cjs.entry.js +2 -2
  8. package/dist/cjs/snk-data-exporter.cjs.entry.js +114 -11
  9. package/dist/cjs/{snk-data-unit-eca53cfc.js → snk-data-unit-56babf28.js} +7 -3
  10. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  11. package/dist/cjs/snk-detail-view.cjs.entry.js +4 -4
  12. package/dist/cjs/snk-grid.cjs.entry.js +3 -3
  13. package/dist/cjs/{snk-guides-viewer-5d5f0f25.js → snk-guides-viewer-9867335b.js} +2 -2
  14. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  15. package/dist/cjs/snk-simple-crud.cjs.entry.js +3 -3
  16. package/dist/cjs/snk-taskbar.cjs.entry.js +2 -2
  17. package/dist/cjs/{taskbar-elements-d9392685.js → taskbar-elements-9ad1f9c0.js} +1 -1
  18. package/dist/collection/components/snk-application/snk-application.js +11 -28
  19. package/dist/collection/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.js +7 -1
  20. package/dist/collection/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.js +7 -1
  21. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +2 -2
  22. package/dist/collection/components/snk-data-exporter/snk-data-exporter.js +23 -6
  23. package/dist/collection/components/snk-data-exporter/structure/ItemBuilder.js +62 -0
  24. package/dist/collection/components/snk-data-exporter/utils/ParserExport.js +13 -0
  25. package/dist/collection/components/snk-data-unit/snk-data-unit.js +6 -2
  26. package/dist/collection/components/snk-data-unit/test/resources/parentMetadataMock.js +18 -0
  27. package/dist/collection/lib/@types/index.js +5 -0
  28. package/dist/collection/lib/message/resources/snk-data-exporter.msg.js +2 -0
  29. package/dist/components/IExporterProvider.js +2 -2
  30. package/dist/components/ISave.js +5 -0
  31. package/dist/components/SnkMessageBuilder.js +2 -0
  32. package/dist/components/snk-application2.js +9 -14
  33. package/dist/components/snk-data-exporter2.js +111 -8
  34. package/dist/components/snk-data-unit2.js +6 -2
  35. package/dist/esm/{IExporterProvider-c0194569.js → IExporterProvider-1deb5d0a.js} +3 -3
  36. package/dist/esm/{SnkMessageBuilder-3a767111.js → SnkMessageBuilder-89925609.js} +2 -0
  37. package/dist/esm/{index-0ece87a6.js → index-88d0c8ad.js} +5 -0
  38. package/dist/esm/snk-actions-button_4.entry.js +1 -1
  39. package/dist/esm/snk-application.entry.js +10 -15
  40. package/dist/esm/snk-attach.entry.js +2 -2
  41. package/dist/esm/snk-crud.entry.js +2 -2
  42. package/dist/esm/snk-data-exporter.entry.js +114 -11
  43. package/dist/esm/{snk-data-unit-49b898f7.js → snk-data-unit-56b5efc4.js} +7 -3
  44. package/dist/esm/snk-data-unit.entry.js +2 -2
  45. package/dist/esm/snk-detail-view.entry.js +4 -4
  46. package/dist/esm/snk-grid.entry.js +3 -3
  47. package/dist/esm/{snk-guides-viewer-ef8c4eec.js → snk-guides-viewer-7ae1b358.js} +2 -2
  48. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  49. package/dist/esm/snk-simple-crud.entry.js +3 -3
  50. package/dist/esm/snk-taskbar.entry.js +2 -2
  51. package/dist/esm/{taskbar-elements-ad766858.js → taskbar-elements-da72aae0.js} +1 -1
  52. package/dist/sankhyablocks/{p-5fa1576b.entry.js → p-0f4de966.entry.js} +2 -2
  53. package/dist/sankhyablocks/{p-294df368.entry.js → p-26e34ba3.entry.js} +1 -1
  54. package/dist/sankhyablocks/{p-3f1efb97.entry.js → p-32097e8a.entry.js} +1 -1
  55. package/dist/sankhyablocks/p-6071f6b4.entry.js +1 -0
  56. package/dist/sankhyablocks/p-7a337364.js +1 -0
  57. package/dist/sankhyablocks/{p-2ac8bd11.entry.js → p-8323db5f.entry.js} +1 -1
  58. package/dist/sankhyablocks/p-88a77075.js +1 -0
  59. package/dist/sankhyablocks/{p-039c7148.entry.js → p-9bdd4e27.entry.js} +1 -1
  60. package/dist/sankhyablocks/{p-8322ccdb.entry.js → p-9cb8a77b.entry.js} +1 -1
  61. package/dist/sankhyablocks/{p-58687027.entry.js → p-a0edbed5.entry.js} +1 -1
  62. package/dist/sankhyablocks/{p-babe7665.js → p-a7717247.js} +1 -1
  63. package/dist/sankhyablocks/{p-e5c25e0b.entry.js → p-b1ee6b27.entry.js} +1 -1
  64. package/dist/sankhyablocks/p-b9e318a8.js +1 -0
  65. package/dist/sankhyablocks/{p-a64baa0f.entry.js → p-c5b18d02.entry.js} +1 -1
  66. package/dist/sankhyablocks/{p-d26365ad.js → p-c65bbb31.js} +1 -1
  67. package/dist/sankhyablocks/{p-61dd89eb.js → p-ef402237.js} +1 -1
  68. package/dist/sankhyablocks/{p-04821c60.entry.js → p-f9815cc4.entry.js} +1 -1
  69. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  70. package/dist/types/components/snk-application/snk-application.d.ts +2 -5
  71. package/dist/types/components/snk-data-exporter/exporter-strategy/ClientSideExporterStrategy.d.ts +1 -0
  72. package/dist/types/components/snk-data-exporter/exporter-strategy/ServerSideExporterStrategy.d.ts +1 -0
  73. package/dist/types/components/snk-data-exporter/snk-data-exporter.d.ts +1 -0
  74. package/dist/types/components/snk-data-exporter/structure/ItemBuilder.d.ts +21 -0
  75. package/dist/types/components/snk-data-exporter/utils/ParserExport.d.ts +2 -0
  76. package/dist/types/components/snk-data-unit/test/resources/parentMetadataMock.d.ts +3 -0
  77. package/dist/types/components.d.ts +2 -2
  78. package/dist/types/lib/@types/index.d.ts +5 -0
  79. package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IFetchDataExporterParams.d.ts +2 -1
  80. package/package.json +1 -1
  81. package/dist/sankhyablocks/p-38289a55.js +0 -1
  82. package/dist/sankhyablocks/p-4ce73e88.js +0 -1
  83. package/dist/sankhyablocks/p-ba05fdb8.entry.js +0 -1
  84. package/dist/sankhyablocks/p-f88cfc3c.js +0 -1
@@ -1,13 +1,19 @@
1
1
  import { UserInterface } from "@sankhyalabs/core";
2
2
  import { DataFetcher } from "../../../lib";
3
+ import { getVisibleColumns } from "../utils/ParserExport";
3
4
  export default class ClientSideExporterStrategy {
4
5
  constructor(provider) {
5
6
  this._provider = provider;
6
7
  }
8
+ async getParsedColumns() {
9
+ const columns = await this._provider.getColumnsMetadata();
10
+ const visibleColumns = getVisibleColumns(columns);
11
+ return visibleColumns;
12
+ }
7
13
  async executeExport(resolveProps) {
8
14
  const { methodName, titleGrid } = resolveProps;
9
15
  const records = await this._provider.getRecords();
10
- const columns = await this._provider.getColumnsMetadata();
16
+ const columns = await this.getParsedColumns();
11
17
  const [serviceName, processor] = this.getExecutor(methodName);
12
18
  const payload = {
13
19
  serviceName,
@@ -13,14 +13,20 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  import { ApplicationContext, ObjectUtils } from "@sankhyalabs/core";
14
14
  import { DataFetcher } from '../../../lib/http/data-fetcher/DataFetcher';
15
15
  import { DataExporterOption } from "../../../lib/@types";
16
+ import { getVisibleColumns } from "../utils/ParserExport";
16
17
  export default class ServerSideExporterStrategy {
17
18
  constructor(provider) {
18
19
  this._provider = provider;
19
20
  }
21
+ async getParsedColumns() {
22
+ const columns = await this._provider.getColumnsMetadata();
23
+ const visibleColumns = getVisibleColumns(columns);
24
+ return visibleColumns;
25
+ }
20
26
  async getParams(resolveProps) {
21
27
  var _a, _b, _c, _d, _e, _f;
22
28
  const filters = (_b = (_a = this._provider).getFilters) === null || _b === void 0 ? void 0 : _b.call(_a);
23
- const columns = await this._provider.getColumnsMetadata();
29
+ const columns = await this.getParsedColumns();
24
30
  const sort = (_d = (_c = this._provider).getOrders) === null || _d === void 0 ? void 0 : _d.call(_c);
25
31
  const resourceURI = (_f = (_e = this._provider).getResourceURI) === null || _f === void 0 ? void 0 : _f.call(_e);
26
32
  const selectedIDs = this._provider.getSelectedIDs();
@@ -28,7 +28,7 @@ export class CommonsExporter {
28
28
  const columnData = {
29
29
  label: column.label,
30
30
  id: column.name,
31
- width: (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UserInterface.SEARCH ? 30 : column.width,
31
+ width: column.width,
32
32
  type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
33
33
  userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
34
34
  customFormatter
@@ -40,7 +40,7 @@ export class CommonsExporter {
40
40
  const descriptionColumn = {
41
41
  label: fieldData.properties.DESCRIPTIONENTITY,
42
42
  id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
43
- width: 200,
43
+ width: column.width,
44
44
  type: DataType.TEXT,
45
45
  userInterface: UserInterface.LONGTEXT,
46
46
  descriptionFrom: fieldData.name
@@ -20,7 +20,9 @@ export class SnkDataExporter {
20
20
  DataExporterOption.EXPORT_PDF_TO_EMAIL,
21
21
  DataExporterOption.EXPORT_XLS_TO_EMAIL,
22
22
  DataExporterOption.EXPORT_PAGE_TO_PDF,
23
- 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,
24
26
  ];
25
27
  this._items = [];
26
28
  this._showDropdown = false;
@@ -111,7 +113,16 @@ export class SnkDataExporter {
111
113
  return DataExporterOption[key] === option;
112
114
  });
113
115
  }
114
- dispatchExporter(option) {
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) {
115
126
  var _a, _b, _c;
116
127
  const optionKey = this.getOptionKey(option);
117
128
  const fileType = (_a = DataExporterType[optionKey]) !== null && _a !== void 0 ? _a : DataExporterType.EXPORT_TO_PDF;
@@ -121,11 +132,17 @@ export class SnkDataExporter {
121
132
  fileName: this._appLabel,
122
133
  titleGrid: this._appLabel,
123
134
  exportOption: option,
124
- limit: (_c = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getExportLimit) === null || _c === void 0 ? void 0 : _c.call(_b)
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),
125
137
  };
126
- this.resolveExporter(params, (response) => {
127
- fileViewer(Object.assign(Object.assign({}, response), { fileType,
128
- isDownload }));
138
+ await this.resolveExporter(params, (response) => {
139
+ if (response.canExport) {
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
+ }
129
146
  });
130
147
  }
131
148
  async processExporter(evt) {
@@ -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.
@@ -0,0 +1,13 @@
1
+ const DOC_MAX_WIDTH = 800;
2
+ export function getVisibleColumns(columns) {
3
+ const visibleColumns = [];
4
+ let totalWidth = 0;
5
+ for (const column of columns) {
6
+ totalWidth += column.width;
7
+ if (totalWidth >= DOC_MAX_WIDTH) {
8
+ break;
9
+ }
10
+ visibleColumns.push(column);
11
+ }
12
+ return visibleColumns;
13
+ }
@@ -32,6 +32,10 @@ export class SnkDataUnit {
32
32
  case Action.RECORDS_REMOVED:
33
33
  this.handleRecordsRemoved(action);
34
34
  break;
35
+ case Action.METADATA_LOADED:
36
+ this.fillFieldsWithRmp(this.dataUnit.metadata);
37
+ this.fillFieldsWithRmPrecision(this.dataUnit.metadata);
38
+ break;
35
39
  default:
36
40
  break;
37
41
  }
@@ -521,10 +525,10 @@ export class SnkDataUnit {
521
525
  const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
522
526
  if (this._parentSnkDataUnit) {
523
527
  this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
524
- return await this._application.getDataUnit(this.entityName, cacheName, this._parentDataUnit, this.configName, this.resourceID, { skipLoadMetadata: true });
528
+ return await this._application.getDataUnit(this.entityName, cacheName, this._parentDataUnit, this.configName, this.resourceID);
525
529
  }
526
530
  else {
527
- return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID, { skipLoadMetadata: true });
531
+ return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID);
528
532
  }
529
533
  }
530
534
  async loadDataUnit() {
@@ -0,0 +1,18 @@
1
+ import { DataType } from "@sankhyalabs/core";
2
+ const parentMetadataMock = {
3
+ label: 'parentMetadataMock',
4
+ name: 'parentMetadataMock',
5
+ fields: [
6
+ {
7
+ name: 'PARENT',
8
+ label: 'Parent',
9
+ dataType: DataType.TEXT,
10
+ },
11
+ {
12
+ name: 'TESTEPARENT',
13
+ label: 'Teste com Parent',
14
+ dataType: DataType.TEXT,
15
+ }
16
+ ]
17
+ };
18
+ export default parentMetadataMock;
@@ -9,8 +9,11 @@ export var DataExporterOption;
9
9
  DataExporterOption["EXPORT_TO_PDF"] = "exportToPDF";
10
10
  DataExporterOption["EXPORT_TO_XLS"] = "exportToXLS";
11
11
  DataExporterOption["EXPORT_CURRENT_PAGE"] = "exportCurrentPage";
12
+ DataExporterOption["EXPORT_ALL_RECORDS"] = "exportAllRecords";
12
13
  DataExporterOption["EXPORT_PAGE_TO_PDF"] = "exportPageToPDF";
13
14
  DataExporterOption["EXPORT_PAGE_TO_XLS"] = "exportPageToXLS";
15
+ DataExporterOption["EXPORT_ALL_RECORDS_TO_PDF"] = "exportAllRecordsToPDF";
16
+ DataExporterOption["EXPORT_ALL_RECORDS_TO_XLS"] = "exportAllRecordsToXLS";
14
17
  DataExporterOption["EXPORT_BY_EMAIL"] = "exportToEmail";
15
18
  DataExporterOption["EXPORT_PDF_TO_EMAIL"] = "exportPDFToEmail";
16
19
  DataExporterOption["EXPORT_XLS_TO_EMAIL"] = "exportXLSToEmail";
@@ -27,6 +30,8 @@ export var DataExporterType;
27
30
  DataExporterType["EXPORT_TO_XLS"] = "XLS";
28
31
  DataExporterType["EXPORT_PAGE_TO_PDF"] = "PDF";
29
32
  DataExporterType["EXPORT_PAGE_TO_XLS"] = "XLS";
33
+ DataExporterType["EXPORT_ALL_RECORDS_TO_PDF"] = "PDF";
34
+ DataExporterType["EXPORT_ALL_RECORDS_TO_XLS"] = "XLS";
30
35
  DataExporterType["EXPORT_PDF_TO_EMAIL"] = "PDF";
31
36
  DataExporterType["EXPORT_XLS_TO_EMAIL"] = "XLS";
32
37
  })(DataExporterType || (DataExporterType = {}));
@@ -10,6 +10,7 @@ export const snkDataExporterMessages = {
10
10
  },
11
11
  label: {
12
12
  currentPage: "Somente a página atual",
13
+ allRecords: "Todos os registros",
13
14
  spreadsheet: "Planilha",
14
15
  cube: "Cubo",
15
16
  sendByEmail: "Enviar por email",
@@ -22,6 +23,7 @@ export const snkDataExporterMessages = {
22
23
  },
23
24
  title: {
24
25
  error: "Erro",
26
+ permission: "Falha detectada",
25
27
  },
26
28
  limitExceeded: {
27
29
  title: "Atenção",
@@ -271,7 +271,7 @@ class CommonsExporter {
271
271
  const columnData = {
272
272
  label: column.label,
273
273
  id: column.name,
274
- width: (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UserInterface$1.SEARCH ? 30 : column.width,
274
+ width: column.width,
275
275
  type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
276
276
  userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
277
277
  customFormatter
@@ -283,7 +283,7 @@ class CommonsExporter {
283
283
  const descriptionColumn = {
284
284
  label: fieldData.properties.DESCRIPTIONENTITY,
285
285
  id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
286
- width: 200,
286
+ width: column.width,
287
287
  type: DataType.TEXT,
288
288
  userInterface: UserInterface$1.LONGTEXT,
289
289
  descriptionFrom: fieldData.name
@@ -9,8 +9,11 @@ var DataExporterOption;
9
9
  DataExporterOption["EXPORT_TO_PDF"] = "exportToPDF";
10
10
  DataExporterOption["EXPORT_TO_XLS"] = "exportToXLS";
11
11
  DataExporterOption["EXPORT_CURRENT_PAGE"] = "exportCurrentPage";
12
+ DataExporterOption["EXPORT_ALL_RECORDS"] = "exportAllRecords";
12
13
  DataExporterOption["EXPORT_PAGE_TO_PDF"] = "exportPageToPDF";
13
14
  DataExporterOption["EXPORT_PAGE_TO_XLS"] = "exportPageToXLS";
15
+ DataExporterOption["EXPORT_ALL_RECORDS_TO_PDF"] = "exportAllRecordsToPDF";
16
+ DataExporterOption["EXPORT_ALL_RECORDS_TO_XLS"] = "exportAllRecordsToXLS";
14
17
  DataExporterOption["EXPORT_BY_EMAIL"] = "exportToEmail";
15
18
  DataExporterOption["EXPORT_PDF_TO_EMAIL"] = "exportPDFToEmail";
16
19
  DataExporterOption["EXPORT_XLS_TO_EMAIL"] = "exportXLSToEmail";
@@ -27,6 +30,8 @@ var DataExporterType;
27
30
  DataExporterType["EXPORT_TO_XLS"] = "XLS";
28
31
  DataExporterType["EXPORT_PAGE_TO_PDF"] = "PDF";
29
32
  DataExporterType["EXPORT_PAGE_TO_XLS"] = "XLS";
33
+ DataExporterType["EXPORT_ALL_RECORDS_TO_PDF"] = "PDF";
34
+ DataExporterType["EXPORT_ALL_RECORDS_TO_XLS"] = "XLS";
30
35
  DataExporterType["EXPORT_PDF_TO_EMAIL"] = "PDF";
31
36
  DataExporterType["EXPORT_XLS_TO_EMAIL"] = "XLS";
32
37
  })(DataExporterType || (DataExporterType = {}));
@@ -285,6 +285,7 @@ const snkDataExporterMessages = {
285
285
  },
286
286
  label: {
287
287
  currentPage: "Somente a página atual",
288
+ allRecords: "Todos os registros",
288
289
  spreadsheet: "Planilha",
289
290
  cube: "Cubo",
290
291
  sendByEmail: "Enviar por email",
@@ -297,6 +298,7 @@ const snkDataExporterMessages = {
297
298
  },
298
299
  title: {
299
300
  error: "Erro",
301
+ permission: "Falha detectada",
300
302
  },
301
303
  limitExceeded: {
302
304
  title: "Atenção",
@@ -614,7 +614,7 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
614
614
  * Cria o DataUnit a partir do nome da entidade. É possível armazená-lo no cache
615
615
  * passando o dataUnitName, assim, se mais de uma chamada for feita, o mesmo DataUnit será usado.
616
616
  */
617
- async createDataunit(entityName, dataUnitName, parentDataUnit, configName, resourceID, options) {
617
+ async createDataunit(entityName, dataUnitName, parentDataUnit, configName, resourceID) {
618
618
  if (resourceID == undefined) {
619
619
  resourceID = this.applicationResourceID;
620
620
  }
@@ -624,18 +624,13 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
624
624
  duPromisses.push(new PendingPromise(resolve, reject));
625
625
  if (!waitingDu) {
626
626
  const dataUnit = this.dataUnitFetcher.getDataUnit(entityName, resourceID, parentDataUnit, configName);
627
- if (options === null || options === void 0 ? void 0 : options.skipLoadMetadata) {
627
+ dataUnit.loadMetadata().then(() => {
628
628
  this.processResolveDataUnit(dataUnit, dataUnitName, duPromisses);
629
- }
630
- else {
631
- dataUnit.loadMetadata().then(() => {
632
- this.processResolveDataUnit(dataUnit, dataUnitName, duPromisses);
633
- }).catch(reason => {
634
- while (duPromisses.length > 0) {
635
- duPromisses.pop().reject(reason);
636
- }
637
- });
638
- }
629
+ }).catch(reason => {
630
+ while (duPromisses.length > 0) {
631
+ duPromisses.pop().reject(reason);
632
+ }
633
+ });
639
634
  }
640
635
  });
641
636
  }
@@ -662,14 +657,14 @@ const SnkApplication = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
662
657
  /**
663
658
  * Obtem um DataUnit do cache ou cria um caso ainda não tenha sido criado.
664
659
  */
665
- async getDataUnit(entityName, dataUnitName, parentDataUnit, configName, resourceID, options) {
660
+ async getDataUnit(entityName, dataUnitName, parentDataUnit, configName, resourceID) {
666
661
  return new Promise((resolve, reject) => {
667
662
  const dataUnit = this._duCache.get(dataUnitName);
668
663
  if (dataUnit) {
669
664
  resolve(dataUnit);
670
665
  }
671
666
  else {
672
- this.createDataunit(entityName, dataUnitName, parentDataUnit, configName, resourceID, options).then(dataUnit => {
667
+ this.createDataunit(entityName, dataUnitName, parentDataUnit, configName, resourceID).then(dataUnit => {
673
668
  resolve(dataUnit);
674
669
  }).catch(reason => reject(reason));
675
670
  }
@@ -33,6 +33,9 @@ class ItemBuilder {
33
33
  items.push(this.getExportToXLS(groupName));
34
34
  }
35
35
  this.setExportCurrentPage(option, items);
36
+ if (this._selectedNumber > 0) {
37
+ this.setExportAllRecords(option, items);
38
+ }
36
39
  this.setExportByEmail(option, items);
37
40
  }
38
41
  /**
@@ -63,6 +66,34 @@ class ItemBuilder {
63
66
  }
64
67
  }
65
68
  }
69
+ /**
70
+ * Método responsável por inserir os itens de exportação para todos os registros.
71
+ * @param option - Nome da opção que será inserida no array.
72
+ * @param items - Array que será alimentado com as opções permitidas.
73
+ */
74
+ setExportAllRecords(option, items) {
75
+ var _a;
76
+ const pageOptions = [DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF, DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS];
77
+ if (option === DataExporterOption.EXPORT_ALL_RECORDS) {
78
+ items.push(this.getAllRecords());
79
+ }
80
+ if (pageOptions.includes(option)) {
81
+ let item = items.find((item) => item.id === DataExporterOption.EXPORT_ALL_RECORDS);
82
+ if (item == undefined) {
83
+ items.push(this.getAllRecords());
84
+ item = items.find((item) => item.id === DataExporterOption.EXPORT_ALL_RECORDS);
85
+ }
86
+ if (!((_a = item.children) === null || _a === void 0 ? void 0 : _a.length)) {
87
+ item.children = [];
88
+ }
89
+ if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF) {
90
+ item.children.push(this.getExportAllRecordsToPDF());
91
+ }
92
+ if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS) {
93
+ item.children.push(this.getExportAllRecordsToXLS());
94
+ }
95
+ }
96
+ }
66
97
  /**
67
98
  * Método responsável por inserir os itens de exportação por e-mail.
68
99
  * @param option - Nome da opção que será inserida no array.
@@ -108,6 +139,17 @@ class ItemBuilder {
108
139
  group: this._getMessage("snkDataExporter.group.custom")
109
140
  };
110
141
  }
142
+ /**
143
+ * Método responsável por capturar o objeto com todos os dados de exportação.
144
+ * @returns Retorna o objeto com todos os dados de exportação.
145
+ */
146
+ getAllRecords() {
147
+ return {
148
+ id: DataExporterOption.EXPORT_ALL_RECORDS,
149
+ label: this._getMessage("snkDataExporter.label.allRecords"),
150
+ group: this._getMessage("snkDataExporter.group.custom")
151
+ };
152
+ }
111
153
  /**
112
154
  * Método responsável por capturar o objeto com os dados de exportação personalizada em PDF.
113
155
  * @returns Retorna o objeto com os dados de exportação personalizada em PDF.
@@ -128,6 +170,26 @@ class ItemBuilder {
128
170
  label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`
129
171
  };
130
172
  }
173
+ /**
174
+ * Método responsável por capturar o objeto com todos os dados de exportação em PDF.
175
+ * @returns Retorna o objeto com todos os dados de exportação em PDF.
176
+ */
177
+ getExportAllRecordsToPDF() {
178
+ return {
179
+ id: DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF,
180
+ label: "PDF (.pdf)"
181
+ };
182
+ }
183
+ /**
184
+ * Método responsável por capturar o objeto com todos os dados de exportação em XLS.
185
+ * @returns Retorna o objeto com todos os dados de exportação em XLS.
186
+ */
187
+ getExportAllRecordsToXLS() {
188
+ return {
189
+ id: DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS,
190
+ label: `${this._getMessage("snkDataExporter.label.spreadsheet")} (.xlsx)`
191
+ };
192
+ }
131
193
  /**
132
194
  * Método responsável por capturar o objeto com os dados de exportação por e-mail.
133
195
  * @returns Retorna o objeto com os dados de exportação por e-mail.
@@ -181,6 +243,20 @@ function getFormatResponse(result) {
181
243
  return ObjectUtils.stringToObject(response);
182
244
  }
183
245
 
246
+ const DOC_MAX_WIDTH = 800;
247
+ function getVisibleColumns(columns) {
248
+ const visibleColumns = [];
249
+ let totalWidth = 0;
250
+ for (const column of columns) {
251
+ totalWidth += column.width;
252
+ if (totalWidth >= DOC_MAX_WIDTH) {
253
+ break;
254
+ }
255
+ visibleColumns.push(column);
256
+ }
257
+ return visibleColumns;
258
+ }
259
+
184
260
  var __rest = (undefined && undefined.__rest) || function (s, e) {
185
261
  var t = {};
186
262
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -196,10 +272,15 @@ class ServerSideExporterStrategy {
196
272
  constructor(provider) {
197
273
  this._provider = provider;
198
274
  }
275
+ async getParsedColumns() {
276
+ const columns = await this._provider.getColumnsMetadata();
277
+ const visibleColumns = getVisibleColumns(columns);
278
+ return visibleColumns;
279
+ }
199
280
  async getParams(resolveProps) {
200
281
  var _a, _b, _c, _d, _e, _f;
201
282
  const filters = (_b = (_a = this._provider).getFilters) === null || _b === void 0 ? void 0 : _b.call(_a);
202
- const columns = await this._provider.getColumnsMetadata();
283
+ const columns = await this.getParsedColumns();
203
284
  const sort = (_d = (_c = this._provider).getOrders) === null || _d === void 0 ? void 0 : _d.call(_c);
204
285
  const resourceURI = (_f = (_e = this._provider).getResourceURI) === null || _f === void 0 ? void 0 : _f.call(_e);
205
286
  const selectedIDs = this._provider.getSelectedIDs();
@@ -250,10 +331,15 @@ class ClientSideExporterStrategy {
250
331
  constructor(provider) {
251
332
  this._provider = provider;
252
333
  }
334
+ async getParsedColumns() {
335
+ const columns = await this._provider.getColumnsMetadata();
336
+ const visibleColumns = getVisibleColumns(columns);
337
+ return visibleColumns;
338
+ }
253
339
  async executeExport(resolveProps) {
254
340
  const { methodName, titleGrid } = resolveProps;
255
341
  const records = await this._provider.getRecords();
256
- const columns = await this._provider.getColumnsMetadata();
342
+ const columns = await this.getParsedColumns();
257
343
  const [serviceName, processor] = this.getExecutor(methodName);
258
344
  const payload = {
259
345
  serviceName,
@@ -348,7 +434,9 @@ const SnkDataExporter = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
348
434
  DataExporterOption.EXPORT_PDF_TO_EMAIL,
349
435
  DataExporterOption.EXPORT_XLS_TO_EMAIL,
350
436
  DataExporterOption.EXPORT_PAGE_TO_PDF,
351
- DataExporterOption.EXPORT_PAGE_TO_XLS
437
+ DataExporterOption.EXPORT_PAGE_TO_XLS,
438
+ DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF,
439
+ DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS,
352
440
  ];
353
441
  this._items = [];
354
442
  this._showDropdown = false;
@@ -439,7 +527,16 @@ const SnkDataExporter = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
439
527
  return DataExporterOption[key] === option;
440
528
  });
441
529
  }
442
- dispatchExporter(option) {
530
+ getExportType(option) {
531
+ if (option === DataExporterOption.EXPORT_ALL_RECORDS_TO_PDF || option === DataExporterOption.EXPORT_ALL_RECORDS_TO_XLS) {
532
+ return 'all';
533
+ }
534
+ if (option === DataExporterOption.EXPORT_PAGE_TO_PDF || option === DataExporterOption.EXPORT_PAGE_TO_XLS) {
535
+ return 'page';
536
+ }
537
+ return 'selection';
538
+ }
539
+ async dispatchExporter(option) {
443
540
  var _a, _b, _c;
444
541
  const optionKey = this.getOptionKey(option);
445
542
  const fileType = (_a = DataExporterType[optionKey]) !== null && _a !== void 0 ? _a : DataExporterType.EXPORT_TO_PDF;
@@ -449,11 +546,17 @@ const SnkDataExporter = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
449
546
  fileName: this._appLabel,
450
547
  titleGrid: this._appLabel,
451
548
  exportOption: option,
452
- limit: (_c = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getExportLimit) === null || _c === void 0 ? void 0 : _c.call(_b)
549
+ limit: (_c = (_b = this.provider) === null || _b === void 0 ? void 0 : _b.getExportLimit) === null || _c === void 0 ? void 0 : _c.call(_b),
550
+ type: this.getExportType(option),
453
551
  };
454
- this.resolveExporter(params, (response) => {
455
- fileViewer(Object.assign(Object.assign({}, response), { fileType,
456
- isDownload }));
552
+ await this.resolveExporter(params, (response) => {
553
+ if (response.canExport) {
554
+ fileViewer(Object.assign(Object.assign({}, response), { fileType,
555
+ isDownload }));
556
+ }
557
+ else {
558
+ ApplicationUtils.error(this.getMessage("snkDataExporter.title.permission"), this.getMessage("snkDataExporter.message.exportPermission"));
559
+ }
457
560
  });
458
561
  }
459
562
  async processExporter(evt) {
@@ -77,6 +77,10 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
77
77
  case Action.RECORDS_REMOVED:
78
78
  this.handleRecordsRemoved(action);
79
79
  break;
80
+ case Action.METADATA_LOADED:
81
+ this.fillFieldsWithRmp(this.dataUnit.metadata);
82
+ this.fillFieldsWithRmPrecision(this.dataUnit.metadata);
83
+ break;
80
84
  }
81
85
  };
82
86
  this.fieldsToLink = [];
@@ -564,10 +568,10 @@ const SnkDataUnit = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
564
568
  const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
565
569
  if (this._parentSnkDataUnit) {
566
570
  this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
567
- return await this._application.getDataUnit(this.entityName, cacheName, this._parentDataUnit, this.configName, this.resourceID, { skipLoadMetadata: true });
571
+ return await this._application.getDataUnit(this.entityName, cacheName, this._parentDataUnit, this.configName, this.resourceID);
568
572
  }
569
573
  else {
570
- return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID, { skipLoadMetadata: true });
574
+ return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID);
571
575
  }
572
576
  }
573
577
  async loadDataUnit() {
@@ -1,7 +1,7 @@
1
1
  import { D as DataFetcher } from './DataFetcher-c1baf61d.js';
2
2
  import './pesquisa-fetcher-03c8f919.js';
3
3
  import { SortMode, ApplicationContext, UserInterface, DateUtils, ObjectUtils, NumberUtils, DataType } from '@sankhyalabs/core';
4
- import './index-0ece87a6.js';
4
+ import './index-88d0c8ad.js';
5
5
  import './ISave-d8c8bc59.js';
6
6
  import '@sankhyalabs/ezui/dist/collection/utils/constants';
7
7
  import { UserInterface as UserInterface$1 } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
@@ -194,7 +194,7 @@ class CommonsExporter {
194
194
  const columnData = {
195
195
  label: column.label,
196
196
  id: column.name,
197
- width: (fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface) === UserInterface$1.SEARCH ? 30 : column.width,
197
+ width: column.width,
198
198
  type: fieldData === null || fieldData === void 0 ? void 0 : fieldData.dataType,
199
199
  userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
200
200
  customFormatter
@@ -206,7 +206,7 @@ class CommonsExporter {
206
206
  const descriptionColumn = {
207
207
  label: fieldData.properties.DESCRIPTIONENTITY,
208
208
  id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
209
- width: 200,
209
+ width: column.width,
210
210
  type: DataType.TEXT,
211
211
  userInterface: UserInterface$1.LONGTEXT,
212
212
  descriptionFrom: fieldData.name