@esfaenza/es-table 16.2.29 → 17.3.16

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 (123) hide show
  1. package/esm2022/esfaenza-es-table.mjs +4 -4
  2. package/esm2022/lib/components/es-table/es_table.component.loc.mjs +38 -38
  3. package/esm2022/lib/components/es-table/es_table.component.mjs +1891 -1891
  4. package/esm2022/lib/components/es-td/es_td.component.mjs +40 -40
  5. package/esm2022/lib/components/es-th/es_th.component.mjs +176 -176
  6. package/esm2022/lib/components/pager/table_pager.component.loc.mjs +20 -20
  7. package/esm2022/lib/components/pager/table_pager.component.mjs +111 -111
  8. package/esm2022/lib/components/pipes/est-format.pipe.mjs +44 -44
  9. package/esm2022/lib/components/pipes/est-lookup.pipe.mjs +19 -19
  10. package/esm2022/lib/components/pipes/est-propinsensitive.pipe.mjs +19 -19
  11. package/esm2022/lib/components/pipes/est-renderer.pipe.mjs +36 -36
  12. package/esm2022/lib/components/pipes/est-routerlink.pipe.mjs +41 -41
  13. package/esm2022/lib/components/pipes/est_editor.pipe.mjs +36 -36
  14. package/esm2022/lib/core/CopyPasteDetector.mjs +27 -27
  15. package/esm2022/lib/core/Logger.mjs +25 -25
  16. package/esm2022/lib/core/handlers/ColumnMetadataHandler.mjs +835 -835
  17. package/esm2022/lib/core/handlers/DynamicModeHandler.mjs +109 -109
  18. package/esm2022/lib/core/handlers/ExportHandler.mjs +32 -32
  19. package/esm2022/lib/core/handlers/HierarchyModeHandler.mjs +136 -136
  20. package/esm2022/lib/core/handlers/ItemsHandler.mjs +119 -119
  21. package/esm2022/lib/core/handlers/ReportModeHandler.mjs +60 -60
  22. package/esm2022/lib/core/handlers/RowGroupingHandler.mjs +480 -480
  23. package/esm2022/lib/core/handlers/SelectionHandler.mjs +778 -778
  24. package/esm2022/lib/core/handlers/UtilitiesHandler.mjs +151 -151
  25. package/esm2022/lib/directives/es_td.directive.mjs +54 -54
  26. package/esm2022/lib/directives/es_td_editor.directive.mjs +24 -24
  27. package/esm2022/lib/directives/es_th.directive.mjs +130 -130
  28. package/esm2022/lib/directives/es_th_td_provider.directive.mjs +34 -34
  29. package/esm2022/lib/domain/configuration/EsTableDefaultable.mjs +3 -3
  30. package/esm2022/lib/domain/configuration/EsTableModuleConfig.mjs +3 -3
  31. package/esm2022/lib/domain/externals/CornerMenuOption.mjs +3 -3
  32. package/esm2022/lib/domain/externals/EsTableColumnsDefinition.mjs +47 -47
  33. package/esm2022/lib/domain/externals/EsTableModelChange.mjs +18 -18
  34. package/esm2022/lib/domain/externals/EsTableOperationDefinition.mjs +21 -21
  35. package/esm2022/lib/domain/externals/ItemPropEditableReference.mjs +3 -3
  36. package/esm2022/lib/domain/externals/appsearch/AppOrdering.mjs +15 -15
  37. package/esm2022/lib/domain/externals/appsearch/AppSearch.mjs +65 -65
  38. package/esm2022/lib/domain/externals/appsearch/EsTableMultiValue.mjs +24 -24
  39. package/esm2022/lib/domain/externals/appsearch/GenericItem.mjs +10 -10
  40. package/esm2022/lib/domain/externals/appsearch/Group.mjs +16 -16
  41. package/esm2022/lib/domain/externals/appsearch/GroupAggregation.mjs +15 -15
  42. package/esm2022/lib/domain/externals/appsearch/GroupFilter.mjs +13 -13
  43. package/esm2022/lib/domain/externals/appsearch/GroupOrAggregation.mjs +15 -15
  44. package/esm2022/lib/domain/externals/appsearch/ItemsSelection.mjs +22 -22
  45. package/esm2022/lib/domain/externals/report/ReportColumn.mjs +3 -3
  46. package/esm2022/lib/domain/externals/report/ReportParam.mjs +3 -3
  47. package/esm2022/lib/domain/externals/report/ReportRow.mjs +3 -3
  48. package/esm2022/lib/domain/internals/CacheTriptic.mjs +15 -15
  49. package/esm2022/lib/domain/internals/EsTableColumn.mjs +31 -31
  50. package/esm2022/lib/domain/internals/GroupPager.mjs +22 -22
  51. package/esm2022/lib/domain/internals/GroupRouteFragment.mjs +16 -16
  52. package/esm2022/lib/domain/internals/PagerInfos.mjs +14 -14
  53. package/esm2022/lib/domain/internals/TdElement.mjs +1 -1
  54. package/esm2022/lib/domain/internals/ThAggregation.mjs +15 -15
  55. package/esm2022/lib/domain/internals/ThElement.mjs +1 -1
  56. package/esm2022/lib/domain/internals/ThGroup.mjs +1 -1
  57. package/esm2022/lib/domain/types.mjs +1 -1
  58. package/esm2022/lib/es-table.module.mjs +125 -125
  59. package/esm2022/lib/tokens.mjs +5 -5
  60. package/esm2022/public-api.mjs +27 -27
  61. package/fesm2022/esfaenza-es-table.mjs +5777 -5777
  62. package/fesm2022/esfaenza-es-table.mjs.map +1 -1
  63. package/index.d.ts +5 -5
  64. package/lib/components/es-table/es_table.component.d.ts +738 -738
  65. package/lib/components/es-table/es_table.component.loc.d.ts +10 -10
  66. package/lib/components/es-td/es_td.component.d.ts +26 -26
  67. package/lib/components/es-th/es_th.component.d.ts +92 -92
  68. package/lib/components/pager/table_pager.component.d.ts +56 -56
  69. package/lib/components/pager/table_pager.component.loc.d.ts +10 -10
  70. package/lib/components/pipes/est-format.pipe.d.ts +10 -10
  71. package/lib/components/pipes/est-lookup.pipe.d.ts +13 -13
  72. package/lib/components/pipes/est-propinsensitive.pipe.d.ts +7 -7
  73. package/lib/components/pipes/est-renderer.pipe.d.ts +15 -15
  74. package/lib/components/pipes/est-routerlink.pipe.d.ts +20 -20
  75. package/lib/components/pipes/est_editor.pipe.d.ts +15 -15
  76. package/lib/core/CopyPasteDetector.d.ts +15 -15
  77. package/lib/core/Logger.d.ts +10 -10
  78. package/lib/core/handlers/ColumnMetadataHandler.d.ts +189 -189
  79. package/lib/core/handlers/DynamicModeHandler.d.ts +22 -22
  80. package/lib/core/handlers/ExportHandler.d.ts +18 -18
  81. package/lib/core/handlers/HierarchyModeHandler.d.ts +40 -40
  82. package/lib/core/handlers/ItemsHandler.d.ts +35 -35
  83. package/lib/core/handlers/ReportModeHandler.d.ts +27 -27
  84. package/lib/core/handlers/RowGroupingHandler.d.ts +118 -118
  85. package/lib/core/handlers/SelectionHandler.d.ts +230 -230
  86. package/lib/core/handlers/UtilitiesHandler.d.ts +57 -57
  87. package/lib/directives/es_td.directive.d.ts +42 -42
  88. package/lib/directives/es_td_editor.directive.d.ts +14 -14
  89. package/lib/directives/es_th.directive.d.ts +107 -107
  90. package/lib/directives/es_th_td_provider.directive.d.ts +15 -15
  91. package/lib/domain/configuration/EsTableDefaultable.d.ts +21 -21
  92. package/lib/domain/configuration/EsTableModuleConfig.d.ts +8 -8
  93. package/lib/domain/externals/CornerMenuOption.d.ts +7 -7
  94. package/lib/domain/externals/EsTableColumnsDefinition.d.ts +56 -56
  95. package/lib/domain/externals/EsTableModelChange.d.ts +17 -17
  96. package/lib/domain/externals/EsTableOperationDefinition.d.ts +20 -20
  97. package/lib/domain/externals/ItemPropEditableReference.d.ts +34 -34
  98. package/lib/domain/externals/appsearch/AppOrdering.d.ts +14 -14
  99. package/lib/domain/externals/appsearch/AppSearch.d.ts +100 -100
  100. package/lib/domain/externals/appsearch/EsTableMultiValue.d.ts +22 -22
  101. package/lib/domain/externals/appsearch/GenericItem.d.ts +13 -13
  102. package/lib/domain/externals/appsearch/Group.d.ts +17 -17
  103. package/lib/domain/externals/appsearch/GroupAggregation.d.ts +14 -14
  104. package/lib/domain/externals/appsearch/GroupFilter.d.ts +12 -12
  105. package/lib/domain/externals/appsearch/GroupOrAggregation.d.ts +14 -14
  106. package/lib/domain/externals/appsearch/ItemsSelection.d.ts +22 -22
  107. package/lib/domain/externals/report/ReportColumn.d.ts +19 -19
  108. package/lib/domain/externals/report/ReportParam.d.ts +40 -40
  109. package/lib/domain/externals/report/ReportRow.d.ts +9 -9
  110. package/lib/domain/internals/CacheTriptic.d.ts +14 -14
  111. package/lib/domain/internals/EsTableColumn.d.ts +41 -41
  112. package/lib/domain/internals/GroupPager.d.ts +26 -26
  113. package/lib/domain/internals/GroupRouteFragment.d.ts +15 -15
  114. package/lib/domain/internals/PagerInfos.d.ts +13 -13
  115. package/lib/domain/internals/TdElement.d.ts +57 -57
  116. package/lib/domain/internals/ThAggregation.d.ts +14 -14
  117. package/lib/domain/internals/ThElement.d.ts +24 -24
  118. package/lib/domain/internals/ThGroup.d.ts +10 -10
  119. package/lib/domain/types.d.ts +2 -2
  120. package/lib/es-table.module.d.ts +35 -35
  121. package/lib/tokens.d.ts +6 -6
  122. package/package.json +14 -14
  123. package/public-api.d.ts +27 -27
@@ -1,119 +1,119 @@
1
- // Modelli
2
- import { AppSearch } from "../../domain/externals/appsearch/AppSearch";
3
- /** Classe che si occupa della gestione del recupero degli oggetti, paginazione e tutto ciò in cui gli elementi caricati vengono manipolati direttamente */
4
- export class ItemsHandler {
5
- /** @ignore Costruttore */
6
- constructor(est, utilities) {
7
- this.est = est;
8
- this.utilities = utilities;
9
- }
10
- /**
11
- * In base alla modalità specificata (ArrayMode, ViewMode, ecc...) questo metodo recupera l'array di oggetti da bindare ad interfaccia
12
- *
13
- * @param {boolean} onlyselected [false] Indica di prendere solo gli oggetti selezionati
14
- * @param {boolean} refreshPaging [false] Indica se aggiornare le informazioni di paginazione o meno
15
- * @param {boolean} allIfPossible [false] Indica se prendere tutti gli oggetti quaora possibile, usato solo in ArrayMode
16
- *
17
- * @returns {any[]} Lista degli oggetti su cui effettuare il bind lato interfaccia
18
- */
19
- getItemsByMode(onlyselected = false, refreshPaging = false, allIfPossible = false) {
20
- let items = [];
21
- if ((this.est.viewMode && this.est.View instanceof AppSearch)) {
22
- items = this.getViewItemsBySource();
23
- }
24
- else if (this.est.arrayMode) {
25
- this.est.View.forEach(itm => { itm._item = true; });
26
- // Se faccio dei raggruppamenti ignoro la paginazione
27
- if (this.est.UseArrayModePaging && !allIfPossible) {
28
- // Se sono in modalità array ma la ricerca dipende da una view devo riallineare gli itemperpage
29
- if (this.est.SearchView) {
30
- this.est.ArraymodeItemsPerPage = this.est.SearchView.itemsperpageoverride;
31
- this.est.arraymodePage = this.est.SearchView.page;
32
- this.est.arraymodePages = this.est.SearchView.pages;
33
- }
34
- // Devo chiamare il refresh page solo se vengo richiamato da un binding esterno
35
- else if (refreshPaging)
36
- this.refreshPaging(this.est.ArraymodeItemsPerPage);
37
- items = this.adaptViewToPaging();
38
- }
39
- else {
40
- items = this.est.View;
41
- }
42
- }
43
- // Se voglio solo i selezionati filtro
44
- if (onlyselected)
45
- return items.filter(t => t._selected);
46
- return items;
47
- }
48
- /**
49
- * Metodo per effettuare il refresh della paginazione sul cambiamento degli oggetti da visualizzare in una singola pagina.
50
- *
51
- * Vale solo per la modalità Array
52
- *
53
- * @param {number} pageSize Dimensione della pagina
54
- */
55
- refreshPaging(pageSize) {
56
- this.est.ArraymodeItemsPerPage = pageSize;
57
- this.est.arraymodePages = Math.ceil(this.est.View.length / this.est.ArraymodeItemsPerPage);
58
- this.est.arraymodePage = 1;
59
- // Riforzo il writevalue in modo che il codice passi dalla gestione come se fosse fatta ripartire una ricerca
60
- this.est.internalWriteValue();
61
- }
62
- /**
63
- * Ottiene gli oggetti in base alla sorgente
64
- */
65
- getViewItemsBySource() {
66
- let castedView = this.est.View;
67
- let groupKeys = castedView.groupings ? castedView.groupings.filter(t => !t.aggregation).length : 0;
68
- //Gruppi intermedi
69
- if ((castedView.requestedgroups?.length != groupKeys || castedView.requestedgroups?.length == 0) && groupKeys > 0) {
70
- let ret = castedView.groups;
71
- ret.forEach(itm => {
72
- // Setto variabile interna per capire che questo è in realtà un gruppo
73
- itm._group = true;
74
- // Le informazioni passate come lista le metto dentro a una cache per velocizzarne l'accesso quando devo tirare fuori il display della proprietà
75
- this.utilities.cacheAggregations(itm);
76
- });
77
- return ret;
78
- }
79
- else {
80
- let ret = this.est.ItemSourceProperty ? this.est.View[this.est.ItemSourceProperty] : this.est.View.items;
81
- if (!ret)
82
- ret = [];
83
- // Setto variabile interna per specificare che questo è un elemento normale, non un gruppo o altro
84
- ret.forEach(itm => { itm._item = true; });
85
- return ret;
86
- }
87
- }
88
- /** Genera le informazioni di paginazione e taglia la View in modalità array per mostrare solo gli oggetti della pagina specificata */
89
- adaptViewToPaging() {
90
- let tmpItems = [];
91
- // Se ho una search view l'array pulsanti viene calcolato da lei, non devo prendere quello della modalità array,
92
- // inoltre non ho bisogno di fare ragionamenti su quanti elementi ci sono e sulla pagina, dato che viene tutto gestito esternamente,
93
- // unendo al risultato della view tutti gli oggetti addizionali
94
- if (!this.est.SearchView)
95
- this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.arraymodePage, this.est.arraymodePages);
96
- else
97
- return this.est.View;
98
- // Applico eventuali oridnamenti lato Array prima di tirare fuori la pagina selezionata
99
- let items = this.est.View;
100
- if (this.est)
101
- items = this.arrayModeReviewOrderings(items);
102
- // Poi per tutti i valori dopo compresi fra la pagina - 1 e la pagina
103
- for (let i = ((this.est.arraymodePage - 1) * this.est.ArraymodeItemsPerPage); i < this.est.arraymodePage * this.est.ArraymodeItemsPerPage; i++) {
104
- if (i <= items.length - 1)
105
- tmpItems.push(items[i]);
106
- }
107
- return tmpItems;
108
- }
109
- /** Se in modalità array applica gli ordinamenti ASC-DESC delle colonne */
110
- arrayModeReviewOrderings(items) {
111
- let tmp = items;
112
- if (this.est.arrayOrders.length > 0)
113
- this.est.arrayOrders.forEach(t => {
114
- tmp = tmp.sort((a, b) => (a[t.id] > b[t.id] ? 1 : -1) * (t.order == 'DESC' ? -1 : 1));
115
- });
116
- return tmp;
117
- }
118
- }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbXNIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL0l0ZW1zSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBS3ZFLDJKQUEySjtBQUMzSixNQUFNLE9BQU8sWUFBWTtJQUVyQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBcUIsRUFBVSxTQUEyQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUVuRjs7Ozs7Ozs7T0FRRztJQUNJLGNBQWMsQ0FBQyxlQUF3QixLQUFLLEVBQUUsZ0JBQXlCLEtBQUssRUFBRSxnQkFBeUIsS0FBSztRQUMvRyxJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLFNBQVMsQ0FBQyxFQUFFO1lBQzNELEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztTQUN2QzthQUNJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7WUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwRCxxREFBcUQ7WUFDckQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUUvQywrRkFBK0Y7Z0JBQy9GLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQ3ZCO29CQUNJLElBQUks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QztJQUNwQixDQUFDO0lBRUQsMEVBQTBFO0lBQ25FLHdCQUF3QixDQUFDLEtBQVk7UUFDeEMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUYsQ0FBQyxDQUFDLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgRXNUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2VzLXRhYmxlL2VzX3RhYmxlLmNvbXBvbmVudFwiXHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFwcFNlYXJjaCB9IGZyb20gXCIuLi8uLi9kb21haW4vZXh0ZXJuYWxzL2FwcHNlYXJjaC9BcHBTZWFyY2hcIjtcclxuXHJcbi8vIFV0aWxpdGllc1xyXG5pbXBvcnQgeyBVdGlsaXRpZXNIYW5kbGVyIH0gZnJvbSBcIi4vVXRpbGl0aWVzSGFuZGxlclwiO1xyXG5cclxuLyoqIENsYXNzZSBjaGUgc2kgb2NjdXBhIGRlbGxhIGdlc3Rpb25lIGRlbCByZWN1cGVybyBkZWdsaSBvZ2dldHRpLCBwYWdpbmF6aW9uZSBlIHR1dHRvIGNpw7IgaW4gY3VpIGdsaSBlbGVtZW50aSBjYXJpY2F0aSB2ZW5nb25vIG1hbmlwb2xhdGkgZGlyZXR0YW1lbnRlICovXHJcbmV4cG9ydCBjbGFzcyBJdGVtc0hhbmRsZXIge1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVzdDogRXNUYWJsZUNvbXBvbmVudCwgcHJpdmF0ZSB1dGlsaXRpZXM6IFV0aWxpdGllc0hhbmRsZXIpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW4gYmFzZSBhbGxhIG1vZGFsaXTDoCBzcGVjaWZpY2F0YSAoQXJyYXlNb2RlLCBWaWV3TW9kZSwgZWNjLi4uKSBxdWVzdG8gbWV0b2RvIHJlY3VwZXJhIGwnYXJyYXkgZGkgb2dnZXR0aSBkYSBiaW5kYXJlIGFkIGludGVyZmFjY2lhXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBvbmx5c2VsZWN0ZWQgW2ZhbHNlXSBJbmRpY2EgZGkgcHJlbmRlcmUgc29sbyBnbGkgb2dnZXR0aSBzZWxlemlvbmF0aVxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSByZWZyZXNoUGFnaW5nIFtmYWxzZV0gSW5kaWNhIHNlIGFnZ2lvcm5hcmUgbGUgaW5mb3JtYXppb25pIGRpIHBhZ2luYXppb25lIG8gbWVub1xyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBhbGxJZlBvc3NpYmxlIFtmYWxzZV0gSW5kaWNhIHNlIHByZW5kZXJlIHR1dHRpIGdsaSBvZ2dldHRpIHF1YW9yYSBwb3NzaWJpbGUsIHVzYXRvIHNvbG8gaW4gQXJyYXlNb2RlXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2FueVtdfSBMaXN0YSBkZWdsaSBvZ2dldHRpIHN1IGN1aSBlZmZldHR1YXJlIGlsIGJpbmQgbGF0byBpbnRlcmZhY2NpYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0SXRlbXNCeU1vZGUob25seXNlbGVjdGVkOiBib29sZWFuID0gZmFsc2UsIHJlZnJlc2hQYWdpbmc6IGJvb2xlYW4gPSBmYWxzZSwgYWxsSWZQb3NzaWJsZTogYm9vbGVhbiA9IGZhbHNlKTogYW55W10ge1xyXG4gICAgICAgIGxldCBpdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmVzdC52aWV3TW9kZSAmJiB0aGlzLmVzdC5WaWV3IGluc3RhbmNlb2YgQXBwU2VhcmNoKSkge1xyXG4gICAgICAgICAgICBpdGVtcyA9IHRoaXMuZ2V0Vmlld0l0ZW1zQnlTb3VyY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5lc3QuYXJyYXlNb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlZpZXcuZm9yRWFjaChpdG0gPT4geyBpdG0uX2l0ZW0gPSB0cnVlOyB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNlIGZhY2NpbyBkZWkgcmFnZ3J1cHBhbWVudGkgaWdub3JvIGxhIHBhZ2luYXppb25lXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVzdC5Vc2VBcnJheU1vZGVQYWdpbmcgJiYgIWFsbElmUG9zc2libGUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBTZSBzb25vIGluIG1vZGFsaXTDoCBhcnJheSBtYSBsYSByaWNlcmNhIGRpcGVuZGUgZGEgdW5hIHZpZXcgZGV2byByaWFsbGluZWFyZSBnbGkgaXRlbXBlcnBhZ2VcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzdC5TZWFyY2hWaWV3KVxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSA9IHRoaXMuZXN0LlNlYXJjaFZpZXcuaXRlbXNwZXJwYWdlb3ZlcnJpZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lc3QuYXJyYXltb2RlUGFnZSA9IHRoaXMuZXN0LlNlYXJjaFZpZXcucGFnZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVzdC5hcnJheW1vZGVQYWdlcyA9IHRoaXMuZXN0LlNlYXJjaFZpZXcucGFnZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBEZXZvIGNoaWFtYXJlIGlsIHJlZnJlc2ggcGFnZSBzb2xvIHNlIHZlbmdvIHJpY2hpYW1hdG8gZGEgdW4gYmluZGluZyBlc3Rlcm5vXHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWZyZXNoUGFnaW5nKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFBhZ2luZyh0aGlzLmVzdC5BcnJheW1vZGVJdGVtc1BlclBhZ2UpO1xyXG5cclxuICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5hZGFwdFZpZXdUb1BhZ2luZygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmVzdC5WaWV3IGFzIGFueVtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTZSB2b2dsaW8gc29sbyBpIHNlbGV6aW9uYXRpIGZpbHRyb1xyXG4gICAgICAgIGlmIChvbmx5c2VsZWN0ZWQpXHJcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maWx0ZXIodCA9PiB0Ll9zZWxlY3RlZCk7XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBwZXIgZWZmZXR0dWFyZSBpbCByZWZyZXNoIGRlbGxhIHBhZ2luYXppb25lIHN1bCBjYW1iaWFtZW50byBkZWdsaSBvZ2dldHRpIGRhIHZpc3VhbGl6emFyZSBpbiB1bmEgc2luZ29sYSBwYWdpbmEuXHJcbiAgICAgKlxyXG4gICAgICogVmFsZSBzb2xvIHBlciBsYSBtb2RhbGl0w6AgQXJyYXlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUgRGltZW5zaW9uZSBkZWxsYSBwYWdpbmFcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hQYWdpbmcocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xyXG4gICAgICAgIHRoaXMuZXN0LmFycmF5bW9kZVBhZ2VzID0gTWF0aC5jZWlsKCh0aGlzLmVzdC5WaWV3IGFzIGFueVtdKS5sZW5ndGggLyB0aGlzLmVzdC5BcnJheW1vZGVJdGVtc1BlclBhZ2UpO1xyXG4gICAgICAgIHRoaXMuZXN0LmFycmF5bW9kZVBhZ2UgPSAxO1xyXG5cclxuICAgICAgICAvLyBSaWZvcnpvIGlsIHdyaXRldmFsdWUgaW4gbW9kbyBjaGUgaWwgY29kaWNlIHBhc3NpIGRhbGxhIGdlc3Rpb25lIGNvbWUgc2UgZm9zc2UgZmF0dGEgcmlwYXJ0aXJlIHVuYSByaWNlcmNhXHJcbiAgICAgICAgdGhpcy5lc3QuaW50ZXJuYWxXcml0ZVZhbHVlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPdHRpZW5lIGdsaSBvZ2dldHRpIGluIGJhc2UgYWxsYSBzb3JnZW50ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZpZXdJdGVtc0J5U291cmNlKCk6IGFueVtdIHtcclxuICAgICAgICBsZXQgY2FzdGVkVmlldyA9IHRoaXMuZXN0LlZpZXcgYXMgQXBwU2VhcmNoPGFueT47XHJcbiAgICAgICAgbGV0IGdyb3VwS2V5cyA9IGNhc3RlZFZpZXcuZ3JvdXBpbmdzID8gY2FzdGVkVmlldy5ncm91cGluZ3MuZmlsdGVyKHQgPT4gIXQuYWdncmVnYXRpb24pLmxlbmd0aCA6IDA7XHJcblxyXG4gICAgICAgIC8vR3J1cHBpIGludGVybWVkaVxyXG4gICAgICAgIGlmICgoY2FzdGVkVmlldy5yZXF1ZXN0ZWRncm91cHM/Lmxlbmd0aCAhPSBncm91cEtleXMgfHwgY2FzdGVkVmlldy5yZXF1ZXN0ZWRncm91cHM/Lmxlbmd0aCA9PSAwKSAmJiBncm91cEtleXMgPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCByZXQgPSBjYXN0ZWRWaWV3Lmdyb3VwcztcclxuICAgICAgICAgICAgcmV0LmZvckVhY2goaXRtID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBTZXR0byB2YXJpYWJpbGUgaW50ZXJuYSBwZXIgY2FwaXJlIGNoZSBxdWVzdG8gw6ggaW4gcmVhbHTDoCB1biBncnVwcG9cclxuICAgICAgICAgICAgICAgICg8YW55Pml0bSkuX2dyb3VwID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBMZSBpbmZvcm1hemlvbmkgcGFzc2F0ZSBjb21lIGxpc3RhIGxlIG1ldHRvIGRlbnRybyBhIHVuYSBjYWNoZSBwZXIgdmVsb2Npenphcm5lIGwnYWNjZXNzbyBxdWFuZG8gZGV2byB0aXJhcmUgZnVvcmkgaWwgZGlzcGxheSBkZWxsYSBwcm9wcmlldMOgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnV0aWxpdGllcy5jYWNoZUFnZ3JlZ2F0aW9ucyhpdG0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCByZXQgPSB0aGlzLmVzdC5JdGVtU291cmNlUHJvcGVydHkgPyAodGhpcy5lc3QuVmlldyBhcyBhbnkpW3RoaXMuZXN0Lkl0ZW1Tb3VyY2VQcm9wZXJ0eV0gOiAodGhpcy5lc3QuVmlldyBhcyBhbnkpLml0ZW1zO1xyXG4gICAgICAgICAgICBpZiAoIXJldCkgcmV0ID0gW107XHJcbiAgICAgICAgICAgIC8vIFNldHRvIHZhcmlhYmlsZSBpbnRlcm5hIHBlciBzcGVjaWZpY2FyZSBjaGUgcXVlc3RvIMOoIHVuIGVsZW1lbnRvIG5vcm1hbGUsIG5vbiB1biBncnVwcG8gbyBhbHRyb1xyXG4gICAgICAgICAgICByZXQuZm9yRWFjaChpdG0gPT4geyAoPGFueT5pdG0pLl9pdGVtID0gdHJ1ZTsgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBHZW5lcmEgbGUgaW5mb3JtYXppb25pIGRpIHBhZ2luYXppb25lIGUgdGFnbGlhIGxhIFZpZXcgaW4gbW9kYWxpdMOgIGFycmF5IHBlciBtb3N0cmFyZSBzb2xvIGdsaSBvZ2dldHRpIGRlbGxhIHBhZ2luYSBzcGVjaWZpY2F0YSAqL1xyXG4gICAgcHJpdmF0ZSBhZGFwdFZpZXdUb1BhZ2luZygpIHtcclxuICAgICAgICBsZXQgdG1wSXRlbXM6IGFueVtdID0gW107XHJcblxyXG4gICAgICAgIC8vIFNlIGhvIHVuYSBzZWFyY2ggdmlldyBsJ2FycmF5IHB1bHNhbnRpIHZpZW5lIGNhbGNvbGF0byBkYSBsZWksIG5vbiBkZXZvIHByZW5kZXJlIHF1ZWxsbyBkZWxsYSBtb2RhbGl0w6AgYXJyYXksXHJcbiAgICAgICAgLy8gaW5vbHRyZSBub24gaG8gYmlzb2dubyBkaSBmYXJlIHJhZ2lvbmFtZW50aSBzdSBxdWFudGkgZWxlbWVudGkgY2kgc29ubyBlIHN1bGxhIHBhZ2luYSwgZGF0byBjaGUgdmllbmUgdHV0dG8gZ2VzdGl0byBlc3Rlcm5hbWVudGUsIFxyXG4gICAgICAgIC8vIHVuZW5kbyBhbCByaXN1bHRhdG8gZGVsbGEgdmlldyB0dXR0aSBnbGkgb2dnZXR0aSBhZGRpemlvbmFsaVxyXG4gICAgICAgIGlmICghdGhpcy5lc3QuU2VhcmNoVmlldylcclxuICAgICAgICAgICAgdGhpcy5lc3QuYXJyYXlQdWxzYW50aSA9IHRoaXMudXRpbGl0aWVzLmdldFBhZ2VzQXJyYXkoNiwgdGhpcy5lc3QuYXJyYXltb2RlUGFnZSwgdGhpcy5lc3QuYXJyYXltb2RlUGFnZXMpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXN0LlZpZXcgYXMgYW55W107XHJcblxyXG4gICAgICAgIC8vIEFwcGxpY28gZXZlbnR1YWxpIG9yaWRuYW1lbnRpIGxhdG8gQXJyYXkgcHJpbWEgZGkgdGlyYXJlIGZ1b3JpIGxhIHBhZ2luYSBzZWxlemlvbmF0YVxyXG4gICAgICAgIGxldCBpdGVtcyA9ICh0aGlzLmVzdC5WaWV3IGFzIGFueVtdKTtcclxuICAgICAgICBpZiAodGhpcy5lc3QpXHJcbiAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5hcnJheU1vZGVSZXZpZXdPcmRlcmluZ3MoaXRlbXMpO1xyXG5cclxuICAgICAgICAvLyBQb2kgcGVyIHR1dHRpIGkgdmFsb3JpIGRvcG8gY29tcHJlc2kgZnJhIGxhIHBhZ2luYSAtIDEgZSBsYSBwYWdpbmFcclxuICAgICAgICBmb3IgKGxldCBpID0gKCh0aGlzLmVzdC5hcnJheW1vZGVQYWdlIC0gMSkgKiB0aGlzLmVzdC5BcnJheW1vZGVJdGVtc1BlclBhZ2UpOyBpIDwgdGhpcy5lc3QuYXJyYXltb2RlUGFnZSAqIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChpIDw9IGl0ZW1zLmxlbmd0aCAtIDEpXHJcbiAgICAgICAgICAgICAgICB0bXBJdGVtcy5wdXNoKGl0ZW1zW2ldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0bXBJdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogU2UgaW4gbW9kYWxpdMOgIGFycmF5IGFwcGxpY2EgZ2xpIG9yZGluYW1lbnRpIEFTQy1ERVNDIGRlbGxlIGNvbG9ubmUgKi9cclxuICAgIHB1YmxpYyBhcnJheU1vZGVSZXZpZXdPcmRlcmluZ3MoaXRlbXM6IGFueVtdKTogYW55W10ge1xyXG4gICAgICAgIGxldCB0bXAgPSBpdGVtcztcclxuICAgICAgICBpZiAodGhpcy5lc3QuYXJyYXlPcmRlcnMubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5lc3QuYXJyYXlPcmRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRtcCA9IHRtcC5zb3J0KChhLCBiKSA9PiAoYVt0LmlkXSA+IGJbdC5pZF0gPyAxIDogLTEpICogKHQub3JkZXIgPT0gJ0RFU0MnID8gLTEgOiAxKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0bXA7XHJcbiAgICB9XHJcbn1cclxuIl19
1
+ // Modelli
2
+ import { AppSearch } from "../../domain/externals/appsearch/AppSearch";
3
+ /** Classe che si occupa della gestione del recupero degli oggetti, paginazione e tutto ciò in cui gli elementi caricati vengono manipolati direttamente */
4
+ export class ItemsHandler {
5
+ /** @ignore Costruttore */
6
+ constructor(est, utilities) {
7
+ this.est = est;
8
+ this.utilities = utilities;
9
+ }
10
+ /**
11
+ * In base alla modalità specificata (ArrayMode, ViewMode, ecc...) questo metodo recupera l'array di oggetti da bindare ad interfaccia
12
+ *
13
+ * @param {boolean} onlyselected [false] Indica di prendere solo gli oggetti selezionati
14
+ * @param {boolean} refreshPaging [false] Indica se aggiornare le informazioni di paginazione o meno
15
+ * @param {boolean} allIfPossible [false] Indica se prendere tutti gli oggetti quaora possibile, usato solo in ArrayMode
16
+ *
17
+ * @returns {any[]} Lista degli oggetti su cui effettuare il bind lato interfaccia
18
+ */
19
+ getItemsByMode(onlyselected = false, refreshPaging = false, allIfPossible = false) {
20
+ let items = [];
21
+ if ((this.est.viewMode && this.est.View instanceof AppSearch)) {
22
+ items = this.getViewItemsBySource();
23
+ }
24
+ else if (this.est.arrayMode) {
25
+ this.est.View.forEach(itm => { itm._item = true; });
26
+ // Se faccio dei raggruppamenti ignoro la paginazione
27
+ if (this.est.UseArrayModePaging && !allIfPossible) {
28
+ // Se sono in modalità array ma la ricerca dipende da una view devo riallineare gli itemperpage
29
+ if (this.est.SearchView) {
30
+ this.est.ArraymodeItemsPerPage = this.est.SearchView.itemsperpageoverride;
31
+ this.est.arraymodePage = this.est.SearchView.page;
32
+ this.est.arraymodePages = this.est.SearchView.pages;
33
+ }
34
+ // Devo chiamare il refresh page solo se vengo richiamato da un binding esterno
35
+ else if (refreshPaging)
36
+ this.refreshPaging(this.est.ArraymodeItemsPerPage);
37
+ items = this.adaptViewToPaging();
38
+ }
39
+ else {
40
+ items = this.est.View;
41
+ }
42
+ }
43
+ // Se voglio solo i selezionati filtro
44
+ if (onlyselected)
45
+ return items.filter(t => t._selected);
46
+ return items;
47
+ }
48
+ /**
49
+ * Metodo per effettuare il refresh della paginazione sul cambiamento degli oggetti da visualizzare in una singola pagina.
50
+ *
51
+ * Vale solo per la modalità Array
52
+ *
53
+ * @param {number} pageSize Dimensione della pagina
54
+ */
55
+ refreshPaging(pageSize) {
56
+ this.est.ArraymodeItemsPerPage = pageSize;
57
+ this.est.arraymodePages = Math.ceil(this.est.View.length / this.est.ArraymodeItemsPerPage);
58
+ this.est.arraymodePage = 1;
59
+ // Riforzo il writevalue in modo che il codice passi dalla gestione come se fosse fatta ripartire una ricerca
60
+ this.est.internalWriteValue();
61
+ }
62
+ /**
63
+ * Ottiene gli oggetti in base alla sorgente
64
+ */
65
+ getViewItemsBySource() {
66
+ let castedView = this.est.View;
67
+ let groupKeys = castedView.groupings ? castedView.groupings.filter(t => !t.aggregation).length : 0;
68
+ //Gruppi intermedi
69
+ if ((castedView.requestedgroups?.length != groupKeys || castedView.requestedgroups?.length == 0) && groupKeys > 0) {
70
+ let ret = castedView.groups;
71
+ ret.forEach(itm => {
72
+ // Setto variabile interna per capire che questo è in realtà un gruppo
73
+ itm._group = true;
74
+ // Le informazioni passate come lista le metto dentro a una cache per velocizzarne l'accesso quando devo tirare fuori il display della proprietà
75
+ this.utilities.cacheAggregations(itm);
76
+ });
77
+ return ret;
78
+ }
79
+ else {
80
+ let ret = this.est.ItemSourceProperty ? this.est.View[this.est.ItemSourceProperty] : this.est.View.items;
81
+ if (!ret)
82
+ ret = [];
83
+ // Setto variabile interna per specificare che questo è un elemento normale, non un gruppo o altro
84
+ ret.forEach(itm => { itm._item = true; });
85
+ return ret;
86
+ }
87
+ }
88
+ /** Genera le informazioni di paginazione e taglia la View in modalità array per mostrare solo gli oggetti della pagina specificata */
89
+ adaptViewToPaging() {
90
+ let tmpItems = [];
91
+ // Se ho una search view l'array pulsanti viene calcolato da lei, non devo prendere quello della modalità array,
92
+ // inoltre non ho bisogno di fare ragionamenti su quanti elementi ci sono e sulla pagina, dato che viene tutto gestito esternamente,
93
+ // unendo al risultato della view tutti gli oggetti addizionali
94
+ if (!this.est.SearchView)
95
+ this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.arraymodePage, this.est.arraymodePages);
96
+ else
97
+ return this.est.View;
98
+ // Applico eventuali oridnamenti lato Array prima di tirare fuori la pagina selezionata
99
+ let items = this.est.View;
100
+ if (this.est)
101
+ items = this.arrayModeReviewOrderings(items);
102
+ // Poi per tutti i valori dopo compresi fra la pagina - 1 e la pagina
103
+ for (let i = ((this.est.arraymodePage - 1) * this.est.ArraymodeItemsPerPage); i < this.est.arraymodePage * this.est.ArraymodeItemsPerPage; i++) {
104
+ if (i <= items.length - 1)
105
+ tmpItems.push(items[i]);
106
+ }
107
+ return tmpItems;
108
+ }
109
+ /** Se in modalità array applica gli ordinamenti ASC-DESC delle colonne */
110
+ arrayModeReviewOrderings(items) {
111
+ let tmp = items;
112
+ if (this.est.arrayOrders.length > 0)
113
+ this.est.arrayOrders.forEach(t => {
114
+ tmp = tmp.sort((a, b) => (a[t.id] > b[t.id] ? 1 : -1) * (t.order == 'DESC' ? -1 : 1));
115
+ });
116
+ return tmp;
117
+ }
118
+ }
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbXNIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL0l0ZW1zSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBS3ZFLDJKQUEySjtBQUMzSixNQUFNLE9BQU8sWUFBWTtJQUVyQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBcUIsRUFBVSxTQUEyQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUVuRjs7Ozs7Ozs7T0FRRztJQUNJLGNBQWMsQ0FBQyxlQUF3QixLQUFLLEVBQUUsZ0JBQXlCLEtBQUssRUFBRSxnQkFBeUIsS0FBSztRQUMvRyxJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7UUFFdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDNUQsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3hDLENBQUM7YUFDSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwRCxxREFBcUQ7WUFDckQsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBRWhELCtGQUErRjtnQkFDL0YsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVB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LFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7SUFFRCwwRUFBMEU7SUFDbkUsd0JBQXdCLENBQUMsS0FBWTtRQUN4QyxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDaEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdCLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRixDQUFDLENBQUMsQ0FBQztRQUNQLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBFc1RhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZXMtdGFibGUvZXNfdGFibGUuY29tcG9uZW50XCJcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQXBwU2VhcmNoIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9leHRlcm5hbHMvYXBwc2VhcmNoL0FwcFNlYXJjaFwiO1xyXG5cclxuLy8gVXRpbGl0aWVzXHJcbmltcG9ydCB7IFV0aWxpdGllc0hhbmRsZXIgfSBmcm9tIFwiLi9VdGlsaXRpZXNIYW5kbGVyXCI7XHJcblxyXG4vKiogQ2xhc3NlIGNoZSBzaSBvY2N1cGEgZGVsbGEgZ2VzdGlvbmUgZGVsIHJlY3VwZXJvIGRlZ2xpIG9nZ2V0dGksIHBhZ2luYXppb25lIGUgdHV0dG8gY2nDsiBpbiBjdWkgZ2xpIGVsZW1lbnRpIGNhcmljYXRpIHZlbmdvbm8gbWFuaXBvbGF0aSBkaXJldHRhbWVudGUgKi9cclxuZXhwb3J0IGNsYXNzIEl0ZW1zSGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXN0OiBFc1RhYmxlQ29tcG9uZW50LCBwcml2YXRlIHV0aWxpdGllczogVXRpbGl0aWVzSGFuZGxlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbiBiYXNlIGFsbGEgbW9kYWxpdMOgIHNwZWNpZmljYXRhIChBcnJheU1vZGUsIFZpZXdNb2RlLCBlY2MuLi4pIHF1ZXN0byBtZXRvZG8gcmVjdXBlcmEgbCdhcnJheSBkaSBvZ2dldHRpIGRhIGJpbmRhcmUgYWQgaW50ZXJmYWNjaWFcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9ubHlzZWxlY3RlZCBbZmFsc2VdIEluZGljYSBkaSBwcmVuZGVyZSBzb2xvIGdsaSBvZ2dldHRpIHNlbGV6aW9uYXRpXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlZnJlc2hQYWdpbmcgW2ZhbHNlXSBJbmRpY2Egc2UgYWdnaW9ybmFyZSBsZSBpbmZvcm1hemlvbmkgZGkgcGFnaW5hemlvbmUgbyBtZW5vXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFsbElmUG9zc2libGUgW2ZhbHNlXSBJbmRpY2Egc2UgcHJlbmRlcmUgdHV0dGkgZ2xpIG9nZ2V0dGkgcXVhb3JhIHBvc3NpYmlsZSwgdXNhdG8gc29sbyBpbiBBcnJheU1vZGVcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7YW55W119IExpc3RhIGRlZ2xpIG9nZ2V0dGkgc3UgY3VpIGVmZmV0dHVhcmUgaWwgYmluZCBsYXRvIGludGVyZmFjY2lhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtc0J5TW9kZShvbmx5c2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZSwgcmVmcmVzaFBhZ2luZzogYm9vbGVhbiA9IGZhbHNlLCBhbGxJZlBvc3NpYmxlOiBib29sZWFuID0gZmFsc2UpOiBhbnlbXSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZXN0LnZpZXdNb2RlICYmIHRoaXMuZXN0LlZpZXcgaW5zdGFuY2VvZiBBcHBTZWFyY2gpKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5nZXRWaWV3SXRlbXNCeVNvdXJjZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmVzdC5hcnJheU1vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5lc3QuVmlldy5mb3JFYWNoKGl0bSA9PiB7IGl0bS5faXRlbSA9IHRydWU7IH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gU2UgZmFjY2lvIGRlaSByYWdncnVwcGFtZW50aSBpZ25vcm8gbGEgcGFnaW5hemlvbmVcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXN0LlVzZUFycmF5TW9kZVBhZ2luZyAmJiAhYWxsSWZQb3NzaWJsZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNlIHNvbm8gaW4gbW9kYWxpdMOgIGFycmF5IG1hIGxhIHJpY2VyY2EgZGlwZW5kZSBkYSB1bmEgdmlldyBkZXZvIHJpYWxsaW5lYXJlIGdsaSBpdGVtcGVycGFnZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXN0LlNlYXJjaFZpZXcpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlID0gdGhpcy5lc3QuU2VhcmNoVmlldy5pdGVtc3BlcnBhZ2VvdmVycmlkZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVzdC5hcnJheW1vZGVQYWdlID0gdGhpcy5lc3QuU2VhcmNoVmlldy5wYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXN0LmFycmF5bW9kZVBhZ2VzID0gdGhpcy5lc3QuU2VhcmNoVmlldy5wYWdlcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIERldm8gY2hpYW1hcmUgaWwgcmVmcmVzaCBwYWdlIHNvbG8gc2UgdmVuZ28gcmljaGlhbWF0byBkYSB1biBiaW5kaW5nIGVzdGVybm9cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZnJlc2hQYWdpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoUGFnaW5nKHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFkYXB0Vmlld1RvUGFnaW5nKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuZXN0LlZpZXcgYXMgYW55W107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNlIHZvZ2xpbyBzb2xvIGkgc2VsZXppb25hdGkgZmlsdHJvXHJcbiAgICAgICAgaWYgKG9ubHlzZWxlY3RlZClcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcih0ID0+IHQuX3NlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIHBlciBlZmZldHR1YXJlIGlsIHJlZnJlc2ggZGVsbGEgcGFnaW5hemlvbmUgc3VsIGNhbWJpYW1lbnRvIGRlZ2xpIG9nZ2V0dGkgZGEgdmlzdWFsaXp6YXJlIGluIHVuYSBzaW5nb2xhIHBhZ2luYS5cclxuICAgICAqXHJcbiAgICAgKiBWYWxlIHNvbG8gcGVyIGxhIG1vZGFsaXTDoCBBcnJheVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZSBEaW1lbnNpb25lIGRlbGxhIHBhZ2luYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaFBhZ2luZyhwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XHJcbiAgICAgICAgdGhpcy5lc3QuYXJyYXltb2RlUGFnZXMgPSBNYXRoLmNlaWwoKHRoaXMuZXN0LlZpZXcgYXMgYW55W10pLmxlbmd0aCAvIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSk7XHJcbiAgICAgICAgdGhpcy5lc3QuYXJyYXltb2RlUGFnZSA9IDE7XHJcblxyXG4gICAgICAgIC8vIFJpZm9yem8gaWwgd3JpdGV2YWx1ZSBpbiBtb2RvIGNoZSBpbCBjb2RpY2UgcGFzc2kgZGFsbGEgZ2VzdGlvbmUgY29tZSBzZSBmb3NzZSBmYXR0YSByaXBhcnRpcmUgdW5hIHJpY2VyY2FcclxuICAgICAgICB0aGlzLmVzdC5pbnRlcm5hbFdyaXRlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgZ2xpIG9nZ2V0dGkgaW4gYmFzZSBhbGxhIHNvcmdlbnRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Vmlld0l0ZW1zQnlTb3VyY2UoKTogYW55W10ge1xyXG4gICAgICAgIGxldCBjYXN0ZWRWaWV3ID0gdGhpcy5lc3QuVmlldyBhcyBBcHBTZWFyY2g8YW55PjtcclxuICAgICAgICBsZXQgZ3JvdXBLZXlzID0gY2FzdGVkVmlldy5ncm91cGluZ3MgPyBjYXN0ZWRWaWV3Lmdyb3VwaW5ncy5maWx0ZXIodCA9PiAhdC5hZ2dyZWdhdGlvbikubGVuZ3RoIDogMDtcclxuXHJcbiAgICAgICAgLy9HcnVwcGkgaW50ZXJtZWRpXHJcbiAgICAgICAgaWYgKChjYXN0ZWRWaWV3LnJlcXVlc3RlZGdyb3Vwcz8ubGVuZ3RoICE9IGdyb3VwS2V5cyB8fCBjYXN0ZWRWaWV3LnJlcXVlc3RlZGdyb3Vwcz8ubGVuZ3RoID09IDApICYmIGdyb3VwS2V5cyA+IDApIHtcclxuICAgICAgICAgICAgbGV0IHJldCA9IGNhc3RlZFZpZXcuZ3JvdXBzO1xyXG4gICAgICAgICAgICByZXQuZm9yRWFjaChpdG0gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNldHRvIHZhcmlhYmlsZSBpbnRlcm5hIHBlciBjYXBpcmUgY2hlIHF1ZXN0byDDqCBpbiByZWFsdMOgIHVuIGdydXBwb1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+aXRtKS5fZ3JvdXAgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIExlIGluZm9ybWF6aW9uaSBwYXNzYXRlIGNvbWUgbGlzdGEgbGUgbWV0dG8gZGVudHJvIGEgdW5hIGNhY2hlIHBlciB2ZWxvY2l6emFybmUgbCdhY2Nlc3NvIHF1YW5kbyBkZXZvIHRpcmFyZSBmdW9yaSBpbCBkaXNwbGF5IGRlbGxhIHByb3ByaWV0w6BcclxuICAgICAgICAgICAgICAgIHRoaXMudXRpbGl0aWVzLmNhY2hlQWdncmVnYXRpb25zKGl0bSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJldCA9IHRoaXMuZXN0Lkl0ZW1Tb3VyY2VQcm9wZXJ0eSA/ICh0aGlzLmVzdC5WaWV3IGFzIGFueSlbdGhpcy5lc3QuSXRlbVNvdXJjZVByb3BlcnR5XSA6ICh0aGlzLmVzdC5WaWV3IGFzIGFueSkuaXRlbXM7XHJcbiAgICAgICAgICAgIGlmICghcmV0KSByZXQgPSBbXTtcclxuICAgICAgICAgICAgLy8gU2V0dG8gdmFyaWFiaWxlIGludGVybmEgcGVyIHNwZWNpZmljYXJlIGNoZSBxdWVzdG8gw6ggdW4gZWxlbWVudG8gbm9ybWFsZSwgbm9uIHVuIGdydXBwbyBvIGFsdHJvXHJcbiAgICAgICAgICAgIHJldC5mb3JFYWNoKGl0bSA9PiB7ICg8YW55Pml0bSkuX2l0ZW0gPSB0cnVlOyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdlbmVyYSBsZSBpbmZvcm1hemlvbmkgZGkgcGFnaW5hemlvbmUgZSB0YWdsaWEgbGEgVmlldyBpbiBtb2RhbGl0w6AgYXJyYXkgcGVyIG1vc3RyYXJlIHNvbG8gZ2xpIG9nZ2V0dGkgZGVsbGEgcGFnaW5hIHNwZWNpZmljYXRhICovXHJcbiAgICBwcml2YXRlIGFkYXB0Vmlld1RvUGFnaW5nKCkge1xyXG4gICAgICAgIGxldCB0bXBJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgLy8gU2UgaG8gdW5hIHNlYXJjaCB2aWV3IGwnYXJyYXkgcHVsc2FudGkgdmllbmUgY2FsY29sYXRvIGRhIGxlaSwgbm9uIGRldm8gcHJlbmRlcmUgcXVlbGxvIGRlbGxhIG1vZGFsaXTDoCBhcnJheSxcclxuICAgICAgICAvLyBpbm9sdHJlIG5vbiBobyBiaXNvZ25vIGRpIGZhcmUgcmFnaW9uYW1lbnRpIHN1IHF1YW50aSBlbGVtZW50aSBjaSBzb25vIGUgc3VsbGEgcGFnaW5hLCBkYXRvIGNoZSB2aWVuZSB0dXR0byBnZXN0aXRvIGVzdGVybmFtZW50ZSwgXHJcbiAgICAgICAgLy8gdW5lbmRvIGFsIHJpc3VsdGF0byBkZWxsYSB2aWV3IHR1dHRpIGdsaSBvZ2dldHRpIGFkZGl6aW9uYWxpXHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5TZWFyY2hWaWV3KVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5hcnJheVB1bHNhbnRpID0gdGhpcy51dGlsaXRpZXMuZ2V0UGFnZXNBcnJheSg2LCB0aGlzLmVzdC5hcnJheW1vZGVQYWdlLCB0aGlzLmVzdC5hcnJheW1vZGVQYWdlcyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lc3QuVmlldyBhcyBhbnlbXTtcclxuXHJcbiAgICAgICAgLy8gQXBwbGljbyBldmVudHVhbGkgb3JpZG5hbWVudGkgbGF0byBBcnJheSBwcmltYSBkaSB0aXJhcmUgZnVvcmkgbGEgcGFnaW5hIHNlbGV6aW9uYXRhXHJcbiAgICAgICAgbGV0IGl0ZW1zID0gKHRoaXMuZXN0LlZpZXcgYXMgYW55W10pO1xyXG4gICAgICAgIGlmICh0aGlzLmVzdClcclxuICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFycmF5TW9kZVJldmlld09yZGVyaW5ncyhpdGVtcyk7XHJcblxyXG4gICAgICAgIC8vIFBvaSBwZXIgdHV0dGkgaSB2YWxvcmkgZG9wbyBjb21wcmVzaSBmcmEgbGEgcGFnaW5hIC0gMSBlIGxhIHBhZ2luYVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAoKHRoaXMuZXN0LmFycmF5bW9kZVBhZ2UgLSAxKSAqIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSk7IGkgPCB0aGlzLmVzdC5hcnJheW1vZGVQYWdlICogdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGkgPD0gaXRlbXMubGVuZ3RoIC0gMSlcclxuICAgICAgICAgICAgICAgIHRtcEl0ZW1zLnB1c2goaXRlbXNbaV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRtcEl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBTZSBpbiBtb2RhbGl0w6AgYXJyYXkgYXBwbGljYSBnbGkgb3JkaW5hbWVudGkgQVNDLURFU0MgZGVsbGUgY29sb25uZSAqL1xyXG4gICAgcHVibGljIGFycmF5TW9kZVJldmlld09yZGVyaW5ncyhpdGVtczogYW55W10pOiBhbnlbXSB7XHJcbiAgICAgICAgbGV0IHRtcCA9IGl0ZW1zO1xyXG4gICAgICAgIGlmICh0aGlzLmVzdC5hcnJheU9yZGVycy5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5hcnJheU9yZGVycy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdG1wID0gdG1wLnNvcnQoKGEsIGIpID0+IChhW3QuaWRdID4gYlt0LmlkXSA/IDEgOiAtMSkgKiAodC5vcmRlciA9PSAnREVTQycgPyAtMSA6IDEpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRtcDtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,60 +1,60 @@
1
- import { EsThDirective } from "../../directives/es_th.directive";
2
- import { EsTdDirective } from "../../directives/es_td.directive";
3
- /** Classe che gestisce la modalità Report dell'es-table utilizzata nel Metering */
4
- export class ReportModeHandler {
5
- /** @ignore Costruttore */
6
- constructor(est, utilities) {
7
- this.est = est;
8
- this.utilities = utilities;
9
- }
10
- /** Metodo che si occupa di gestire la grafica della tabella in base alle informazioni di ordinamento colonne e paginazione contenuti nel modello */
11
- reviewReportBindings() {
12
- // Allineo le informazioni su eventuali ordinamenti fatti precedentemente
13
- if (this.est.View.orders && this.est.View.orders.length > 0) {
14
- this.est.View.orders.forEach(t => {
15
- this.est.View.report_columns.filter(c => c.id == t.column)[0].order = t.order;
16
- });
17
- }
18
- // Recupero il count precedente se serve
19
- let count = this.est.View.objectcount;
20
- if (count != -2)
21
- this.est.previousCount = count;
22
- else if (count == -2)
23
- count = this.est.previousCount;
24
- let ipp = (this.est.View.itemsperpageoverride || 15);
25
- this.est.View.pages = Math.ceil(count / ipp);
26
- this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.View.page, this.est.View.pages);
27
- }
28
- /**
29
- * Data una AppSearch questo metodo genera la lista di th e td che si possono collegare al giro standard.
30
- * Se non ci fosse questo passaggio intermedio la gestione della modalità report sarebbe 100% custom,
31
- * come poi lo era prima che la facessi passare dal giro che fanno tutte le altre modalità
32
- *
33
- * @param {AppSearch<any>} view View in modalità report contenente le informazioni sulle colonne
34
- *
35
- * @returns {{ ths: EsThDirective[], tds: EsTdDirective[] }} Lista di direttive per gli header e per il body
36
- */
37
- generateThsAndTdsFromView(view) {
38
- var ret = { ths: [], tds: [] };
39
- // Ordinamento per ora commentato... non vorrebbe mi fuckappasse tutto
40
- //view.report_columns.sort((c1, c2) => c1.seq || 0 - c2.seq || 0);
41
- for (let i = 0; i < view.report_columns.length; i++) {
42
- let clm = view.report_columns[i];
43
- var th = new EsThDirective(null);
44
- th.th = clm.id;
45
- th.thStaticContent = clm.description || null;
46
- th.thBackgroundColor = clm.color;
47
- th.thAlignment = clm.alignment;
48
- th.thFormat = clm.format;
49
- var td = new EsTdDirective(null);
50
- td.td = clm.id;
51
- td.tdPropertyAccessor = i.toString();
52
- td.tdAlignment = clm.alignment;
53
- td.tdFormat = clm.format;
54
- ret.ths.push(th);
55
- ret.tds.push(td);
56
- }
57
- return ret;
58
- }
59
- }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0TW9kZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvcmUvaGFuZGxlcnMvUmVwb3J0TW9kZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUtqRSxtRkFBbUY7QUFDbkYsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBcUIsRUFBVSxTQUEyQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUVuRixvSkFBb0o7SUFDN0ksb0JBQW9CO1FBRXZCLHlFQUF5RTtRQUN6RSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELHdDQUF3QztRQUN4QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2FBQzlCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNoQixLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFbkMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSx5QkFBeUIsQ0FBQyxJQUFvQjtRQUNqRCxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRS9CLHNFQUFzRTtRQUN0RSxrRUFBa0U7UUFFbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakMsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2YsRUFBRSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztZQUM3QyxFQUFFLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNqQyxFQUFFLENBQUMsV0FBVyxHQUFnQyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQzVELEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUV6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixFQUFFLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxXQUFXLEdBQWdDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDNUQsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBRXpCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIYW5kbGVyc1xyXG5pbXBvcnQgeyBVdGlsaXRpZXNIYW5kbGVyIH0gZnJvbSBcIi4vVXRpbGl0aWVzSGFuZGxlclwiO1xyXG5cclxuLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBFc1RhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZXMtdGFibGUvZXNfdGFibGUuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgRXNUaERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2VzX3RoLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBFc1RkRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZXNfdGQuZGlyZWN0aXZlXCI7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEFwcFNlYXJjaCB9IGZyb20gXCIuLi8uLi9kb21haW4vZXh0ZXJuYWxzL2FwcHNlYXJjaC9BcHBTZWFyY2hcIjtcclxuXHJcbi8qKiBDbGFzc2UgY2hlIGdlc3Rpc2NlIGxhIG1vZGFsaXTDoCBSZXBvcnQgZGVsbCdlcy10YWJsZSB1dGlsaXp6YXRhIG5lbCBNZXRlcmluZyAqL1xyXG5leHBvcnQgY2xhc3MgUmVwb3J0TW9kZUhhbmRsZXIge1xyXG5cclxuICAgIC8qKiBAaWdub3JlIENvc3RydXR0b3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVzdDogRXNUYWJsZUNvbXBvbmVudCwgcHJpdmF0ZSB1dGlsaXRpZXM6IFV0aWxpdGllc0hhbmRsZXIpIHsgfVxyXG5cclxuICAgIC8qKiBNZXRvZG8gY2hlIHNpIG9jY3VwYSBkaSBnZXN0aXJlIGxhIGdyYWZpY2EgZGVsbGEgdGFiZWxsYSBpbiBiYXNlIGFsbGUgaW5mb3JtYXppb25pIGRpIG9yZGluYW1lbnRvIGNvbG9ubmUgZSBwYWdpbmF6aW9uZSBjb250ZW51dGkgbmVsIG1vZGVsbG8gKi9cclxuICAgIHB1YmxpYyByZXZpZXdSZXBvcnRCaW5kaW5ncygpIHtcclxuXHJcbiAgICAgICAgLy8gQWxsaW5lbyBsZSBpbmZvcm1hemlvbmkgc3UgZXZlbnR1YWxpIG9yZGluYW1lbnRpIGZhdHRpIHByZWNlZGVudGVtZW50ZVxyXG4gICAgICAgIGlmICh0aGlzLmVzdC5WaWV3Lm9yZGVycyAmJiB0aGlzLmVzdC5WaWV3Lm9yZGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlZpZXcub3JkZXJzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5WaWV3LnJlcG9ydF9jb2x1bW5zLmZpbHRlcihjID0+IGMuaWQgPT0gdC5jb2x1bW4pWzBdLm9yZGVyID0gdC5vcmRlcjtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZWN1cGVybyBpbCBjb3VudCBwcmVjZWRlbnRlIHNlIHNlcnZlXHJcbiAgICAgICAgbGV0IGNvdW50ID0gdGhpcy5lc3QuVmlldy5vYmplY3Rjb3VudDtcclxuICAgICAgICBpZiAoY291bnQgIT0gLTIpXHJcbiAgICAgICAgICAgIHRoaXMuZXN0LnByZXZpb3VzQ291bnQgPSBjb3VudDtcclxuICAgICAgICBlbHNlIGlmIChjb3VudCA9PSAtMilcclxuICAgICAgICAgICAgY291bnQgPSB0aGlzLmVzdC5wcmV2aW91c0NvdW50O1xyXG5cclxuICAgICAgICBsZXQgaXBwID0gKHRoaXMuZXN0LlZpZXcuaXRlbXNwZXJwYWdlb3ZlcnJpZGUgfHwgMTUpO1xyXG4gICAgICAgIHRoaXMuZXN0LlZpZXcucGFnZXMgPSBNYXRoLmNlaWwoY291bnQgLyBpcHApO1xyXG4gICAgICAgIHRoaXMuZXN0LmFycmF5UHVsc2FudGkgPSB0aGlzLnV0aWxpdGllcy5nZXRQYWdlc0FycmF5KDYsIHRoaXMuZXN0LlZpZXcucGFnZSwgdGhpcy5lc3QuVmlldy5wYWdlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRhIHVuYSBBcHBTZWFyY2ggcXVlc3RvIG1ldG9kbyBnZW5lcmEgbGEgbGlzdGEgZGkgdGggZSB0ZCBjaGUgc2kgcG9zc29ubyBjb2xsZWdhcmUgYWwgZ2lybyBzdGFuZGFyZC5cclxuICAgICAqIFNlIG5vbiBjaSBmb3NzZSBxdWVzdG8gcGFzc2FnZ2lvIGludGVybWVkaW8gbGEgZ2VzdGlvbmUgZGVsbGEgbW9kYWxpdMOgIHJlcG9ydCBzYXJlYmJlIDEwMCUgY3VzdG9tLCBcclxuICAgICAqIGNvbWUgcG9pIGxvIGVyYSBwcmltYSBjaGUgbGEgZmFjZXNzaSBwYXNzYXJlIGRhbCBnaXJvIGNoZSBmYW5ubyB0dXR0ZSBsZSBhbHRyZSBtb2RhbGl0w6BcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtBcHBTZWFyY2g8YW55Pn0gdmlldyBWaWV3IGluIG1vZGFsaXTDoCByZXBvcnQgY29udGVuZW50ZSBsZSBpbmZvcm1hemlvbmkgc3VsbGUgY29sb25uZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7eyB0aHM6IEVzVGhEaXJlY3RpdmVbXSwgdGRzOiBFc1RkRGlyZWN0aXZlW10gfX0gTGlzdGEgZGkgZGlyZXR0aXZlIHBlciBnbGkgaGVhZGVyIGUgcGVyIGlsIGJvZHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdlbmVyYXRlVGhzQW5kVGRzRnJvbVZpZXcodmlldzogQXBwU2VhcmNoPGFueT4pOiB7IHRoczogRXNUaERpcmVjdGl2ZVtdLCB0ZHM6IEVzVGREaXJlY3RpdmVbXSB9IHtcclxuICAgICAgICB2YXIgcmV0ID0geyB0aHM6IFtdLCB0ZHM6IFtdIH07XHJcblxyXG4gICAgICAgIC8vIE9yZGluYW1lbnRvIHBlciBvcmEgY29tbWVudGF0by4uLiBub24gdm9ycmViYmUgbWkgZnVja2FwcGFzc2UgdHV0dG9cclxuICAgICAgICAvL3ZpZXcucmVwb3J0X2NvbHVtbnMuc29ydCgoYzEsIGMyKSA9PiBjMS5zZXEgfHwgMCAtIGMyLnNlcSB8fCAwKTtcclxuICAgICAgICBcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZXcucmVwb3J0X2NvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGNsbSA9IHZpZXcucmVwb3J0X2NvbHVtbnNbaV07XHJcblxyXG4gICAgICAgICAgICB2YXIgdGggPSBuZXcgRXNUaERpcmVjdGl2ZShudWxsKTtcclxuICAgICAgICAgICAgdGgudGggPSBjbG0uaWQ7XHJcbiAgICAgICAgICAgIHRoLnRoU3RhdGljQ29udGVudCA9IGNsbS5kZXNjcmlwdGlvbiB8fCBudWxsO1xyXG4gICAgICAgICAgICB0aC50aEJhY2tncm91bmRDb2xvciA9IGNsbS5jb2xvcjtcclxuICAgICAgICAgICAgdGgudGhBbGlnbm1lbnQgPSA8XCJDZW50ZXJcIiB8IFwiTGVmdFwiIHwgXCJSaWdodFwiPmNsbS5hbGlnbm1lbnQ7XHJcbiAgICAgICAgICAgIHRoLnRoRm9ybWF0ID0gY2xtLmZvcm1hdDtcclxuXHJcbiAgICAgICAgICAgIHZhciB0ZCA9IG5ldyBFc1RkRGlyZWN0aXZlKG51bGwpO1xyXG4gICAgICAgICAgICB0ZC50ZCA9IGNsbS5pZDtcclxuICAgICAgICAgICAgdGQudGRQcm9wZXJ0eUFjY2Vzc29yID0gaS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICB0ZC50ZEFsaWdubWVudCA9IDxcIkNlbnRlclwiIHwgXCJMZWZ0XCIgfCBcIlJpZ2h0XCI+Y2xtLmFsaWdubWVudDtcclxuICAgICAgICAgICAgdGQudGRGb3JtYXQgPSBjbG0uZm9ybWF0O1xyXG5cclxuICAgICAgICAgICAgcmV0LnRocy5wdXNoKHRoKTtcclxuICAgICAgICAgICAgcmV0LnRkcy5wdXNoKHRkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcbn1cclxuIl19
1
+ import { EsThDirective } from "../../directives/es_th.directive";
2
+ import { EsTdDirective } from "../../directives/es_td.directive";
3
+ /** Classe che gestisce la modalità Report dell'es-table utilizzata nel Metering */
4
+ export class ReportModeHandler {
5
+ /** @ignore Costruttore */
6
+ constructor(est, utilities) {
7
+ this.est = est;
8
+ this.utilities = utilities;
9
+ }
10
+ /** Metodo che si occupa di gestire la grafica della tabella in base alle informazioni di ordinamento colonne e paginazione contenuti nel modello */
11
+ reviewReportBindings() {
12
+ // Allineo le informazioni su eventuali ordinamenti fatti precedentemente
13
+ if (this.est.View.orders && this.est.View.orders.length > 0) {
14
+ this.est.View.orders.forEach(t => {
15
+ this.est.View.report_columns.filter(c => c.id == t.column)[0].order = t.order;
16
+ });
17
+ }
18
+ // Recupero il count precedente se serve
19
+ let count = this.est.View.objectcount;
20
+ if (count != -2)
21
+ this.est.previousCount = count;
22
+ else if (count == -2)
23
+ count = this.est.previousCount;
24
+ let ipp = (this.est.View.itemsperpageoverride || 15);
25
+ this.est.View.pages = Math.ceil(count / ipp);
26
+ this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.View.page, this.est.View.pages);
27
+ }
28
+ /**
29
+ * Data una AppSearch questo metodo genera la lista di th e td che si possono collegare al giro standard.
30
+ * Se non ci fosse questo passaggio intermedio la gestione della modalità report sarebbe 100% custom,
31
+ * come poi lo era prima che la facessi passare dal giro che fanno tutte le altre modalità
32
+ *
33
+ * @param {AppSearch<any>} view View in modalità report contenente le informazioni sulle colonne
34
+ *
35
+ * @returns {{ ths: EsThDirective[], tds: EsTdDirective[] }} Lista di direttive per gli header e per il body
36
+ */
37
+ generateThsAndTdsFromView(view) {
38
+ var ret = { ths: [], tds: [] };
39
+ // Ordinamento per ora commentato... non vorrebbe mi fuckappasse tutto
40
+ //view.report_columns.sort((c1, c2) => c1.seq || 0 - c2.seq || 0);
41
+ for (let i = 0; i < view.report_columns.length; i++) {
42
+ let clm = view.report_columns[i];
43
+ var th = new EsThDirective(null);
44
+ th.th = clm.id;
45
+ th.thStaticContent = clm.description || null;
46
+ th.thBackgroundColor = clm.color;
47
+ th.thAlignment = clm.alignment;
48
+ th.thFormat = clm.format;
49
+ var td = new EsTdDirective(null);
50
+ td.td = clm.id;
51
+ td.tdPropertyAccessor = i.toString();
52
+ td.tdAlignment = clm.alignment;
53
+ td.tdFormat = clm.format;
54
+ ret.ths.push(th);
55
+ ret.tds.push(td);
56
+ }
57
+ return ret;
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0TW9kZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvcmUvaGFuZGxlcnMvUmVwb3J0TW9kZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUtqRSxtRkFBbUY7QUFDbkYsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBcUIsRUFBVSxTQUEyQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUVuRixvSkFBb0o7SUFDN0ksb0JBQW9CO1FBRXZCLHlFQUF5RTtRQUN6RSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsRixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3RDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztZQUNYLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQzthQUM5QixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDaEIsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBRW5DLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0kseUJBQXlCLENBQUMsSUFBb0I7UUFDakQsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUUvQixzRUFBc0U7UUFDdEUsa0VBQWtFO1FBRWxFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2xELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFakMsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2YsRUFBRSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztZQUM3QyxFQUFFLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNqQyxFQUFFLENBQUMsV0FBVyxHQUFnQyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQzVELEVBQUUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUV6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZixFQUFFLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLEVBQUUsQ0FBQyxXQUFXLEdBQWdDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDNUQsRUFBRSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBRXpCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEhhbmRsZXJzXHJcbmltcG9ydCB7IFV0aWxpdGllc0hhbmRsZXIgfSBmcm9tIFwiLi9VdGlsaXRpZXNIYW5kbGVyXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5pbXBvcnQgeyBFc1RoRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZXNfdGguZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEVzVGREaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9lc190ZC5kaXJlY3RpdmVcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQXBwU2VhcmNoIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9leHRlcm5hbHMvYXBwc2VhcmNoL0FwcFNlYXJjaFwiO1xyXG5cclxuLyoqIENsYXNzZSBjaGUgZ2VzdGlzY2UgbGEgbW9kYWxpdMOgIFJlcG9ydCBkZWxsJ2VzLXRhYmxlIHV0aWxpenphdGEgbmVsIE1ldGVyaW5nICovXHJcbmV4cG9ydCBjbGFzcyBSZXBvcnRNb2RlSGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXN0OiBFc1RhYmxlQ29tcG9uZW50LCBwcml2YXRlIHV0aWxpdGllczogVXRpbGl0aWVzSGFuZGxlcikgeyB9XHJcblxyXG4gICAgLyoqIE1ldG9kbyBjaGUgc2kgb2NjdXBhIGRpIGdlc3RpcmUgbGEgZ3JhZmljYSBkZWxsYSB0YWJlbGxhIGluIGJhc2UgYWxsZSBpbmZvcm1hemlvbmkgZGkgb3JkaW5hbWVudG8gY29sb25uZSBlIHBhZ2luYXppb25lIGNvbnRlbnV0aSBuZWwgbW9kZWxsbyAqL1xyXG4gICAgcHVibGljIHJldmlld1JlcG9ydEJpbmRpbmdzKCkge1xyXG5cclxuICAgICAgICAvLyBBbGxpbmVvIGxlIGluZm9ybWF6aW9uaSBzdSBldmVudHVhbGkgb3JkaW5hbWVudGkgZmF0dGkgcHJlY2VkZW50ZW1lbnRlXHJcbiAgICAgICAgaWYgKHRoaXMuZXN0LlZpZXcub3JkZXJzICYmIHRoaXMuZXN0LlZpZXcub3JkZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5lc3QuVmlldy5vcmRlcnMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZXN0LlZpZXcucmVwb3J0X2NvbHVtbnMuZmlsdGVyKGMgPT4gYy5pZCA9PSB0LmNvbHVtbilbMF0ub3JkZXIgPSB0Lm9yZGVyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJlY3VwZXJvIGlsIGNvdW50IHByZWNlZGVudGUgc2Ugc2VydmVcclxuICAgICAgICBsZXQgY291bnQgPSB0aGlzLmVzdC5WaWV3Lm9iamVjdGNvdW50O1xyXG4gICAgICAgIGlmIChjb3VudCAhPSAtMilcclxuICAgICAgICAgICAgdGhpcy5lc3QucHJldmlvdXNDb3VudCA9IGNvdW50O1xyXG4gICAgICAgIGVsc2UgaWYgKGNvdW50ID09IC0yKVxyXG4gICAgICAgICAgICBjb3VudCA9IHRoaXMuZXN0LnByZXZpb3VzQ291bnQ7XHJcblxyXG4gICAgICAgIGxldCBpcHAgPSAodGhpcy5lc3QuVmlldy5pdGVtc3BlcnBhZ2VvdmVycmlkZSB8fCAxNSk7XHJcbiAgICAgICAgdGhpcy5lc3QuVmlldy5wYWdlcyA9IE1hdGguY2VpbChjb3VudCAvIGlwcCk7XHJcbiAgICAgICAgdGhpcy5lc3QuYXJyYXlQdWxzYW50aSA9IHRoaXMudXRpbGl0aWVzLmdldFBhZ2VzQXJyYXkoNiwgdGhpcy5lc3QuVmlldy5wYWdlLCB0aGlzLmVzdC5WaWV3LnBhZ2VzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERhdGEgdW5hIEFwcFNlYXJjaCBxdWVzdG8gbWV0b2RvIGdlbmVyYSBsYSBsaXN0YSBkaSB0aCBlIHRkIGNoZSBzaSBwb3Nzb25vIGNvbGxlZ2FyZSBhbCBnaXJvIHN0YW5kYXJkLlxyXG4gICAgICogU2Ugbm9uIGNpIGZvc3NlIHF1ZXN0byBwYXNzYWdnaW8gaW50ZXJtZWRpbyBsYSBnZXN0aW9uZSBkZWxsYSBtb2RhbGl0w6AgcmVwb3J0IHNhcmViYmUgMTAwJSBjdXN0b20sIFxyXG4gICAgICogY29tZSBwb2kgbG8gZXJhIHByaW1hIGNoZSBsYSBmYWNlc3NpIHBhc3NhcmUgZGFsIGdpcm8gY2hlIGZhbm5vIHR1dHRlIGxlIGFsdHJlIG1vZGFsaXTDoFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0FwcFNlYXJjaDxhbnk+fSB2aWV3IFZpZXcgaW4gbW9kYWxpdMOgIHJlcG9ydCBjb250ZW5lbnRlIGxlIGluZm9ybWF6aW9uaSBzdWxsZSBjb2xvbm5lXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHt7IHRoczogRXNUaERpcmVjdGl2ZVtdLCB0ZHM6IEVzVGREaXJlY3RpdmVbXSB9fSBMaXN0YSBkaSBkaXJldHRpdmUgcGVyIGdsaSBoZWFkZXIgZSBwZXIgaWwgYm9keVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2VuZXJhdGVUaHNBbmRUZHNGcm9tVmlldyh2aWV3OiBBcHBTZWFyY2g8YW55Pik6IHsgdGhzOiBFc1RoRGlyZWN0aXZlW10sIHRkczogRXNUZERpcmVjdGl2ZVtdIH0ge1xyXG4gICAgICAgIHZhciByZXQgPSB7IHRoczogW10sIHRkczogW10gfTtcclxuXHJcbiAgICAgICAgLy8gT3JkaW5hbWVudG8gcGVyIG9yYSBjb21tZW50YXRvLi4uIG5vbiB2b3JyZWJiZSBtaSBmdWNrYXBwYXNzZSB0dXR0b1xyXG4gICAgICAgIC8vdmlldy5yZXBvcnRfY29sdW1ucy5zb3J0KChjMSwgYzIpID0+IGMxLnNlcSB8fCAwIC0gYzIuc2VxIHx8IDApO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmlldy5yZXBvcnRfY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgY2xtID0gdmlldy5yZXBvcnRfY29sdW1uc1tpXTtcclxuXHJcbiAgICAgICAgICAgIHZhciB0aCA9IG5ldyBFc1RoRGlyZWN0aXZlKG51bGwpO1xyXG4gICAgICAgICAgICB0aC50aCA9IGNsbS5pZDtcclxuICAgICAgICAgICAgdGgudGhTdGF0aWNDb250ZW50ID0gY2xtLmRlc2NyaXB0aW9uIHx8IG51bGw7XHJcbiAgICAgICAgICAgIHRoLnRoQmFja2dyb3VuZENvbG9yID0gY2xtLmNvbG9yO1xyXG4gICAgICAgICAgICB0aC50aEFsaWdubWVudCA9IDxcIkNlbnRlclwiIHwgXCJMZWZ0XCIgfCBcIlJpZ2h0XCI+Y2xtLmFsaWdubWVudDtcclxuICAgICAgICAgICAgdGgudGhGb3JtYXQgPSBjbG0uZm9ybWF0O1xyXG5cclxuICAgICAgICAgICAgdmFyIHRkID0gbmV3IEVzVGREaXJlY3RpdmUobnVsbCk7XHJcbiAgICAgICAgICAgIHRkLnRkID0gY2xtLmlkO1xyXG4gICAgICAgICAgICB0ZC50ZFByb3BlcnR5QWNjZXNzb3IgPSBpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIHRkLnRkQWxpZ25tZW50ID0gPFwiQ2VudGVyXCIgfCBcIkxlZnRcIiB8IFwiUmlnaHRcIj5jbG0uYWxpZ25tZW50O1xyXG4gICAgICAgICAgICB0ZC50ZEZvcm1hdCA9IGNsbS5mb3JtYXQ7XHJcblxyXG4gICAgICAgICAgICByZXQudGhzLnB1c2godGgpO1xyXG4gICAgICAgICAgICByZXQudGRzLnB1c2godGQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxufVxyXG4iXX0=