@sankhyalabs/sankhyablocks 8.15.0-dev.60 → 8.15.0-dev.62

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 (171) hide show
  1. package/dist/cjs/{ConfigStorage-7df9d3bb.js → ConfigStorage-9a53a42c.js} +12 -11
  2. package/dist/cjs/{form-config-fetcher-3c4daeb5.js → DataFetcher-515bda03.js} +0 -251
  3. package/dist/cjs/{IExporterProvider-1ed8e92a.js → IExporterProvider-d3a3ccd1.js} +55 -12
  4. package/dist/cjs/{SnkFormConfigManager-4259edbe.js → SnkFormConfigManager-dda10d75.js} +2 -2
  5. package/dist/cjs/{SnkMessageBuilder-66aa2557.js → SnkMessageBuilder-4a95fe86.js} +6 -12
  6. package/dist/cjs/{auth-fetcher-e6112be7.js → auth-fetcher-5acb0335.js} +1 -1
  7. package/dist/cjs/{pesquisa-fetcher-cb768be1.js → dataunit-fetcher-e2109392.js} +68 -173
  8. package/dist/cjs/form-config-fetcher-3f430aee.js +256 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/pesquisa-fetcher-916a935c.js +166 -0
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button_4.cjs.entry.js +10 -8
  13. package/dist/cjs/snk-application.cjs.entry.js +49 -39
  14. package/dist/cjs/snk-attach.cjs.entry.js +19 -17
  15. package/dist/cjs/snk-crud.cjs.entry.js +43 -9
  16. package/dist/cjs/snk-data-exporter.cjs.entry.js +9 -7
  17. package/dist/cjs/snk-data-unit-dee38ccd.js +614 -0
  18. package/dist/cjs/snk-data-unit.cjs.entry.js +10 -2
  19. package/dist/cjs/snk-detail-view.cjs.entry.js +8 -6
  20. package/dist/cjs/snk-filter-bar.cjs.entry.js +3 -2
  21. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -2
  22. package/dist/cjs/snk-form-config.cjs.entry.js +2 -1
  23. package/dist/cjs/snk-form-view.cjs.entry.js +36 -0
  24. package/dist/cjs/snk-form.cjs.entry.js +28 -7
  25. package/dist/cjs/snk-grid.cjs.entry.js +55 -10
  26. package/dist/cjs/{snk-guides-viewer-bec9c1a5.js → snk-guides-viewer-af4a6ae5.js} +19 -6
  27. package/dist/cjs/snk-guides-viewer.cjs.entry.js +8 -6
  28. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -2
  29. package/dist/cjs/snk-simple-crud.cjs.entry.js +96 -14
  30. package/dist/collection/collection-manifest.json +1 -1
  31. package/dist/collection/components/snk-application/snk-application.js +37 -17
  32. package/dist/collection/components/snk-crud/snk-crud.js +109 -6
  33. package/dist/collection/components/snk-crud/subcomponents/snk-form-view.js +79 -0
  34. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +41 -4
  35. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +14 -8
  36. package/dist/collection/components/snk-data-exporter/providers/ClientSideExporterProvider.js +5 -0
  37. package/dist/collection/components/snk-data-unit/snk-data-unit.js +413 -165
  38. package/dist/collection/components/snk-data-unit/test/resources/metadataMock.js +24 -0
  39. package/dist/collection/components/snk-form/snk-form.js +50 -4
  40. package/dist/collection/components/snk-grid/snk-grid.js +96 -7
  41. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +156 -8
  42. package/dist/collection/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.js +35 -0
  43. package/dist/collection/lib/dataUnit/ValueFormatter.js +4 -0
  44. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/interfaces/IBuildRequestBodyLoadRowMetadata.js +1 -0
  45. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/interfaces/IRowMetadata.js +1 -0
  46. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +51 -1
  47. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/test/resources/metadataMock.js +22 -0
  48. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +2 -2
  49. package/dist/collection/lib/message/SnkMessageBuilder.js +25 -32
  50. package/dist/collection/lib/message/resources/snk-data-unit.msg.js +1 -0
  51. package/dist/components/ConfigStorage.js +2 -1
  52. package/dist/components/DataFetcher.js +7024 -0
  53. package/dist/components/IExporterProvider.js +54 -12
  54. package/dist/components/SnkMessageBuilder.js +6 -12
  55. package/dist/components/dataunit-fetcher.js +58 -164
  56. package/dist/components/form-config-fetcher.js +3 -7023
  57. package/dist/components/pesquisa-fetcher.js +164 -0
  58. package/dist/components/snk-actions-button2.js +4 -2
  59. package/dist/components/snk-application2.js +26 -17
  60. package/dist/components/snk-attach2.js +4 -2
  61. package/dist/components/snk-crud.js +46 -9
  62. package/dist/components/snk-data-exporter2.js +4 -2
  63. package/dist/components/snk-data-unit2.js +356 -166
  64. package/dist/components/snk-detail-view2.js +21 -6
  65. package/dist/components/snk-form-config2.js +1 -1
  66. package/dist/components/snk-form-view2.js +39 -1
  67. package/dist/components/snk-form.js +26 -5
  68. package/dist/components/snk-grid2.js +58 -11
  69. package/dist/components/snk-simple-crud2.js +96 -10
  70. package/dist/esm/{ConfigStorage-928c3bf4.js → ConfigStorage-174101b9.js} +2 -1
  71. package/dist/esm/{form-config-fetcher-e3094014.js → DataFetcher-4b4b7beb.js} +1 -250
  72. package/dist/esm/{IExporterProvider-ceabfb7e.js → IExporterProvider-640e1f6b.js} +54 -12
  73. package/dist/esm/{SnkFormConfigManager-a87ade7a.js → SnkFormConfigManager-87bd8082.js} +2 -2
  74. package/dist/esm/{SnkMessageBuilder-0a4becdd.js → SnkMessageBuilder-3a767111.js} +6 -12
  75. package/dist/esm/{auth-fetcher-e1cb288f.js → auth-fetcher-9f86c346.js} +1 -1
  76. package/dist/esm/{pesquisa-fetcher-72125b13.js → dataunit-fetcher-87ecba4a.js} +57 -163
  77. package/dist/esm/form-config-fetcher-5d72aaf1.js +253 -0
  78. package/dist/esm/loader.js +1 -1
  79. package/dist/esm/pesquisa-fetcher-9cfab836.js +164 -0
  80. package/dist/esm/sankhyablocks.js +1 -1
  81. package/dist/esm/snk-actions-button_4.entry.js +5 -3
  82. package/dist/esm/snk-application.entry.js +30 -20
  83. package/dist/esm/snk-attach.entry.js +5 -3
  84. package/dist/esm/snk-crud.entry.js +43 -9
  85. package/dist/esm/snk-data-exporter.entry.js +6 -4
  86. package/dist/esm/snk-data-unit-1132e40b.js +612 -0
  87. package/dist/esm/snk-data-unit.entry.js +10 -2
  88. package/dist/esm/snk-detail-view.entry.js +8 -6
  89. package/dist/esm/snk-filter-bar.entry.js +3 -2
  90. package/dist/esm/snk-filter-modal-item.entry.js +3 -2
  91. package/dist/esm/snk-form-config.entry.js +2 -1
  92. package/dist/esm/snk-form-view.entry.js +36 -0
  93. package/dist/esm/snk-form.entry.js +28 -7
  94. package/dist/esm/snk-grid.entry.js +56 -11
  95. package/dist/esm/{snk-guides-viewer-303aafb4.js → snk-guides-viewer-359e39a7.js} +19 -6
  96. package/dist/esm/snk-guides-viewer.entry.js +8 -6
  97. package/dist/esm/snk-personalized-filter.entry.js +3 -2
  98. package/dist/esm/snk-simple-crud.entry.js +95 -13
  99. package/dist/sankhyablocks/p-010d475f.js +1 -0
  100. package/dist/sankhyablocks/p-08fee6e8.js +60 -0
  101. package/dist/sankhyablocks/p-0bcc6e83.js +1 -0
  102. package/dist/sankhyablocks/p-2a84e45b.entry.js +1 -0
  103. package/dist/sankhyablocks/{p-0e8702f0.js → p-2eb90860.js} +1 -1
  104. package/dist/sankhyablocks/p-33f695d6.entry.js +1 -0
  105. package/dist/sankhyablocks/p-3519a984.entry.js +1 -0
  106. package/dist/sankhyablocks/p-4ce73e88.js +1 -0
  107. package/dist/sankhyablocks/{p-e27496ed.js → p-566f5f50.js} +6 -6
  108. package/dist/sankhyablocks/p-59dccb7a.entry.js +1 -0
  109. package/dist/sankhyablocks/p-5c8a9e27.entry.js +1 -0
  110. package/dist/sankhyablocks/p-66a31d30.entry.js +11 -0
  111. package/dist/sankhyablocks/p-6b2be902.js +6 -0
  112. package/dist/sankhyablocks/p-7ecaaea2.entry.js +1 -0
  113. package/dist/sankhyablocks/p-83950924.entry.js +1 -0
  114. package/dist/sankhyablocks/p-873d2e6a.entry.js +1 -0
  115. package/dist/sankhyablocks/p-931343a1.entry.js +1 -0
  116. package/dist/sankhyablocks/p-a6dfa396.js +1 -0
  117. package/dist/sankhyablocks/p-aa854fa8.entry.js +1 -0
  118. package/dist/sankhyablocks/p-b11921ca.entry.js +1 -0
  119. package/dist/sankhyablocks/p-cb91634d.js +1 -0
  120. package/dist/sankhyablocks/p-cf9d2d1e.entry.js +1 -0
  121. package/dist/sankhyablocks/p-d29a252c.js +1 -0
  122. package/dist/sankhyablocks/p-d799aa7f.entry.js +1 -0
  123. package/dist/sankhyablocks/p-da6e3dcf.entry.js +1 -0
  124. package/dist/sankhyablocks/p-e0c27486.js +26 -0
  125. package/dist/sankhyablocks/p-f72e8835.entry.js +1 -0
  126. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  127. package/dist/types/components/snk-application/snk-application.d.ts +6 -2
  128. package/dist/types/components/snk-crud/snk-crud.d.ts +14 -1
  129. package/dist/types/components/snk-crud/subcomponents/snk-form-view.d.ts +13 -1
  130. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +6 -0
  131. package/dist/types/components/snk-data-exporter/interfaces/IExporterProvider.d.ts +3 -0
  132. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +45 -1
  133. package/dist/types/components/snk-data-unit/test/resources/metadataMock.d.ts +3 -0
  134. package/dist/types/components/snk-form/snk-form.d.ts +6 -0
  135. package/dist/types/components/snk-grid/snk-grid.d.ts +19 -3
  136. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +22 -0
  137. package/dist/types/components.d.ts +68 -4
  138. package/dist/types/lib/DefaultCustomFormatters/RmPrecisionCustomValueFormatter.d.ts +11 -0
  139. package/dist/types/lib/dataUnit/ValueFormatter.d.ts +2 -0
  140. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/IBuildRequestBodyLoadRowMetadata.d.ts +10 -0
  141. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/IRowMetadata.d.ts +7 -0
  142. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +6 -0
  143. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/test/resources/metadataMock.d.ts +20 -0
  144. package/dist/types/lib/http/data-fetcher/fetchers/fetchDataExporter/interfaces/IExporterColumnMetadata.d.ts +2 -0
  145. package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +1 -0
  146. package/package.json +1 -1
  147. package/dist/cjs/snk-data-unit-abd2113f.js +0 -427
  148. package/dist/esm/snk-data-unit-29eba11a.js +0 -425
  149. package/dist/sankhyablocks/p-029bfc09.js +0 -1
  150. package/dist/sankhyablocks/p-03dcc5ff.entry.js +0 -1
  151. package/dist/sankhyablocks/p-07825198.js +0 -1
  152. package/dist/sankhyablocks/p-13ea113d.entry.js +0 -1
  153. package/dist/sankhyablocks/p-1fa244c0.entry.js +0 -1
  154. package/dist/sankhyablocks/p-2d972c2e.entry.js +0 -1
  155. package/dist/sankhyablocks/p-314e2d1a.entry.js +0 -1
  156. package/dist/sankhyablocks/p-32556aa6.js +0 -1
  157. package/dist/sankhyablocks/p-3494a28e.entry.js +0 -1
  158. package/dist/sankhyablocks/p-35bd4df7.entry.js +0 -1
  159. package/dist/sankhyablocks/p-536eeb16.js +0 -26
  160. package/dist/sankhyablocks/p-563701f3.js +0 -1
  161. package/dist/sankhyablocks/p-61984566.entry.js +0 -1
  162. package/dist/sankhyablocks/p-64977b22.entry.js +0 -1
  163. package/dist/sankhyablocks/p-65b6dba3.entry.js +0 -1
  164. package/dist/sankhyablocks/p-6bc64fb0.entry.js +0 -1
  165. package/dist/sankhyablocks/p-aedf37fb.js +0 -65
  166. package/dist/sankhyablocks/p-b233f5aa.entry.js +0 -1
  167. package/dist/sankhyablocks/p-b86ea293.entry.js +0 -1
  168. package/dist/sankhyablocks/p-c73482cf.js +0 -1
  169. package/dist/sankhyablocks/p-cb3c7b4a.entry.js +0 -11
  170. package/dist/sankhyablocks/p-d911a023.entry.js +0 -1
  171. package/dist/sankhyablocks/p-fa84e72f.entry.js +0 -1
@@ -0,0 +1,614 @@
1
+ 'use strict';
2
+
3
+ const index = require('./index-f9e81701.js');
4
+ const core = require('@sankhyalabs/core');
5
+ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
6
+ const SnkMessageBuilder = require('./SnkMessageBuilder-4a95fe86.js');
7
+ const dataunitFetcher = require('./dataunit-fetcher-e2109392.js');
8
+ const RecordIDUtils = require('./RecordIDUtils-3735135c.js');
9
+
10
+ const SnkDataUnit = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.dataStateChange = index.createEvent(this, "dataStateChange", 3);
14
+ this.dataUnitReady = index.createEvent(this, "dataUnitReady", 3);
15
+ this.messagesBuilderUpdated = index.createEvent(this, "messagesBuilderUpdated", 3);
16
+ this.insertionMode = index.createEvent(this, "insertionMode", 3);
17
+ this.cancelEdition = index.createEvent(this, "cancelEdition", 3);
18
+ this._onDataUnitResolve = [];
19
+ this._openedAlert = false;
20
+ this._fieldsWithRmp = [];
21
+ this._fieldsWithRmPrecision = [];
22
+ this._metadataByRow = new Map();
23
+ this._rowMetadataCache = new Map();
24
+ this._dataUnitObserver = async (action) => {
25
+ const duState = this.buildDataState(action.type);
26
+ this.dataState = duState;
27
+ this.messagesBuilder.currentOperation = this.getMessageOperation();
28
+ switch (action.type) {
29
+ case core.Action.DATA_SAVED:
30
+ await this.handleDataSaved(action);
31
+ break;
32
+ case core.Action.RECORDS_ADDED:
33
+ case core.Action.RECORDS_COPIED:
34
+ this.insertionMode.emit();
35
+ break;
36
+ case core.Action.EDITION_CANCELED:
37
+ this.cancelEdition.emit();
38
+ break;
39
+ case core.Action.RECORDS_REMOVED:
40
+ this.handleRecordsRemoved(action);
41
+ break;
42
+ }
43
+ };
44
+ this.dataState = undefined;
45
+ this.messagesBuilder = undefined;
46
+ this.dataUnitName = undefined;
47
+ this.entityName = undefined;
48
+ this.pageSize = 150;
49
+ this.dataUnit = undefined;
50
+ this.beforeSave = undefined;
51
+ this.afterSave = undefined;
52
+ this.useCancelConfirm = true;
53
+ this.ignoreSaveMessage = undefined;
54
+ this.configName = undefined;
55
+ this.resourceID = undefined;
56
+ }
57
+ observePageSize() {
58
+ if (this.dataUnit) {
59
+ this.dataUnit.pageSize = this.pageSize;
60
+ }
61
+ }
62
+ observeDataUnitName(newValue, oldValue) {
63
+ if (oldValue != newValue) {
64
+ if (this.dataUnit) {
65
+ this._application.updateDataunitCache(oldValue, this.dataUnitName, this.dataUnit);
66
+ }
67
+ else {
68
+ this.loadDataUnit();
69
+ }
70
+ }
71
+ }
72
+ observeEntityName(newValue, oldValue) {
73
+ if (oldValue != newValue) {
74
+ this.dataUnit = undefined;
75
+ this.entityName = newValue;
76
+ this.loadDataUnit();
77
+ }
78
+ }
79
+ observeDataState(newValue, oldValue) {
80
+ if (core.ObjectUtils.objectToString(oldValue) != core.ObjectUtils.objectToString(newValue)) {
81
+ this.dataStateChange.emit(newValue);
82
+ }
83
+ }
84
+ observeDataUnit() {
85
+ this.handlerLinkFields();
86
+ this.dataUnitReady.emit(this.dataUnit);
87
+ }
88
+ observeMessagesBuilder(newValue) {
89
+ if (newValue) {
90
+ this.messagesBuilderUpdated.emit(newValue);
91
+ }
92
+ }
93
+ /**
94
+ * Obtém o dataUnit.
95
+ */
96
+ async getDataUnit() {
97
+ return new Promise((resolve) => {
98
+ if (this.dataUnit) {
99
+ resolve(this.dataUnit);
100
+ }
101
+ else {
102
+ this._onDataUnitResolve.push(resolve);
103
+ }
104
+ });
105
+ }
106
+ /**
107
+ * Método que retorna a lista de IDs dos registros selecionados.
108
+ * @returns Retorna a lista de IDs dos registros selecionados.
109
+ */
110
+ async getSelectedRecordsIDsInfo() {
111
+ return Promise.resolve(RecordIDUtils.getSelectedIDs(this.dataUnit));
112
+ }
113
+ /**
114
+ * Retorna os campos que possuem a propriedade "rmp" (Row Metadata Provider).
115
+ */
116
+ async getFieldsWithRmp() {
117
+ return this._fieldsWithRmp;
118
+ }
119
+ /**
120
+ * Retorna os campos que possuem a propriedade "rm_precision" (Row Metadata Precision).
121
+ */
122
+ async getFieldsWithRmPrecision() {
123
+ return this._fieldsWithRmPrecision;
124
+ }
125
+ /**
126
+ * Busca os metadados da linha selecionada.
127
+ */
128
+ async getRowMetadata(record) {
129
+ return this.doGetRowMetadata(record);
130
+ }
131
+ doGetRowMetadata(record) {
132
+ const selectedRecord = this.dataUnit.getSelectedRecord();
133
+ if (!record && !selectedRecord) {
134
+ return;
135
+ }
136
+ const currentRecord = record || selectedRecord;
137
+ const recordId = typeof currentRecord === 'string' ? currentRecord : currentRecord.__record__id__;
138
+ const rowMetadata = this._metadataByRow.get(recordId);
139
+ if (!rowMetadata) {
140
+ return;
141
+ }
142
+ rowMetadata.getProp = this.buildGetPropRowMetadata(rowMetadata);
143
+ return Object.assign({}, rowMetadata);
144
+ }
145
+ buildGetPropRowMetadata(rowMetadata) {
146
+ return (propPath, fieldName) => {
147
+ if (propPath === "rm_precision") {
148
+ propPath = this.resolvePrecisionFromMetadata(fieldName);
149
+ }
150
+ return core.ObjectUtils.getProp(rowMetadata, propPath);
151
+ };
152
+ }
153
+ resolvePrecisionFromMetadata(fieldName) {
154
+ var _a, _b;
155
+ if (!fieldName) {
156
+ utils.ApplicationUtils.error(this.getMessage("snkDataUnit.fieldNameRequired"));
157
+ return;
158
+ }
159
+ const rmPrecision = (_b = (_a = this.dataUnit.getField(fieldName)) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.rm_precision;
160
+ if (!rmPrecision) {
161
+ return '';
162
+ }
163
+ let rmPrecisionPath = rmPrecision.split('.').filter((_, index) => index !== 1).join('.');
164
+ return rmPrecisionPath;
165
+ }
166
+ getCleanOnCopyFields() {
167
+ var _a;
168
+ return (_a = this.dataUnit.metadata) === null || _a === void 0 ? void 0 : _a.fields.filter(field => { var _a; return (_a = field.properties) === null || _a === void 0 ? void 0 : _a.cleanOnCopy; }).map(field => field.name);
169
+ }
170
+ fillFieldsWithRmp(payload) {
171
+ payload.fields.forEach((field) => {
172
+ var _a;
173
+ if (((_a = field.properties) === null || _a === void 0 ? void 0 : _a.rmp) && !this._fieldsWithRmp.includes(field.name)) {
174
+ this._fieldsWithRmp.push(field.name);
175
+ }
176
+ });
177
+ }
178
+ fillFieldsWithRmPrecision(payload) {
179
+ payload.fields.forEach((field) => {
180
+ var _a;
181
+ if (((_a = field.properties) === null || _a === void 0 ? void 0 : _a.rm_precision) && !this._fieldsWithRmPrecision.includes(field.name)) {
182
+ this._fieldsWithRmPrecision.push(field.name);
183
+ }
184
+ });
185
+ }
186
+ getCacheName(fieldName, metadataName, fieldValue) {
187
+ const cacheName = [fieldName, metadataName, fieldValue].join("_");
188
+ return cacheName;
189
+ }
190
+ updateDataStateRmp(newValue) {
191
+ Object.assign(this.dataState.rowMetadata || {}, newValue);
192
+ }
193
+ saveCacheRmd(record) {
194
+ const rmd = record.__record__metadata__;
195
+ const keysRmd = Object.keys(rmd);
196
+ keysRmd.shift();
197
+ keysRmd.forEach((fieldName) => {
198
+ const fieldValue = dataunitFetcher.getRecordValue(record, fieldName);
199
+ const cacheName = this.getCacheName(fieldName, rmd.provider, fieldValue);
200
+ this._rowMetadataCache.set(cacheName, Object.assign({}, rmd));
201
+ });
202
+ }
203
+ getMetadataByRow(payload) {
204
+ var _a;
205
+ if (!((_a = payload.records) === null || _a === void 0 ? void 0 : _a.length)) {
206
+ return payload;
207
+ }
208
+ if (!this._fieldsWithRmp.length) {
209
+ const records = payload.records.map((record) => {
210
+ delete record.__record__metadata__;
211
+ return record;
212
+ });
213
+ return Object.assign(Object.assign({}, payload), { records });
214
+ }
215
+ const records = payload.records.map((record) => {
216
+ if (!record.__record__metadata__) {
217
+ return record;
218
+ }
219
+ this.saveCacheRmd(record);
220
+ const rowMetadata = Object.assign({}, record.__record__metadata__);
221
+ rowMetadata.getProp = this.buildGetPropRowMetadata(rowMetadata);
222
+ this._metadataByRow.set(record.__record__id__, rowMetadata);
223
+ delete record.__record__metadata__;
224
+ return record;
225
+ });
226
+ return Object.assign(Object.assign({}, payload), { records });
227
+ }
228
+ interceptRecordsAdded(action) {
229
+ if (!this.isAllowed("INSERT")) {
230
+ utils.ApplicationUtils.info(this.getMessage("snkDataUnit.forbiddenInsert"));
231
+ return;
232
+ }
233
+ return action;
234
+ }
235
+ interceptRecordsCopied(action) {
236
+ if (!this.isAllowed("CLONE")) {
237
+ utils.ApplicationUtils.info(this.getMessage("snkDataUnit.forbiddenClone"));
238
+ return;
239
+ }
240
+ const cleanFields = this.getCleanOnCopyFields();
241
+ if (cleanFields.length > 0) {
242
+ const records = action.payload;
243
+ action = new core.DataUnitAction(core.Action.RECORDS_COPIED, records.map(record => {
244
+ const newRecord = Object.assign({}, record);
245
+ cleanFields.forEach(fieldName => delete newRecord[fieldName]);
246
+ return newRecord;
247
+ }));
248
+ }
249
+ return action;
250
+ }
251
+ async interceptDataChange(action) {
252
+ if (this.isAllowed("UPDATE")) {
253
+ return action;
254
+ }
255
+ if (this._openedAlert) {
256
+ await this.dataUnit.cancelEdition();
257
+ return;
258
+ }
259
+ this._openedAlert = true;
260
+ await this.dataUnit.cancelEdition();
261
+ await utils.ApplicationUtils.alert(this.getMessage("snkDataUnit.forbidden"), this.getMessage("snkDataUnit.forbiddenUpdate"));
262
+ this._openedAlert = false;
263
+ }
264
+ async interceptSavingData(action) {
265
+ if (!this.beforeSave) {
266
+ return action;
267
+ }
268
+ const continueAction = this.beforeSave(this.dataUnit);
269
+ if (continueAction instanceof Promise) {
270
+ const result = await continueAction;
271
+ return result ? action : undefined;
272
+ }
273
+ return continueAction ? action : undefined;
274
+ }
275
+ interceptDataSaved(action) {
276
+ if (this.afterSave) {
277
+ this.afterSave(this.dataUnit);
278
+ return;
279
+ }
280
+ return action;
281
+ }
282
+ async interceptEditionCanceled(action) {
283
+ var _a, _b;
284
+ if (!this.useCancelConfirm || !this.dataState.hasDirtyRecords || ((_a = action.payload) === null || _a === void 0 ? void 0 : _a.fromParent) || ((_b = action.payload) === null || _b === void 0 ? void 0 : _b.silent)) {
285
+ return action;
286
+ }
287
+ const cancelConfirmation = this.getMessage("snkDataUnit.cancelConfirmation");
288
+ if (cancelConfirmation == undefined) {
289
+ this.showSuccessMessage(this.getMessage("snkDataUnit.cancelInfo"));
290
+ return action;
291
+ }
292
+ const cancelConfirmationTitle = this.getMessage("snkDataUnit.cancelConfirmationTitle");
293
+ const confirm = await utils.ApplicationUtils.confirm(cancelConfirmationTitle, cancelConfirmation);
294
+ confirm && this.showSuccessMessage(this.getMessage("snkDataUnit.cancelInfo"));
295
+ return confirm ? action : undefined;
296
+ }
297
+ async interceptRemovingRecords(action) {
298
+ var _a, _b, _c;
299
+ if (!this.isAllowed("REMOVE")) {
300
+ utils.ApplicationUtils.info(this.getMessage("snkDataUnit.forbiddenRemove"));
301
+ return;
302
+ }
303
+ let multipleSelection = false;
304
+ let removeConfirmation = !((_a = action.payload) === null || _a === void 0 ? void 0 : _a.silent) && this.getMessage("snkDataUnit.removeConfirmation");
305
+ const selection = (_b = this.dataUnit) === null || _b === void 0 ? void 0 : _b.getSelectionInfo();
306
+ if (!((_c = action.payload) === null || _c === void 0 ? void 0 : _c.silent) && (selection === null || selection === void 0 ? void 0 : selection.length) > 1) {
307
+ removeConfirmation = this.getMessage("snkDataUnit.removeAllConfirmation", { size: selection.length });
308
+ multipleSelection = true;
309
+ }
310
+ if (!removeConfirmation) {
311
+ return action;
312
+ }
313
+ const options = {
314
+ canClose: false,
315
+ labelCancel: this.getMessage(`snkDataUnit.confirm.${multipleSelection ? "no" : "cancel"}`),
316
+ labelConfirm: this.getMessage(`snkDataUnit.confirm.${multipleSelection ? "yes" : "delete"}`),
317
+ btnConfirmDanger: false
318
+ };
319
+ const removeConfirmationTitle = this.getMessage("snkDataUnit.removeConfirmationTitle");
320
+ const confirm = await utils.ApplicationUtils.confirm(removeConfirmationTitle, removeConfirmation, null, utils.DialogType.WARN, options);
321
+ return confirm ? action : undefined;
322
+ }
323
+ interceptDataLoaded(action) {
324
+ const newPayload = this.getMetadataByRow(action.payload);
325
+ action = new core.DataUnitAction(core.Action.DATA_LOADED, newPayload);
326
+ return action;
327
+ }
328
+ interceptMetadataLoaded(action) {
329
+ this.fillFieldsWithRmp(action.payload);
330
+ this.fillFieldsWithRmPrecision(action.payload);
331
+ return action;
332
+ }
333
+ async interceptAction(action) {
334
+ switch (action.type) {
335
+ case core.Action.RECORDS_ADDED:
336
+ return this.interceptRecordsAdded(action);
337
+ case core.Action.RECORDS_COPIED:
338
+ return this.interceptRecordsCopied(action);
339
+ case core.Action.DATA_CHANGED:
340
+ await this.handleLoadRowMetadata(action);
341
+ return await this.interceptDataChange(action);
342
+ case core.Action.CHANGING_DATA:
343
+ return await this.interceptDataChange(action);
344
+ case core.Action.SAVING_DATA:
345
+ return await this.interceptSavingData(action);
346
+ case core.Action.DATA_SAVED:
347
+ return this.interceptDataSaved(action);
348
+ case core.Action.EDITION_CANCELED:
349
+ return await this.interceptEditionCanceled(action);
350
+ case core.Action.REMOVING_RECORDS:
351
+ return await this.interceptRemovingRecords(action);
352
+ case core.Action.DATA_LOADED:
353
+ return this.interceptDataLoaded(action);
354
+ case core.Action.METADATA_LOADED:
355
+ return this.interceptMetadataLoaded(action);
356
+ default:
357
+ return action;
358
+ }
359
+ }
360
+ async handleLoadRowMetadata(action) {
361
+ const record = action.type === core.Action.DATA_CHANGED ? action.payload : action.payload.changes[0].record;
362
+ const keysPayload = Object.keys(record);
363
+ const rmpField = keysPayload.find((field) => this._fieldsWithRmp.includes(field));
364
+ if (rmpField) {
365
+ const metadataName = this.dataUnit.getField(rmpField).properties.rmp;
366
+ const fieldValue = dataunitFetcher.getRecordValue(record, rmpField);
367
+ return await this.updateRowMetadata({
368
+ fieldName: rmpField,
369
+ fieldValue,
370
+ metadataName,
371
+ updatedFields: record,
372
+ });
373
+ }
374
+ }
375
+ async updateRowMetadata({ fieldName, fieldValue, metadataName, updatedFields }) {
376
+ const cacheName = this.getCacheName(fieldName, metadataName, fieldValue);
377
+ const cacheValue = this._rowMetadataCache.get(cacheName);
378
+ if (cacheValue) {
379
+ this.updateDataStateRmp(cacheValue);
380
+ return cacheValue;
381
+ }
382
+ else {
383
+ const datasetStrategy = new dataunitFetcher.DatasetStrategy();
384
+ const response = await datasetStrategy.loadRowMetadata(this, fieldName, metadataName, updatedFields);
385
+ this.updateDataStateRmp(response._rmd);
386
+ this._rowMetadataCache.set(cacheName, Object.assign({}, response._rmd));
387
+ return Object.assign({}, response._rmd);
388
+ }
389
+ }
390
+ showSuccessMessage(message) {
391
+ utils.ApplicationUtils.info(message, { iconName: "check" });
392
+ }
393
+ isAllowed(flag) {
394
+ return this._permissions ? this._permissions.isSup || this._permissions[flag] : false;
395
+ }
396
+ buildDataState(actionType) {
397
+ var _a;
398
+ const selectionInfo = this.dataUnit.getSelectionInfo();
399
+ const isStartingInsertionMode = (this.dataUnit.hasDirtyRecords() || this.dataUnit.hasWaitingChanges()) && (selectionInfo === null || selectionInfo === void 0 ? void 0 : selectionInfo.isEmpty());
400
+ const selectedRecord = this.dataUnit.getSelectedRecord();
401
+ let rowMetadata = (_a = this.dataState) === null || _a === void 0 ? void 0 : _a.rowMetadata;
402
+ const allowedOverwrite = [core.Action.SELECTION_CHANGED, core.Action.EDITION_CANCELED, core.Action.NEXT_SELECTED, core.Action.PREVIOUS_SELECTED];
403
+ if (selectedRecord && (!rowMetadata || allowedOverwrite.includes(actionType))) {
404
+ rowMetadata = this.doGetRowMetadata(selectedRecord);
405
+ }
406
+ else if (rowMetadata) {
407
+ rowMetadata.getProp = this.buildGetPropRowMetadata(rowMetadata);
408
+ }
409
+ return new DataStateImpl({
410
+ insertionMode: this.dataUnit.hasNewRecord(),
411
+ isStartingInsertionMode,
412
+ hasNext: this.dataUnit.hasNext(),
413
+ hasPrevious: this.dataUnit.hasPrevious(),
414
+ copyMode: this.dataUnit.hasCopiedRecord(),
415
+ isDirty: this.dataUnit.isDirty(),
416
+ hasDirtyRecords: this.dataUnit.hasDirtyRecords(),
417
+ selectedRecords: undefined,
418
+ selectionInfo,
419
+ selectedRecord,
420
+ recordsIsEmpty: this.dataUnit.records.length === 0,
421
+ metadataByRow: this._metadataByRow,
422
+ rowMetadata
423
+ });
424
+ }
425
+ async handleDataSaved(action) {
426
+ const newRowMetadata = await this.handleLoadRowMetadata(action);
427
+ if (newRowMetadata) {
428
+ newRowMetadata.getProp = this.buildGetPropRowMetadata(newRowMetadata);
429
+ }
430
+ const recordId = action.payload.records[0].__record__id__;
431
+ this._metadataByRow.set(recordId, newRowMetadata);
432
+ this.dataState = this.buildDataState();
433
+ if (this.ignoreSaveMessage) {
434
+ return;
435
+ }
436
+ const msg = this.getMessage("snkDataUnit.saveInfo", action.payload.records[0]);
437
+ if (msg != undefined) {
438
+ this.showSuccessMessage(msg);
439
+ }
440
+ }
441
+ handleRecordsRemoved(action) {
442
+ var _a, _b;
443
+ const cachedRecords = action.payload.cachedRecords;
444
+ let removeFinishMsg;
445
+ if ((cachedRecords === null || cachedRecords === void 0 ? void 0 : cachedRecords.length) > 1) {
446
+ removeFinishMsg = this.getMessage("snkDataUnit.removeAllInfo", { size: cachedRecords.length });
447
+ }
448
+ else {
449
+ removeFinishMsg = this.getMessage("snkDataUnit.removeInfo", action.payload.cachedRecords[0]);
450
+ }
451
+ if (removeFinishMsg != undefined) {
452
+ this.showSuccessMessage(removeFinishMsg);
453
+ }
454
+ const recordsCount = (_b = (_a = this.dataUnit.records) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
455
+ const paginationInfo = this.dataUnit.getPaginationInfo();
456
+ if (paginationInfo) {
457
+ const page = recordsCount > 0 || paginationInfo.hasMore ? paginationInfo.currentPage : 0;
458
+ this.dataUnit.gotoPage(page);
459
+ }
460
+ }
461
+ /**
462
+ * Conforme mecanismo de mensagens, é possível customizar as mensagens dos blocos de construção
463
+ * através de um pequeno modulo na estrutura da aplicação:
464
+ * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
465
+ * Para conhecer os detalhes do módulo, vide o arquivo neste projeto "/src/lib/message/resources/snk-data-unit.msg.ts"
466
+ */
467
+ getMessage(key, params = undefined) {
468
+ if (!params) {
469
+ params = this.getMessageParams();
470
+ }
471
+ return this.messagesBuilder.getMessage(key, params);
472
+ }
473
+ getMessageParams() {
474
+ //FIXME: Devido ao recurso de multiseleção do dataunit, precisaremos criar um mecanismo para
475
+ //oferecer todos os registros selecionados para a mensagem, pois mensagens podem ficar incorretas.
476
+ return this.dataState.selectedRecord;
477
+ }
478
+ getMessageOperation() {
479
+ if (this.dataState.copyMode) {
480
+ return SnkMessageBuilder.OperationMap.CLONE;
481
+ }
482
+ if (this.dataState.insertionMode || this.dataState.isStartingInsertionMode) {
483
+ return SnkMessageBuilder.OperationMap.INSERT;
484
+ }
485
+ if (this.dataState.isDirty) {
486
+ return SnkMessageBuilder.OperationMap.UPDATE;
487
+ }
488
+ return SnkMessageBuilder.OperationMap.CLEAN;
489
+ }
490
+ async getDataUnitParentOrChild() {
491
+ var _a;
492
+ const cacheName = this.dataUnitName ? this.dataUnitName : this.entityName;
493
+ if (this._parentSnkDataUnit) {
494
+ this._parentDataUnit = await ((_a = this._parentSnkDataUnit) === null || _a === void 0 ? void 0 : _a.getDataUnit());
495
+ return await this._application.getDataUnit(this.entityName, cacheName, this._parentDataUnit, this.configName, this.resourceID, { skipLoadMetadata: true });
496
+ }
497
+ else {
498
+ return await this._application.getDataUnit(this.entityName, cacheName, null, this.configName, this.resourceID, { skipLoadMetadata: true });
499
+ }
500
+ }
501
+ async loadDataUnit() {
502
+ var _a;
503
+ if (this.dataUnit == null && this._application && this.entityName) {
504
+ this.dataUnit = await this.getDataUnitParentOrChild();
505
+ }
506
+ if (this.dataUnit) {
507
+ this.dataUnit.pageSize = this.pageSize;
508
+ this.dataUnit.unsubscribe(this._dataUnitObserver);
509
+ this.dataUnit.addInterceptor(this);
510
+ this.dataUnit.subscribe(this._dataUnitObserver);
511
+ await this.dataUnit.loadMetadata();
512
+ if ((_a = this.dataUnit.records) === null || _a === void 0 ? void 0 : _a.length) {
513
+ this.getMetadataByRow(this.dataUnit);
514
+ }
515
+ this.dataState = this.buildDataState();
516
+ let resolver;
517
+ while (resolver = this._onDataUnitResolve.pop()) {
518
+ resolver(this.dataUnit);
519
+ }
520
+ }
521
+ }
522
+ getParentSnkDataUnit() {
523
+ let currentElement = this.element;
524
+ while (currentElement.parentNode) {
525
+ if (currentElement.parentNode.nodeName === 'SNK-DATA-UNIT') {
526
+ return currentElement.parentNode;
527
+ }
528
+ currentElement = currentElement.parentNode;
529
+ }
530
+ return;
531
+ }
532
+ handlerLinkFields() {
533
+ var _a, _b;
534
+ const metadata = Object.assign({}, this.dataUnit.metadata);
535
+ if (!this._parentDataUnit)
536
+ return;
537
+ const child = this._parentDataUnit.getChildInfo(this.entityName);
538
+ if (!child)
539
+ return;
540
+ const fieldsLink = (_a = child === null || child === void 0 ? void 0 : child.links) === null || _a === void 0 ? void 0 : _a.map(link => link.target);
541
+ (_b = metadata === null || metadata === void 0 ? void 0 : metadata.fields) === null || _b === void 0 ? void 0 : _b.forEach(field => {
542
+ if (fieldsLink === null || fieldsLink === void 0 ? void 0 : fieldsLink.includes(field.name)) {
543
+ field.visible = false;
544
+ }
545
+ });
546
+ this.dataUnit.metadata = metadata;
547
+ }
548
+ static getNearestInstance(element) {
549
+ let parent = element.parentElement;
550
+ while (parent) {
551
+ if (parent.tagName.toUpperCase() === "SNK-DATA-UNIT") {
552
+ return parent;
553
+ }
554
+ parent = parent.parentElement;
555
+ }
556
+ }
557
+ //---------------------------------------------
558
+ // Lifecycle web component
559
+ //---------------------------------------------
560
+ componentWillLoad() {
561
+ this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
562
+ this._application.getAllAccess(this.resourceID).then(access => this._permissions = access);
563
+ this._parentSnkDataUnit = this.getParentSnkDataUnit();
564
+ if (this.messagesBuilder == undefined) {
565
+ this.messagesBuilder = new SnkMessageBuilder.SnkMessageBuilder(this.entityName);
566
+ }
567
+ }
568
+ disconnectedCallback() {
569
+ if (this.dataUnit) {
570
+ this.dataUnit.releaseCallbacks();
571
+ }
572
+ }
573
+ componentDidLoad() {
574
+ this.loadDataUnit();
575
+ }
576
+ render() {
577
+ return (index.h(index.Host, null));
578
+ }
579
+ get element() { return index.getElement(this); }
580
+ static get watchers() { return {
581
+ "pageSize": ["observePageSize"],
582
+ "dataUnitName": ["observeDataUnitName"],
583
+ "entityName": ["observeEntityName"],
584
+ "dataState": ["observeDataState"],
585
+ "dataUnit": ["observeDataUnit"],
586
+ "messagesBuilder": ["observeMessagesBuilder"]
587
+ }; }
588
+ };
589
+ class DataStateImpl {
590
+ constructor(datastate) {
591
+ this.copyMode = datastate.copyMode;
592
+ this.insertionMode = datastate.insertionMode;
593
+ this.isStartingInsertionMode = datastate.isStartingInsertionMode;
594
+ this.isDirty = datastate.isDirty;
595
+ this.hasDirtyRecords = datastate.hasDirtyRecords;
596
+ this.hasNext = datastate.hasNext;
597
+ this.hasPrevious = datastate.hasPrevious;
598
+ this.selectionInfo = datastate.selectionInfo;
599
+ this.selectedRecord = datastate.selectedRecord;
600
+ this.recordsIsEmpty = datastate.recordsIsEmpty;
601
+ this.metadataByRow = datastate.metadataByRow;
602
+ this.rowMetadata = datastate.rowMetadata;
603
+ }
604
+ get selectedRecords() {
605
+ var _a;
606
+ console.warn("SnkDataUnit: O método `selectedRecords` foi descontinuado. Use o método `selectionInfo`.");
607
+ if ((_a = this.selectionInfo) === null || _a === void 0 ? void 0 : _a.isAllRecords()) {
608
+ throw new Error("Erro interno: Impossível obter os registros selecionados. A seleção atual é virtual. Use o atributo `selectionInfo`.");
609
+ }
610
+ return this.selectionInfo.records;
611
+ }
612
+ }
613
+
614
+ exports.SnkDataUnit = SnkDataUnit;
@@ -2,11 +2,19 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkDataUnit = require('./snk-data-unit-abd2113f.js');
5
+ const snkDataUnit = require('./snk-data-unit-dee38ccd.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('@sankhyalabs/ezui/dist/collection/utils');
9
- require('./SnkMessageBuilder-66aa2557.js');
9
+ require('./SnkMessageBuilder-4a95fe86.js');
10
+ require('./dataunit-fetcher-e2109392.js');
11
+ require('./DataFetcher-515bda03.js');
12
+ require('./PrintUtils-bcaeb82f.js');
13
+ require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
14
+ require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
+ require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
16
+ require('@sankhyalabs/core/dist/utils/SortingUtils');
17
+ require('./ResourceIDUtils-5ff86aa7.js');
10
18
  require('./RecordIDUtils-3735135c.js');
11
19
 
12
20
 
@@ -4,20 +4,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
- const SnkFormConfigManager = require('./SnkFormConfigManager-4259edbe.js');
7
+ const SnkFormConfigManager = require('./SnkFormConfigManager-dda10d75.js');
8
8
  const form = require('@sankhyalabs/ezui/dist/collection/utils/form');
9
- require('./form-config-fetcher-3c4daeb5.js');
10
- require('./pesquisa-fetcher-cb768be1.js');
9
+ require('./DataFetcher-515bda03.js');
10
+ require('./pesquisa-fetcher-916a935c.js');
11
11
  const index$1 = require('./index-0922807b.js');
12
12
  require('./ISave-e91b70a7.js');
13
13
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
14
14
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
15
+ require('./dataunit-fetcher-e2109392.js');
15
16
  require('./filter-item-type.enum-a7ffdaa6.js');
17
+ require('./form-config-fetcher-3f430aee.js');
16
18
  const taskbarElements = require('./taskbar-elements-d9392685.js');
17
19
  const constants = require('./constants-35ddd366.js');
18
- const snkGuidesViewer = require('./snk-guides-viewer-bec9c1a5.js');
19
- const SnkMessageBuilder = require('./SnkMessageBuilder-66aa2557.js');
20
- require('./ConfigStorage-7df9d3bb.js');
20
+ const snkGuidesViewer = require('./snk-guides-viewer-af4a6ae5.js');
21
+ const SnkMessageBuilder = require('./SnkMessageBuilder-4a95fe86.js');
22
+ require('./ConfigStorage-9a53a42c.js');
21
23
  require('./PrintUtils-bcaeb82f.js');
22
24
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
23
25
  require('@sankhyalabs/core/dist/utils/SortingUtils');
@@ -5,14 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index$1 = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const EzScrollDirection = require('@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection');
8
- const ConfigStorage = require('./ConfigStorage-7df9d3bb.js');
8
+ const ConfigStorage = require('./ConfigStorage-9a53a42c.js');
9
9
  const DataType = require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
10
10
  const filterItemType_enum = require('./filter-item-type.enum-a7ffdaa6.js');
11
11
  const index = require('./index-c5771aba.js');
12
12
  const filterNumberVariation = require('./filterNumberVariation-d65332da.js');
13
13
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
14
14
  const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-0184ffbb.js');
15
- require('./form-config-fetcher-3c4daeb5.js');
15
+ require('./form-config-fetcher-3f430aee.js');
16
+ require('./DataFetcher-515bda03.js');
16
17
  require('./PrintUtils-bcaeb82f.js');
17
18
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
18
19