@esfaenza/es-table 16.2.29 → 17.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/esfaenza-es-table.mjs +4 -4
- package/esm2022/lib/components/es-table/es_table.component.loc.mjs +38 -38
- package/esm2022/lib/components/es-table/es_table.component.mjs +1891 -1891
- package/esm2022/lib/components/es-td/es_td.component.mjs +40 -40
- package/esm2022/lib/components/es-th/es_th.component.mjs +176 -176
- package/esm2022/lib/components/pager/table_pager.component.loc.mjs +20 -20
- package/esm2022/lib/components/pager/table_pager.component.mjs +111 -111
- package/esm2022/lib/components/pipes/est-format.pipe.mjs +44 -44
- package/esm2022/lib/components/pipes/est-lookup.pipe.mjs +19 -19
- package/esm2022/lib/components/pipes/est-propinsensitive.pipe.mjs +19 -19
- package/esm2022/lib/components/pipes/est-renderer.pipe.mjs +36 -36
- package/esm2022/lib/components/pipes/est-routerlink.pipe.mjs +41 -41
- package/esm2022/lib/components/pipes/est_editor.pipe.mjs +36 -36
- package/esm2022/lib/core/CopyPasteDetector.mjs +27 -27
- package/esm2022/lib/core/Logger.mjs +25 -25
- package/esm2022/lib/core/handlers/ColumnMetadataHandler.mjs +835 -835
- package/esm2022/lib/core/handlers/DynamicModeHandler.mjs +109 -109
- package/esm2022/lib/core/handlers/ExportHandler.mjs +32 -32
- package/esm2022/lib/core/handlers/HierarchyModeHandler.mjs +136 -136
- package/esm2022/lib/core/handlers/ItemsHandler.mjs +119 -119
- package/esm2022/lib/core/handlers/ReportModeHandler.mjs +60 -60
- package/esm2022/lib/core/handlers/RowGroupingHandler.mjs +480 -480
- package/esm2022/lib/core/handlers/SelectionHandler.mjs +778 -778
- package/esm2022/lib/core/handlers/UtilitiesHandler.mjs +151 -151
- package/esm2022/lib/directives/es_td.directive.mjs +54 -54
- package/esm2022/lib/directives/es_td_editor.directive.mjs +24 -24
- package/esm2022/lib/directives/es_th.directive.mjs +130 -130
- package/esm2022/lib/directives/es_th_td_provider.directive.mjs +34 -34
- package/esm2022/lib/domain/configuration/EsTableDefaultable.mjs +3 -3
- package/esm2022/lib/domain/configuration/EsTableModuleConfig.mjs +3 -3
- package/esm2022/lib/domain/externals/CornerMenuOption.mjs +3 -3
- package/esm2022/lib/domain/externals/EsTableColumnsDefinition.mjs +47 -47
- package/esm2022/lib/domain/externals/EsTableModelChange.mjs +18 -18
- package/esm2022/lib/domain/externals/EsTableOperationDefinition.mjs +21 -21
- package/esm2022/lib/domain/externals/ItemPropEditableReference.mjs +3 -3
- package/esm2022/lib/domain/externals/appsearch/AppOrdering.mjs +15 -15
- package/esm2022/lib/domain/externals/appsearch/AppSearch.mjs +65 -65
- package/esm2022/lib/domain/externals/appsearch/EsTableMultiValue.mjs +24 -24
- package/esm2022/lib/domain/externals/appsearch/GenericItem.mjs +10 -10
- package/esm2022/lib/domain/externals/appsearch/Group.mjs +16 -16
- package/esm2022/lib/domain/externals/appsearch/GroupAggregation.mjs +15 -15
- package/esm2022/lib/domain/externals/appsearch/GroupFilter.mjs +13 -13
- package/esm2022/lib/domain/externals/appsearch/GroupOrAggregation.mjs +15 -15
- package/esm2022/lib/domain/externals/appsearch/ItemsSelection.mjs +22 -22
- package/esm2022/lib/domain/externals/report/ReportColumn.mjs +3 -3
- package/esm2022/lib/domain/externals/report/ReportParam.mjs +3 -3
- package/esm2022/lib/domain/externals/report/ReportRow.mjs +3 -3
- package/esm2022/lib/domain/internals/CacheTriptic.mjs +15 -15
- package/esm2022/lib/domain/internals/EsTableColumn.mjs +31 -31
- package/esm2022/lib/domain/internals/GroupPager.mjs +22 -22
- package/esm2022/lib/domain/internals/GroupRouteFragment.mjs +16 -16
- package/esm2022/lib/domain/internals/PagerInfos.mjs +14 -14
- package/esm2022/lib/domain/internals/TdElement.mjs +1 -1
- package/esm2022/lib/domain/internals/ThAggregation.mjs +15 -15
- package/esm2022/lib/domain/internals/ThElement.mjs +1 -1
- package/esm2022/lib/domain/internals/ThGroup.mjs +1 -1
- package/esm2022/lib/domain/types.mjs +1 -1
- package/esm2022/lib/es-table.module.mjs +124 -124
- package/esm2022/lib/tokens.mjs +5 -5
- package/esm2022/public-api.mjs +27 -27
- package/fesm2022/esfaenza-es-table.mjs +5771 -5771
- package/fesm2022/esfaenza-es-table.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/components/es-table/es_table.component.d.ts +738 -738
- package/lib/components/es-table/es_table.component.loc.d.ts +10 -10
- package/lib/components/es-td/es_td.component.d.ts +26 -26
- package/lib/components/es-th/es_th.component.d.ts +92 -92
- package/lib/components/pager/table_pager.component.d.ts +56 -56
- package/lib/components/pager/table_pager.component.loc.d.ts +10 -10
- package/lib/components/pipes/est-format.pipe.d.ts +10 -10
- package/lib/components/pipes/est-lookup.pipe.d.ts +13 -13
- package/lib/components/pipes/est-propinsensitive.pipe.d.ts +7 -7
- package/lib/components/pipes/est-renderer.pipe.d.ts +15 -15
- package/lib/components/pipes/est-routerlink.pipe.d.ts +20 -20
- package/lib/components/pipes/est_editor.pipe.d.ts +15 -15
- package/lib/core/CopyPasteDetector.d.ts +15 -15
- package/lib/core/Logger.d.ts +10 -10
- package/lib/core/handlers/ColumnMetadataHandler.d.ts +189 -189
- package/lib/core/handlers/DynamicModeHandler.d.ts +22 -22
- package/lib/core/handlers/ExportHandler.d.ts +18 -18
- package/lib/core/handlers/HierarchyModeHandler.d.ts +40 -40
- package/lib/core/handlers/ItemsHandler.d.ts +35 -35
- package/lib/core/handlers/ReportModeHandler.d.ts +27 -27
- package/lib/core/handlers/RowGroupingHandler.d.ts +118 -118
- package/lib/core/handlers/SelectionHandler.d.ts +230 -230
- package/lib/core/handlers/UtilitiesHandler.d.ts +57 -57
- package/lib/directives/es_td.directive.d.ts +42 -42
- package/lib/directives/es_td_editor.directive.d.ts +14 -14
- package/lib/directives/es_th.directive.d.ts +107 -107
- package/lib/directives/es_th_td_provider.directive.d.ts +15 -15
- package/lib/domain/configuration/EsTableDefaultable.d.ts +21 -21
- package/lib/domain/configuration/EsTableModuleConfig.d.ts +8 -8
- package/lib/domain/externals/CornerMenuOption.d.ts +7 -7
- package/lib/domain/externals/EsTableColumnsDefinition.d.ts +56 -56
- package/lib/domain/externals/EsTableModelChange.d.ts +17 -17
- package/lib/domain/externals/EsTableOperationDefinition.d.ts +20 -20
- package/lib/domain/externals/ItemPropEditableReference.d.ts +34 -34
- package/lib/domain/externals/appsearch/AppOrdering.d.ts +14 -14
- package/lib/domain/externals/appsearch/AppSearch.d.ts +100 -100
- package/lib/domain/externals/appsearch/EsTableMultiValue.d.ts +22 -22
- package/lib/domain/externals/appsearch/GenericItem.d.ts +13 -13
- package/lib/domain/externals/appsearch/Group.d.ts +17 -17
- package/lib/domain/externals/appsearch/GroupAggregation.d.ts +14 -14
- package/lib/domain/externals/appsearch/GroupFilter.d.ts +12 -12
- package/lib/domain/externals/appsearch/GroupOrAggregation.d.ts +14 -14
- package/lib/domain/externals/appsearch/ItemsSelection.d.ts +22 -22
- package/lib/domain/externals/report/ReportColumn.d.ts +19 -19
- package/lib/domain/externals/report/ReportParam.d.ts +40 -40
- package/lib/domain/externals/report/ReportRow.d.ts +9 -9
- package/lib/domain/internals/CacheTriptic.d.ts +14 -14
- package/lib/domain/internals/EsTableColumn.d.ts +41 -41
- package/lib/domain/internals/GroupPager.d.ts +26 -26
- package/lib/domain/internals/GroupRouteFragment.d.ts +15 -15
- package/lib/domain/internals/PagerInfos.d.ts +13 -13
- package/lib/domain/internals/TdElement.d.ts +57 -57
- package/lib/domain/internals/ThAggregation.d.ts +14 -14
- package/lib/domain/internals/ThElement.d.ts +24 -24
- package/lib/domain/internals/ThGroup.d.ts +10 -10
- package/lib/domain/types.d.ts +2 -2
- package/lib/es-table.module.d.ts +35 -35
- package/lib/tokens.d.ts +6 -6
- package/package.json +14 -14
- 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,
|
|
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=
|