@sankhyalabs/sankhyablocks 8.16.0-dev.73 → 8.16.0-dev.75

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 (64) hide show
  1. package/dist/cjs/{ContinuousInsertUtils-6e536e37.js → ContinuousInsertUtils-b5de47db.js} +2 -2
  2. package/dist/cjs/{dataunit-fetcher-8ea97d88.js → dataunit-fetcher-c32fdff7.js} +171 -17
  3. package/dist/cjs/{pesquisa-fetcher-3b86b6c4.js → pesquisa-fetcher-36d039c4.js} +4 -0
  4. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +2 -2
  5. package/dist/cjs/snk-actions-button_5.cjs.entry.js +2 -2
  6. package/dist/cjs/snk-application.cjs.entry.js +2 -2
  7. package/dist/cjs/snk-attach.cjs.entry.js +2 -2
  8. package/dist/cjs/snk-crud.cjs.entry.js +2 -2
  9. package/dist/cjs/snk-data-exporter.cjs.entry.js +3 -3
  10. package/dist/cjs/{snk-data-unit-72ef8777.js → snk-data-unit-2c7c1964.js} +1 -1
  11. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  12. package/dist/cjs/snk-detail-view.cjs.entry.js +3 -3
  13. package/dist/cjs/snk-grid.cjs.entry.js +3 -3
  14. package/dist/cjs/{snk-guides-viewer-84cb012b.js → snk-guides-viewer-a651b9b8.js} +2 -2
  15. package/dist/cjs/snk-guides-viewer.cjs.entry.js +3 -3
  16. package/dist/cjs/snk-pesquisa.cjs.entry.js +2 -2
  17. package/dist/cjs/snk-simple-crud.cjs.entry.js +3 -3
  18. package/dist/collection/components/snk-pesquisa/pesquisaHelper.js +4 -0
  19. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.js +57 -12
  20. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/helpers/DataUnitDataLoaderHelper.js +108 -0
  21. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +9 -8
  22. package/dist/components/ISave.js +4 -0
  23. package/dist/components/dataunit-fetcher.js +171 -17
  24. package/dist/esm/{ContinuousInsertUtils-91011e01.js → ContinuousInsertUtils-213385f5.js} +2 -2
  25. package/dist/esm/{dataunit-fetcher-8dd93d8b.js → dataunit-fetcher-26c2bed4.js} +171 -17
  26. package/dist/esm/{pesquisa-fetcher-767abffa.js → pesquisa-fetcher-aab1fe14.js} +4 -0
  27. package/dist/esm/pesquisa-grid_2.entry.js +2 -2
  28. package/dist/esm/snk-actions-button_5.entry.js +2 -2
  29. package/dist/esm/snk-application.entry.js +2 -2
  30. package/dist/esm/snk-attach.entry.js +2 -2
  31. package/dist/esm/snk-crud.entry.js +2 -2
  32. package/dist/esm/snk-data-exporter.entry.js +3 -3
  33. package/dist/esm/{snk-data-unit-11a49fc3.js → snk-data-unit-a36df23f.js} +1 -1
  34. package/dist/esm/snk-data-unit.entry.js +2 -2
  35. package/dist/esm/snk-detail-view.entry.js +3 -3
  36. package/dist/esm/snk-grid.entry.js +3 -3
  37. package/dist/esm/{snk-guides-viewer-45ee10ff.js → snk-guides-viewer-cbd8511f.js} +2 -2
  38. package/dist/esm/snk-guides-viewer.entry.js +3 -3
  39. package/dist/esm/snk-pesquisa.entry.js +2 -2
  40. package/dist/esm/snk-simple-crud.entry.js +3 -3
  41. package/dist/sankhyablocks/{p-1a91d1f3.entry.js → p-045398fb.entry.js} +1 -1
  42. package/dist/sankhyablocks/{p-853074f4.entry.js → p-167ac365.entry.js} +3 -3
  43. package/dist/sankhyablocks/{p-cfd229f4.entry.js → p-2098a093.entry.js} +1 -1
  44. package/dist/sankhyablocks/{p-1bab295e.entry.js → p-3b2e5822.entry.js} +1 -1
  45. package/dist/sankhyablocks/{p-6cfa8913.js → p-4ec70a7b.js} +1 -1
  46. package/dist/sankhyablocks/{p-035c63df.entry.js → p-70a546e9.entry.js} +1 -1
  47. package/dist/sankhyablocks/{p-60e4db34.js → p-70ae0779.js} +1 -1
  48. package/dist/sankhyablocks/{p-0e6874ca.entry.js → p-76041b30.entry.js} +1 -1
  49. package/dist/sankhyablocks/p-78d49c74.js +60 -0
  50. package/dist/sankhyablocks/{p-6e0adddc.entry.js → p-7a95cbc7.entry.js} +1 -1
  51. package/dist/sankhyablocks/{p-e74eb86d.entry.js → p-92dd432c.entry.js} +1 -1
  52. package/dist/sankhyablocks/{p-1c2d8a9a.entry.js → p-9f9128d3.entry.js} +1 -1
  53. package/dist/sankhyablocks/{p-dd7fb984.entry.js → p-b5ebc20a.entry.js} +1 -1
  54. package/dist/sankhyablocks/{p-03e37897.entry.js → p-b738af3a.entry.js} +1 -1
  55. package/dist/sankhyablocks/{p-935aa4fa.entry.js → p-bfdc08f2.entry.js} +1 -1
  56. package/dist/sankhyablocks/{p-4fe8bb73.js → p-c9f22653.js} +1 -1
  57. package/dist/sankhyablocks/{p-ee759111.js → p-dd37be7e.js} +1 -1
  58. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  59. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/DataUnitDataLoader.d.ts +9 -1
  60. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/helpers/DataUnitDataLoaderHelper.d.ts +6 -0
  61. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/interfaces/ILoadingInfo.d.ts +4 -0
  62. package/dist/types/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.d.ts +3 -3
  63. package/package.json +1 -1
  64. package/dist/sankhyablocks/p-ddefbbc7.js +0 -60
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  const DataFetcher = require('./DataFetcher-65879b2c.js');
4
- require('./pesquisa-fetcher-3b86b6c4.js');
4
+ require('./pesquisa-fetcher-36d039c4.js');
5
5
  const core = require('@sankhyalabs/core');
6
6
  require('./index-1dfc7a6e.js');
7
7
  require('./ISave-e91b70a7.js');
8
8
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
9
9
  const UnitMetadata = require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
10
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
10
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
11
11
  require('./filter-item-type.enum-a7ffdaa6.js');
12
12
  require('./form-config-fetcher-90126e4c.js');
13
13
  const InMemoryFilterColumnDataSource = require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils/InMemoryFilterColumnDataSource');
@@ -449,12 +449,13 @@ class DatasetStrategy {
449
449
  const serviceName = "DatasetSP.loadRecords";
450
450
  const requestBody = this.buildRequestBody(serviceName, fields, dataUnit, request, loadingInfo, serverSorting, serverSideFilters);
451
451
  const params = loadingInfo.quiet ? { urlParams: { quietMode: "true" } } : undefined;
452
- const { result: responseRecords, pagerID: pagerId } = await DataFetcher.DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
452
+ const { result: responseRecords, pagerID: pagerId, askRowsLimit } = await DataFetcher.DataFetcher.get().callServiceBroker(serviceName, requestBody, params);
453
453
  const records = this.processRecords(dataUnit, fields, responseRecords);
454
454
  const loadingInProgress = pagerId != undefined;
455
455
  const count = loadingInfo.count + records.length;
456
456
  const isInsertingNewRecord = dataUnit.hasNewRecord();
457
- const needReload = !loadingInProgress && localSorting.length > 0;
457
+ const hasLocalSorting = localSorting.length > 0;
458
+ const needReload = !loadingInProgress && hasLocalSorting;
458
459
  /**
459
460
  * Caso precise recarregar dados, porém está no meio de uma inserção, os dados não devem recarregados instantaneamente,
460
461
  * Mas sim, sinalizar que o dataUnit está aguardando para der recarregado.
@@ -465,7 +466,8 @@ class DatasetStrategy {
465
466
  return Promise.resolve({
466
467
  records,
467
468
  loadingInfo: Object.assign(Object.assign({}, loadingInfo), { pagerId,
468
- loadingInProgress, total: loadingInProgress ? undefined : count, count, needReload: needReload && !isInsertingNewRecord })
469
+ loadingInProgress, total: loadingInProgress ? undefined : count, count, needReload: needReload && !isInsertingNewRecord, askRowsLimit,
470
+ hasLocalSorting })
469
471
  });
470
472
  }
471
473
  catch (error) {
@@ -517,8 +519,7 @@ class DatasetStrategy {
517
519
  },
518
520
  }
519
521
  };
520
- const parsedRequestBody = JSON.stringify(requestBody);
521
- return parsedRequestBody;
522
+ return JSON.stringify(requestBody);
522
523
  }
523
524
  getFieldsList(dataUnit) {
524
525
  let fields = ["__record__id__", "__record__label__"];
@@ -645,7 +646,117 @@ class DatasetStrategy {
645
646
  }
646
647
  }
647
648
 
649
+ async function showAskCancelPaginationPopup() {
650
+ return new Promise((resolve) => {
651
+ const { checkboxContainer, checkbox } = buildCheckboxContainer();
652
+ const popup = builPopup(resolve, checkbox);
653
+ const contentContainer = buildContentContainer();
654
+ contentContainer.appendChild(buildMessage());
655
+ contentContainer.appendChild(checkboxContainer);
656
+ const actionsContainer = buildActionsContainer();
657
+ actionsContainer.appendChild(buildContinuePaginationBtn(popup, checkbox, resolve));
658
+ actionsContainer.appendChild(buildCancelPaginationBtn(popup, resolve));
659
+ contentContainer.appendChild(actionsContainer);
660
+ popup.appendChild(contentContainer);
661
+ document.body.appendChild(popup);
662
+ });
663
+ }
664
+ function buildCheckboxContainer() {
665
+ const checkboxContainer = document.createElement('div');
666
+ checkboxContainer.style.marginBottom = '14px';
667
+ checkboxContainer.style.display = 'flex';
668
+ checkboxContainer.style.alignItems = 'center';
669
+ const { checkbox, checkboxLabel } = buildCheckbox();
670
+ checkboxContainer.appendChild(checkbox);
671
+ checkboxContainer.appendChild(checkboxLabel);
672
+ return { checkboxContainer, checkbox };
673
+ }
674
+ function buildCheckbox() {
675
+ const checkbox = document.createElement('input');
676
+ checkbox.type = 'checkbox';
677
+ checkbox.id = 'loadAll';
678
+ const checkboxLabel = document.createElement('label');
679
+ checkboxLabel.htmlFor = 'loadAll';
680
+ checkboxLabel.textContent = 'Carregar tudo';
681
+ checkboxLabel.style.marginLeft = '5px';
682
+ return { checkbox, checkboxLabel };
683
+ }
684
+ function buildActionsContainer() {
685
+ const actionsContainer = document.createElement('div');
686
+ actionsContainer.style.display = 'flex';
687
+ actionsContainer.style.flexDirection = 'row';
688
+ actionsContainer.style.justifyContent = 'end';
689
+ actionsContainer.style.gap = '5px';
690
+ return actionsContainer;
691
+ }
692
+ function buildContentContainer() {
693
+ const contentContainer = document.createElement('div');
694
+ contentContainer.style.display = 'flex';
695
+ contentContainer.style.flexDirection = 'column';
696
+ contentContainer.style.fontFamily = 'var(--font-pattern, Roboto)';
697
+ contentContainer.style.fontSize = 'var(--text--medium)';
698
+ return contentContainer;
699
+ }
700
+ function buildMessage() {
701
+ const message = document.createElement('div');
702
+ const line1 = document.createElement('p');
703
+ const line2 = document.createElement('p');
704
+ const line3 = document.createElement('p');
705
+ line3.style.fontWeight = 'var(--text-weight--large, 600)';
706
+ line1.textContent = 'Uma quantidade de registros muito grande está sendo carregada.';
707
+ line2.textContent = 'Recomendamos que a paginação seja cancelada e que seja criado um filtro para os registros.';
708
+ line3.textContent = 'Deseja cancelar o carregamento?';
709
+ message.appendChild(line1);
710
+ message.appendChild(line2);
711
+ message.appendChild(line3);
712
+ return message;
713
+ }
714
+ function buildCancelPaginationBtn(popup, resolve) {
715
+ const cancelPaginationBtn = document.createElement('ez-button');
716
+ cancelPaginationBtn.label = 'Cancelar paginação';
717
+ cancelPaginationBtn.size = 'medium';
718
+ cancelPaginationBtn.classList.add('ez-button--primary');
719
+ cancelPaginationBtn.onclick = () => {
720
+ document.body.removeChild(popup);
721
+ resolve(CancelPaginationResponse.CANCEL);
722
+ };
723
+ return cancelPaginationBtn;
724
+ }
725
+ function buildContinuePaginationBtn(popup, checkBox, resolve) {
726
+ const continuePaginationBtn = document.createElement('ez-button');
727
+ continuePaginationBtn.label = 'Continuar';
728
+ continuePaginationBtn.size = 'medium';
729
+ continuePaginationBtn.onclick = () => {
730
+ document.body.removeChild(popup);
731
+ resolve(checkBox.checked ? CancelPaginationResponse.LOAD_ALL : CancelPaginationResponse.CONTINUE);
732
+ };
733
+ return continuePaginationBtn;
734
+ }
735
+ function builPopup(resolve, checkBox) {
736
+ const popup = document.createElement('ez-popup');
737
+ popup.opened = true;
738
+ popup.size = 'x-small';
739
+ popup.ezTitle = 'Aviso';
740
+ popup.heightMode = "auto";
741
+ popup.addEventListener('ezClosePopup', () => {
742
+ document.body.removeChild(popup);
743
+ resolve(checkBox.checked ? CancelPaginationResponse.LOAD_ALL : CancelPaginationResponse.CONTINUE);
744
+ }, { once: true });
745
+ popup.addEventListener('ezPopupAction', () => {
746
+ document.body.removeChild(popup);
747
+ resolve(CancelPaginationResponse.CANCEL);
748
+ }, { once: true });
749
+ return popup;
750
+ }
751
+ var CancelPaginationResponse;
752
+ (function (CancelPaginationResponse) {
753
+ CancelPaginationResponse["CANCEL"] = "CANCEL";
754
+ CancelPaginationResponse["CONTINUE"] = "CONTINUE";
755
+ CancelPaginationResponse["LOAD_ALL"] = "LOAD_ALL";
756
+ })(CancelPaginationResponse || (CancelPaginationResponse = {}));
757
+
648
758
  class DataUnitDataLoader {
759
+ constructor() { }
649
760
  static async debounce(dataUnit, callBack) {
650
761
  const duName = dataUnit.name;
651
762
  if (DataUnitDataLoader._debouncingTimeouts[duName]) {
@@ -691,25 +802,67 @@ class DataUnitDataLoader {
691
802
  }
692
803
  static async callLoader(dataUnit, request, requestLoadingInfo, dataLoader) {
693
804
  if (dataLoader == undefined) {
694
- //dataLoader = new DataUnitStrategy();
695
805
  dataLoader = new DatasetStrategy();
696
806
  }
697
807
  const result = await dataLoader.load(dataUnit, request, requestLoadingInfo);
698
- const { records, loadingInfo: responseLoadingInfo } = result;
699
- if (DataUnitDataLoader.isOldRequest(dataUnit, responseLoadingInfo)) {
808
+ const responseLoadingInfo = result.loadingInfo;
809
+ if (DataUnitDataLoader.isOldRequest(dataUnit, responseLoadingInfo))
700
810
  return Promise.resolve(undefined);
811
+ this.handleCache(dataLoader, responseLoadingInfo, dataUnit, result.records);
812
+ if (dataUnit.cancelPagination)
813
+ return this.handlePaginationCanceled(dataUnit, result);
814
+ //Não existem mais páginas a serem carregadas
815
+ if (this.canFinishPagination(dataUnit, responseLoadingInfo))
816
+ return Promise.resolve(result);
817
+ const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
818
+ let newLoadingInfo = this.buildNewLoadingInfo(responseLoadingInfo);
819
+ if (this.canProceedPagination(responseLoadingInfo))
820
+ return this.recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result);
821
+ const confirm = await showAskCancelPaginationPopup();
822
+ if (confirm === CancelPaginationResponse.CANCEL)
823
+ return this.handlePaginationCanceled(dataUnit, result);
824
+ if (confirm === CancelPaginationResponse.LOAD_ALL) {
825
+ newLoadingInfo = Object.assign(Object.assign({}, newLoadingInfo), { loadAllRecords: true });
701
826
  }
827
+ newLoadingInfo = Object.assign(Object.assign({}, newLoadingInfo), { lastRowLimitAsked: newLoadingInfo.count });
828
+ return this.recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result);
829
+ }
830
+ static buildNewLoadingInfo(responseLoadingInfo) {
831
+ let newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
832
+ return newLoadingInfo;
833
+ }
834
+ static handleCache(dataLoader, responseLoadingInfo, dataUnit, records) {
702
835
  const recreateCache = !dataLoader.canSlice() || responseLoadingInfo.count === 0;
703
836
  PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
704
- if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
705
- const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
706
- const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
707
- this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
708
- .then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
709
- .catch(reason => console.error(reason));
710
- }
837
+ }
838
+ static recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result) {
839
+ this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
840
+ .then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
841
+ .catch(reason => console.error(reason));
711
842
  return Promise.resolve(result);
712
843
  }
844
+ static canFinishPagination(dataUnit, responseLoadingInfo) {
845
+ return !PreloadManager.isCacheEnabled(dataUnit) || !responseLoadingInfo.loadingInProgress;
846
+ }
847
+ static canProceedPagination(info) {
848
+ const { count, askRowsLimit, loadAllRecords, lastRowLimitAsked } = info;
849
+ if (loadAllRecords)
850
+ return true;
851
+ if (!count || !askRowsLimit)
852
+ return true;
853
+ const askRowLimitNumber = Number(askRowsLimit);
854
+ if (count < askRowLimitNumber)
855
+ return true;
856
+ const nextLimitToAsk = askRowLimitNumber + (lastRowLimitAsked ? lastRowLimitAsked : 0);
857
+ return count < nextLimitToAsk;
858
+ }
859
+ static handlePaginationCanceled(dataUnit, result) {
860
+ dataUnit.cancelPagination = false;
861
+ let loadingInfo = result.loadingInfo;
862
+ loadingInfo = Object.assign(Object.assign({}, loadingInfo), { total: loadingInfo.count, loadingInProgress: false, pagerId: undefined, needReload: loadingInfo.hasLocalSorting });
863
+ const loadDataResult = { records: result.records, loadingInfo };
864
+ return Promise.resolve(loadDataResult);
865
+ }
713
866
  static afterLoadingPage(dataUnit, loadingInfo) {
714
867
  PreloadManager.setLoadingStatus(dataUnit, loadingInfo.loadingInProgress);
715
868
  const dataUnitPagination = dataUnit.getPaginationInfo();
@@ -749,7 +902,7 @@ class DataUnitDataLoader {
749
902
  // controle de paginação voltar pra primeira página.
750
903
  offset = 0;
751
904
  }
752
- const { total, count, loadingInProgress } = loadingInfo;
905
+ const { total, count, loadingInProgress, askRowsLimit } = loadingInfo;
753
906
  const firstRecord = (count === 0 || pageSize === 0) ? 0 : offset + 1;
754
907
  const lastRecord = offset + Math.min(pageSize, limit);
755
908
  return {
@@ -758,7 +911,8 @@ class DataUnitDataLoader {
758
911
  lastRecord,
759
912
  firstRecord,
760
913
  currentPage: offset / limit,
761
- hasMore: lastRecord < count || loadingInProgress
914
+ hasMore: lastRecord < count || loadingInProgress,
915
+ askRowsLimit
762
916
  };
763
917
  }
764
918
  }
@@ -59,6 +59,8 @@ function buildUserInterface(field) {
59
59
  return core.UserInterface.DATETIME;
60
60
  if (field['type'] === 'T')
61
61
  return core.UserInterface.TIME;
62
+ if (field['type'] === 'I')
63
+ return core.UserInterface.INTEGERNUMBER;
62
64
  return undefined;
63
65
  }
64
66
  function buildDataType(rawType) {
@@ -70,6 +72,8 @@ function buildDataType(rawType) {
70
72
  return core.DataType.DATE;
71
73
  case 'B':
72
74
  return core.DataType.OBJECT;
75
+ case 'I':
76
+ return core.DataType.NUMBER;
73
77
  default:
74
78
  return core.DataType.TEXT;
75
79
  }
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f9e81701.js');
6
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
6
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
7
7
  require('./DataFetcher-65879b2c.js');
8
- const pesquisaFetcher = require('./pesquisa-fetcher-3b86b6c4.js');
8
+ const pesquisaFetcher = require('./pesquisa-fetcher-36d039c4.js');
9
9
  require('@sankhyalabs/core');
10
10
  require('./index-1dfc7a6e.js');
11
11
  require('./ISave-e91b70a7.js');
@@ -6,12 +6,12 @@ const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const DataFetcher = require('./DataFetcher-65879b2c.js');
8
8
  const ParamType = require('./ParamType-90b440a0.js');
9
- require('./pesquisa-fetcher-3b86b6c4.js');
9
+ require('./pesquisa-fetcher-36d039c4.js');
10
10
  require('./index-1dfc7a6e.js');
11
11
  require('./ISave-e91b70a7.js');
12
12
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
13
13
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
14
- require('./dataunit-fetcher-8ea97d88.js');
14
+ require('./dataunit-fetcher-c32fdff7.js');
15
15
  require('./filter-item-type.enum-a7ffdaa6.js');
16
16
  const formConfigFetcher = require('./form-config-fetcher-90126e4c.js');
17
17
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
@@ -8,8 +8,8 @@ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
8
  const ConfigStorage = require('./ConfigStorage-d024aec8.js');
9
9
  const DataFetcher = require('./DataFetcher-65879b2c.js');
10
10
  const authFetcher = require('./auth-fetcher-8480751c.js');
11
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
12
- const pesquisaFetcher = require('./pesquisa-fetcher-3b86b6c4.js');
11
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
12
+ const pesquisaFetcher = require('./pesquisa-fetcher-36d039c4.js');
13
13
  const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
14
14
  require('./form-config-fetcher-90126e4c.js');
15
15
  require('./filter-item-type.enum-a7ffdaa6.js');
@@ -5,10 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const DataFetcher = require('./DataFetcher-65879b2c.js');
8
- require('./pesquisa-fetcher-3b86b6c4.js');
8
+ require('./pesquisa-fetcher-36d039c4.js');
9
9
  require('./index-1dfc7a6e.js');
10
10
  const ISave = require('./ISave-e91b70a7.js');
11
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
11
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
12
12
  require('./filter-item-type.enum-a7ffdaa6.js');
13
13
  require('./form-config-fetcher-90126e4c.js');
14
14
  const constants = require('./constants-35ddd366.js');
@@ -6,12 +6,12 @@ const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
8
8
  require('./DataFetcher-65879b2c.js');
9
- require('./pesquisa-fetcher-3b86b6c4.js');
9
+ require('./pesquisa-fetcher-36d039c4.js');
10
10
  const index$1 = require('./index-1dfc7a6e.js');
11
11
  require('./ISave-e91b70a7.js');
12
12
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
13
13
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
14
- require('./dataunit-fetcher-8ea97d88.js');
14
+ require('./dataunit-fetcher-c32fdff7.js');
15
15
  require('./filter-item-type.enum-a7ffdaa6.js');
16
16
  require('./form-config-fetcher-90126e4c.js');
17
17
  const constants = require('./constants-35ddd366.js');
@@ -8,12 +8,12 @@ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
8
  const index = require('./index-1dfc7a6e.js');
9
9
  const constants = require('./constants-35ddd366.js');
10
10
  const DataFetcher = require('./DataFetcher-65879b2c.js');
11
- const snkDataUnit = require('./snk-data-unit-72ef8777.js');
12
- require('./pesquisa-fetcher-3b86b6c4.js');
11
+ const snkDataUnit = require('./snk-data-unit-2c7c1964.js');
12
+ require('./pesquisa-fetcher-36d039c4.js');
13
13
  require('./ISave-e91b70a7.js');
14
14
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
16
- require('./dataunit-fetcher-8ea97d88.js');
16
+ require('./dataunit-fetcher-c32fdff7.js');
17
17
  require('./filter-item-type.enum-a7ffdaa6.js');
18
18
  require('./form-config-fetcher-90126e4c.js');
19
19
  require('./PrintUtils-bcaeb82f.js');
@@ -4,7 +4,7 @@ const index = require('./index-f9e81701.js');
4
4
  const core = require('@sankhyalabs/core');
5
5
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
6
6
  const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
7
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
7
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
8
8
  const DataType = require('@sankhyalabs/core/dist/dataunit/metadata/DataType');
9
9
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
10
10
 
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkDataUnit = require('./snk-data-unit-72ef8777.js');
5
+ const snkDataUnit = require('./snk-data-unit-2c7c1964.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('@sankhyalabs/ezui/dist/collection/utils');
9
9
  require('./SnkMessageBuilder-bae64d0d.js');
10
- require('./dataunit-fetcher-8ea97d88.js');
10
+ require('./dataunit-fetcher-c32fdff7.js');
11
11
  require('./DataFetcher-65879b2c.js');
12
12
  require('./PrintUtils-bcaeb82f.js');
13
13
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
@@ -7,17 +7,17 @@ const core = require('@sankhyalabs/core');
7
7
  const SnkFormConfigManager = require('./SnkFormConfigManager-07f747be.js');
8
8
  const form = require('@sankhyalabs/ezui/dist/collection/utils/form');
9
9
  require('./DataFetcher-65879b2c.js');
10
- require('./pesquisa-fetcher-3b86b6c4.js');
10
+ require('./pesquisa-fetcher-36d039c4.js');
11
11
  const index$1 = require('./index-1dfc7a6e.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-8ea97d88.js');
15
+ require('./dataunit-fetcher-c32fdff7.js');
16
16
  require('./filter-item-type.enum-a7ffdaa6.js');
17
17
  require('./form-config-fetcher-90126e4c.js');
18
18
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
19
19
  const constants = require('./constants-35ddd366.js');
20
- const snkGuidesViewer = require('./snk-guides-viewer-84cb012b.js');
20
+ const snkGuidesViewer = require('./snk-guides-viewer-a651b9b8.js');
21
21
  const SnkMessageBuilder = require('./SnkMessageBuilder-bae64d0d.js');
22
22
  require('./ConfigStorage-d024aec8.js');
23
23
  require('./PrintUtils-bcaeb82f.js');
@@ -9,14 +9,14 @@ const ConfigStorage = require('./ConfigStorage-d024aec8.js');
9
9
  const index$1 = require('./index-1dfc7a6e.js');
10
10
  const fieldSearch = require('./field-search-68e34bf4.js');
11
11
  const index$2 = require('./index-102ba62d.js');
12
- const ContinuousInsertUtils = require('./ContinuousInsertUtils-6e536e37.js');
12
+ const ContinuousInsertUtils = require('./ContinuousInsertUtils-b5de47db.js');
13
13
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
14
14
  require('./DataFetcher-65879b2c.js');
15
- require('./pesquisa-fetcher-3b86b6c4.js');
15
+ require('./pesquisa-fetcher-36d039c4.js');
16
16
  require('./ISave-e91b70a7.js');
17
17
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
18
18
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
19
- require('./dataunit-fetcher-8ea97d88.js');
19
+ require('./dataunit-fetcher-c32fdff7.js');
20
20
  require('./filter-item-type.enum-a7ffdaa6.js');
21
21
  require('./form-config-fetcher-90126e4c.js');
22
22
  const GetSelectedRecordsIDsInfo = require('./GetSelectedRecordsIDsInfo-bd50caf1.js');
@@ -8,12 +8,12 @@ const fieldSearch = require('./field-search-68e34bf4.js');
8
8
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
9
9
  const constants = require('./constants-35ddd366.js');
10
10
  require('./DataFetcher-65879b2c.js');
11
- require('./pesquisa-fetcher-3b86b6c4.js');
11
+ require('./pesquisa-fetcher-36d039c4.js');
12
12
  const index$1 = require('./index-1dfc7a6e.js');
13
13
  require('./ISave-e91b70a7.js');
14
14
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
15
15
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
16
- require('./dataunit-fetcher-8ea97d88.js');
16
+ require('./dataunit-fetcher-c32fdff7.js');
17
17
  require('./filter-item-type.enum-a7ffdaa6.js');
18
18
  require('./form-config-fetcher-90126e4c.js');
19
19
  const DataUnit = require('@sankhyalabs/core/dist/dataunit/DataUnit');
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkGuidesViewer = require('./snk-guides-viewer-84cb012b.js');
5
+ const snkGuidesViewer = require('./snk-guides-viewer-a651b9b8.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
8
  require('./SnkFormConfigManager-07f747be.js');
@@ -18,10 +18,10 @@ require('./field-search-68e34bf4.js');
18
18
  require('./taskbar-elements-9ad1f9c0.js');
19
19
  require('./index-1dfc7a6e.js');
20
20
  require('./index-102ba62d.js');
21
- require('./pesquisa-fetcher-3b86b6c4.js');
21
+ require('./pesquisa-fetcher-36d039c4.js');
22
22
  require('./ISave-e91b70a7.js');
23
23
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
24
- require('./dataunit-fetcher-8ea97d88.js');
24
+ require('./dataunit-fetcher-c32fdff7.js');
25
25
  require('@sankhyalabs/ezui/dist/collection/components/ez-grid/utils');
26
26
  require('@sankhyalabs/core/dist/utils/SortingUtils');
27
27
  require('./ResourceIDUtils-5ff86aa7.js');
@@ -4,13 +4,13 @@ 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 pesquisaFetcher = require('./pesquisa-fetcher-3b86b6c4.js');
7
+ const pesquisaFetcher = require('./pesquisa-fetcher-36d039c4.js');
8
8
  require('./DataFetcher-65879b2c.js');
9
9
  require('./index-1dfc7a6e.js');
10
10
  require('./ISave-e91b70a7.js');
11
11
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
12
12
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
13
- require('./dataunit-fetcher-8ea97d88.js');
13
+ require('./dataunit-fetcher-c32fdff7.js');
14
14
  require('./filter-item-type.enum-a7ffdaa6.js');
15
15
  require('./form-config-fetcher-90126e4c.js');
16
16
  require('./PrintUtils-bcaeb82f.js');
@@ -8,13 +8,13 @@ const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
8
  const constants = require('./constants-35ddd366.js');
9
9
  const taskbarElements = require('./taskbar-elements-9ad1f9c0.js');
10
10
  require('./DataFetcher-65879b2c.js');
11
- require('./pesquisa-fetcher-3b86b6c4.js');
12
- const ContinuousInsertUtils = require('./ContinuousInsertUtils-6e536e37.js');
11
+ require('./pesquisa-fetcher-36d039c4.js');
12
+ const ContinuousInsertUtils = require('./ContinuousInsertUtils-b5de47db.js');
13
13
  const index = require('./index-1dfc7a6e.js');
14
14
  require('./ISave-e91b70a7.js');
15
15
  require('@sankhyalabs/ezui/dist/collection/utils/constants');
16
16
  require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
17
- const dataunitFetcher = require('./dataunit-fetcher-8ea97d88.js');
17
+ const dataunitFetcher = require('./dataunit-fetcher-c32fdff7.js');
18
18
  require('./filter-item-type.enum-a7ffdaa6.js');
19
19
  const formConfigFetcher = require('./form-config-fetcher-90126e4c.js');
20
20
  const fieldSearch = require('./field-search-68e34bf4.js');
@@ -55,6 +55,8 @@ function buildUserInterface(field) {
55
55
  return UserInterface.DATETIME;
56
56
  if (field['type'] === 'T')
57
57
  return UserInterface.TIME;
58
+ if (field['type'] === 'I')
59
+ return UserInterface.INTEGERNUMBER;
58
60
  return undefined;
59
61
  }
60
62
  function buildDataType(rawType) {
@@ -66,6 +68,8 @@ function buildDataType(rawType) {
66
68
  return DataType.DATE;
67
69
  case 'B':
68
70
  return DataType.OBJECT;
71
+ case 'I':
72
+ return DataType.NUMBER;
69
73
  default:
70
74
  return DataType.TEXT;
71
75
  }
@@ -1,6 +1,8 @@
1
1
  import PreloadManager from "./cache/PreloadManager";
2
2
  import { DatasetStrategy } from "./loadstrategy/DatasetStrategy";
3
+ import { CancelPaginationResponse, showAskCancelPaginationPopup } from './helpers/DataUnitDataLoaderHelper';
3
4
  export default class DataUnitDataLoader {
5
+ constructor() { }
4
6
  static async debounce(dataUnit, callBack) {
5
7
  const duName = dataUnit.name;
6
8
  if (DataUnitDataLoader._debouncingTimeouts[duName]) {
@@ -46,25 +48,67 @@ export default class DataUnitDataLoader {
46
48
  }
47
49
  static async callLoader(dataUnit, request, requestLoadingInfo, dataLoader) {
48
50
  if (dataLoader == undefined) {
49
- //dataLoader = new DataUnitStrategy();
50
51
  dataLoader = new DatasetStrategy();
51
52
  }
52
53
  const result = await dataLoader.load(dataUnit, request, requestLoadingInfo);
53
- const { records, loadingInfo: responseLoadingInfo } = result;
54
- if (DataUnitDataLoader.isOldRequest(dataUnit, responseLoadingInfo)) {
54
+ const responseLoadingInfo = result.loadingInfo;
55
+ if (DataUnitDataLoader.isOldRequest(dataUnit, responseLoadingInfo))
55
56
  return Promise.resolve(undefined);
57
+ this.handleCache(dataLoader, responseLoadingInfo, dataUnit, result.records);
58
+ if (dataUnit.cancelPagination)
59
+ return this.handlePaginationCanceled(dataUnit, result);
60
+ //Não existem mais páginas a serem carregadas
61
+ if (this.canFinishPagination(dataUnit, responseLoadingInfo))
62
+ return Promise.resolve(result);
63
+ const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
64
+ let newLoadingInfo = this.buildNewLoadingInfo(responseLoadingInfo);
65
+ if (this.canProceedPagination(responseLoadingInfo))
66
+ return this.recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result);
67
+ const confirm = await showAskCancelPaginationPopup();
68
+ if (confirm === CancelPaginationResponse.CANCEL)
69
+ return this.handlePaginationCanceled(dataUnit, result);
70
+ if (confirm === CancelPaginationResponse.LOAD_ALL) {
71
+ newLoadingInfo = Object.assign(Object.assign({}, newLoadingInfo), { loadAllRecords: true });
56
72
  }
73
+ newLoadingInfo = Object.assign(Object.assign({}, newLoadingInfo), { lastRowLimitAsked: newLoadingInfo.count });
74
+ return this.recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result);
75
+ }
76
+ static buildNewLoadingInfo(responseLoadingInfo) {
77
+ let newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
78
+ return newLoadingInfo;
79
+ }
80
+ static handleCache(dataLoader, responseLoadingInfo, dataUnit, records) {
57
81
  const recreateCache = !dataLoader.canSlice() || responseLoadingInfo.count === 0;
58
82
  PreloadManager.cacheRecords(dataUnit, records, recreateCache, responseLoadingInfo.loadingInProgress);
59
- if (PreloadManager.isCacheEnabled(dataUnit) && responseLoadingInfo.loadingInProgress) {
60
- const newRequest = Object.assign(Object.assign({}, request), { offset: responseLoadingInfo.count });
61
- const newLoadingInfo = Object.assign(Object.assign({}, responseLoadingInfo), { pageNumber: (responseLoadingInfo.pageNumber || 0) + 1, quiet: true });
62
- this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
63
- .then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
64
- .catch(reason => console.error(reason));
65
- }
83
+ }
84
+ static recallLoader(dataUnit, newRequest, newLoadingInfo, dataLoader, result) {
85
+ this.callLoader(dataUnit, newRequest, newLoadingInfo, dataLoader)
86
+ .then(result => DataUnitDataLoader.afterLoadingPage(dataUnit, result.loadingInfo))
87
+ .catch(reason => console.error(reason));
66
88
  return Promise.resolve(result);
67
89
  }
90
+ static canFinishPagination(dataUnit, responseLoadingInfo) {
91
+ return !PreloadManager.isCacheEnabled(dataUnit) || !responseLoadingInfo.loadingInProgress;
92
+ }
93
+ static canProceedPagination(info) {
94
+ const { count, askRowsLimit, loadAllRecords, lastRowLimitAsked } = info;
95
+ if (loadAllRecords)
96
+ return true;
97
+ if (!count || !askRowsLimit)
98
+ return true;
99
+ const askRowLimitNumber = Number(askRowsLimit);
100
+ if (count < askRowLimitNumber)
101
+ return true;
102
+ const nextLimitToAsk = askRowLimitNumber + (lastRowLimitAsked ? lastRowLimitAsked : 0);
103
+ return count < nextLimitToAsk;
104
+ }
105
+ static handlePaginationCanceled(dataUnit, result) {
106
+ dataUnit.cancelPagination = false;
107
+ let loadingInfo = result.loadingInfo;
108
+ loadingInfo = Object.assign(Object.assign({}, loadingInfo), { total: loadingInfo.count, loadingInProgress: false, pagerId: undefined, needReload: loadingInfo.hasLocalSorting });
109
+ const loadDataResult = { records: result.records, loadingInfo };
110
+ return Promise.resolve(loadDataResult);
111
+ }
68
112
  static afterLoadingPage(dataUnit, loadingInfo) {
69
113
  PreloadManager.setLoadingStatus(dataUnit, loadingInfo.loadingInProgress);
70
114
  const dataUnitPagination = dataUnit.getPaginationInfo();
@@ -104,7 +148,7 @@ export default class DataUnitDataLoader {
104
148
  // controle de paginação voltar pra primeira página.
105
149
  offset = 0;
106
150
  }
107
- const { total, count, loadingInProgress } = loadingInfo;
151
+ const { total, count, loadingInProgress, askRowsLimit } = loadingInfo;
108
152
  const firstRecord = (count === 0 || pageSize === 0) ? 0 : offset + 1;
109
153
  const lastRecord = offset + Math.min(pageSize, limit);
110
154
  return {
@@ -113,7 +157,8 @@ export default class DataUnitDataLoader {
113
157
  lastRecord,
114
158
  firstRecord,
115
159
  currentPage: offset / limit,
116
- hasMore: lastRecord < count || loadingInProgress
160
+ hasMore: lastRecord < count || loadingInProgress,
161
+ askRowsLimit
117
162
  };
118
163
  }
119
164
  }