@sankhyalabs/sankhyablocks 8.8.0-rc.1 → 8.8.0-rc.11
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-a97ca159.js → ConfigStorage-c15716fd.js} +5 -2
- package/dist/cjs/{DataFetcher-2a99283c.js → DataFetcher-713f0749.js} +32 -32
- package/dist/cjs/PreloadManager-e26d237f.js +224 -0
- package/dist/cjs/{SnkFormConfigManager-f641f502.js → SnkFormConfigManager-29101e20.js} +2 -2
- package/dist/cjs/{SnkMultiSelectionListDataSource-56db34ee.js → SnkMultiSelectionListDataSource-d74d2336.js} +10 -6
- package/dist/cjs/{auth-fetcher-78231356.js → auth-fetcher-555ff856.js} +1 -1
- package/dist/cjs/{dataunit-fetcher-4f7d4ee7.js → dataunit-fetcher-66c0b7af.js} +48 -248
- package/dist/cjs/{form-config-fetcher-a322a522.js → form-config-fetcher-17775a75.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{pesquisa-fetcher-7ef61508.js → pesquisa-fetcher-34922b83.js} +1 -1
- package/dist/cjs/sankhyablocks.cjs.js +1 -1
- package/dist/cjs/snk-actions-button.cjs.entry.js +93 -86
- package/dist/cjs/snk-application.cjs.entry.js +16 -6
- package/dist/cjs/snk-attach.cjs.entry.js +4 -2
- package/dist/cjs/snk-crud.cjs.entry.js +7 -5
- package/dist/cjs/snk-data-exporter.cjs.entry.js +1 -1
- package/dist/cjs/snk-detail-view.cjs.entry.js +24 -8
- package/dist/cjs/snk-filter-bar.cjs.entry.js +19 -4
- package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
- package/dist/cjs/snk-form-config.cjs.entry.js +2 -2
- package/dist/cjs/snk-form.cjs.entry.js +4 -4
- package/dist/cjs/snk-grid-config.cjs.entry.js +3 -3
- package/dist/cjs/snk-grid.cjs.entry.js +8 -7
- package/dist/cjs/{snk-guides-viewer-aab80f66.js → snk-guides-viewer-b173ce35.js} +78 -5
- package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -7
- package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
- package/dist/cjs/snk-simple-crud.cjs.entry.js +8 -5
- package/dist/collection/components/snk-actions-button/actions/executor/java.executor.js +2 -2
- package/dist/collection/components/snk-actions-button/actions/executor/javascript.executor.js +2 -2
- package/dist/collection/components/snk-actions-button/actions/executor/procedure.executor.js +2 -2
- package/dist/collection/components/snk-actions-button/clientEvent/index.js +81 -76
- package/dist/collection/components/snk-application/snk-application.js +1 -0
- package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +18 -1
- package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +80 -8
- package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +17 -2
- package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/collection/components/snk-grid/snk-grid.js +1 -0
- package/dist/collection/lib/http/data-fetcher/DataFetcher.js +33 -34
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +7 -2
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +25 -4
- package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +25 -55
- 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/loadstrategy/DatasetStrategy.js +29 -8
- package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +3 -0
- package/dist/collection/lib/workspace/workspace.js +7 -0
- package/dist/components/ConfigStorage.js +3 -0
- package/dist/components/DataFetcher.js +32 -32
- package/dist/components/SnkMultiSelectionListDataSource.js +5 -5
- package/dist/components/dataunit-fetcher.js +87 -68
- package/dist/components/snk-actions-button2.js +87 -82
- package/dist/components/snk-application2.js +8 -0
- package/dist/components/snk-detail-view2.js +88 -2
- package/dist/components/snk-filter-bar2.js +17 -2
- package/dist/components/snk-grid2.js +1 -0
- package/dist/esm/{ConfigStorage-26f89143.js → ConfigStorage-79c81f36.js} +5 -2
- package/dist/esm/{DataFetcher-90e91631.js → DataFetcher-79f78222.js} +32 -32
- package/dist/esm/PreloadManager-8826b96a.js +222 -0
- package/dist/esm/{SnkFormConfigManager-18948123.js → SnkFormConfigManager-7723f3ec.js} +2 -2
- package/dist/esm/{SnkMultiSelectionListDataSource-b9410c72.js → SnkMultiSelectionListDataSource-27572f47.js} +6 -6
- package/dist/esm/{auth-fetcher-a8c8ee7e.js → auth-fetcher-e260d0cd.js} +1 -1
- package/dist/esm/{dataunit-fetcher-1c2ccae2.js → dataunit-fetcher-831feb12.js} +41 -240
- package/dist/esm/{form-config-fetcher-7c3b6273.js → form-config-fetcher-e1603e66.js} +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{pesquisa-fetcher-90d6853b.js → pesquisa-fetcher-8e922c9d.js} +1 -1
- package/dist/esm/sankhyablocks.js +1 -1
- package/dist/esm/snk-actions-button.entry.js +93 -86
- package/dist/esm/snk-application.entry.js +16 -6
- package/dist/esm/snk-attach.entry.js +4 -2
- package/dist/esm/snk-crud.entry.js +7 -5
- package/dist/esm/snk-data-exporter.entry.js +1 -1
- package/dist/esm/snk-detail-view.entry.js +24 -8
- package/dist/esm/snk-filter-bar.entry.js +20 -5
- package/dist/esm/snk-filter-modal-item.entry.js +3 -3
- package/dist/esm/snk-form-config.entry.js +2 -2
- package/dist/esm/snk-form.entry.js +4 -4
- package/dist/esm/snk-grid-config.entry.js +3 -3
- package/dist/esm/snk-grid.entry.js +8 -7
- package/dist/esm/{snk-guides-viewer-62b0fa69.js → snk-guides-viewer-e62e0edc.js} +79 -6
- package/dist/esm/snk-guides-viewer.entry.js +9 -7
- package/dist/esm/snk-personalized-filter.entry.js +3 -3
- package/dist/esm/snk-simple-crud.entry.js +8 -5
- package/dist/sankhyablocks/{p-ebfa6460.entry.js → p-06e76ed2.entry.js} +1 -1
- package/dist/sankhyablocks/p-29176742.js +56 -0
- package/dist/sankhyablocks/p-2e6f1666.js +1 -0
- package/dist/sankhyablocks/{p-d563e451.entry.js → p-3bf4df20.entry.js} +1 -1
- package/dist/sankhyablocks/p-3c4f0354.js +1 -0
- package/dist/sankhyablocks/p-3ccb321d.entry.js +1 -0
- package/dist/sankhyablocks/{p-240f5892.js → p-41d156dd.js} +1 -1
- package/dist/sankhyablocks/{p-d47bbee3.js → p-4651b43f.js} +1 -1
- package/dist/sankhyablocks/{p-8652f90b.entry.js → p-47e4b6c9.entry.js} +1 -1
- package/dist/sankhyablocks/{p-68fbd480.entry.js → p-4f5b995d.entry.js} +1 -1
- package/dist/sankhyablocks/p-5f6113c8.js +60 -0
- package/dist/sankhyablocks/p-72b32e25.entry.js +11 -0
- package/dist/sankhyablocks/{p-57550ddc.entry.js → p-747043a5.entry.js} +1 -1
- package/dist/sankhyablocks/p-77756526.js +1 -0
- package/dist/sankhyablocks/{p-e74e2153.entry.js → p-80692cbd.entry.js} +1 -1
- package/dist/sankhyablocks/p-848b2e3b.entry.js +1 -0
- package/dist/sankhyablocks/p-862e5bf6.entry.js +1 -0
- package/dist/sankhyablocks/p-95b05e58.entry.js +1 -0
- package/dist/sankhyablocks/p-a1cce4f5.entry.js +1 -0
- package/dist/sankhyablocks/{p-5d51bff4.js → p-c9399ce6.js} +1 -1
- package/dist/sankhyablocks/p-d0b36421.js +1 -0
- package/dist/sankhyablocks/p-d32fe25e.js +1 -0
- package/dist/sankhyablocks/p-eb1561bf.entry.js +1 -0
- package/dist/sankhyablocks/p-f1743d68.entry.js +1 -0
- package/dist/sankhyablocks/p-f2e798f1.entry.js +1 -0
- package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
- package/dist/types/components/snk-actions-button/clientEvent/index.d.ts +1 -1
- package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +3 -0
- package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +22 -11
- package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +1 -0
- package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +5 -2
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +3 -6
- package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/ILoadingInfo.d.ts +2 -0
- package/dist/types/lib/workspace/workspace.d.ts +1 -0
- package/package.json +1 -1
- package/dist/sankhyablocks/p-193971ad.js +0 -1
- package/dist/sankhyablocks/p-19cbe6e2.entry.js +0 -11
- package/dist/sankhyablocks/p-2c7c1323.entry.js +0 -1
- package/dist/sankhyablocks/p-3253e7f2.entry.js +0 -1
- package/dist/sankhyablocks/p-5dd52ec5.entry.js +0 -1
- package/dist/sankhyablocks/p-6541f0df.js +0 -1
- package/dist/sankhyablocks/p-910af03c.js +0 -56
- package/dist/sankhyablocks/p-992a9d0f.js +0 -1
- package/dist/sankhyablocks/p-acb1374c.entry.js +0 -1
- package/dist/sankhyablocks/p-b36053da.entry.js +0 -1
- package/dist/sankhyablocks/p-b481e5ad.js +0 -1
- package/dist/sankhyablocks/p-d264da22.entry.js +0 -1
- package/dist/sankhyablocks/p-d56b65e3.entry.js +0 -1
- package/dist/sankhyablocks/p-e473ca13.entry.js +0 -1
- package/dist/sankhyablocks/p-e86d4a53.js +0 -59
@@ -95,6 +95,7 @@ export class SnkGrid {
|
|
95
95
|
if (this._gridConfig && this._dataUnit) {
|
96
96
|
this._dataUnit.defaultSorting = this._gridConfig
|
97
97
|
.columns
|
98
|
+
.filter(col => col.ascending != undefined)
|
98
99
|
.sort((colA, colB) => colA.orderIndex - colB.orderIndex)
|
99
100
|
.map(({ name: field, ascending }) => {
|
100
101
|
const { dataType } = this._dataUnit.getField(field);
|
@@ -6,10 +6,9 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
6
6
|
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
7
7
|
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
8
8
|
};
|
9
|
-
import { ApplicationContext, ErrorException, ObjectUtils, WarningException } from '@sankhyalabs/core';
|
9
|
+
import { ApplicationContext, ErrorException, ObjectUtils, WarningException, StringUtils } from '@sankhyalabs/core';
|
10
10
|
import { batchRequests } from 'graphql-request';
|
11
11
|
import UrlUtils from "../../../lib/utils/urlutils";
|
12
|
-
import { StringUtils } from '@sankhyalabs/core';
|
13
12
|
import { ServiceBrokerRecaller } from './recaller/ServiceBrokerRecaller';
|
14
13
|
import { GraphQLRecaller } from './recaller/GraphQLRecaller';
|
15
14
|
import { PrintUtils } from '../../utils/PrintUtils';
|
@@ -109,16 +108,16 @@ export class DataFetcher {
|
|
109
108
|
if (this.ready) {
|
110
109
|
return new Promise(async (resolve, reject) => {
|
111
110
|
let query = this.getQueryTemplate(req);
|
112
|
-
const res = await this.
|
111
|
+
const res = await this.fecthGraphQL([{ document: query, variables: req.values }], quietMode);
|
113
112
|
if (res.errors.length > 0) {
|
114
|
-
if (!this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject)) {
|
113
|
+
if (!(await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject))) {
|
115
114
|
const error = this.processGraphQlErrorInfo(res.errors);
|
116
115
|
reject(error);
|
117
116
|
}
|
118
117
|
}
|
119
118
|
else {
|
120
119
|
resolve(res.data[0][reqKey]);
|
121
|
-
this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
|
120
|
+
await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
|
122
121
|
}
|
123
122
|
});
|
124
123
|
}
|
@@ -132,7 +131,7 @@ export class DataFetcher {
|
|
132
131
|
resolveURL() {
|
133
132
|
return UrlUtils.getUrlBase();
|
134
133
|
}
|
135
|
-
proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
|
134
|
+
async proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
|
136
135
|
if (extensions == undefined) {
|
137
136
|
return false;
|
138
137
|
}
|
@@ -147,8 +146,8 @@ export class DataFetcher {
|
|
147
146
|
throw new WarningException("ClientEvent não registrado", `Ocorreu o client event ${id} porém não há client event registrado na aplicação.`);
|
148
147
|
}
|
149
148
|
const handlers = DataFetcher.clientEventsByID.get(id);
|
150
|
-
handlers.forEach(handler => {
|
151
|
-
handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
|
149
|
+
handlers.forEach(async (handler) => {
|
150
|
+
await handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
|
152
151
|
});
|
153
152
|
}
|
154
153
|
return Object.keys(clientEvents).length > 0;
|
@@ -234,9 +233,9 @@ export class DataFetcher {
|
|
234
233
|
const urlParams = UrlUtils.getQueryParams(location.search);
|
235
234
|
return {
|
236
235
|
baseUrl: `${this.resolveURL()}/${module}/service.sbr`,
|
237
|
-
appName: "SankhyaBlocks",
|
236
|
+
appName: window['APPLICATION_NAME'] || "SankhyaBlocks",
|
238
237
|
mgeSession: `${window['mgeSession'] || urlParams.get("mgeSession")}`,
|
239
|
-
globalID:
|
238
|
+
globalID: window['GLOBALID'] || StringUtils.generateUUID(),
|
240
239
|
resourceID: (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID))
|
241
240
|
};
|
242
241
|
}
|
@@ -353,17 +352,13 @@ export class DataFetcher {
|
|
353
352
|
async executePendingRequest(watingRequestsById) {
|
354
353
|
const requestsBatch = [];
|
355
354
|
let quietMode = true;
|
356
|
-
watingRequestsById.forEach(
|
357
|
-
|
355
|
+
watingRequestsById.forEach((waitingReq) => {
|
356
|
+
const query = this.getQueryTemplate(waitingReq.request);
|
358
357
|
requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
|
359
358
|
quietMode = quietMode && waitingReq.quietMode;
|
360
359
|
});
|
361
|
-
|
362
|
-
|
363
|
-
let errorsResponse = [];
|
364
|
-
res = await this.fecthGrapql(requestsBatch, quietMode);
|
365
|
-
dataResponse = res.data;
|
366
|
-
errorsResponse = res.errors;
|
360
|
+
const response = await this.fecthGraphQL(requestsBatch, quietMode);
|
361
|
+
const { data: dataResponse, errors: errorsResponse, extensions } = response;
|
367
362
|
//Reject promises with errors from query
|
368
363
|
errorsResponse.forEach((errorResponse) => {
|
369
364
|
Object.entries(errorResponse).forEach(([_key, val]) => {
|
@@ -373,29 +368,33 @@ export class DataFetcher {
|
|
373
368
|
});
|
374
369
|
//Resolve promises with data from query
|
375
370
|
dataResponse.forEach((data) => {
|
376
|
-
Object.entries(data).forEach(([key, val]) => {
|
377
|
-
|
378
|
-
|
371
|
+
Object.entries(data).forEach(async ([key, val]) => {
|
372
|
+
const waitingRequest = watingRequestsById.get(key);
|
373
|
+
await this.proccesGraphQLClientEvents(extensions, waitingRequest.request, waitingRequest.resolve, waitingRequest.reject);
|
374
|
+
((waitingRequest === null || waitingRequest === void 0 ? void 0 : waitingRequest.resolve) || Promise.resolve)(val);
|
379
375
|
});
|
380
376
|
});
|
381
377
|
}
|
382
|
-
|
383
|
-
let res = undefined;
|
384
|
-
let dataResponse = [];
|
385
|
-
let errorsResponse = [];
|
386
|
-
let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
|
387
|
-
const responseExtensions = [];
|
378
|
+
buildGraphQlURL(quietMode) {
|
388
379
|
const mgeSession = window["mgeSession"];
|
389
|
-
|
380
|
+
let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
|
381
|
+
if (mgeSession) {
|
390
382
|
url += `?mgeSession=${mgeSession}`;
|
391
383
|
}
|
392
384
|
if (quietMode) {
|
393
385
|
url += `${url.indexOf("?") > -1 ? "&" : "?"}quietMode=true`;
|
394
386
|
}
|
395
|
-
|
387
|
+
return url;
|
388
|
+
}
|
389
|
+
async fecthGraphQL(request, quietMode) {
|
390
|
+
const dataResponse = [];
|
391
|
+
const errorsResponse = [];
|
392
|
+
const responseExtensions = [];
|
393
|
+
const url = this.buildGraphQlURL(quietMode);
|
394
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestStart({ url, requestBody: request }));
|
396
395
|
try {
|
397
|
-
|
398
|
-
|
396
|
+
const response = await batchRequests(url, request, { 'Content-Type': `application/json; charset=${window['SERVER_ENCODING'] || 'UTF-8'}` });
|
397
|
+
response.forEach((resItem, index) => {
|
399
398
|
var _a;
|
400
399
|
if (((_a = resItem === null || resItem === void 0 ? void 0 : resItem.errors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
401
400
|
errorsResponse.push(resItem.errors.map((item) => this.normalizeErrorResponse(item, request, index)));
|
@@ -410,7 +409,7 @@ export class DataFetcher {
|
|
410
409
|
}
|
411
410
|
catch (err) {
|
412
411
|
if (!this.isHttpError(err)) {
|
413
|
-
res = err.response;
|
412
|
+
const res = err.response;
|
414
413
|
const req = err.request;
|
415
414
|
Object.entries(res).forEach(([key, val]) => {
|
416
415
|
if (val.errors) {
|
@@ -426,11 +425,11 @@ export class DataFetcher {
|
|
426
425
|
});
|
427
426
|
}
|
428
427
|
else {
|
429
|
-
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url
|
428
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
|
430
429
|
throw new ErrorException("Falha de comunicação", err.message);
|
431
430
|
}
|
432
431
|
}
|
433
|
-
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url
|
432
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
|
434
433
|
return { data: dataResponse, errors: errorsResponse, extensions: responseExtensions };
|
435
434
|
}
|
436
435
|
isHttpError(err) {
|
@@ -55,7 +55,7 @@ export default class DataUnitDataLoader {
|
|
55
55
|
PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
|
56
56
|
if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
|
57
57
|
const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
|
58
|
-
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1 });
|
58
|
+
const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
|
59
59
|
this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
|
60
60
|
.then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
|
61
61
|
.catch(reason => console.error(reason));
|
@@ -73,6 +73,11 @@ export default class DataUnitDataLoader {
|
|
73
73
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { count }));
|
74
74
|
return;
|
75
75
|
}
|
76
|
+
if (loadingInfo.needReload) {
|
77
|
+
//Ir para a primeira página, faz com que o loadData seja chamado novamente
|
78
|
+
dataUnit.gotoPage(0);
|
79
|
+
return;
|
80
|
+
}
|
76
81
|
dataUnit.updatePagination(Object.assign(Object.assign({}, dataUnitPagination), { total: count, count }));
|
77
82
|
}
|
78
83
|
static registryLoading(dataUnit, loadingInfo) {
|
@@ -97,7 +102,7 @@ export default class DataUnitDataLoader {
|
|
97
102
|
offset = 0;
|
98
103
|
}
|
99
104
|
const { total, count, loadingInProgress } = loadingInfo;
|
100
|
-
const firstRecord = count === 0 ? 0 : offset + 1;
|
105
|
+
const firstRecord = (count === 0 || pageSize === 0) ? 0 : offset + 1;
|
101
106
|
const lastRecord = offset + Math.min(pageSize, limit);
|
102
107
|
return {
|
103
108
|
total,
|
@@ -20,9 +20,23 @@ export class ArrayRepository {
|
|
20
20
|
return Promise.resolve({ result, count });
|
21
21
|
}
|
22
22
|
async distict(itemProcessor) {
|
23
|
-
const processedItems =
|
24
|
-
|
25
|
-
|
23
|
+
const processedItems = [];
|
24
|
+
let hasEmpty = false;
|
25
|
+
for (const item of this._list) {
|
26
|
+
const processedItem = itemProcessor(item);
|
27
|
+
if (processedItem == undefined) {
|
28
|
+
continue;
|
29
|
+
}
|
30
|
+
if (processedItem.value == undefined) {
|
31
|
+
hasEmpty = true;
|
32
|
+
continue;
|
33
|
+
}
|
34
|
+
processedItems.push(processedItem);
|
35
|
+
}
|
36
|
+
if (hasEmpty) {
|
37
|
+
processedItems.push({ key: "", value: null });
|
38
|
+
}
|
39
|
+
return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
|
26
40
|
}
|
27
41
|
async push(items) {
|
28
42
|
this._list.push(...items);
|
@@ -31,7 +45,14 @@ export class ArrayRepository {
|
|
31
45
|
this._list = [];
|
32
46
|
}
|
33
47
|
async delete(items) {
|
34
|
-
this._list = this._list.filter(item =>
|
48
|
+
this._list = this._list.filter(item => {
|
49
|
+
for (const removed of items) {
|
50
|
+
if (this._equalsFunction(item, removed)) {
|
51
|
+
return false;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
return true;
|
55
|
+
});
|
35
56
|
}
|
36
57
|
async update(items) {
|
37
58
|
this._list = this._list.map(existingItem => {
|
@@ -1,21 +1,12 @@
|
|
1
1
|
import { DataUnit, FieldComparator, SortMode } from "@sankhyalabs/core";
|
2
|
-
import DataUnitFetcher from "../dataunit-fetcher";
|
3
2
|
import { ArrayRepository } from "./ArrayRepository";
|
4
|
-
|
3
|
+
import { ColumnFilterManager } from "@sankhyalabs/ezui/dist/collection/components/ez-grid/utils";
|
5
4
|
export default class PreloadManager {
|
6
5
|
static setLoadingStatus(dataUnit, loadingInProgress) {
|
7
6
|
this._loadingStatus.set(dataUnit.name, loadingInProgress);
|
8
7
|
}
|
9
|
-
static isCacheEnabled(
|
10
|
-
|
11
|
-
if (dataUnitResourceId !== this.applicationResourceID) {
|
12
|
-
return false;
|
13
|
-
}
|
14
|
-
return this.getRepository(dataUnit).isOperating();
|
15
|
-
}
|
16
|
-
static getResourceId(dataUnitName) {
|
17
|
-
const dataUnitNameInfo = DataUnitFetcher.parseDataUnitName(dataUnitName);
|
18
|
-
return dataUnitNameInfo == undefined ? undefined : dataUnitNameInfo.resourceID;
|
8
|
+
static isCacheEnabled(_dataUnit) {
|
9
|
+
return true;
|
19
10
|
}
|
20
11
|
static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
|
21
12
|
PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
|
@@ -43,18 +34,33 @@ export default class PreloadManager {
|
|
43
34
|
}
|
44
35
|
static async getDistinct(dataUnit, fieldName) {
|
45
36
|
if (!PreloadManager.isCacheEnabled(dataUnit)) {
|
46
|
-
return Promise.resolve(
|
37
|
+
return Promise.resolve(ColumnFilterManager.compileDistinct(fieldName, dataUnit));
|
38
|
+
}
|
39
|
+
let filterFunction;
|
40
|
+
const request = dataUnit.getLastLoadRequest();
|
41
|
+
if (request != undefined) {
|
42
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
43
|
+
filterFunction = ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
|
47
44
|
}
|
48
45
|
return new Promise((accept, reject) => {
|
49
46
|
PreloadManager.getRepository(dataUnit).distict(record => {
|
47
|
+
if (filterFunction != undefined && !filterFunction(record)) {
|
48
|
+
return undefined;
|
49
|
+
}
|
50
50
|
const fieldValue = record[fieldName];
|
51
51
|
if (fieldValue == undefined) {
|
52
|
-
return
|
52
|
+
return { key: null, value: null };
|
53
53
|
}
|
54
54
|
const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
|
55
55
|
return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
|
56
56
|
})
|
57
|
-
.then(
|
57
|
+
.then(result => {
|
58
|
+
if (result == undefined) {
|
59
|
+
accept(undefined);
|
60
|
+
return;
|
61
|
+
}
|
62
|
+
accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
|
63
|
+
})
|
58
64
|
.catch(reason => reject(reason));
|
59
65
|
});
|
60
66
|
}
|
@@ -68,7 +74,7 @@ export default class PreloadManager {
|
|
68
74
|
return PreloadManager.loadFromCache(dataUnit, request);
|
69
75
|
}
|
70
76
|
}
|
71
|
-
//Como não vamos aproveitar o cache, ele precisa ser
|
77
|
+
//Como não vamos aproveitar o cache, ele precisa ser limpo.
|
72
78
|
PreloadManager.getRepository(dataUnit).clear().catch(() => { });
|
73
79
|
}
|
74
80
|
return loadFromServer(dataUnit, request);
|
@@ -106,39 +112,16 @@ export default class PreloadManager {
|
|
106
112
|
}
|
107
113
|
return PreloadManager._repositories.get(name);
|
108
114
|
}
|
109
|
-
static getFilterFunction(dataUnit, filters) {
|
110
|
-
if (filters != undefined && filters.length > 0) {
|
111
|
-
return record => {
|
112
|
-
for (const filter of filters) {
|
113
|
-
if (!PreloadManager.recordMatchesFilter(dataUnit, record, filter)) {
|
114
|
-
return false;
|
115
|
-
}
|
116
|
-
}
|
117
|
-
return true;
|
118
|
-
};
|
119
|
-
}
|
120
|
-
return undefined;
|
121
|
-
}
|
122
|
-
static recordMatchesFilter(dataUnit, record, columnFilter) {
|
123
|
-
const fieldValue = record[columnFilter.columnName];
|
124
|
-
for (let param of columnFilter.params) {
|
125
|
-
const paramValue = dataUnit.valueFromString(columnFilter.columnName, param.value);
|
126
|
-
if (FieldComparator.compareValues(dataUnit.getField(columnFilter.columnName), fieldValue, paramValue) === 0) {
|
127
|
-
return true;
|
128
|
-
}
|
129
|
-
}
|
130
|
-
return false;
|
131
|
-
}
|
132
115
|
static async loadFromCache(dataUnit, request) {
|
133
116
|
return new Promise((accept, reject) => {
|
134
|
-
const columnFilters =
|
117
|
+
const columnFilters = ColumnFilterManager.getColumnFilters(request.filters);
|
135
118
|
const { limit, offset, sort } = request;
|
136
119
|
PreloadManager.getRepository(dataUnit)
|
137
|
-
.load(
|
120
|
+
.load(ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
|
138
121
|
.then(loadResult => {
|
139
122
|
const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
|
140
123
|
const { count, result: records } = loadResult;
|
141
|
-
const firstRecord = count == 0 ?
|
124
|
+
const firstRecord = count == 0 ? 0 : offset + 1;
|
142
125
|
const lastRecord = offset + Math.min(records.length, limit);
|
143
126
|
const currentPage = offset / limit;
|
144
127
|
const paginationInfo = {
|
@@ -151,19 +134,6 @@ export default class PreloadManager {
|
|
151
134
|
.catch(reason => reject(reason));
|
152
135
|
});
|
153
136
|
}
|
154
|
-
static getColumnFilters(filters) {
|
155
|
-
const columnFilters = new Map();
|
156
|
-
if (filters == undefined || filters.length == 0) {
|
157
|
-
return columnFilters;
|
158
|
-
}
|
159
|
-
filters.forEach(filter => {
|
160
|
-
const match = COLUMN_FILTER_PATTERN.exec(filter.name);
|
161
|
-
if (match) {
|
162
|
-
columnFilters.set(filter.name, Object.assign({ columnName: match[1] }, filter));
|
163
|
-
}
|
164
|
-
});
|
165
|
-
return columnFilters;
|
166
|
-
}
|
167
137
|
}
|
168
138
|
PreloadManager._repositories = new Map();
|
169
139
|
PreloadManager._loadingStatus = new Map();
|
package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js
CHANGED
@@ -11,17 +11,36 @@ export class DatasetStrategy {
|
|
11
11
|
return Promise.resolve({ records: [], loadingInfo });
|
12
12
|
}
|
13
13
|
try {
|
14
|
+
const localSorting = [];
|
15
|
+
const serverSorting = [];
|
16
|
+
if (request.sort != undefined) {
|
17
|
+
for (const sort of request.sort) {
|
18
|
+
const descriptor = dataUnit.getField(sort.field);
|
19
|
+
const local = descriptor != undefined
|
20
|
+
&& descriptor.properties != undefined
|
21
|
+
&& descriptor.properties.calculated === "true";
|
22
|
+
if (local) {
|
23
|
+
localSorting.push(sort);
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
serverSorting.push(sort);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
14
30
|
const fields = this.getFieldsList(dataUnit);
|
15
31
|
const serviceName = "DatasetSP.loadRecords";
|
16
|
-
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo);
|
17
|
-
const {
|
32
|
+
const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting);
|
33
|
+
const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
|
34
|
+
const { result: responseRecords, pagerID: pagerId } = await DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
|
18
35
|
const records = this.processRecords(dataUnit, fields, responseRecords);
|
19
36
|
const loadingInProgress = pagerId != undefined;
|
20
37
|
const count = loadingInfo.count + records.length;
|
38
|
+
const needReload = !loadingInProgress && localSorting.length > 0;
|
21
39
|
return Promise.resolve({
|
22
40
|
records,
|
23
41
|
loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
|
24
|
-
loadingInProgress, total: loadingInProgress ? undefined : count, count
|
42
|
+
loadingInProgress, total: loadingInProgress ? undefined : count, count,
|
43
|
+
needReload })
|
25
44
|
});
|
26
45
|
}
|
27
46
|
catch (error) {
|
@@ -31,7 +50,10 @@ export class DatasetStrategy {
|
|
31
50
|
}
|
32
51
|
getFieldsList(dataUnit) {
|
33
52
|
let fields = ["__record__id__", "__record__label__"];
|
34
|
-
dataUnit.metadata.fields.forEach(descriptor => {
|
53
|
+
dataUnit.metadata.fields.forEach((descriptor) => {
|
54
|
+
if (descriptor.standAlone) {
|
55
|
+
return;
|
56
|
+
}
|
35
57
|
fields = fields.concat(this.getFieldNames(descriptor));
|
36
58
|
});
|
37
59
|
return fields;
|
@@ -43,7 +65,7 @@ export class DatasetStrategy {
|
|
43
65
|
}
|
44
66
|
return [descriptor.name, descriptionField];
|
45
67
|
}
|
46
|
-
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo) {
|
68
|
+
buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, sorting) {
|
47
69
|
const dataSetID = dataUnit.dataUnitId;
|
48
70
|
const dataUnitName = dataUnit.name;
|
49
71
|
const entityName = DataUnitFetcher.parseDataUnitName(dataUnitName).entityName;
|
@@ -64,13 +86,13 @@ export class DatasetStrategy {
|
|
64
86
|
tryJoinedFields: true,
|
65
87
|
parallelLoader: true,
|
66
88
|
crudListener: "br.com.sankhya.modelcore.dataset.DataUnitDatasetAdapter",
|
67
|
-
txProperties: this.getTxProperties(dataUnitName, request),
|
89
|
+
txProperties: this.getTxProperties(dataUnitName, request, sorting),
|
68
90
|
useDefaultRowsLimit: false
|
69
91
|
}
|
70
92
|
};
|
71
93
|
return JSON.stringify(requestBody);
|
72
94
|
}
|
73
|
-
getTxProperties(dataUnitName, request) {
|
95
|
+
getTxProperties(dataUnitName, request, sorting) {
|
74
96
|
const txProperties = {
|
75
97
|
"__DATA_UNIT_ADAPTER__[dataUnitName]": dataUnitName
|
76
98
|
};
|
@@ -78,7 +100,6 @@ export class DatasetStrategy {
|
|
78
100
|
if (serverSideFilters.length !== 0) {
|
79
101
|
txProperties["__DATA_UNIT_ADAPTER__[criteria]"] = JSON.stringify(serverSideFilters);
|
80
102
|
}
|
81
|
-
const sorting = request.sort;
|
82
103
|
if (sorting != undefined && sorting.length !== 0) {
|
83
104
|
txProperties["__DATA_UNIT_ADAPTER__[sorting]"] = JSON.stringify(sorting);
|
84
105
|
}
|
@@ -91,6 +91,9 @@ export default class PersonalizedFilterFetcher {
|
|
91
91
|
});
|
92
92
|
}
|
93
93
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
94
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
95
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
96
|
+
}
|
94
97
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
95
98
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
96
99
|
return new Promise((resolve, reject) => {
|
@@ -23,5 +23,12 @@ export default class Workspace {
|
|
23
23
|
var _a;
|
24
24
|
(_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.setScreenToUseOldLayout();
|
25
25
|
}
|
26
|
+
static applicationClick() {
|
27
|
+
var _a, _b;
|
28
|
+
if (!((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.applicationClick)) {
|
29
|
+
return;
|
30
|
+
}
|
31
|
+
(_b = window["workspace"]) === null || _b === void 0 ? void 0 : _b.applicationClick();
|
32
|
+
}
|
26
33
|
}
|
27
34
|
Workspace.resourceID = (_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID;
|
@@ -271,6 +271,9 @@ class PersonalizedFilterFetcher {
|
|
271
271
|
});
|
272
272
|
}
|
273
273
|
async savePersonalizedFilter(personalizedFilter, resourceID, configName) {
|
274
|
+
if (!personalizedFilter || Object.keys(personalizedFilter).length == 0) {
|
275
|
+
return Promise.reject(new Error("personalizedFilter não pode ser vazio"));
|
276
|
+
}
|
274
277
|
let personalizedFilterParsed = JSON.parse(JSON.stringify(personalizedFilter));
|
275
278
|
personalizedFilterParsed.assistent = JSON.stringify(personalizedFilterParsed.assistent);
|
276
279
|
return new Promise((resolve, reject) => {
|
@@ -6616,16 +6616,16 @@ class DataFetcher {
|
|
6616
6616
|
if (this.ready) {
|
6617
6617
|
return new Promise(async (resolve, reject) => {
|
6618
6618
|
let query = this.getQueryTemplate(req);
|
6619
|
-
const res = await this.
|
6619
|
+
const res = await this.fecthGraphQL([{ document: query, variables: req.values }], quietMode);
|
6620
6620
|
if (res.errors.length > 0) {
|
6621
|
-
if (!this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject)) {
|
6621
|
+
if (!(await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject))) {
|
6622
6622
|
const error = this.processGraphQlErrorInfo(res.errors);
|
6623
6623
|
reject(error);
|
6624
6624
|
}
|
6625
6625
|
}
|
6626
6626
|
else {
|
6627
6627
|
resolve(res.data[0][reqKey]);
|
6628
|
-
this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
|
6628
|
+
await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
|
6629
6629
|
}
|
6630
6630
|
});
|
6631
6631
|
}
|
@@ -6639,7 +6639,7 @@ class DataFetcher {
|
|
6639
6639
|
resolveURL() {
|
6640
6640
|
return UrlUtils.getUrlBase();
|
6641
6641
|
}
|
6642
|
-
proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
|
6642
|
+
async proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
|
6643
6643
|
if (extensions == undefined) {
|
6644
6644
|
return false;
|
6645
6645
|
}
|
@@ -6654,8 +6654,8 @@ class DataFetcher {
|
|
6654
6654
|
throw new WarningException("ClientEvent não registrado", `Ocorreu o client event ${id} porém não há client event registrado na aplicação.`);
|
6655
6655
|
}
|
6656
6656
|
const handlers = DataFetcher.clientEventsByID.get(id);
|
6657
|
-
handlers.forEach(handler => {
|
6658
|
-
handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
|
6657
|
+
handlers.forEach(async (handler) => {
|
6658
|
+
await handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
|
6659
6659
|
});
|
6660
6660
|
}
|
6661
6661
|
return Object.keys(clientEvents).length > 0;
|
@@ -6729,9 +6729,9 @@ class DataFetcher {
|
|
6729
6729
|
const urlParams = UrlUtils.getQueryParams(location.search);
|
6730
6730
|
return {
|
6731
6731
|
baseUrl: `${this.resolveURL()}/${module}/service.sbr`,
|
6732
|
-
appName: "SankhyaBlocks",
|
6732
|
+
appName: window['APPLICATION_NAME'] || "SankhyaBlocks",
|
6733
6733
|
mgeSession: `${window['mgeSession'] || urlParams.get("mgeSession")}`,
|
6734
|
-
globalID:
|
6734
|
+
globalID: window['GLOBALID'] || StringUtils.generateUUID(),
|
6735
6735
|
resourceID: (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID))
|
6736
6736
|
};
|
6737
6737
|
}
|
@@ -6848,17 +6848,13 @@ class DataFetcher {
|
|
6848
6848
|
async executePendingRequest(watingRequestsById) {
|
6849
6849
|
const requestsBatch = [];
|
6850
6850
|
let quietMode = true;
|
6851
|
-
watingRequestsById.forEach(
|
6852
|
-
|
6851
|
+
watingRequestsById.forEach((waitingReq) => {
|
6852
|
+
const query = this.getQueryTemplate(waitingReq.request);
|
6853
6853
|
requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
|
6854
6854
|
quietMode = quietMode && waitingReq.quietMode;
|
6855
6855
|
});
|
6856
|
-
|
6857
|
-
|
6858
|
-
let errorsResponse = [];
|
6859
|
-
res = await this.fecthGrapql(requestsBatch, quietMode);
|
6860
|
-
dataResponse = res.data;
|
6861
|
-
errorsResponse = res.errors;
|
6856
|
+
const response = await this.fecthGraphQL(requestsBatch, quietMode);
|
6857
|
+
const { data: dataResponse, errors: errorsResponse, extensions } = response;
|
6862
6858
|
//Reject promises with errors from query
|
6863
6859
|
errorsResponse.forEach((errorResponse) => {
|
6864
6860
|
Object.entries(errorResponse).forEach(([_key, val]) => {
|
@@ -6868,29 +6864,33 @@ class DataFetcher {
|
|
6868
6864
|
});
|
6869
6865
|
//Resolve promises with data from query
|
6870
6866
|
dataResponse.forEach((data) => {
|
6871
|
-
Object.entries(data).forEach(([key, val]) => {
|
6872
|
-
|
6873
|
-
|
6867
|
+
Object.entries(data).forEach(async ([key, val]) => {
|
6868
|
+
const waitingRequest = watingRequestsById.get(key);
|
6869
|
+
await this.proccesGraphQLClientEvents(extensions, waitingRequest.request, waitingRequest.resolve, waitingRequest.reject);
|
6870
|
+
((waitingRequest === null || waitingRequest === void 0 ? void 0 : waitingRequest.resolve) || Promise.resolve)(val);
|
6874
6871
|
});
|
6875
6872
|
});
|
6876
6873
|
}
|
6877
|
-
|
6878
|
-
let res = undefined;
|
6879
|
-
let dataResponse = [];
|
6880
|
-
let errorsResponse = [];
|
6881
|
-
let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
|
6882
|
-
const responseExtensions = [];
|
6874
|
+
buildGraphQlURL(quietMode) {
|
6883
6875
|
const mgeSession = window["mgeSession"];
|
6884
|
-
|
6876
|
+
let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
|
6877
|
+
if (mgeSession) {
|
6885
6878
|
url += `?mgeSession=${mgeSession}`;
|
6886
6879
|
}
|
6887
6880
|
if (quietMode) {
|
6888
6881
|
url += `${url.indexOf("?") > -1 ? "&" : "?"}quietMode=true`;
|
6889
6882
|
}
|
6890
|
-
|
6883
|
+
return url;
|
6884
|
+
}
|
6885
|
+
async fecthGraphQL(request, quietMode) {
|
6886
|
+
const dataResponse = [];
|
6887
|
+
const errorsResponse = [];
|
6888
|
+
const responseExtensions = [];
|
6889
|
+
const url = this.buildGraphQlURL(quietMode);
|
6890
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestStart({ url, requestBody: request }));
|
6891
6891
|
try {
|
6892
|
-
|
6893
|
-
|
6892
|
+
const response = await dist.batchRequests(url, request, { 'Content-Type': `application/json; charset=${window['SERVER_ENCODING'] || 'UTF-8'}` });
|
6893
|
+
response.forEach((resItem, index) => {
|
6894
6894
|
var _a;
|
6895
6895
|
if (((_a = resItem === null || resItem === void 0 ? void 0 : resItem.errors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
6896
6896
|
errorsResponse.push(resItem.errors.map((item) => this.normalizeErrorResponse(item, request, index)));
|
@@ -6905,7 +6905,7 @@ class DataFetcher {
|
|
6905
6905
|
}
|
6906
6906
|
catch (err) {
|
6907
6907
|
if (!this.isHttpError(err)) {
|
6908
|
-
res = err.response;
|
6908
|
+
const res = err.response;
|
6909
6909
|
const req = err.request;
|
6910
6910
|
Object.entries(res).forEach(([key, val]) => {
|
6911
6911
|
if (val.errors) {
|
@@ -6921,11 +6921,11 @@ class DataFetcher {
|
|
6921
6921
|
});
|
6922
6922
|
}
|
6923
6923
|
else {
|
6924
|
-
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url
|
6924
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
|
6925
6925
|
throw new ErrorException("Falha de comunicação", err.message);
|
6926
6926
|
}
|
6927
6927
|
}
|
6928
|
-
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url
|
6928
|
+
DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
|
6929
6929
|
return { data: dataResponse, errors: errorsResponse, extensions: responseExtensions };
|
6930
6930
|
}
|
6931
6931
|
isHttpError(err) {
|