@esfaenza/es-table 12.2.20 → 12.2.21

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 (141) hide show
  1. package/bundles/esfaenza-es-table.umd.js +3477 -1574
  2. package/bundles/esfaenza-es-table.umd.js.map +1 -1
  3. package/esfaenza-es-table.d.ts +7 -6
  4. package/esfaenza-es-table.metadata.json +1 -1
  5. package/esm2015/esfaenza-es-table.js +8 -7
  6. package/esm2015/lib/components/es-table/es_table.component.js +1316 -0
  7. package/esm2015/lib/components/es-table/es_table.component.loc.js +36 -0
  8. package/esm2015/lib/components/es-td/es_td.component.js +106 -0
  9. package/esm2015/lib/components/es-th/es_th.component.js +160 -0
  10. package/esm2015/lib/components/pager/table_pager.component.js +106 -0
  11. package/esm2015/lib/components/pager/table_pager.component.loc.js +22 -0
  12. package/esm2015/lib/core/handlers/classes/ColumnMetadataHandler.js +679 -0
  13. package/esm2015/lib/core/handlers/classes/DynamicModeHandler.js +64 -0
  14. package/esm2015/lib/core/handlers/classes/ExportHandler.js +43 -0
  15. package/esm2015/lib/core/handlers/classes/HierarchyModeHandler.js +136 -0
  16. package/esm2015/lib/core/handlers/classes/ItemsHandler.js +130 -0
  17. package/esm2015/lib/core/handlers/classes/ReportModeHandler.js +70 -0
  18. package/esm2015/lib/core/handlers/classes/RowGroupingHandler.js +475 -0
  19. package/esm2015/lib/core/handlers/classes/SelectionHandler.js +527 -0
  20. package/esm2015/lib/core/handlers/classes/UtilitiesHandler.js +169 -0
  21. package/esm2015/lib/core/handlers/index.js +10 -0
  22. package/esm2015/lib/directives/es_td.directive.js +2 -4
  23. package/esm2015/lib/directives/es_th.directive.js +23 -7
  24. package/esm2015/lib/domain/configuration/EsTableDefaultable.js +4 -0
  25. package/esm2015/lib/domain/configuration/EsTableModuleConfig.js +4 -0
  26. package/esm2015/lib/domain/externals/classes/CornerMenuOption.js +4 -0
  27. package/esm2015/lib/domain/externals/classes/EsTableColumnsDefinition.js +31 -0
  28. package/esm2015/lib/domain/externals/classes/EsTableOperationDefinition.js +22 -0
  29. package/esm2015/lib/domain/externals/classes/appsearch/AppOrdering.js +16 -0
  30. package/esm2015/lib/domain/externals/classes/appsearch/AppSearch.js +35 -0
  31. package/esm2015/lib/domain/externals/classes/appsearch/GenericItem.js +11 -0
  32. package/esm2015/lib/domain/externals/classes/appsearch/Group.js +17 -0
  33. package/esm2015/lib/domain/externals/classes/appsearch/GroupAggregation.js +16 -0
  34. package/esm2015/lib/domain/externals/classes/appsearch/GroupFilter.js +14 -0
  35. package/esm2015/lib/domain/externals/classes/appsearch/GroupOrAggregation.js +16 -0
  36. package/esm2015/lib/domain/externals/classes/appsearch/ItemsSelection.js +23 -0
  37. package/esm2015/lib/domain/externals/classes/report/ReportColumn.js +4 -0
  38. package/esm2015/lib/domain/externals/classes/report/ReportDefinition.js +4 -0
  39. package/esm2015/lib/domain/externals/classes/report/ReportOrder.js +4 -0
  40. package/esm2015/lib/domain/externals/classes/report/ReportParam.js +4 -0
  41. package/esm2015/lib/domain/externals/classes/report/ReportResult.js +4 -0
  42. package/esm2015/lib/domain/externals/classes/report/ReportRow.js +4 -0
  43. package/esm2015/lib/domain/externals/index.js +18 -0
  44. package/esm2015/lib/domain/index.js +3 -16
  45. package/esm2015/lib/domain/internals/classes/CacheTriptic.js +16 -0
  46. package/esm2015/lib/domain/internals/classes/EsTableColumn.js +24 -0
  47. package/esm2015/lib/domain/internals/classes/GroupPager.js +21 -0
  48. package/esm2015/lib/domain/internals/classes/GroupRouteFragment.js +17 -0
  49. package/esm2015/lib/domain/internals/classes/ThAggregation.js +16 -0
  50. package/esm2015/lib/domain/internals/classes/ThElement.js +2 -0
  51. package/esm2015/lib/domain/internals/index.js +7 -0
  52. package/esm2015/lib/es-table.module.js +13 -8
  53. package/esm2015/lib/tokens.js +6 -4
  54. package/esm2015/public-api.js +7 -6
  55. package/fesm2015/esfaenza-es-table.js +3462 -1688
  56. package/fesm2015/esfaenza-es-table.js.map +1 -1
  57. package/lib/{es_table.component.d.ts → components/es-table/es_table.component.d.ts} +169 -329
  58. package/lib/{es_table.component.loc.d.ts → components/es-table/es_table.component.loc.d.ts} +2 -6
  59. package/lib/{es_td.component.d.ts → components/es-td/es_td.component.d.ts} +14 -36
  60. package/lib/{es_th.component.d.ts → components/es-th/es_th.component.d.ts} +27 -61
  61. package/lib/components/pager/table_pager.component.d.ts +54 -0
  62. package/lib/{pager → components/pager}/table_pager.component.loc.d.ts +2 -6
  63. package/lib/core/handlers/classes/ColumnMetadataHandler.d.ts +159 -0
  64. package/lib/core/handlers/classes/DynamicModeHandler.d.ts +32 -0
  65. package/lib/core/handlers/classes/ExportHandler.d.ts +22 -0
  66. package/lib/core/handlers/classes/HierarchyModeHandler.d.ts +40 -0
  67. package/lib/core/handlers/classes/ItemsHandler.d.ts +41 -0
  68. package/lib/core/handlers/classes/ReportModeHandler.d.ts +21 -0
  69. package/lib/core/handlers/classes/RowGroupingHandler.d.ts +114 -0
  70. package/lib/core/handlers/classes/SelectionHandler.d.ts +149 -0
  71. package/lib/core/handlers/classes/UtilitiesHandler.d.ts +67 -0
  72. package/lib/core/handlers/index.d.ts +9 -0
  73. package/lib/directives/es_td.directive.d.ts +1 -3
  74. package/lib/directives/es_th.directive.d.ts +18 -5
  75. package/lib/domain/configuration/EsTableDefaultable.d.ts +19 -0
  76. package/lib/domain/configuration/EsTableModuleConfig.d.ts +10 -0
  77. package/lib/domain/externals/classes/CornerMenuOption.d.ts +7 -0
  78. package/lib/domain/{classes → externals/classes}/EsTableColumnsDefinition.d.ts +5 -7
  79. package/lib/domain/{classes → externals/classes}/EsTableOperationDefinition.d.ts +1 -3
  80. package/lib/domain/{classes → externals/classes/appsearch}/AppOrdering.d.ts +0 -0
  81. package/lib/domain/externals/classes/appsearch/AppSearch.d.ts +67 -0
  82. package/lib/domain/externals/classes/appsearch/GenericItem.d.ts +13 -0
  83. package/lib/domain/externals/classes/appsearch/Group.d.ts +17 -0
  84. package/lib/domain/externals/classes/appsearch/GroupAggregation.d.ts +14 -0
  85. package/lib/domain/externals/classes/appsearch/GroupFilter.d.ts +12 -0
  86. package/lib/domain/externals/classes/appsearch/GroupOrAggregation.d.ts +14 -0
  87. package/lib/domain/externals/classes/appsearch/ItemsSelection.d.ts +22 -0
  88. package/lib/domain/externals/classes/report/ReportColumn.d.ts +15 -0
  89. package/lib/domain/externals/classes/report/ReportDefinition.d.ts +24 -0
  90. package/lib/domain/externals/classes/report/ReportOrder.d.ts +7 -0
  91. package/lib/domain/externals/classes/report/ReportParam.d.ts +40 -0
  92. package/lib/domain/externals/classes/report/ReportResult.d.ts +12 -0
  93. package/lib/domain/externals/classes/report/ReportRow.d.ts +5 -0
  94. package/lib/domain/externals/index.d.ts +17 -0
  95. package/lib/domain/index.d.ts +2 -15
  96. package/lib/domain/internals/classes/CacheTriptic.d.ts +14 -0
  97. package/lib/domain/{classes → internals/classes}/EsTableColumn.d.ts +8 -4
  98. package/lib/domain/internals/classes/GroupPager.d.ts +22 -0
  99. package/lib/domain/internals/classes/GroupRouteFragment.d.ts +15 -0
  100. package/lib/domain/internals/classes/ThAggregation.d.ts +14 -0
  101. package/lib/domain/internals/classes/ThElement.d.ts +13 -0
  102. package/lib/domain/internals/index.d.ts +6 -0
  103. package/lib/es-table.module.d.ts +1 -1
  104. package/lib/tokens.d.ts +6 -3
  105. package/package.json +2 -1
  106. package/public-api.d.ts +6 -5
  107. package/esm2015/lib/domain/classes/AppOrdering.js +0 -16
  108. package/esm2015/lib/domain/classes/AppSearch.js +0 -35
  109. package/esm2015/lib/domain/classes/CornerMenuOption.js +0 -6
  110. package/esm2015/lib/domain/classes/EsTableColumn.js +0 -22
  111. package/esm2015/lib/domain/classes/EsTableColumnsDefinition.js +0 -31
  112. package/esm2015/lib/domain/classes/EsTableOperationDefinition.js +0 -24
  113. package/esm2015/lib/domain/classes/GenericItem.js +0 -15
  114. package/esm2015/lib/domain/classes/IAppSearch.js +0 -2
  115. package/esm2015/lib/domain/classes/ItemsSelection.js +0 -25
  116. package/esm2015/lib/domain/classes/ReportColumn.js +0 -6
  117. package/esm2015/lib/domain/classes/ReportDefinition.js +0 -6
  118. package/esm2015/lib/domain/classes/ReportOrder.js +0 -6
  119. package/esm2015/lib/domain/classes/ReportParam.js +0 -6
  120. package/esm2015/lib/domain/classes/ReportResult.js +0 -6
  121. package/esm2015/lib/domain/classes/ReportRow.js +0 -6
  122. package/esm2015/lib/es_table.component.js +0 -1958
  123. package/esm2015/lib/es_table.component.loc.js +0 -36
  124. package/esm2015/lib/es_td.component.js +0 -121
  125. package/esm2015/lib/es_th.component.js +0 -178
  126. package/esm2015/lib/models/EsTableModuleConfig.js +0 -6
  127. package/esm2015/lib/pager/table_pager.component.js +0 -70
  128. package/esm2015/lib/pager/table_pager.component.loc.js +0 -24
  129. package/lib/domain/classes/AppSearch.d.ts +0 -76
  130. package/lib/domain/classes/CornerMenuOption.d.ts +0 -13
  131. package/lib/domain/classes/GenericItem.d.ts +0 -25
  132. package/lib/domain/classes/IAppSearch.d.ts +0 -67
  133. package/lib/domain/classes/ItemsSelection.d.ts +0 -27
  134. package/lib/domain/classes/ReportColumn.d.ts +0 -29
  135. package/lib/domain/classes/ReportDefinition.d.ts +0 -46
  136. package/lib/domain/classes/ReportOrder.d.ts +0 -13
  137. package/lib/domain/classes/ReportParam.d.ts +0 -76
  138. package/lib/domain/classes/ReportResult.d.ts +0 -22
  139. package/lib/domain/classes/ReportRow.d.ts +0 -9
  140. package/lib/models/EsTableModuleConfig.d.ts +0 -9
  141. package/lib/pager/table_pager.component.d.ts +0 -50
@@ -0,0 +1,64 @@
1
+ // Dominio
2
+ import { EsTableColumnsDefinition } from "../../../domain";
3
+ /** Classe contenente le gestioni particolari della modalità dinamica dell'es-table */
4
+ export class DynamicModeHandler {
5
+ /** @ignore Costruttore*/
6
+ constructor(est) {
7
+ this.est = est;
8
+ }
9
+ /**
10
+ * Metodo di supporto alla creazione di un router link parametrizzato all'oggetto corrente utilizzato nella modalità dinamica
11
+ *
12
+ * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
13
+ * @param {string[]} parameterProps Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
14
+ * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
15
+ * @param {GenericItem} item Oggetto generico collegato a questo contesto
16
+ *
17
+ * @returns {any} Router link generato in base al parametri
18
+ */
19
+ generateRouterLink(path, parameterProps, item) {
20
+ if (this.est.DynamicTableRouterLinkCache[item._hash + path]) {
21
+ return this.est.DynamicTableRouterLinkCache[item._hash + path];
22
+ }
23
+ else {
24
+ let link = this.getRouterLink(path, parameterProps, item);
25
+ this.est.DynamicTableRouterLinkCache[item._hash + path] = link;
26
+ return link;
27
+ }
28
+ }
29
+ /**
30
+ * Crea un router link
31
+ *
32
+ * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
33
+ * @param {string[]} pars Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
34
+ * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
35
+ * @param {GenericItem} item Oggetto generico collegato a questo contesto
36
+ *
37
+ * @returns {any} Router link generato in base al parametri
38
+ */
39
+ getRouterLink(path, pars, item) {
40
+ for (let i = 0; i < pars.length; i++)
41
+ path = path.replace('{' + i + '}', item.properties[pars[i]]);
42
+ path = path.replace(/'/g, '"').replace(/ /g, '');
43
+ return JSON.parse(path);
44
+ }
45
+ /** Se non ho l'Input **DynamicRowColumnsDefinition** in modalità dinamica lo riempio con il default nome della colonna = testo della colonna */
46
+ eventuallyReviewDynamicColumns() {
47
+ // Senza oggetti esco
48
+ if (!this.est.TMPBoundSource || this.est.TMPBoundSource.length == 0)
49
+ return;
50
+ var useGenericItems = !!this.est.TMPBoundSource[0]["properties"];
51
+ if (!useGenericItems || (!this.est.FirstBind && this.est.DynamicRowColumnsDefinition && this.est.DynamicRowColumnsDefinition.length > 0))
52
+ return;
53
+ if ((!this.est.DynamicRowColumnsDefinition || this.est.DynamicRowColumnsDefinition.length == 0)) {
54
+ var props = this.est.TMPBoundSource[0]["properties"];
55
+ this.est.DynamicRowColumnsDefinition = [];
56
+ for (let key in props)
57
+ this.est.DynamicRowColumnsDefinition.push(new EsTableColumnsDefinition(key, key));
58
+ this.est.UserDefinedDynamicCols = false;
59
+ }
60
+ else
61
+ this.est.UserDefinedDynamicCols = true;
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01vZGVIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL2NsYXNzZXMvRHluYW1pY01vZGVIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLFVBQVU7QUFDVixPQUFPLEVBQUUsd0JBQXdCLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxzRkFBc0Y7QUFDdEYsTUFBTSxPQUFPLGtCQUFrQjtJQUUzQix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUI7UUFBckIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7SUFBSSxDQUFDO0lBRTlDOzs7Ozs7Ozs7T0FTRztJQUNJLGtCQUFrQixDQUFDLElBQVksRUFBRSxjQUF3QixFQUFFLElBQWlCO1FBQy9FLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFO1lBQ3pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2xFO2FBQU07WUFDSCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMvRCxPQUFPLElBQUksQ0FBQztTQUNmO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGFBQWEsQ0FBQyxJQUFZLEVBQUUsSUFBYyxFQUFFLElBQWlCO1FBRWpFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtZQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxnSkFBZ0o7SUFDekksOEJBQThCO1FBQ2pDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDL0QsT0FBTztRQUVYLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNwSSxPQUFPO1FBRVgsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtZQUM3RixJQUFJLEtBQUssR0FBMkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUM7WUFDMUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO1NBQzNDOztZQUdHLElBQUksQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0lBQy9DLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgRXNUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2VzLXRhYmxlL2VzX3RhYmxlLmNvbXBvbmVudFwiXHJcblxyXG4vLyBEb21pbmlvXHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgR2VuZXJpY0l0ZW0gfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluXCI7XHJcblxyXG4vKiogQ2xhc3NlIGNvbnRlbmVudGUgbGUgZ2VzdGlvbmkgcGFydGljb2xhcmkgZGVsbGEgbW9kYWxpdMOgIGRpbmFtaWNhIGRlbGwnZXMtdGFibGUgKi9cclxuZXhwb3J0IGNsYXNzIER5bmFtaWNNb2RlSGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGRpIHN1cHBvcnRvIGFsbGEgY3JlYXppb25lIGRpIHVuIHJvdXRlciBsaW5rIHBhcmFtZXRyaXp6YXRvIGFsbCdvZ2dldHRvIGNvcnJlbnRlIHV0aWxpenphdG8gbmVsbGEgbW9kYWxpdMOgIGRpbmFtaWNhXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCBzdSBjdWkgbmF2aWdhcmUgY29uIGV2ZW50dWFsaSBwYXJhbWV0cmkgcmlmZXJpdGkgYWxsJ29nZ2V0dG8gY290bmVzdHVhbGUgY29tZSB7MH0sIHsxfSwgZWNjLi4uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXJhbWV0ZXJQcm9wcyBMaXN0YSBwb3NpemlvbmFsZSBkZWxsZSBwcm9wcmlldMOgIGEgY3VpIGJpbmRhcmUgaSByaWZlcmltZW50aSBkZWwgcGFyYW1ldHJvICoqcGF0aCoqXHJcbiAgICAgKiBFcy4gSWwgdmFsb3JlIGRlbGEgcHJvcHJpZXTDoCBhbGwnaW5kaWNlIDAgZGkgcXVlc3RvIGFycmF5IHZlcnLDoCBzb3N0aXR1aXRhIGFsIHZhbG9yZSB7MH0gZGVsIHBhcmFtZXRybyAqKnBhdGgqKlxyXG4gICAgICogQHBhcmFtIHtHZW5lcmljSXRlbX0gaXRlbSBPZ2dldHRvIGdlbmVyaWNvIGNvbGxlZ2F0byBhIHF1ZXN0byBjb250ZXN0b1xyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHthbnl9IFJvdXRlciBsaW5rIGdlbmVyYXRvIGluIGJhc2UgYWwgcGFyYW1ldHJpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZW5lcmF0ZVJvdXRlckxpbmsocGF0aDogc3RyaW5nLCBwYXJhbWV0ZXJQcm9wczogc3RyaW5nW10sIGl0ZW06IEdlbmVyaWNJdGVtKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5lc3QuRHluYW1pY1RhYmxlUm91dGVyTGlua0NhY2hlW2l0ZW0uX2hhc2ggKyBwYXRoXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lc3QuRHluYW1pY1RhYmxlUm91dGVyTGlua0NhY2hlW2l0ZW0uX2hhc2ggKyBwYXRoXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbGluayA9IHRoaXMuZ2V0Um91dGVyTGluayhwYXRoLCBwYXJhbWV0ZXJQcm9wcywgaXRlbSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LkR5bmFtaWNUYWJsZVJvdXRlckxpbmtDYWNoZVtpdGVtLl9oYXNoICsgcGF0aF0gPSBsaW5rO1xyXG4gICAgICAgICAgICByZXR1cm4gbGluaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhIHVuIHJvdXRlciBsaW5rXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCBzdSBjdWkgbmF2aWdhcmUgY29uIGV2ZW50dWFsaSBwYXJhbWV0cmkgcmlmZXJpdGkgYWxsJ29nZ2V0dG8gY290bmVzdHVhbGUgY29tZSB7MH0sIHsxfSwgZWNjLi4uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXJzIExpc3RhIHBvc2l6aW9uYWxlIGRlbGxlIHByb3ByaWV0w6AgYSBjdWkgYmluZGFyZSBpIHJpZmVyaW1lbnRpIGRlbCBwYXJhbWV0cm8gKipwYXRoKipcclxuICAgICAqIEVzLiBJbCB2YWxvcmUgZGVsYSBwcm9wcmlldMOgIGFsbCdpbmRpY2UgMCBkaSBxdWVzdG8gYXJyYXkgdmVycsOgIHNvc3RpdHVpdGEgYWwgdmFsb3JlIHswfSBkZWwgcGFyYW1ldHJvICoqcGF0aCoqXHJcbiAgICAgKiBAcGFyYW0ge0dlbmVyaWNJdGVtfSBpdGVtIE9nZ2V0dG8gZ2VuZXJpY28gY29sbGVnYXRvIGEgcXVlc3RvIGNvbnRlc3RvXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2FueX0gUm91dGVyIGxpbmsgZ2VuZXJhdG8gaW4gYmFzZSBhbCBwYXJhbWV0cmlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBnZXRSb3V0ZXJMaW5rKHBhdGg6IHN0cmluZywgcGFyczogc3RyaW5nW10sIGl0ZW06IEdlbmVyaWNJdGVtKTogYW55IHtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCd7JyArIGkgKyAnfScsIGl0ZW0ucHJvcGVydGllc1twYXJzW2ldXSk7XHJcblxyXG4gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoLycvZywgJ1wiJykucmVwbGFjZSgvIC9nLCAnJyk7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFNlIG5vbiBobyBsJ0lucHV0ICoqRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uKiogaW4gbW9kYWxpdMOgIGRpbmFtaWNhIGxvIHJpZW1waW8gY29uIGlsIGRlZmF1bHQgbm9tZSBkZWxsYSBjb2xvbm5hID0gdGVzdG8gZGVsbGEgY29sb25uYSAqL1xyXG4gICAgcHVibGljIGV2ZW50dWFsbHlSZXZpZXdEeW5hbWljQ29sdW1ucygpIHtcclxuICAgICAgICAvLyBTZW56YSBvZ2dldHRpIGVzY29cclxuICAgICAgICBpZiAoIXRoaXMuZXN0LlRNUEJvdW5kU291cmNlIHx8IHRoaXMuZXN0LlRNUEJvdW5kU291cmNlLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciB1c2VHZW5lcmljSXRlbXMgPSAhIXRoaXMuZXN0LlRNUEJvdW5kU291cmNlWzBdW1wicHJvcGVydGllc1wiXTtcclxuICAgICAgICBpZiAoIXVzZUdlbmVyaWNJdGVtcyB8fCAoIXRoaXMuZXN0LkZpcnN0QmluZCAmJiB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24gJiYgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uLmxlbmd0aCA+IDApKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICgoIXRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbiB8fCB0aGlzLmVzdC5EeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb24ubGVuZ3RoID09IDApKSB7XHJcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PnRoaXMuZXN0LlRNUEJvdW5kU291cmNlWzBdW1wicHJvcGVydGllc1wiXTtcclxuICAgICAgICAgICAgdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uID0gW107XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBwcm9wcylcclxuICAgICAgICAgICAgICAgIHRoaXMuZXN0LkR5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbi5wdXNoKG5ldyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24oa2V5LCBrZXkpKTtcclxuICAgICAgICAgICAgdGhpcy5lc3QuVXNlckRlZmluZWREeW5hbWljQ29scyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5Vc2VyRGVmaW5lZER5bmFtaWNDb2xzID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,43 @@
1
+ /** Classe contenente la gestione delle importazioni */
2
+ export class ExportHandler {
3
+ /** @ignore Costruttore*/
4
+ constructor(est, expExts, msgExts) {
5
+ this.est = est;
6
+ this.expExts = expExts;
7
+ this.msgExts = msgExts;
8
+ }
9
+ /**
10
+ * Effettua l'esportazione dei dati
11
+ *
12
+ * @param {string} format Formato di esportazione. Letto solo in modalità Report della tabella
13
+ */
14
+ tryExport(format) {
15
+ if (!this.est.ExportFunction)
16
+ return;
17
+ if (this.est.reportMode)
18
+ this.est.ExportFunction(format);
19
+ else
20
+ this.est.ExportFunction((data, cancel = false) => {
21
+ if (cancel)
22
+ return;
23
+ if (data.length == 0) {
24
+ this.msgExts.simpleWarning(this.est.lc.loc("Cannot export an empty dataset"));
25
+ return;
26
+ }
27
+ this.setupExport(data);
28
+ this.est.cdr.detectChanges();
29
+ setTimeout(() => { this.est.exportDownloader.nativeElement.click(); });
30
+ });
31
+ }
32
+ /**
33
+ * Metodo che effettivamente genera gli header e i dati per l'esportazione con **ngx-csv**
34
+ *
35
+ * @param {any[]} items Oggetti da esportare
36
+ */
37
+ setupExport(items) {
38
+ let drcd = this.est.DynamicRowColumnsDefinition;
39
+ this.est.headers = drcd && drcd.length > 0 ? this.expExts.setupForGenericExport(items, drcd.map(t => { return { label: t.description, key: t.propertyName, order: t.columnOrder }; })) : this.expExts.setupForExport(items);
40
+ this.est.data = items;
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb3J0SGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29yZS9oYW5kbGVycy9jbGFzc2VzL0V4cG9ydEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsdURBQXVEO0FBQ3ZELE1BQU0sT0FBTyxhQUFhO0lBRXRCLHlCQUF5QjtJQUN6QixZQUFvQixHQUFxQixFQUFVLE9BQXNCLEVBQVUsT0FBdUI7UUFBdEYsUUFBRyxHQUFILEdBQUcsQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7SUFBSSxDQUFDO0lBRS9HOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsTUFBZTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjO1lBQ3hCLE9BQU87UUFFWCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7WUFHaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFXLEVBQUUsU0FBa0IsS0FBSyxFQUFFLEVBQUU7Z0JBQzdELElBQUksTUFBTTtvQkFDTixPQUFPO2dCQUVYLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLE9BQU87aUJBQ1Y7Z0JBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxXQUFXLENBQUMsS0FBWTtRQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixDQUFDO1FBRWhELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNU4sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIExpYnJlcmllXHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IEVzVGFibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9lcy10YWJsZS9lc190YWJsZS5jb21wb25lbnRcIlxyXG5cclxuLyoqIENsYXNzZSBjb250ZW5lbnRlIGxhIGdlc3Rpb25lIGRlbGxlIGltcG9ydGF6aW9uaSAqL1xyXG5leHBvcnQgY2xhc3MgRXhwb3J0SGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgZXhwRXh0czogRXhwb3J0U2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZmZldHR1YSBsJ2VzcG9ydGF6aW9uZSBkZWkgZGF0aVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgRm9ybWF0byBkaSBlc3BvcnRhemlvbmUuIExldHRvIHNvbG8gaW4gbW9kYWxpdMOgIFJlcG9ydCBkZWxsYSB0YWJlbGxhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB0cnlFeHBvcnQoZm9ybWF0Pzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lc3QucmVwb3J0TW9kZSlcclxuICAgICAgICAgICAgdGhpcy5lc3QuRXhwb3J0RnVuY3Rpb24oZm9ybWF0KTtcclxuXHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5FeHBvcnRGdW5jdGlvbigoZGF0YTogYW55W10sIGNhbmNlbDogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMuZXN0LmxjLmxvYyhcIkNhbm5vdCBleHBvcnQgYW4gZW1wdHkgZGF0YXNldFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dXBFeHBvcnQoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuZXN0LmV4cG9ydERvd25sb2FkZXIubmF0aXZlRWxlbWVudC5jbGljaygpOyB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGVmZmV0dGl2YW1lbnRlIGdlbmVyYSBnbGkgaGVhZGVyIGUgaSBkYXRpIHBlciBsJ2VzcG9ydGF6aW9uZSBjb24gKipuZ3gtY3N2KipcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBpdGVtcyBPZ2dldHRpIGRhIGVzcG9ydGFyZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldHVwRXhwb3J0KGl0ZW1zOiBhbnlbXSkge1xyXG4gICAgICAgIGxldCBkcmNkID0gdGhpcy5lc3QuRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uO1xyXG5cclxuICAgICAgICB0aGlzLmVzdC5oZWFkZXJzID0gZHJjZCAmJiBkcmNkLmxlbmd0aCA+IDAgPyB0aGlzLmV4cEV4dHMuc2V0dXBGb3JHZW5lcmljRXhwb3J0KGl0ZW1zLCBkcmNkLm1hcCh0ID0+IHsgcmV0dXJuIHsgbGFiZWw6IHQuZGVzY3JpcHRpb24sIGtleTogdC5wcm9wZXJ0eU5hbWUsIG9yZGVyOiB0LmNvbHVtbk9yZGVyIH07IH0pKSA6IHRoaXMuZXhwRXh0cy5zZXR1cEZvckV4cG9ydChpdGVtcyk7XHJcbiAgICAgICAgdGhpcy5lc3QuZGF0YSA9IGl0ZW1zO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,136 @@
1
+ /** Classe contenente la gestione della modalità gerarchica */
2
+ export class HierarchyModeHandler {
3
+ /** @ignore Costruttore*/
4
+ constructor(est) {
5
+ this.est = est;
6
+ }
7
+ /**
8
+ * Data una lista di oggetti assegno il livello gerarchico rispetto alla lista di oggetti passata
9
+ *
10
+ * @param {any[]} objs Lista di oggetti a cui aggiungere l'informazione del livello gerarchico
11
+ */
12
+ assignHierarchyLevels(objs) {
13
+ // Casistica input nullo
14
+ if (!objs || !objs.length)
15
+ return;
16
+ //Se mancano entrambe le info le cerco di valorizzare in automatico coi default "parentid" e "id" (posto che le props esistano nell'oggetto)
17
+ if (!this.est.ParentKey && !this.est.OwnKey) {
18
+ if (objs[0]['parentid'] !== undefined)
19
+ this.est.ParentKey = 'parentid';
20
+ if (objs[0]['id'] !== undefined)
21
+ this.est.OwnKey = 'id';
22
+ }
23
+ //Check finale per assicurarmi che le props ci siano
24
+ if (!this.est.ParentKey || !this.est.OwnKey) {
25
+ console.error('Per utilizzare il sistema in modalità gerarchica è obbligatorio specificare sia ParentKey che OwnKey. Fallback a sistema non gerarchico');
26
+ return;
27
+ }
28
+ // Valorizzazione campi level, expanded, e visible per ogni item
29
+ let currentLevel = 1;
30
+ let assigned = 0;
31
+ do {
32
+ assigned = this.assignLevel(objs, currentLevel);
33
+ currentLevel++;
34
+ } while (assigned > 0);
35
+ // butto su lato html e poi me la gioco là con padding = 20 * (level - 1) per far capire il diverso livello
36
+ }
37
+ /**
38
+ * Per ognuno degli oggetti passati gli assegna un livello di gerarchia in base a **ParentKey** e **OwnKey**
39
+ *
40
+ * @param {any[]} objs Oggetti a cui assegnare il livello di gerarchia
41
+ * @param {number} levelToAssign Livello che sta assegnando attualmente questa iterazione (dato che è ricorsiva)
42
+ *
43
+ * @returns {number} Numero di oggetti a cui è stato assegnato un livello gerarchico
44
+ */
45
+ assignLevel(objs, levelToAssign) {
46
+ let assigned = 0;
47
+ for (let i = 0; i < objs.length; i++) {
48
+ let obj = objs[i];
49
+ // Se la parentKey non è valorizzata, questo è il livello 0 (1... perché gli 0 son perciolosi)
50
+ if (!obj[this.est.ParentKey] && levelToAssign == 1) {
51
+ obj._level = 1;
52
+ obj._visible = true;
53
+ obj._expanded = this.est.StartsExpanded;
54
+ assigned++;
55
+ continue;
56
+ }
57
+ // Per i livelli superiore al primo
58
+ if (obj[this.est.ParentKey] && levelToAssign > 1) {
59
+ // trovo il parent
60
+ for (let p = 0; p < objs.length; p++) {
61
+ let possibleParent = objs[p];
62
+ // Trovato il parent dell'item, assegno all'item il livello giusto
63
+ if (possibleParent[this.est.OwnKey] == obj[this.est.ParentKey] && possibleParent._level == levelToAssign - 1) {
64
+ obj._level = levelToAssign;
65
+ // So che questo item ha un parent. Ribadisco che il parent è espanso in base alle impostazione e stessa logica
66
+ // per la visibilità del figlio
67
+ possibleParent._expanded = this.est.StartsExpanded;
68
+ possibleParent.parent = true;
69
+ obj._visible = this.est.StartsExpanded;
70
+ assigned++;
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ return assigned;
77
+ }
78
+ /**
79
+ * Funzione che permette di effettuare l'espansione di un parent quando la tabella funziona in modalità gerarchica
80
+ *
81
+ * @param {string} key Chiave del parent da espandere
82
+ */
83
+ expandParent(key) {
84
+ for (let i = 0; i < this.est.boundSource.length; i++) {
85
+ let obj = this.est.boundSource[i];
86
+ // Trovo il parent con quell'id e lo espando
87
+ if (obj[this.est.OwnKey] == key) {
88
+ obj._expanded = true;
89
+ for (let ic = 0; ic < this.est.boundSource.length; ic++) {
90
+ let child = this.est.boundSource[ic];
91
+ // Trovo tutti i child di quel parent e li rendo visibili
92
+ if (child[this.est.ParentKey] == key)
93
+ child._visible = true;
94
+ }
95
+ return;
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * Funzione che permette di effettuare il collapse di un parent quando la tabella funziona in modalità gerarchica
101
+ *
102
+ * @param {string} key Chiave del parent da collassare
103
+ */
104
+ collapseParent(key) {
105
+ for (let i = 0; i < this.est.boundSource.length; i++) {
106
+ let obj = this.est.boundSource[i];
107
+ // Trovo il parent con quell'id e lo collasso
108
+ if (obj[this.est.OwnKey] == key) {
109
+ obj._expanded = false;
110
+ // Collasso/nascondo tutti i child del parent
111
+ this.collapseChildOfParent(key);
112
+ return;
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * Collassa ricorsivamente tutti i figli di un parent identificato dalla **parentKey**
118
+ *
119
+ * @param {string} parentKey Chiave del parent di cui collassare i figli
120
+ */
121
+ collapseChildOfParent(parentKey) {
122
+ for (let ic = 0; ic < this.est.boundSource.length; ic++) {
123
+ let child = this.est.boundSource[ic];
124
+ // Trovo tutti i child di quel parent e li rendo invisibili. Se il child trovato è a sua volta un parent,
125
+ // lo collasso e vado in ricorsione sui figli
126
+ if (child[this.est.ParentKey] == parentKey && !child.parent)
127
+ child._visible = false;
128
+ else if (child[this.est.ParentKey] == parentKey && child.parent) {
129
+ child._expanded = false;
130
+ child._visible = false;
131
+ this.collapseChildOfParent(child[this.est.OwnKey]);
132
+ }
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGllcmFyY2h5TW9kZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvcmUvaGFuZGxlcnMvY2xhc3Nlcy9IaWVyYXJjaHlNb2RlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLG9CQUFvQjtJQUU3Qix5QkFBeUI7SUFDekIsWUFBb0IsR0FBcUI7UUFBckIsUUFBRyxHQUFILEdBQUcsQ0FBa0I7SUFBSSxDQUFDO0lBRTlDOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxJQUFXO1FBQ3BDLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDckIsT0FBTztRQUVYLDRJQUE0STtRQUM1SSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7WUFDcEMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUztnQkFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQzlCO1FBRUQsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUlBQXlJLENBQUMsQ0FBQztZQUN6SixPQUFPO1NBQ1Y7UUFFRCxnRUFBZ0U7UUFDaEUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFD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QUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztpQkFDdEIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzthQUN0RDtTQUNKO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXNUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2VzLXRhYmxlL2VzX3RhYmxlLmNvbXBvbmVudFwiXHJcblxyXG4vKiogQ2xhc3NlIGNvbnRlbmVudGUgbGEgZ2VzdGlvbmUgZGVsbGEgbW9kYWxpdMOgIGdlcmFyY2hpY2EgKi9cclxuZXhwb3J0IGNsYXNzIEhpZXJhcmNoeU1vZGVIYW5kbGVyIHtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVzdDogRXNUYWJsZUNvbXBvbmVudCkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRhIHVuYSBsaXN0YSBkaSBvZ2dldHRpIGFzc2Vnbm8gaWwgbGl2ZWxsbyBnZXJhcmNoaWNvIHJpc3BldHRvIGFsbGEgbGlzdGEgZGkgb2dnZXR0aSBwYXNzYXRhXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHthbnlbXX0gb2JqcyBMaXN0YSBkaSBvZ2dldHRpIGEgY3VpIGFnZ2l1bmdlcmUgbCdpbmZvcm1hemlvbmUgZGVsIGxpdmVsbG8gZ2VyYXJjaGljb1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXNzaWduSGllcmFyY2h5TGV2ZWxzKG9ianM6IGFueVtdKSB7XHJcbiAgICAgICAgLy8gQ2FzaXN0aWNhIGlucHV0IG51bGxvXHJcbiAgICAgICAgaWYgKCFvYmpzIHx8ICFvYmpzLmxlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvL1NlIG1hbmNhbm8gZW50cmFtYmUgbGUgaW5mbyBsZSBjZXJjbyBkaSB2YWxvcml6emFyZSBpbiBhdXRvbWF0aWNvIGNvaSBkZWZhdWx0IFwicGFyZW50aWRcIiBlIFwiaWRcIiAocG9zdG8gY2hlIGxlIHByb3BzIGVzaXN0YW5vIG5lbGwnb2dnZXR0bylcclxuICAgICAgICBpZiAoIXRoaXMuZXN0LlBhcmVudEtleSAmJiAhdGhpcy5lc3QuT3duS2V5KSB7XHJcbiAgICAgICAgICAgIGlmIChvYmpzWzBdWydwYXJlbnRpZCddICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5QYXJlbnRLZXkgPSAncGFyZW50aWQnO1xyXG4gICAgICAgICAgICBpZiAob2Jqc1swXVsnaWQnXSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lc3QuT3duS2V5ID0gJ2lkJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vQ2hlY2sgZmluYWxlIHBlciBhc3NpY3VyYXJtaSBjaGUgbGUgcHJvcHMgY2kgc2lhbm9cclxuICAgICAgICBpZiAoIXRoaXMuZXN0LlBhcmVudEtleSB8fCAhdGhpcy5lc3QuT3duS2V5KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BlciB1dGlsaXp6YXJlIGlsIHNpc3RlbWEgaW4gbW9kYWxpdMOgIGdlcmFyY2hpY2Egw6ggb2JibGlnYXRvcmlvIHNwZWNpZmljYXJlIHNpYSBQYXJlbnRLZXkgY2hlIE93bktleS4gRmFsbGJhY2sgYSBzaXN0ZW1hIG5vbiBnZXJhcmNoaWNvJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFZhbG9yaXp6YXppb25lIGNhbXBpIGxldmVsLCBleHBhbmRlZCwgZSB2aXNpYmxlIHBlciBvZ25pIGl0ZW1cclxuICAgICAgICBsZXQgY3VycmVudExldmVsID0gMTtcclxuICAgICAgICBsZXQgYXNzaWduZWQgPSAwO1xyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgYXNzaWduZWQgPSB0aGlzLmFzc2lnbkxldmVsKG9ianMsIGN1cnJlbnRMZXZlbCk7XHJcbiAgICAgICAgICAgIGN1cnJlbnRMZXZlbCsrO1xyXG4gICAgICAgIH0gd2hpbGUgKGFzc2lnbmVkID4gMCk7XHJcbiAgICAgICAgLy8gYnV0dG8gc3UgbGF0byBodG1sIGUgcG9pIG1lIGxhIGdpb2NvIGzDoCBjb24gcGFkZGluZyA9IDIwICogKGxldmVsIC0gMSkgcGVyIGZhciBjYXBpcmUgaWwgZGl2ZXJzbyBsaXZlbGxvXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXIgb2dudW5vIGRlZ2xpIG9nZ2V0dGkgcGFzc2F0aSBnbGkgYXNzZWduYSB1biBsaXZlbGxvIGRpIGdlcmFyY2hpYSBpbiBiYXNlIGEgKipQYXJlbnRLZXkqKiBlICoqT3duS2V5KipcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge2FueVtdfSBvYmpzIE9nZ2V0dGkgYSBjdWkgYXNzZWduYXJlIGlsIGxpdmVsbG8gZGkgZ2VyYXJjaGlhXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWxUb0Fzc2lnbiBMaXZlbGxvIGNoZSBzdGEgYXNzZWduYW5kbyBhdHR1YWxtZW50ZSBxdWVzdGEgaXRlcmF6aW9uZSAoZGF0byBjaGUgw6ggcmljb3JzaXZhKVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IE51bWVybyBkaSBvZ2dldHRpIGEgY3VpIMOoIHN0YXRvIGFzc2VnbmF0byB1biBsaXZlbGxvIGdlcmFyY2hpY29cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3NpZ25MZXZlbChvYmpzOiBhbnlbXSwgbGV2ZWxUb0Fzc2lnbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgYXNzaWduZWQgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2Jqcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgb2JqID0gb2Jqc1tpXTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNlIGxhIHBhcmVudEtleSBub24gw6ggdmFsb3JpenphdGEsIHF1ZXN0byDDqCBpbCBsaXZlbGxvIDAgKDEuLi4gcGVyY2jDqSBnbGkgMCBzb24gcGVyY2lvbG9zaSlcclxuICAgICAgICAgICAgaWYgKCFvYmpbdGhpcy5lc3QuUGFyZW50S2V5XSAmJiBsZXZlbFRvQXNzaWduID09IDEpIHtcclxuICAgICAgICAgICAgICAgIG9iai5fbGV2ZWwgPSAxO1xyXG4gICAgICAgICAgICAgICAgb2JqLl92aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG9iai5fZXhwYW5kZWQgPSB0aGlzLmVzdC5TdGFydHNFeHBhbmRlZDtcclxuICAgICAgICAgICAgICAgIGFzc2lnbmVkKys7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gUGVyIGkgbGl2ZWxsaSBzdXBlcmlvcmUgYWwgcHJpbW9cclxuICAgICAgICAgICAgaWYgKG9ialt0aGlzLmVzdC5QYXJlbnRLZXldICYmIGxldmVsVG9Bc3NpZ24gPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAvLyB0cm92byBpbCBwYXJlbnRcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHAgPSAwOyBwIDwgb2Jqcy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3NzaWJsZVBhcmVudCA9IG9ianNbcF07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRyb3ZhdG8gaWwgcGFyZW50IGRlbGwnaXRlbSwgYXNzZWdubyBhbGwnaXRlbSBpbCBsaXZlbGxvIGdpdXN0b1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwb3NzaWJsZVBhcmVudFt0aGlzLmVzdC5Pd25LZXldID09IG9ialt0aGlzLmVzdC5QYXJlbnRLZXldICYmIHBvc3NpYmxlUGFyZW50Ll9sZXZlbCA9PSBsZXZlbFRvQXNzaWduIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmouX2xldmVsID0gbGV2ZWxUb0Fzc2lnbjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvIGNoZSBxdWVzdG8gaXRlbSBoYSB1biBwYXJlbnQuIFJpYmFkaXNjbyBjaGUgaWwgcGFyZW50IMOoIGVzcGFuc28gaW4gYmFzZSBhbGxlIGltcG9zdGF6aW9uZSBlIHN0ZXNzYSBsb2dpY2FcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGVyIGxhIHZpc2liaWxpdMOgIGRlbCBmaWdsaW9cclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVQYXJlbnQuX2V4cGFuZGVkID0gdGhpcy5lc3QuU3RhcnRzRXhwYW5kZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlUGFyZW50LnBhcmVudCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5fdmlzaWJsZSA9IHRoaXMuZXN0LlN0YXJ0c0V4cGFuZGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZCsrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFzc2lnbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgY2hlIHBlcm1ldHRlIGRpIGVmZmV0dHVhcmUgbCdlc3BhbnNpb25lIGRpIHVuIHBhcmVudCBxdWFuZG8gbGEgdGFiZWxsYSBmdW56aW9uYSBpbiBtb2RhbGl0w6AgZ2VyYXJjaGljYVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgQ2hpYXZlIGRlbCBwYXJlbnQgZGEgZXNwYW5kZXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBleHBhbmRQYXJlbnQoa2V5OiBzdHJpbmcpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXN0LmJvdW5kU291cmNlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBvYmogPSB0aGlzLmVzdC5ib3VuZFNvdXJjZVtpXTtcclxuXHJcbiAgICAgICAgICAgIC8vIFRyb3ZvIGlsIHBhcmVudCBjb24gcXVlbGwnaWQgZSBsbyBlc3BhbmRvXHJcbiAgICAgICAgICAgIGlmIChvYmpbdGhpcy5lc3QuT3duS2V5XSA9PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIG9iai5fZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGljID0gMDsgaWMgPCB0aGlzLmVzdC5ib3VuZFNvdXJjZS5sZW5ndGg7IGljKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmVzdC5ib3VuZFNvdXJjZVtpY107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFRyb3ZvIHR1dHRpIGkgY2hpbGQgZGkgcXVlbCBwYXJlbnQgZSBsaSByZW5kbyB2aXNpYmlsaVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZFt0aGlzLmVzdC5QYXJlbnRLZXldID09IGtleSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuX3Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgY2hlIHBlcm1ldHRlIGRpIGVmZmV0dHVhcmUgaWwgY29sbGFwc2UgZGkgdW4gcGFyZW50IHF1YW5kbyBsYSB0YWJlbGxhIGZ1bnppb25hIGluIG1vZGFsaXTDoCBnZXJhcmNoaWNhXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBDaGlhdmUgZGVsIHBhcmVudCBkYSBjb2xsYXNzYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjb2xsYXBzZVBhcmVudChrZXk6IHN0cmluZykge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lc3QuYm91bmRTb3VyY2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IG9iaiA9IHRoaXMuZXN0LmJvdW5kU291cmNlW2ldO1xyXG5cclxuICAgICAgICAgICAgLy8gVHJvdm8gaWwgcGFyZW50IGNvbiBxdWVsbCdpZCBlIGxvIGNvbGxhc3NvXHJcbiAgICAgICAgICAgIGlmIChvYmpbdGhpcy5lc3QuT3duS2V5XSA9PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIG9iai5fZXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb2xsYXNzby9uYXNjb25kbyB0dXR0aSBpIGNoaWxkIGRlbCBwYXJlbnRcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VDaGlsZE9mUGFyZW50KGtleSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2xsYXNzYSByaWNvcnNpdmFtZW50ZSB0dXR0aSBpIGZpZ2xpIGRpIHVuIHBhcmVudCBpZGVudGlmaWNhdG8gZGFsbGEgKipwYXJlbnRLZXkqKlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXJlbnRLZXkgQ2hpYXZlIGRlbCBwYXJlbnQgZGkgY3VpIGNvbGxhc3NhcmUgaSBmaWdsaVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbGxhcHNlQ2hpbGRPZlBhcmVudChwYXJlbnRLZXk6IHN0cmluZykge1xyXG4gICAgICAgIGZvciAobGV0IGljID0gMDsgaWMgPCB0aGlzLmVzdC5ib3VuZFNvdXJjZS5sZW5ndGg7IGljKyspIHtcclxuICAgICAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5lc3QuYm91bmRTb3VyY2VbaWNdO1xyXG5cclxuICAgICAgICAgICAgLy8gVHJvdm8gdHV0dGkgaSBjaGlsZCBkaSBxdWVsIHBhcmVudCBlIGxpIHJlbmRvIGludmlzaWJpbGkuIFNlIGlsIGNoaWxkIHRyb3ZhdG8gw6ggYSBzdWEgdm9sdGEgdW4gcGFyZW50LFxyXG4gICAgICAgICAgICAvLyBsbyBjb2xsYXNzbyBlIHZhZG8gaW4gcmljb3JzaW9uZSBzdWkgZmlnbGlcclxuICAgICAgICAgICAgaWYgKGNoaWxkW3RoaXMuZXN0LlBhcmVudEtleV0gPT0gcGFyZW50S2V5ICYmICFjaGlsZC5wYXJlbnQpXHJcbiAgICAgICAgICAgICAgICBjaGlsZC5fdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChjaGlsZFt0aGlzLmVzdC5QYXJlbnRLZXldID09IHBhcmVudEtleSAmJiBjaGlsZC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgICAgIGNoaWxkLl9leHBhbmRlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuX3Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2VDaGlsZE9mUGFyZW50KGNoaWxkW3RoaXMuZXN0Lk93bktleV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,130 @@
1
+ // Modelli
2
+ import { AppSearch } from "../../../domain";
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
+ var _a, _b;
67
+ let castedView = this.est.View;
68
+ let groupKeys = castedView.groupings ? castedView.groupings.filter(t => !t.aggregation).length : 0;
69
+ //Gruppi intermedi
70
+ if ((((_a = castedView.requestedgroups) === null || _a === void 0 ? void 0 : _a.length) != groupKeys || ((_b = castedView.requestedgroups) === null || _b === void 0 ? void 0 : _b.length) == 0) && groupKeys > 0) {
71
+ let ret = castedView.groups;
72
+ ret.forEach(itm => {
73
+ // Setto variabile interna per capire che questo è in realtà un gruppo
74
+ itm._group = true;
75
+ // Le informazioni passate come lista le metto dentro a una cache per velocizzarne l'accesso quando devo tirare fuori il display della proprietà
76
+ this.utilities.cacheAggregations(itm);
77
+ });
78
+ return ret;
79
+ }
80
+ else {
81
+ let ret = this.est.SecondarySource ? this.est.View.items2 : this.est.TertiarySource ? this.est.View.items3 : this.est.View.items;
82
+ if (!ret)
83
+ ret = [];
84
+ // Setto variabile interna per specificare che questo è un elemento normale, non un gruppo o altro
85
+ ret.forEach(itm => { itm._item = true; });
86
+ return ret;
87
+ }
88
+ }
89
+ /** Genera le informazioni di paginazione e taglia la View in modalità array per mostrare solo gli oggetti della pagina specificata */
90
+ adaptViewToPaging() {
91
+ let tmpItems = [];
92
+ // Se ho una search view l'array pulsanti viene calcolato da lei, non devo prendere quello della modalità array,
93
+ // inoltre non ho bisogno di fare ragionamenti su quanti elementi ci sono e sulla pagina, dato che viene tutto gestito esternamente,
94
+ // unendo al risultato della view tutti gli oggetti addizionali
95
+ if (!this.est.SearchView)
96
+ this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.arraymodePage, this.est.arraymodePages);
97
+ else
98
+ return this.est.View;
99
+ // Poi per tutti i valori dopo compresi fra la pagina - 1 e la pagina
100
+ for (let i = ((this.est.arraymodePage - 1) * this.est.ArraymodeItemsPerPage); i < this.est.arraymodePage * this.est.ArraymodeItemsPerPage; i++) {
101
+ if (i <= this.est.View.length - 1)
102
+ tmpItems.push(this.est.View[i]);
103
+ }
104
+ return tmpItems;
105
+ }
106
+ /**
107
+ * Metodo che prende tutti gli oggetti di cui dispone divisi in bucket da 100 elementi
108
+ *
109
+ * @returns {any[][]} Matrice di array Nx100
110
+ */
111
+ getItemSlices() {
112
+ // Se sono qui di sicuro non ho rowgrouping
113
+ let items = this.getItemsByMode();
114
+ if (!items)
115
+ return [];
116
+ let arrayBy100 = [];
117
+ let slices = Math.ceil(items.length / this.est.SliceSize);
118
+ for (let i = 0; i < slices; i++) {
119
+ let arraySlice = items.slice(i * this.est.SliceSize, i * this.est.SliceSize + this.est.SliceSize);
120
+ arrayBy100.push(arraySlice);
121
+ }
122
+ return arrayBy100;
123
+ }
124
+ /** Se in modalità array applica gli ordinamenti ASC-DESC delle colonne */
125
+ arrayModeReviewOrderings() {
126
+ if (this.est.arrayOrders.length > 0)
127
+ this.est.arrayOrders.forEach(t => { this.est.boundSource = this.est.boundSource.sort((a, b) => (a[t.id] > b[t.id] ? 1 : -1) * (t.order == 'DESC' ? -1 : 1)); });
128
+ }
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbXNIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb3JlL2hhbmRsZXJzL2NsYXNzZXMvSXRlbXNIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLNUMsMkpBQTJKO0FBQzNKLE1BQU0sT0FBTyxZQUFZO0lBRXJCLDBCQUEwQjtJQUMxQixZQUFvQixHQUFxQixFQUFVLFNBQTJCO1FBQTFELFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBSSxDQUFDO0lBRW5GOzs7Ozs7OztPQVFHO0lBQ0ksY0FBYyxDQUFDLGVBQXdCLEtBQUssRUFBRSxnQkFBeUIsS0FBSyxFQUFFLGdCQUF5QixLQUFLO1FBQy9HLElBQUksS0FBSyxHQUFVLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksU0FBUyxDQUFDLEVBQUU7WUFDM0QsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQ3ZDO2FBQ0ksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBELHFEQUFxRDtZQUNyRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBRS9DLCtGQUErRjtnQkFDL0YsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFDdkI7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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEssQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBFc1RhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvZXMtdGFibGUvZXNfdGFibGUuY29tcG9uZW50XCJcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQXBwU2VhcmNoIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpblwiO1xyXG5cclxuLy8gVXRpbGl0aWVzXHJcbmltcG9ydCB7IFV0aWxpdGllc0hhbmRsZXIgfSBmcm9tIFwiLi9VdGlsaXRpZXNIYW5kbGVyXCI7XHJcblxyXG4vKiogQ2xhc3NlIGNoZSBzaSBvY2N1cGEgZGVsbGEgZ2VzdGlvbmUgZGVsIHJlY3VwZXJvIGRlZ2xpIG9nZ2V0dGksIHBhZ2luYXppb25lIGUgdHV0dG8gY2nDsiBpbiBjdWkgZ2xpIGVsZW1lbnRpIGNhcmljYXRpIHZlbmdvbm8gbWFuaXBvbGF0aSBkaXJldHRhbWVudGUgKi9cclxuZXhwb3J0IGNsYXNzIEl0ZW1zSGFuZGxlciB7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZXN0OiBFc1RhYmxlQ29tcG9uZW50LCBwcml2YXRlIHV0aWxpdGllczogVXRpbGl0aWVzSGFuZGxlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbiBiYXNlIGFsbGEgbW9kYWxpdMOgIHNwZWNpZmljYXRhIChBcnJheU1vZGUsIFZpZXdNb2RlLCBlY2MuLi4pIHF1ZXN0byBtZXRvZG8gcmVjdXBlcmEgbCdhcnJheSBkaSBvZ2dldHRpIGRhIGJpbmRhcmUgYWQgaW50ZXJmYWNjaWFcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9ubHlzZWxlY3RlZCBbZmFsc2VdIEluZGljYSBkaSBwcmVuZGVyZSBzb2xvIGdsaSBvZ2dldHRpIHNlbGV6aW9uYXRpXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlZnJlc2hQYWdpbmcgW2ZhbHNlXSBJbmRpY2Egc2UgYWdnaW9ybmFyZSBsZSBpbmZvcm1hemlvbmkgZGkgcGFnaW5hemlvbmUgbyBtZW5vXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFsbElmUG9zc2libGUgW2ZhbHNlXSBJbmRpY2Egc2UgcHJlbmRlcmUgdHV0dGkgZ2xpIG9nZ2V0dGkgcXVhb3JhIHBvc3NpYmlsZSwgdXNhdG8gc29sbyBpbiBBcnJheU1vZGVcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyB7YW55W119IExpc3RhIGRlZ2xpIG9nZ2V0dGkgc3UgY3VpIGVmZmV0dHVhcmUgaWwgYmluZCBsYXRvIGludGVyZmFjY2lhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRJdGVtc0J5TW9kZShvbmx5c2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZSwgcmVmcmVzaFBhZ2luZzogYm9vbGVhbiA9IGZhbHNlLCBhbGxJZlBvc3NpYmxlOiBib29sZWFuID0gZmFsc2UpOiBhbnlbXSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZXN0LnZpZXdNb2RlICYmIHRoaXMuZXN0LlZpZXcgaW5zdGFuY2VvZiBBcHBTZWFyY2gpKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5nZXRWaWV3SXRlbXNCeVNvdXJjZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmVzdC5hcnJheU1vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5lc3QuVmlldy5mb3JFYWNoKGl0bSA9PiB7IGl0bS5faXRlbSA9IHRydWU7IH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gU2UgZmFjY2lvIGRlaSByYWdncnVwcGFtZW50aSBpZ25vcm8gbGEgcGFnaW5hemlvbmVcclxuICAgICAgICAgICAgaWYgKHRoaXMuZXN0LlVzZUFycmF5TW9kZVBhZ2luZyAmJiAhYWxsSWZQb3NzaWJsZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNlIHNvbm8gaW4gbW9kYWxpdMOgIGFycmF5IG1hIGxhIHJpY2VyY2EgZGlwZW5kZSBkYSB1bmEgdmlldyBkZXZvIHJpYWxsaW5lYXJlIGdsaSBpdGVtcGVycGFnZVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZXN0LlNlYXJjaFZpZXcpXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlID0gdGhpcy5lc3QuU2VhcmNoVmlldy5pdGVtc3BlcnBhZ2VvdmVycmlkZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVzdC5hcnJheW1vZGVQYWdlID0gdGhpcy5lc3QuU2VhcmNoVmlldy5wYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXN0LmFycmF5bW9kZVBhZ2VzID0gdGhpcy5lc3QuU2VhcmNoVmlldy5wYWdlcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIERldm8gY2hpYW1hcmUgaWwgcmVmcmVzaCBwYWdlIHNvbG8gc2UgdmVuZ28gcmljaGlhbWF0byBkYSB1biBiaW5kaW5nIGVzdGVybm9cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZnJlc2hQYWdpbmcpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoUGFnaW5nKHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFkYXB0Vmlld1RvUGFnaW5nKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuZXN0LlZpZXcgYXMgYW55W107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFNlIHZvZ2xpbyBzb2xvIGkgc2VsZXppb25hdGkgZmlsdHJvXHJcbiAgICAgICAgaWYgKG9ubHlzZWxlY3RlZClcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcih0ID0+IHQuX3NlbGVjdGVkKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIHBlciBlZmZldHR1YXJlIGlsIHJlZnJlc2ggZGVsbGEgcGFnaW5hemlvbmUgc3VsIGNhbWJpYW1lbnRvIGRlZ2xpIG9nZ2V0dGkgZGEgdmlzdWFsaXp6YXJlIGluIHVuYSBzaW5nb2xhIHBhZ2luYS5cclxuICAgICAqXHJcbiAgICAgKiBWYWxlIHNvbG8gcGVyIGxhIG1vZGFsaXTDoCBBcnJheVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZSBEaW1lbnNpb25lIGRlbGxhIHBhZ2luYVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaFBhZ2luZyhwYWdlU2l6ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlID0gcGFnZVNpemU7XHJcbiAgICAgICAgdGhpcy5lc3QuYXJyYXltb2RlUGFnZXMgPSBNYXRoLmNlaWwoKHRoaXMuZXN0LlZpZXcgYXMgYW55W10pLmxlbmd0aCAvIHRoaXMuZXN0LkFycmF5bW9kZUl0ZW1zUGVyUGFnZSk7XHJcbiAgICAgICAgdGhpcy5lc3QuYXJyYXltb2RlUGFnZSA9IDE7XHJcblxyXG4gICAgICAgIC8vIFJpZm9yem8gaWwgd3JpdGV2YWx1ZSBpbiBtb2RvIGNoZSBpbCBjb2RpY2UgcGFzc2kgZGFsbGEgZ2VzdGlvbmUgY29tZSBzZSBmb3NzZSBmYXR0YSByaXBhcnRpcmUgdW5hIHJpY2VyY2FcclxuICAgICAgICB0aGlzLmVzdC5pbnRlcm5hbFdyaXRlVmFsdWUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE90dGllbmUgZ2xpIG9nZ2V0dGkgaW4gYmFzZSBhbGxhIHNvcmdlbnRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Vmlld0l0ZW1zQnlTb3VyY2UoKTogYW55W10ge1xyXG4gICAgICAgIGxldCBjYXN0ZWRWaWV3ID0gdGhpcy5lc3QuVmlldyBhcyBBcHBTZWFyY2g8YW55PjtcclxuICAgICAgICBsZXQgZ3JvdXBLZXlzID0gY2FzdGVkVmlldy5ncm91cGluZ3MgPyBjYXN0ZWRWaWV3Lmdyb3VwaW5ncy5maWx0ZXIodCA9PiAhdC5hZ2dyZWdhdGlvbikubGVuZ3RoIDogMDtcclxuXHJcbiAgICAgICAgLy9HcnVwcGkgaW50ZXJtZWRpXHJcbiAgICAgICAgaWYgKChjYXN0ZWRWaWV3LnJlcXVlc3RlZGdyb3Vwcz8ubGVuZ3RoICE9IGdyb3VwS2V5cyB8fCBjYXN0ZWRWaWV3LnJlcXVlc3RlZGdyb3Vwcz8ubGVuZ3RoID09IDApICYmIGdyb3VwS2V5cyA+IDApIHtcclxuICAgICAgICAgICAgbGV0IHJldCA9IGNhc3RlZFZpZXcuZ3JvdXBzO1xyXG4gICAgICAgICAgICByZXQuZm9yRWFjaChpdG0gPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFNldHRvIHZhcmlhYmlsZSBpbnRlcm5hIHBlciBjYXBpcmUgY2hlIHF1ZXN0byDDqCBpbiByZWFsdMOgIHVuIGdydXBwb1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+aXRtKS5fZ3JvdXAgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIExlIGluZm9ybWF6aW9uaSBwYXNzYXRlIGNvbWUgbGlzdGEgbGUgbWV0dG8gZGVudHJvIGEgdW5hIGNhY2hlIHBlciB2ZWxvY2l6emFybmUgbCdhY2Nlc3NvIHF1YW5kbyBkZXZvIHRpcmFyZSBmdW9yaSBpbCBkaXNwbGF5IGRlbGxhIHByb3ByaWV0w6BcclxuICAgICAgICAgICAgICAgIHRoaXMudXRpbGl0aWVzLmNhY2hlQWdncmVnYXRpb25zKGl0bSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHJldCA9IHRoaXMuZXN0LlNlY29uZGFyeVNvdXJjZSA/ICh0aGlzLmVzdC5WaWV3IGFzIGFueSkuaXRlbXMyIDogdGhpcy5lc3QuVGVydGlhcnlTb3VyY2UgPyAodGhpcy5lc3QuVmlldyBhcyBhbnkpLml0ZW1zMyA6ICh0aGlzLmVzdC5WaWV3IGFzIGFueSkuaXRlbXM7XHJcbiAgICAgICAgICAgIGlmICghcmV0KSByZXQgPSBbXTtcclxuICAgICAgICAgICAgLy8gU2V0dG8gdmFyaWFiaWxlIGludGVybmEgcGVyIHNwZWNpZmljYXJlIGNoZSBxdWVzdG8gw6ggdW4gZWxlbWVudG8gbm9ybWFsZSwgbm9uIHVuIGdydXBwbyBvIGFsdHJvXHJcbiAgICAgICAgICAgIHJldC5mb3JFYWNoKGl0bSA9PiB7ICg8YW55Pml0bSkuX2l0ZW0gPSB0cnVlOyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJldDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEdlbmVyYSBsZSBpbmZvcm1hemlvbmkgZGkgcGFnaW5hemlvbmUgZSB0YWdsaWEgbGEgVmlldyBpbiBtb2RhbGl0w6AgYXJyYXkgcGVyIG1vc3RyYXJlIHNvbG8gZ2xpIG9nZ2V0dGkgZGVsbGEgcGFnaW5hIHNwZWNpZmljYXRhICovXHJcbiAgICBwcml2YXRlIGFkYXB0Vmlld1RvUGFnaW5nKCkge1xyXG4gICAgICAgIGxldCB0bXBJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgICAgICAgLy8gU2UgaG8gdW5hIHNlYXJjaCB2aWV3IGwnYXJyYXkgcHVsc2FudGkgdmllbmUgY2FsY29sYXRvIGRhIGxlaSwgbm9uIGRldm8gcHJlbmRlcmUgcXVlbGxvIGRlbGxhIG1vZGFsaXTDoCBhcnJheSxcclxuICAgICAgICAvLyBpbm9sdHJlIG5vbiBobyBiaXNvZ25vIGRpIGZhcmUgcmFnaW9uYW1lbnRpIHN1IHF1YW50aSBlbGVtZW50aSBjaSBzb25vIGUgc3VsbGEgcGFnaW5hLCBkYXRvIGNoZSB2aWVuZSB0dXR0byBnZXN0aXRvIGVzdGVybmFtZW50ZSwgXHJcbiAgICAgICAgLy8gdW5lbmRvIGFsIHJpc3VsdGF0byBkZWxsYSB2aWV3IHR1dHRpIGdsaSBvZ2dldHRpIGFkZGl6aW9uYWxpXHJcbiAgICAgICAgaWYgKCF0aGlzLmVzdC5TZWFyY2hWaWV3KVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5hcnJheVB1bHNhbnRpID0gdGhpcy51dGlsaXRpZXMuZ2V0UGFnZXNBcnJheSg2LCB0aGlzLmVzdC5hcnJheW1vZGVQYWdlLCB0aGlzLmVzdC5hcnJheW1vZGVQYWdlcyk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lc3QuVmlldyBhcyBhbnlbXTtcclxuXHJcbiAgICAgICAgLy8gUG9pIHBlciB0dXR0aSBpIHZhbG9yaSBkb3BvIGNvbXByZXNpIGZyYSBsYSBwYWdpbmEgLSAxIGUgbGEgcGFnaW5hXHJcbiAgICAgICAgZm9yIChsZXQgaSA9ICgodGhpcy5lc3QuYXJyYXltb2RlUGFnZSAtIDEpICogdGhpcy5lc3QuQXJyYXltb2RlSXRlbXNQZXJQYWdlKTsgaSA8IHRoaXMuZXN0LmFycmF5bW9kZVBhZ2UgKiB0aGlzLmVzdC5BcnJheW1vZGVJdGVtc1BlclBhZ2U7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoaSA8PSAodGhpcy5lc3QuVmlldyBhcyBhbnlbXSkubGVuZ3RoIC0gMSlcclxuICAgICAgICAgICAgICAgIHRtcEl0ZW1zLnB1c2goKHRoaXMuZXN0LlZpZXcgYXMgYW55W10pW2ldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0bXBJdGVtcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgcHJlbmRlIHR1dHRpIGdsaSBvZ2dldHRpIGRpIGN1aSBkaXNwb25lIGRpdmlzaSBpbiBidWNrZXQgZGEgMTAwIGVsZW1lbnRpXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMge2FueVtdW119IE1hdHJpY2UgZGkgYXJyYXkgTngxMDBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldEl0ZW1TbGljZXMoKTogYW55W11bXSB7XHJcbiAgICAgICAgLy8gU2Ugc29ubyBxdWkgZGkgc2ljdXJvIG5vbiBobyByb3dncm91cGluZ1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuZ2V0SXRlbXNCeU1vZGUoKTtcclxuICAgICAgICBpZiAoIWl0ZW1zKVxyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcblxyXG4gICAgICAgIGxldCBhcnJheUJ5MTAwID0gW107XHJcbiAgICAgICAgbGV0IHNsaWNlcyA9IE1hdGguY2VpbChpdGVtcy5sZW5ndGggLyB0aGlzLmVzdC5TbGljZVNpemUpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2VzOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGFycmF5U2xpY2UgPSBpdGVtcy5zbGljZShpICogdGhpcy5lc3QuU2xpY2VTaXplLCBpICogdGhpcy5lc3QuU2xpY2VTaXplICsgdGhpcy5lc3QuU2xpY2VTaXplKTtcclxuICAgICAgICAgICAgYXJyYXlCeTEwMC5wdXNoKGFycmF5U2xpY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXJyYXlCeTEwMDtcclxuICAgIH1cclxuXHJcbiAgICAvKiogU2UgaW4gbW9kYWxpdMOgIGFycmF5IGFwcGxpY2EgZ2xpIG9yZGluYW1lbnRpIEFTQy1ERVNDIGRlbGxlIGNvbG9ubmUgKi9cclxuICAgIHB1YmxpYyBhcnJheU1vZGVSZXZpZXdPcmRlcmluZ3MoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZXN0LmFycmF5T3JkZXJzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRoaXMuZXN0LmFycmF5T3JkZXJzLmZvckVhY2godCA9PiB7IHRoaXMuZXN0LmJvdW5kU291cmNlID0gdGhpcy5lc3QuYm91bmRTb3VyY2Uuc29ydCgoYSwgYikgPT4gKGFbdC5pZF0gPiBiW3QuaWRdID8gMSA6IC0xKSAqICh0Lm9yZGVyID09ICdERVNDJyA/IC0xIDogMSkpOyB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,70 @@
1
+ // Modelli
2
+ import { ReportDefinition, ReportOrder } from "../../../domain";
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
+ /**
11
+ * Sul click dell'Header di una colonna questo metodo si occupa di applicare l'ordinamento successivo e di notificare con **emitSearchRequest**
12
+ * il bisogno di aggiornare i dati da parte del componente che utilizza la tabella
13
+ *
14
+ * Utilizzato solo in modalità REport
15
+ *
16
+ * @param {ReportColumn} clm Colonna del report per cui ordinare
17
+ */
18
+ setupNextOrderAndSearch(clm) {
19
+ if (!(this.est.View instanceof ReportDefinition)) {
20
+ console.error('View diversa da reportdefinition entrata nel metodo setupNextOrderAndSearch');
21
+ return;
22
+ }
23
+ let orderNext = { NONE: 'DESC', DESC: 'ASC', ASC: null };
24
+ let nextOrder = orderNext[clm.order || 'NONE'];
25
+ clm.order = nextOrder;
26
+ let order;
27
+ let clmOrder = this.est.View.orders ? this.est.View.orders.filter(t => t.column == clm.id) : [];
28
+ if (clmOrder.length == 0 && clm.order) {
29
+ order = new ReportOrder();
30
+ order.column = clm.id;
31
+ order.order = clm.order;
32
+ if (!this.est.View.orders)
33
+ this.est.View.orders = [];
34
+ this.est.View.orders.push(order);
35
+ }
36
+ else if (clmOrder.length == 1) {
37
+ // Rimuovo l'ordinamento o aggiorno quello già esistente
38
+ if (!clm.order)
39
+ clmOrder = [];
40
+ else
41
+ clmOrder[0].order = clm.order;
42
+ }
43
+ else
44
+ console.warn('Impossibile settare ordinamento. Colonna ' + clm.id + ' direttive di ordinamento ' + clmOrder.length + ' ordinamento scelto ' + clm.order);
45
+ // Dopo aver aggiornato l'ordinamento rilancio la ricerca
46
+ this.est.emitSearchRequest(false);
47
+ }
48
+ /** Metodo che si occupa di gestire la grafica della tabella in base alle informazioni di ordinamento colonne e paginazione contenuti nel modello */
49
+ reviewReportBindings() {
50
+ if (!(this.est.View instanceof ReportDefinition)) {
51
+ console.error('View diversa da reportdefinition entrata nel metodo reviewReportBindings');
52
+ return;
53
+ }
54
+ // Allineo le informazioni su eventuali ordinamenti fatti precedentemente
55
+ if (this.est.View.orders && this.est.View.orders.length > 0) {
56
+ this.est.View.orders.forEach(t => {
57
+ this.est.ReportValues.columns.filter(c => c.id == t.column)[0].order = t.order;
58
+ });
59
+ }
60
+ // Recupero il count precedente se serve
61
+ if (this.est.ReportValues.count != -2)
62
+ this.est.previousCount = this.est.ReportValues.count;
63
+ else if (this.est.ReportValues.count == -2)
64
+ this.est.ReportValues.count = this.est.previousCount;
65
+ let ipp = (this.est.View.itemsperpageoverride || 15);
66
+ this.est.View.pages = Math.ceil(this.est.ReportValues.count / ipp);
67
+ this.est.arrayPulsanti = this.utilities.getPagesArray(6, this.est.View.page, this.est.View.pages);
68
+ }
69
+ }
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0TW9kZUhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvcmUvaGFuZGxlcnMvY2xhc3Nlcy9SZXBvcnRNb2RlSGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxVQUFVO0FBQ1YsT0FBTyxFQUFnQixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5RSxtRkFBbUY7QUFDbkYsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQiwwQkFBMEI7SUFDMUIsWUFBb0IsR0FBcUIsRUFBVSxTQUEyQjtRQUExRCxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO0lBQUksQ0FBQztJQUVuRjs7Ozs7OztPQU9HO0lBQ0ksdUJBQXVCLENBQUMsR0FBaUI7UUFDNUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFlBQVksZ0JBQWdCLENBQUMsRUFBRTtZQUM5QyxPQUFPLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7WUFDN0YsT0FBTztTQUNWO1FBRUQsSUFBSSxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3pELElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXRCLElBQUksS0FBa0IsQ0FBQztRQUN2QixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxD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QUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSGFuZGxlcnNcclxuaW1wb3J0IHsgVXRpbGl0aWVzSGFuZGxlciB9IGZyb20gXCIuL1V0aWxpdGllc0hhbmRsZXJcIjtcclxuXHJcbi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgRXNUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnRzL2VzLXRhYmxlL2VzX3RhYmxlLmNvbXBvbmVudFwiXHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IFJlcG9ydENvbHVtbiwgUmVwb3J0RGVmaW5pdGlvbiwgUmVwb3J0T3JkZXIgfSBmcm9tIFwiLi4vLi4vLi4vZG9tYWluXCI7XHJcblxyXG4vKiogQ2xhc3NlIGNoZSBnZXN0aXNjZSBsYSBtb2RhbGl0w6AgUmVwb3J0IGRlbGwnZXMtdGFibGUgdXRpbGl6emF0YSBuZWwgTWV0ZXJpbmcgKi9cclxuZXhwb3J0IGNsYXNzIFJlcG9ydE1vZGVIYW5kbGVyIHtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlc3Q6IEVzVGFibGVDb21wb25lbnQsIHByaXZhdGUgdXRpbGl0aWVzOiBVdGlsaXRpZXNIYW5kbGVyKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN1bCBjbGljayBkZWxsJ0hlYWRlciBkaSB1bmEgY29sb25uYSBxdWVzdG8gbWV0b2RvIHNpIG9jY3VwYSBkaSBhcHBsaWNhcmUgbCdvcmRpbmFtZW50byBzdWNjZXNzaXZvIGUgZGkgbm90aWZpY2FyZSBjb24gKiplbWl0U2VhcmNoUmVxdWVzdCoqXHJcbiAgICAgKiBpbCBiaXNvZ25vIGRpIGFnZ2lvcm5hcmUgaSBkYXRpIGRhIHBhcnRlIGRlbCBjb21wb25lbnRlIGNoZSB1dGlsaXp6YSBsYSB0YWJlbGxhXHJcbiAgICAgKlxyXG4gICAgICogVXRpbGl6emF0byBzb2xvIGluIG1vZGFsaXTDoCBSRXBvcnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge1JlcG9ydENvbHVtbn0gY2xtIENvbG9ubmEgZGVsIHJlcG9ydCBwZXIgY3VpIG9yZGluYXJlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXR1cE5leHRPcmRlckFuZFNlYXJjaChjbG06IFJlcG9ydENvbHVtbikge1xyXG4gICAgICAgIGlmICghKHRoaXMuZXN0LlZpZXcgaW5zdGFuY2VvZiBSZXBvcnREZWZpbml0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdWaWV3IGRpdmVyc2EgZGEgcmVwb3J0ZGVmaW5pdGlvbiBlbnRyYXRhIG5lbCBtZXRvZG8gc2V0dXBOZXh0T3JkZXJBbmRTZWFyY2gnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG9yZGVyTmV4dCA9IHsgTk9ORTogJ0RFU0MnLCBERVNDOiAnQVNDJywgQVNDOiBudWxsIH07XHJcbiAgICAgICAgbGV0IG5leHRPcmRlciA9IG9yZGVyTmV4dFtjbG0ub3JkZXIgfHwgJ05PTkUnXTtcclxuICAgICAgICBjbG0ub3JkZXIgPSBuZXh0T3JkZXI7XHJcblxyXG4gICAgICAgIGxldCBvcmRlcjogUmVwb3J0T3JkZXI7XHJcbiAgICAgICAgbGV0IGNsbU9yZGVyID0gdGhpcy5lc3QuVmlldy5vcmRlcnMgPyB0aGlzLmVzdC5WaWV3Lm9yZGVycy5maWx0ZXIodCA9PiB0LmNvbHVtbiA9PSBjbG0uaWQpIDogW107XHJcbiAgICAgICAgaWYgKGNsbU9yZGVyLmxlbmd0aCA9PSAwICYmIGNsbS5vcmRlcikge1xyXG4gICAgICAgICAgICBvcmRlciA9IG5ldyBSZXBvcnRPcmRlcigpO1xyXG4gICAgICAgICAgICBvcmRlci5jb2x1bW4gPSBjbG0uaWQ7XHJcbiAgICAgICAgICAgIG9yZGVyLm9yZGVyID0gY2xtLm9yZGVyO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZXN0LlZpZXcub3JkZXJzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lc3QuVmlldy5vcmRlcnMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlZpZXcub3JkZXJzLnB1c2gob3JkZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChjbG1PcmRlci5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAvLyBSaW11b3ZvIGwnb3JkaW5hbWVudG8gbyBhZ2dpb3JubyBxdWVsbG8gZ2nDoCBlc2lzdGVudGVcclxuICAgICAgICAgICAgaWYgKCFjbG0ub3JkZXIpXHJcbiAgICAgICAgICAgICAgICBjbG1PcmRlciA9IFtdO1xyXG5cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgY2xtT3JkZXJbMF0ub3JkZXIgPSBjbG0ub3JkZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignSW1wb3NzaWJpbGUgc2V0dGFyZSBvcmRpbmFtZW50by4gQ29sb25uYSAnICsgY2xtLmlkICsgJyBkaXJldHRpdmUgZGkgb3JkaW5hbWVudG8gJyArIGNsbU9yZGVyLmxlbmd0aCArICcgb3JkaW5hbWVudG8gc2NlbHRvICcgKyBjbG0ub3JkZXIpO1xyXG5cclxuICAgICAgICAvLyBEb3BvIGF2ZXIgYWdnaW9ybmF0byBsJ29yZGluYW1lbnRvIHJpbGFuY2lvIGxhIHJpY2VyY2FcclxuICAgICAgICB0aGlzLmVzdC5lbWl0U2VhcmNoUmVxdWVzdChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIE1ldG9kbyBjaGUgc2kgb2NjdXBhIGRpIGdlc3RpcmUgbGEgZ3JhZmljYSBkZWxsYSB0YWJlbGxhIGluIGJhc2UgYWxsZSBpbmZvcm1hemlvbmkgZGkgb3JkaW5hbWVudG8gY29sb25uZSBlIHBhZ2luYXppb25lIGNvbnRlbnV0aSBuZWwgbW9kZWxsbyAqL1xyXG4gICAgcHVibGljIHJldmlld1JlcG9ydEJpbmRpbmdzKCkge1xyXG4gICAgICAgIGlmICghKHRoaXMuZXN0LlZpZXcgaW5zdGFuY2VvZiBSZXBvcnREZWZpbml0aW9uKSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdWaWV3IGRpdmVyc2EgZGEgcmVwb3J0ZGVmaW5pdGlvbiBlbnRyYXRhIG5lbCBtZXRvZG8gcmV2aWV3UmVwb3J0QmluZGluZ3MnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQWxsaW5lbyBsZSBpbmZvcm1hemlvbmkgc3UgZXZlbnR1YWxpIG9yZGluYW1lbnRpIGZhdHRpIHByZWNlZGVudGVtZW50ZVxyXG4gICAgICAgIGlmICh0aGlzLmVzdC5WaWV3Lm9yZGVycyAmJiB0aGlzLmVzdC5WaWV3Lm9yZGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXN0LlZpZXcub3JkZXJzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVzdC5SZXBvcnRWYWx1ZXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmlkID09IHQuY29sdW1uKVswXS5vcmRlciA9IHQub3JkZXI7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVjdXBlcm8gaWwgY291bnQgcHJlY2VkZW50ZSBzZSBzZXJ2ZVxyXG4gICAgICAgIGlmICh0aGlzLmVzdC5SZXBvcnRWYWx1ZXMuY291bnQgIT0gLTIpXHJcbiAgICAgICAgICAgIHRoaXMuZXN0LnByZXZpb3VzQ291bnQgPSB0aGlzLmVzdC5SZXBvcnRWYWx1ZXMuY291bnQ7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5lc3QuUmVwb3J0VmFsdWVzLmNvdW50ID09IC0yKVxyXG4gICAgICAgICAgICB0aGlzLmVzdC5SZXBvcnRWYWx1ZXMuY291bnQgPSB0aGlzLmVzdC5wcmV2aW91c0NvdW50O1xyXG5cclxuICAgICAgICBsZXQgaXBwID0gKHRoaXMuZXN0LlZpZXcuaXRlbXNwZXJwYWdlb3ZlcnJpZGUgfHwgMTUpO1xyXG4gICAgICAgIHRoaXMuZXN0LlZpZXcucGFnZXMgPSBNYXRoLmNlaWwodGhpcy5lc3QuUmVwb3J0VmFsdWVzLmNvdW50IC8gaXBwKTtcclxuICAgICAgICB0aGlzLmVzdC5hcnJheVB1bHNhbnRpID0gdGhpcy51dGlsaXRpZXMuZ2V0UGFnZXNBcnJheSg2LCB0aGlzLmVzdC5WaWV3LnBhZ2UsIHRoaXMuZXN0LlZpZXcucGFnZXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==