@sankhyalabs/sankhyablocks 8.8.0-rc.1 → 8.8.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/cjs/{ConfigStorage-a97ca159.js → ConfigStorage-908ce5bc.js} +2 -2
  2. package/dist/cjs/{DataFetcher-2a99283c.js → DataFetcher-713f0749.js} +32 -32
  3. package/dist/cjs/PreloadManager-e26d237f.js +224 -0
  4. package/dist/cjs/{SnkFormConfigManager-f641f502.js → SnkFormConfigManager-793ade39.js} +2 -2
  5. package/dist/cjs/{SnkMultiSelectionListDataSource-56db34ee.js → SnkMultiSelectionListDataSource-d74d2336.js} +10 -6
  6. package/dist/cjs/{auth-fetcher-78231356.js → auth-fetcher-555ff856.js} +1 -1
  7. package/dist/cjs/{dataunit-fetcher-4f7d4ee7.js → dataunit-fetcher-66c0b7af.js} +48 -248
  8. package/dist/cjs/{form-config-fetcher-a322a522.js → form-config-fetcher-17775a75.js} +1 -1
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/{pesquisa-fetcher-7ef61508.js → pesquisa-fetcher-34922b83.js} +1 -1
  11. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  12. package/dist/cjs/snk-actions-button.cjs.entry.js +93 -86
  13. package/dist/cjs/snk-application.cjs.entry.js +16 -6
  14. package/dist/cjs/snk-attach.cjs.entry.js +4 -2
  15. package/dist/cjs/snk-crud.cjs.entry.js +7 -5
  16. package/dist/cjs/snk-data-exporter.cjs.entry.js +1 -1
  17. package/dist/cjs/snk-detail-view.cjs.entry.js +24 -8
  18. package/dist/cjs/snk-filter-bar.cjs.entry.js +19 -4
  19. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  20. package/dist/cjs/snk-form-config.cjs.entry.js +2 -2
  21. package/dist/cjs/snk-form.cjs.entry.js +4 -4
  22. package/dist/cjs/snk-grid-config.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-grid.cjs.entry.js +8 -7
  24. package/dist/cjs/{snk-guides-viewer-aab80f66.js → snk-guides-viewer-2317c71e.js} +78 -5
  25. package/dist/cjs/snk-guides-viewer.cjs.entry.js +9 -7
  26. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  27. package/dist/cjs/snk-simple-crud.cjs.entry.js +8 -5
  28. package/dist/collection/components/snk-actions-button/actions/executor/java.executor.js +2 -2
  29. package/dist/collection/components/snk-actions-button/actions/executor/javascript.executor.js +2 -2
  30. package/dist/collection/components/snk-actions-button/actions/executor/procedure.executor.js +2 -2
  31. package/dist/collection/components/snk-actions-button/clientEvent/index.js +81 -76
  32. package/dist/collection/components/snk-application/snk-application.js +1 -0
  33. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +18 -1
  34. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +80 -8
  35. package/dist/collection/components/snk-filter-bar/filter-item/dataunitfilter/data-unit-filter-builder.js +17 -2
  36. package/dist/collection/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.js +5 -5
  37. package/dist/collection/components/snk-grid/snk-grid.js +1 -0
  38. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +33 -34
  39. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +7 -2
  40. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/ArrayRepository.js +25 -4
  41. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.js +25 -55
  42. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/dataunit-fetcher.js +1 -0
  43. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +29 -8
  44. package/dist/collection/lib/workspace/workspace.js +7 -0
  45. package/dist/components/DataFetcher.js +32 -32
  46. package/dist/components/SnkMultiSelectionListDataSource.js +5 -5
  47. package/dist/components/dataunit-fetcher.js +87 -68
  48. package/dist/components/snk-actions-button2.js +87 -82
  49. package/dist/components/snk-application2.js +8 -0
  50. package/dist/components/snk-detail-view2.js +88 -2
  51. package/dist/components/snk-filter-bar2.js +17 -2
  52. package/dist/components/snk-grid2.js +1 -0
  53. package/dist/esm/{ConfigStorage-26f89143.js → ConfigStorage-48648d45.js} +2 -2
  54. package/dist/esm/{DataFetcher-90e91631.js → DataFetcher-79f78222.js} +32 -32
  55. package/dist/esm/PreloadManager-8826b96a.js +222 -0
  56. package/dist/esm/{SnkFormConfigManager-18948123.js → SnkFormConfigManager-3c15f319.js} +2 -2
  57. package/dist/esm/{SnkMultiSelectionListDataSource-b9410c72.js → SnkMultiSelectionListDataSource-27572f47.js} +6 -6
  58. package/dist/esm/{auth-fetcher-a8c8ee7e.js → auth-fetcher-e260d0cd.js} +1 -1
  59. package/dist/esm/{dataunit-fetcher-1c2ccae2.js → dataunit-fetcher-831feb12.js} +41 -240
  60. package/dist/esm/{form-config-fetcher-7c3b6273.js → form-config-fetcher-e1603e66.js} +1 -1
  61. package/dist/esm/loader.js +1 -1
  62. package/dist/esm/{pesquisa-fetcher-90d6853b.js → pesquisa-fetcher-8e922c9d.js} +1 -1
  63. package/dist/esm/sankhyablocks.js +1 -1
  64. package/dist/esm/snk-actions-button.entry.js +93 -86
  65. package/dist/esm/snk-application.entry.js +16 -6
  66. package/dist/esm/snk-attach.entry.js +4 -2
  67. package/dist/esm/snk-crud.entry.js +7 -5
  68. package/dist/esm/snk-data-exporter.entry.js +1 -1
  69. package/dist/esm/snk-detail-view.entry.js +24 -8
  70. package/dist/esm/snk-filter-bar.entry.js +20 -5
  71. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  72. package/dist/esm/snk-form-config.entry.js +2 -2
  73. package/dist/esm/snk-form.entry.js +4 -4
  74. package/dist/esm/snk-grid-config.entry.js +3 -3
  75. package/dist/esm/snk-grid.entry.js +8 -7
  76. package/dist/esm/{snk-guides-viewer-62b0fa69.js → snk-guides-viewer-3ba271c1.js} +79 -6
  77. package/dist/esm/snk-guides-viewer.entry.js +9 -7
  78. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  79. package/dist/esm/snk-simple-crud.entry.js +8 -5
  80. package/dist/sankhyablocks/p-25882572.entry.js +1 -0
  81. package/dist/sankhyablocks/{p-910af03c.js → p-2b39abbc.js} +1 -1
  82. package/dist/sankhyablocks/{p-d563e451.entry.js → p-2ecd9a19.entry.js} +1 -1
  83. package/dist/sankhyablocks/p-3926383d.entry.js +1 -0
  84. package/dist/sankhyablocks/{p-68fbd480.entry.js → p-395567f3.entry.js} +1 -1
  85. package/dist/sankhyablocks/p-3c4f0354.js +1 -0
  86. package/dist/sankhyablocks/p-3ccb321d.entry.js +1 -0
  87. package/dist/sankhyablocks/{p-240f5892.js → p-41d156dd.js} +1 -1
  88. package/dist/sankhyablocks/{p-d47bbee3.js → p-4651b43f.js} +1 -1
  89. package/dist/sankhyablocks/p-57543969.js +1 -0
  90. package/dist/sankhyablocks/p-5f6113c8.js +60 -0
  91. package/dist/sankhyablocks/{p-57550ddc.entry.js → p-747043a5.entry.js} +1 -1
  92. package/dist/sankhyablocks/p-77756526.js +1 -0
  93. package/dist/sankhyablocks/p-8015cbfb.js +1 -0
  94. package/dist/sankhyablocks/{p-e74e2153.entry.js → p-80692cbd.entry.js} +1 -1
  95. package/dist/sankhyablocks/p-a1cce4f5.entry.js +1 -0
  96. package/dist/sankhyablocks/{p-ebfa6460.entry.js → p-abff11ef.entry.js} +1 -1
  97. package/dist/sankhyablocks/{p-8652f90b.entry.js → p-afacdce6.entry.js} +1 -1
  98. package/dist/sankhyablocks/p-b86bee20.entry.js +11 -0
  99. package/dist/sankhyablocks/{p-5d51bff4.js → p-c9399ce6.js} +1 -1
  100. package/dist/sankhyablocks/p-d0b36421.js +1 -0
  101. package/dist/sankhyablocks/p-eb25c85f.entry.js +1 -0
  102. package/dist/sankhyablocks/p-f07a5363.entry.js +1 -0
  103. package/dist/sankhyablocks/p-f1743d68.entry.js +1 -0
  104. package/dist/sankhyablocks/p-f2e798f1.entry.js +1 -0
  105. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  106. package/dist/types/components/snk-actions-button/clientEvent/index.d.ts +1 -1
  107. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +3 -0
  108. package/dist/types/components/snk-crud/subcomponents/snk-guides-viewer.d.ts +22 -11
  109. package/dist/types/components/snk-grid/filtercolumn/SnkMultiSelectionListDataSource.d.ts +1 -0
  110. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +5 -2
  111. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager.d.ts +3 -6
  112. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/ILoadingInfo.d.ts +2 -0
  113. package/dist/types/lib/workspace/workspace.d.ts +1 -0
  114. package/package.json +1 -1
  115. package/dist/sankhyablocks/p-193971ad.js +0 -1
  116. package/dist/sankhyablocks/p-19cbe6e2.entry.js +0 -11
  117. package/dist/sankhyablocks/p-2c7c1323.entry.js +0 -1
  118. package/dist/sankhyablocks/p-3253e7f2.entry.js +0 -1
  119. package/dist/sankhyablocks/p-5dd52ec5.entry.js +0 -1
  120. package/dist/sankhyablocks/p-6541f0df.js +0 -1
  121. package/dist/sankhyablocks/p-992a9d0f.js +0 -1
  122. package/dist/sankhyablocks/p-acb1374c.entry.js +0 -1
  123. package/dist/sankhyablocks/p-b36053da.entry.js +0 -1
  124. package/dist/sankhyablocks/p-b481e5ad.js +0 -1
  125. package/dist/sankhyablocks/p-d264da22.entry.js +0 -1
  126. package/dist/sankhyablocks/p-d56b65e3.entry.js +0 -1
  127. package/dist/sankhyablocks/p-e473ca13.entry.js +0 -1
  128. package/dist/sankhyablocks/p-e86d4a53.js +0 -59
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- const formConfigFetcher = require('./form-config-fetcher-a322a522.js');
3
+ const formConfigFetcher = require('./form-config-fetcher-17775a75.js');
4
4
  const filterItemType_enum = require('./filter-item-type.enum-aa823a00.js');
5
5
  const core = require('@sankhyalabs/core');
6
- const DataFetcher = require('./DataFetcher-2a99283c.js');
6
+ const DataFetcher = require('./DataFetcher-713f0749.js');
7
7
 
8
8
  class GridConfigFetcher extends formConfigFetcher.ResourceFetcher {
9
9
  constructor() {
@@ -6618,16 +6618,16 @@ class DataFetcher {
6618
6618
  if (this.ready) {
6619
6619
  return new Promise(async (resolve, reject) => {
6620
6620
  let query = this.getQueryTemplate(req);
6621
- const res = await this.fecthGrapql([{ document: query, variables: req.values }], quietMode);
6621
+ const res = await this.fecthGraphQL([{ document: query, variables: req.values }], quietMode);
6622
6622
  if (res.errors.length > 0) {
6623
- if (!this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject)) {
6623
+ if (!(await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject))) {
6624
6624
  const error = this.processGraphQlErrorInfo(res.errors);
6625
6625
  reject(error);
6626
6626
  }
6627
6627
  }
6628
6628
  else {
6629
6629
  resolve(res.data[0][reqKey]);
6630
- this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
6630
+ await this.proccesGraphQLClientEvents(res === null || res === void 0 ? void 0 : res.extensions, req, resolve, reject);
6631
6631
  }
6632
6632
  });
6633
6633
  }
@@ -6641,7 +6641,7 @@ class DataFetcher {
6641
6641
  resolveURL() {
6642
6642
  return UrlUtils.getUrlBase();
6643
6643
  }
6644
- proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
6644
+ async proccesGraphQLClientEvents(extensions, originalRequest, resolve, reject) {
6645
6645
  if (extensions == undefined) {
6646
6646
  return false;
6647
6647
  }
@@ -6656,8 +6656,8 @@ class DataFetcher {
6656
6656
  throw new core.WarningException("ClientEvent não registrado", `Ocorreu o client event ${id} porém não há client event registrado na aplicação.`);
6657
6657
  }
6658
6658
  const handlers = DataFetcher.clientEventsByID.get(id);
6659
- handlers.forEach(handler => {
6660
- handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
6659
+ handlers.forEach(async (handler) => {
6660
+ await handler({ id, content: JSON.parse(clientEvents[id]) }, new GraphQLRecaller(originalRequest, resolve, reject));
6661
6661
  });
6662
6662
  }
6663
6663
  return Object.keys(clientEvents).length > 0;
@@ -6731,9 +6731,9 @@ class DataFetcher {
6731
6731
  const urlParams = UrlUtils.getQueryParams(location.search);
6732
6732
  return {
6733
6733
  baseUrl: `${this.resolveURL()}/${module}/service.sbr`,
6734
- appName: "SankhyaBlocks",
6734
+ appName: window['APPLICATION_NAME'] || "SankhyaBlocks",
6735
6735
  mgeSession: `${window['mgeSession'] || urlParams.get("mgeSession")}`,
6736
- globalID: "85C0093DFA240EAB699B4E47A10215BD",
6736
+ globalID: window['GLOBALID'] || core.StringUtils.generateUUID(),
6737
6737
  resourceID: (window["resourceID"] || ((_a = window["workspace"]) === null || _a === void 0 ? void 0 : _a.resourceID))
6738
6738
  };
6739
6739
  }
@@ -6850,17 +6850,13 @@ class DataFetcher {
6850
6850
  async executePendingRequest(watingRequestsById) {
6851
6851
  const requestsBatch = [];
6852
6852
  let quietMode = true;
6853
- watingRequestsById.forEach(async (waitingReq) => {
6854
- let query = this.getQueryTemplate(waitingReq.request);
6853
+ watingRequestsById.forEach((waitingReq) => {
6854
+ const query = this.getQueryTemplate(waitingReq.request);
6855
6855
  requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
6856
6856
  quietMode = quietMode && waitingReq.quietMode;
6857
6857
  });
6858
- let res = undefined;
6859
- let dataResponse = [];
6860
- let errorsResponse = [];
6861
- res = await this.fecthGrapql(requestsBatch, quietMode);
6862
- dataResponse = res.data;
6863
- errorsResponse = res.errors;
6858
+ const response = await this.fecthGraphQL(requestsBatch, quietMode);
6859
+ const { data: dataResponse, errors: errorsResponse, extensions } = response;
6864
6860
  //Reject promises with errors from query
6865
6861
  errorsResponse.forEach((errorResponse) => {
6866
6862
  Object.entries(errorResponse).forEach(([_key, val]) => {
@@ -6870,29 +6866,33 @@ class DataFetcher {
6870
6866
  });
6871
6867
  //Resolve promises with data from query
6872
6868
  dataResponse.forEach((data) => {
6873
- Object.entries(data).forEach(([key, val]) => {
6874
- var _a;
6875
- (((_a = watingRequestsById.get(key)) === null || _a === void 0 ? void 0 : _a.resolve) || Promise.resolve)(val);
6869
+ Object.entries(data).forEach(async ([key, val]) => {
6870
+ const waitingRequest = watingRequestsById.get(key);
6871
+ await this.proccesGraphQLClientEvents(extensions, waitingRequest.request, waitingRequest.resolve, waitingRequest.reject);
6872
+ ((waitingRequest === null || waitingRequest === void 0 ? void 0 : waitingRequest.resolve) || Promise.resolve)(val);
6876
6873
  });
6877
6874
  });
6878
6875
  }
6879
- async fecthGrapql(request, quietMode) {
6880
- let res = undefined;
6881
- let dataResponse = [];
6882
- let errorsResponse = [];
6883
- let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
6884
- const responseExtensions = [];
6876
+ buildGraphQlURL(quietMode) {
6885
6877
  const mgeSession = window["mgeSession"];
6886
- if (mgeSession != undefined) {
6878
+ let url = `${this.resolveURL() + DataFetcher.getGraphQLPath()}`;
6879
+ if (mgeSession) {
6887
6880
  url += `?mgeSession=${mgeSession}`;
6888
6881
  }
6889
6882
  if (quietMode) {
6890
6883
  url += `${url.indexOf("?") > -1 ? "&" : "?"}quietMode=true`;
6891
6884
  }
6892
- DataFetcher.requestListener.forEach(listener => listener.onRequestStart({ url: url, requestBody: request }));
6885
+ return url;
6886
+ }
6887
+ async fecthGraphQL(request, quietMode) {
6888
+ const dataResponse = [];
6889
+ const errorsResponse = [];
6890
+ const responseExtensions = [];
6891
+ const url = this.buildGraphQlURL(quietMode);
6892
+ DataFetcher.requestListener.forEach(listener => listener.onRequestStart({ url, requestBody: request }));
6893
6893
  try {
6894
- res = await dist.batchRequests(url, request, { 'Content-Type': `application/json; charset=${window['SERVER_ENCODING'] || 'UTF-8'}` });
6895
- res.forEach((resItem, index) => {
6894
+ const response = await dist.batchRequests(url, request, { 'Content-Type': `application/json; charset=${window['SERVER_ENCODING'] || 'UTF-8'}` });
6895
+ response.forEach((resItem, index) => {
6896
6896
  var _a;
6897
6897
  if (((_a = resItem === null || resItem === void 0 ? void 0 : resItem.errors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
6898
6898
  errorsResponse.push(resItem.errors.map((item) => this.normalizeErrorResponse(item, request, index)));
@@ -6907,7 +6907,7 @@ class DataFetcher {
6907
6907
  }
6908
6908
  catch (err) {
6909
6909
  if (!this.isHttpError(err)) {
6910
- res = err.response;
6910
+ const res = err.response;
6911
6911
  const req = err.request;
6912
6912
  Object.entries(res).forEach(([key, val]) => {
6913
6913
  if (val.errors) {
@@ -6923,11 +6923,11 @@ class DataFetcher {
6923
6923
  });
6924
6924
  }
6925
6925
  else {
6926
- DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url: url, requestBody: request }));
6926
+ DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
6927
6927
  throw new core.ErrorException("Falha de comunicação", err.message);
6928
6928
  }
6929
6929
  }
6930
- DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url: url, requestBody: request }));
6930
+ DataFetcher.requestListener.forEach(listener => listener.onRequestEnd({ url, requestBody: request }));
6931
6931
  return { data: dataResponse, errors: errorsResponse, extensions: responseExtensions };
6932
6932
  }
6933
6933
  isHttpError(err) {
@@ -0,0 +1,224 @@
1
+ 'use strict';
2
+
3
+ const core = require('@sankhyalabs/core');
4
+ const utils = require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
5
+
6
+ class ArrayRepository {
7
+ constructor(equalsFunction) {
8
+ this._list = [];
9
+ this._equalsFunction = equalsFunction;
10
+ }
11
+ async load(filterFunction, sortingFunction, offset, limit) {
12
+ let result = [].concat(this._list);
13
+ if (filterFunction != undefined) {
14
+ result = this._list.filter(item => filterFunction(item));
15
+ }
16
+ if (sortingFunction != undefined) {
17
+ result = result.sort(sortingFunction);
18
+ }
19
+ const count = result.length;
20
+ if (limit != undefined) {
21
+ const start = offset || 0;
22
+ const end = limit ? start + limit : result.length;
23
+ result = result.slice(start, end);
24
+ }
25
+ return Promise.resolve({ result, count });
26
+ }
27
+ async distict(itemProcessor) {
28
+ const processedItems = [];
29
+ let hasEmpty = false;
30
+ for (const item of this._list) {
31
+ const processedItem = itemProcessor(item);
32
+ if (processedItem == undefined) {
33
+ continue;
34
+ }
35
+ if (processedItem.value == undefined) {
36
+ hasEmpty = true;
37
+ continue;
38
+ }
39
+ processedItems.push(processedItem);
40
+ }
41
+ if (hasEmpty) {
42
+ processedItems.push({ key: "", value: null });
43
+ }
44
+ return Promise.resolve(new Map(processedItems.map(item => [item.key, item.value])));
45
+ }
46
+ async push(items) {
47
+ this._list.push(...items);
48
+ }
49
+ async clear() {
50
+ this._list = [];
51
+ }
52
+ async delete(items) {
53
+ this._list = this._list.filter(item => {
54
+ for (const removed of items) {
55
+ if (this._equalsFunction(item, removed)) {
56
+ return false;
57
+ }
58
+ }
59
+ return true;
60
+ });
61
+ }
62
+ async update(items) {
63
+ this._list = this._list.map(existingItem => {
64
+ const newItem = items.find(newItem => this._equalsFunction(existingItem, newItem));
65
+ return newItem == undefined ? existingItem : newItem;
66
+ });
67
+ }
68
+ async insert(itemReference, items) {
69
+ const itemPosition = this._list.indexOf(itemReference);
70
+ if (itemPosition == -1) {
71
+ this._list.push(...items);
72
+ return;
73
+ }
74
+ this._list = this._list.slice(0, itemPosition).concat(items).concat(this._list.slice(itemPosition));
75
+ }
76
+ isOperating() {
77
+ return true;
78
+ }
79
+ async isEmpty() {
80
+ return Promise.resolve(this._list.length === 0);
81
+ }
82
+ async count() {
83
+ return Promise.resolve(this._list.length);
84
+ }
85
+ }
86
+
87
+ class PreloadManager {
88
+ static setLoadingStatus(dataUnit, loadingInProgress) {
89
+ this._loadingStatus.set(dataUnit.name, loadingInProgress);
90
+ }
91
+ static isCacheEnabled(_dataUnit) {
92
+ return true;
93
+ }
94
+ static cacheRecords(dataUnit, records, resetDatabase, loadingInProgress) {
95
+ PreloadManager.setLoadingStatus(dataUnit, loadingInProgress);
96
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
97
+ this.getRepository(dataUnit).push(records);
98
+ }
99
+ else {
100
+ if (resetDatabase) {
101
+ this._repositories.delete(dataUnit.name);
102
+ }
103
+ }
104
+ }
105
+ static getSortingFunction(dataUnit, sorting) {
106
+ if (sorting == undefined || sorting.length == 0) {
107
+ return undefined;
108
+ }
109
+ return (recordA, recordB) => {
110
+ for (const sort of sorting) {
111
+ const result = core.FieldComparator.compare(dataUnit.getField(sort.field), recordA, recordB, sort.mode === core.SortMode.ASC);
112
+ if (result != 0) {
113
+ return result;
114
+ }
115
+ }
116
+ };
117
+ }
118
+ static async getDistinct(dataUnit, fieldName) {
119
+ if (!PreloadManager.isCacheEnabled(dataUnit)) {
120
+ return Promise.resolve(utils.ColumnFilterManager.compileDistinct(fieldName, dataUnit));
121
+ }
122
+ let filterFunction;
123
+ const request = dataUnit.getLastLoadRequest();
124
+ if (request != undefined) {
125
+ const columnFilters = utils.ColumnFilterManager.getColumnFilters(request.filters);
126
+ filterFunction = utils.ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values()));
127
+ }
128
+ return new Promise((accept, reject) => {
129
+ PreloadManager.getRepository(dataUnit).distict(record => {
130
+ if (filterFunction != undefined && !filterFunction(record)) {
131
+ return undefined;
132
+ }
133
+ const fieldValue = record[fieldName];
134
+ if (fieldValue == undefined) {
135
+ return { key: null, value: null };
136
+ }
137
+ const value = fieldValue.value != undefined ? fieldValue.value : fieldValue;
138
+ return { key: dataUnit.getFormattedValue(fieldName, fieldValue), value };
139
+ })
140
+ .then(result => {
141
+ if (result == undefined) {
142
+ accept(undefined);
143
+ return;
144
+ }
145
+ accept(Array.from(result.entries()).map(([label, value]) => ({ label, value, check: true })));
146
+ })
147
+ .catch(reason => reject(reason));
148
+ });
149
+ }
150
+ static async loadData(dataUnit, request, loadFromServer) {
151
+ try {
152
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
153
+ let useCache = request.source === "EZ_GRID_LOADING_SOURCE" || request.source === core.DataUnit.CHANGING_PAGE_LOADING_SOURCE;
154
+ if (useCache) {
155
+ const isCacheEmpty = await PreloadManager.getRepository(dataUnit).isEmpty();
156
+ if (!isCacheEmpty) {
157
+ return PreloadManager.loadFromCache(dataUnit, request);
158
+ }
159
+ }
160
+ //Como não vamos aproveitar o cache, ele precisa ser limpo.
161
+ PreloadManager.getRepository(dataUnit).clear().catch(() => { });
162
+ }
163
+ return loadFromServer(dataUnit, request);
164
+ }
165
+ catch (error) {
166
+ console.error(error);
167
+ return Promise.reject(error);
168
+ }
169
+ }
170
+ static insertRecords(dataUnit, reference, records) {
171
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
172
+ PreloadManager.getRepository(dataUnit).insert(reference, records);
173
+ }
174
+ }
175
+ static updateRecords(dataUnit, records) {
176
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
177
+ PreloadManager.getRepository(dataUnit).update(records);
178
+ }
179
+ }
180
+ static removeRecords(dataUnit, records) {
181
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
182
+ PreloadManager.getRepository(dataUnit).delete(records);
183
+ }
184
+ }
185
+ static async countRecords(dataUnit) {
186
+ if (PreloadManager.isCacheEnabled(dataUnit)) {
187
+ return PreloadManager.getRepository(dataUnit).count();
188
+ }
189
+ return Promise.resolve(0);
190
+ }
191
+ static getRepository(dataUnit) {
192
+ const name = dataUnit.name;
193
+ if (!PreloadManager._repositories.has(name)) {
194
+ PreloadManager._repositories.set(name, new ArrayRepository((recordA, recordB) => recordA.__record__id__ === recordB.__record__id__));
195
+ }
196
+ return PreloadManager._repositories.get(name);
197
+ }
198
+ static async loadFromCache(dataUnit, request) {
199
+ return new Promise((accept, reject) => {
200
+ const columnFilters = utils.ColumnFilterManager.getColumnFilters(request.filters);
201
+ const { limit, offset, sort } = request;
202
+ PreloadManager.getRepository(dataUnit)
203
+ .load(utils.ColumnFilterManager.getFilterFunction(dataUnit, Array.from(columnFilters.values())), PreloadManager.getSortingFunction(dataUnit, sort), offset, limit)
204
+ .then(loadResult => {
205
+ const stillLoading = PreloadManager._loadingStatus.get(dataUnit.name);
206
+ const { count, result: records } = loadResult;
207
+ const firstRecord = count == 0 ? 0 : offset + 1;
208
+ const lastRecord = offset + Math.min(records.length, limit);
209
+ const currentPage = offset / limit;
210
+ const paginationInfo = {
211
+ count, currentPage, firstRecord, lastRecord,
212
+ hasMore: stillLoading || (lastRecord < count),
213
+ total: stillLoading ? undefined : count
214
+ };
215
+ accept({ records, paginationInfo });
216
+ })
217
+ .catch(reason => reject(reason));
218
+ });
219
+ }
220
+ }
221
+ PreloadManager._repositories = new Map();
222
+ PreloadManager._loadingStatus = new Map();
223
+
224
+ exports.PreloadManager = PreloadManager;
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- const ConfigStorage = require('./ConfigStorage-a97ca159.js');
3
+ const ConfigStorage = require('./ConfigStorage-908ce5bc.js');
4
4
  const core = require('@sankhyalabs/core');
5
- const formConfigFetcher = require('./form-config-fetcher-a322a522.js');
5
+ const formConfigFetcher = require('./form-config-fetcher-17775a75.js');
6
6
 
7
7
  class SnkFormConfigManager {
8
8
  constructor(configName, resourceID, onConfigChange) {
@@ -1,7 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  const core = require('@sankhyalabs/core');
4
- const dataunitFetcher = require('./dataunit-fetcher-4f7d4ee7.js');
4
+ const InMemoryFilterColumnDataSource = require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
5
+ const PreloadManager = require('./PreloadManager-e26d237f.js');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ const InMemoryFilterColumnDataSource__default = /*#__PURE__*/_interopDefaultLegacy(InMemoryFilterColumnDataSource);
5
10
 
6
11
  class SnkMultiSelectionListDataSource {
7
12
  setDataUnit(dataUnit) {
@@ -21,11 +26,7 @@ class SnkMultiSelectionListDataSource {
21
26
  if (fieldName == undefined) {
22
27
  return Promise.resolve(undefined);
23
28
  }
24
- const result = await dataunitFetcher.PreloadManager.getDistinct(this._dataUnit, fieldName);
25
- if (result == undefined) {
26
- return Promise.resolve(undefined);
27
- }
28
- return Promise.resolve(Array.from(result.entries()).map(([label, value]) => ({ label: String(label), value, check: true })));
29
+ return Promise.resolve(await PreloadManager.PreloadManager.getDistinct(this._dataUnit, fieldName));
29
30
  }
30
31
  fetchData(filterTerm, fieldName) {
31
32
  return new Promise(resolve => {
@@ -40,6 +41,9 @@ class SnkMultiSelectionListDataSource {
40
41
  });
41
42
  });
42
43
  }
44
+ sortItems(fieldName, items) {
45
+ return InMemoryFilterColumnDataSource__default['default'].defaultSorterMultSelectionOption(this._dataUnit, fieldName, items);
46
+ }
43
47
  }
44
48
 
45
49
  exports.SnkMultiSelectionListDataSource = SnkMultiSelectionListDataSource;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const core = require('@sankhyalabs/core');
4
- const formConfigFetcher = require('./form-config-fetcher-a322a522.js');
4
+ const formConfigFetcher = require('./form-config-fetcher-17775a75.js');
5
5
 
6
6
  class AuthFetcher extends formConfigFetcher.ResourceFetcher {
7
7
  getData(resourceID) {