@esfaenza/es-table 12.2.17 → 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 (143) hide show
  1. package/bundles/esfaenza-es-table.umd.js +3625 -1520
  2. package/bundles/esfaenza-es-table.umd.js.map +1 -1
  3. package/esfaenza-es-table.d.ts +7 -5
  4. package/esfaenza-es-table.metadata.json +1 -1
  5. package/esm2015/esfaenza-es-table.js +8 -6
  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 +18 -5
  23. package/esm2015/lib/directives/es_th.directive.js +64 -0
  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 +16 -10
  53. package/esm2015/lib/tokens.js +6 -4
  54. package/esm2015/public-api.js +7 -6
  55. package/fesm2015/esfaenza-es-table.js +3579 -1597
  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} +186 -317
  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/components/es-th/es_th.component.d.ts +89 -0
  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 +16 -3
  74. package/lib/directives/es_th.directive.d.ts +46 -0
  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/internals/classes/EsTableColumn.d.ts +25 -0
  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 -18
  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 -1825
  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 -168
  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/EsTableColumn.d.ts +0 -16
  132. package/lib/domain/classes/GenericItem.d.ts +0 -25
  133. package/lib/domain/classes/IAppSearch.d.ts +0 -67
  134. package/lib/domain/classes/ItemsSelection.d.ts +0 -27
  135. package/lib/domain/classes/ReportColumn.d.ts +0 -29
  136. package/lib/domain/classes/ReportDefinition.d.ts +0 -46
  137. package/lib/domain/classes/ReportOrder.d.ts +0 -13
  138. package/lib/domain/classes/ReportParam.d.ts +0 -76
  139. package/lib/domain/classes/ReportResult.d.ts +0 -22
  140. package/lib/domain/classes/ReportRow.d.ts +0 -9
  141. package/lib/es_th.component.d.ts +0 -119
  142. package/lib/models/EsTableModuleConfig.d.ts +0 -9
  143. package/lib/pager/table_pager.component.d.ts +0 -50
@@ -0,0 +1,114 @@
1
+ import { DateService } from "@esfaenza/extensions";
2
+ import { EsTh } from "../../../components/es-th/es_th.component";
3
+ import { EsThDirective } from "../../../directives/es_th.directive";
4
+ import { EsTableComponent } from "../../../components/es-table/es_table.component";
5
+ import { AppOrdering, AppSearch, Group, GroupOrAggregation, GroupPager, GroupRouteFragment } from "../../../domain";
6
+ import { UtilitiesHandler } from "./UtilitiesHandler";
7
+ /** Classe che gestisce la modalità Row Grouping dell'es-table */
8
+ export declare class RowGroupingHandler {
9
+ private est;
10
+ private utilities;
11
+ private dateExts;
12
+ /** Cache per salvare per ogni chiave di ogni gruppo chi è il gruppo rappresentato */
13
+ rgGroupCache: Map<string, Group>;
14
+ /** Cache per salvare per ogni chiave di ogni gruppo chi sono gli oggetti sottostanti, non dei sottogruppi */
15
+ rgItemCache: Map<string, any[]>;
16
+ /** Cache per salvare per ogni chiave di ogni gruppo chi sono gli oggetti sottostanti, non dei sottogruppi */
17
+ rgChildGroupsCache: Map<string, Group[]>;
18
+ /** @ignore Costruttore */
19
+ constructor(est: EsTableComponent, utilities: UtilitiesHandler, dateExts: DateService);
20
+ /**
21
+ * In modalità rowgrouping quando mi arriva un nuovo blocco di oggetti devo aggiungerlo alla vista attuale:
22
+ *
23
+ * 1) Se non viene richiesto il dettaglio di alcun gruppo significa che devo considerare mi siano arrivati tutti i gruppi principali
24
+ * 2) Se viene richiesto il dettaglio di un gruppo diverso dall'ultimo devo aggiungere dopo al gruppo cliccato la lista dei sottogruppi
25
+ * 2) Se viene richiesto il dettaglio dell'ultimo gruppo devo aggiungere dopo al gruppo cliccato la lista degli oggetti
26
+ *
27
+ * @param {any} view AppSearch<T> da cui sono arrivati gli oggetti
28
+ * @param {number} groupingKeys Livelli di raggruppamento da aspettarsi sui dati
29
+ */
30
+ handleNewDataOnRowGrouping(view: AppSearch<any>, groupingKeys: number): void;
31
+ /**
32
+ * Se in modalità array applica i raggruppamenti definiti lato row-grouping
33
+ *
34
+ * @param {ths: EsTh[] | EsThDirective[]} ths Header
35
+ */
36
+ arrayModeReviewGroupings(ths: EsTh[] | EsThDirective[]): void;
37
+ /**
38
+ * Data una direttiva EsTh restituisce la lista delle aggregazioni richiesta per questa colonna o il gruppo che rappresenta
39
+ *
40
+ * @param {EsThDirective} th Direttiva
41
+ *
42
+ * @returns {GroupOrAggregation[]} Lista dei gruppi o aggregazioni relativi alla Direttiva passata
43
+ */
44
+ getGroupAggregations(th: EsThDirective): GroupOrAggregation[];
45
+ /**
46
+ * Data una direttiva con un formato restituisce tutte le coppie Funzione di Aggregazione - Formato
47
+ *
48
+ * @param {EsThDirective} th Direttiva EsTh di cui calcolare le funzioni di aggregazione usate
49
+ *
50
+ * @returns {{ func: string, format: string }[]} Lista delle funzioni di aggregazione rilevate
51
+ */
52
+ private getEsThDirectiveListOfAggregations;
53
+ /**
54
+ * Data la definizione dei gruppi da generare da una lista di oggetti, suddivide gli oggetti passati in gruppi e sottogruppi
55
+ *
56
+ * @param {Group[]} grps Definizione dei gruppi
57
+ * @param {number} currentIndex Indice di elaborazione. Al livello 0 ho tutti gli oggetti e devo generare i primi gruppi, a livello 1 ho tutti i gruppi principali e devo
58
+ * elaborare i sottogruppi, e così via ricorsivamente...
59
+ * @param {any[]} items Oggetti da raggruppare
60
+ * @param {GroupOrAggregation[]} aggregations Info di aggregazione
61
+ * @param {any} parent Riferimento al gruppo padre
62
+ */
63
+ private getGroupsRecursive;
64
+ /**
65
+ * Data una lista di oggetti genera le aggregazioni specificate. Si considera di avere tutti gli oggetti
66
+ *
67
+ * @param {any[]} items Oggetti di cui calcolare le aggregazione
68
+ * @param {GroupOrAggregation[]} aggregations Aggergazioni da generare
69
+ */
70
+ private generateAggregations;
71
+ /**
72
+ * Ottiene un elemento di separazione fra Gruppi che serve per paginare le ricerche all'interno di ogni singolo gruppo
73
+ *
74
+ * @param {AppSearch<any>} view View utilizzata per la ricerca. Me ne salvo i parametri nel separatore attuale dato che ne ho bisogno per caricare altri elementi
75
+ * facenti riferimento allo stesso contesto
76
+ * @param {string} parent Parent path che rappresenta a quale gruppo è affibbiato questo separatore
77
+ * @param {GroupRouteFragment[]} route Route path che rappresenta a quale gruppo è affibbiato questo separatore
78
+ * @param {number} level Livello del gruppo di cui questo elemento è separatore, viene usato per applicare la classe "est-lvl-{{level}}"
79
+ *
80
+ * @returns {any} Elemento di separazione contenente tutti i bind per presentare una paginazione sotto questo gruppo lato interfaccia
81
+ */
82
+ getGroupSeparator(view: AppSearch<any>, parent: string, route: GroupRouteFragment[], level: number, searches: 'groups' | 'items'): GroupPager;
83
+ /**
84
+ * Data una colonna effettua la riemissione di tutte le ricerche relative.
85
+ *
86
+ * Es. Ho 2 campi di gruppo e ho espanso fino a vedere i valori fino ad un livello qualsiasi.
87
+ * Clicco l'ordinamento sul secondo gruppo.
88
+ * Tutte le ricerche relative ai primi gruppi devono essere rieseguite. Quando i risultati arriveranno ci penserà il metodo **bindDisplayToLoadedItemsOrGroups**
89
+ * a tagliare via gli oggetti non più visualizzati
90
+ *
91
+ * @param {string} column Colonna su cui si è effettuata un'operazione di ordinamento
92
+ * @param {AppOrdering[]} orderings Direttive di ordinamento da applicare alle varie sottoricerche
93
+ */
94
+ emitRowGroupingSearches(column: string, orderings: AppOrdering[]): void;
95
+ /**
96
+ * Helper che calcola il contenuto di una cella relativa a un gruppo riga, tenendo conto del formato delle eventuali aggregazioni
97
+ *
98
+ * @param {Group} grp Gruppo di cui mostrare le celle
99
+ * @param {string} cell Cella attuale di cui calcolare il testo
100
+ * @param {EsThDirective} header Header relativo alla cella attuale, utilizzata per identificare le informazioni di aggregazione
101
+ *
102
+ * @returns {string} Testo finale calcolato per la **cell** corrente, in base alle aggregazioni di **header**
103
+ */
104
+ getGroupCellDisplay(grp: Group, cell: string, header: EsThDirective): string;
105
+ /**
106
+ * Funzione che dato un valore lo formatta in base al tipo
107
+ *
108
+ * @param {string} value Valore che generalemnte può essere una data o un numero
109
+ * @param {string} fromat Formato su cui formattare il valore. Può essere ad esempio "small", "long" "verylong" per le date o F{0-9} per i numeri decimali
110
+ *
111
+ * @returns {string} Valore dell'aggregazione formattato come si deve
112
+ */
113
+ private formatAggregationValue;
114
+ }
@@ -0,0 +1,149 @@
1
+ import { ItemsSelection } from "../../../domain";
2
+ import { EsTableComponent } from "../../../components/es-table/es_table.component";
3
+ import { RowGroupingHandler } from "../";
4
+ /** Classe che gestisce le selezioni degli oggetti */
5
+ export declare class SelectionHandler {
6
+ private est;
7
+ private rgHandler;
8
+ /** Cache di selezione Hash - Oggetto per la variabile **items** dell'itemSelector. Facilita le operazioni di lookup via hash*/
9
+ private itemsCache;
10
+ /** Cache di selezione Hash - Oggetto per la variabile **groups** dell'itemSelector. Facilita le operazioni di lookup via hash */
11
+ private groupsCache;
12
+ /** Cache di selezione Hash - Oggetto per la variabile **exclusions** dell'itemSelector. Facilita le operazioni di lookup via hash */
13
+ private exclusionsCache;
14
+ /** Cache di selezione Hash - Oggetto per la variabile **group_exclusions** dell'itemSelector. Facilita le operazioni di lookup via hash */
15
+ private group_exclusionsCache;
16
+ /** Cache di selezione Hash - Oggetto per la variabile **items** dell'itemSelector. Facilita le operazioni di lookup via indice*/
17
+ private i_itemsCache;
18
+ /** Cache di selezione Hash - Oggetto per la variabile **groups** dell'itemSelector. Facilita le operazioni di lookup via indice */
19
+ private i_groupsCache;
20
+ /** Cache di selezione Hash - Oggetto per la variabile **exclusions** dell'itemSelector. Facilita le operazioni di lookup via indice */
21
+ private i_exclusionsCache;
22
+ /** Cache di selezione Hash - Oggetto per la variabile **group_exclusions** dell'itemSelector. Facilita le operazioni di lookup via indice */
23
+ private i_group_exclusionsCache;
24
+ /** @ignore Costruttore */
25
+ constructor(est: EsTableComponent, rgHandler: RowGroupingHandler);
26
+ /** Ripulisce le cache di selezione */
27
+ clearSelectionCaches(): void;
28
+ /**
29
+ * Valuta quali elementi devono essere marcati come selezionati nella vista attuale. Si basa sull'oggetto **selection** interno all'AppSearch
30
+ *
31
+ * @param {any[]} items Oggetti di cui valutare la selezione
32
+ * @param {ItemsSelection<any>} selectionItem Oggetti di selezione derivante dalla view o dall'oggetto per Array
33
+ */
34
+ evaluateSelection(items: any[], selectionItem: ItemsSelection<any>): void;
35
+ /**
36
+ * Implementazione agnostica della valutazione delle selezioni degli oggetti. Richiede gli oggetti della vista attuale e l'itemSelector
37
+ *
38
+ * @param {any[]} items Oggetti di cui aggiornare lo stato di selezione
39
+ * @param {ItemsSelection<any>} selectionItem Oggetto contenente lo stato attuale di selezione
40
+ */
41
+ private handleSelectionEvaluation;
42
+ /**
43
+ * Dato un oggetto trova la cella di cache in cui è registrato e aggiorna il contenuto
44
+ *
45
+ * @param {any} item Oggetto da aggiornare
46
+ */
47
+ private rehidrateCache;
48
+ /**
49
+ * Dato un gruppo controlla ricorsivamente l'albero di cui fa parte se c'è stata una inclusione o esclusione diretta
50
+ *
51
+ * @param {any} grp Gruppo da controllare
52
+ *
53
+ * @returns {'none' | 'excluded' | 'included'}
54
+ * 'none' se non ci sono informazioni su inclusioni o esclusioni
55
+ * 'included' se il gruppo controllato è stato incluso in maniera esplicita dall'albero dei gruppi padri
56
+ * 'excluded' se il gruppo controllato è stato escluso in maniera esplicita dall'albero dei gruppi padri
57
+ */
58
+ private parentTreeStatus;
59
+ /**
60
+ * Helper per gestire la selezione di N elementi utilizzando la Cache di selezione ed eventualmente aggiornando il concetto di "all selection"
61
+ *
62
+ * Vunziona sia in modalità Array che in modalità View Semplice o View Avanzata (con le Custom Cells)
63
+ *
64
+ * @param {any[]} items Oggetti da selezionare o deselezionare
65
+ * @param {boolean} forcedVal Valore forzato di check da assegnare agli oggetti
66
+ * @param {boolean} globalCheck Valore del check globale
67
+ *
68
+ * @returns {ItemsSelection<any>} Oggetto di selezione aggiornato con le informazioni sull'ultima operazione effettuata
69
+ */
70
+ handleItemsSelection(items: any[], forcedVal?: boolean, globalCheck?: boolean): ItemsSelection<any>;
71
+ /**
72
+ * Dato L'oggetto di selezione, l'oggetto da selezionare/deselezionare e tutti i parametri del caso effettua le operazioni che servono.
73
+ *
74
+ * Logica semplificata rispetto all'originale **performSelectionOperations** per lavorare in una modalità in cui tutti gli elementi sono caricati (**ArrayGrouping** = true)
75
+ */
76
+ private performSimpleSelectionOperations;
77
+ /**
78
+ * Helper per selezionare un gruppo e, ricorsivamente, se tutti i gruppi sottostanti al parent sono selezionati, selezionare i gruppi padri
79
+ *
80
+ * @param {any} group Gruppo da selezionare
81
+ */
82
+ private selectGroup;
83
+ /**
84
+ * Dato L'oggetto di selezione, l'oggetto da selezionare/deselezionare e tutti i parametri del caso effettua le operazioni che servono.
85
+ *
86
+ * La logica di questa funzione è nata essenzialmente da spam di trial & error ed è stata testata solo fino a due livelli di raggruppamento,
87
+ * qualsiasi cosa vada oltre non è 100% detto che funzioni...
88
+ */
89
+ private performSelectionOperations;
90
+ /** Helper per evitare di riscrivere ogni santa volta array.splice(array.indexof(item), 1); */
91
+ private removeItem;
92
+ /** Helper per evitare di riscrivere ogni santa volta array.push(item); e la gestione della */
93
+ private addItem;
94
+ /**
95
+ * Ottiene il trittico di selezione, cioè l'array degli oggetti che si vuole manipolare e le due cache collegate ad esso
96
+ *
97
+ * @param {'group' | 'item' | 'group_exclusion' | 'exclusion'} subject Oggetto logico desiderato su cui effettuare le operazioni successive
98
+ * @param {ItemsSelection<any>} base Selettore di base
99
+ *
100
+ * @returns {CacheTriptic} Trittico di selezione
101
+ */
102
+ private getTriptic;
103
+ /**
104
+ * Dato un oggetto restituisce il gruppo di cui fa parte, se esiste
105
+ *
106
+ * @param {any} item Oggetto di cui trovare il gruppo
107
+ */
108
+ private getItemGroup;
109
+ /**
110
+ * Data la chiave di un gruppo restituisce tutti gli oggetti con quella chiave
111
+ *
112
+ * @param {any} group Chiave da cercare
113
+ * @param {'selected' | 'unselected'} status Stato degli elementi, selezionati o no
114
+ * @param {boolean} recursive Indica se cercare solo gli elementi direttamente collegati o se prendere anche quelli dei gruppi figli
115
+ *
116
+ * @returns {any[]} Oggetti di tipo **_item** facenti capo alla chiave **groupKey**
117
+ */
118
+ private getGroupItems;
119
+ /**
120
+ * Data la chiave di un gruppo restituisce tutti gli oggetti con quella chiave
121
+ *
122
+ * @param {any} group Gruppo di cui cercare il parent
123
+ *
124
+ * @returns {any} Oggetto di tipo **_group** rappresentante il parent del **group** attuale
125
+ */
126
+ private getGroupParent;
127
+ /**
128
+ * Data la chiave di un gruppo restituisce tutti i gruppi figli
129
+ *
130
+ * @param {string} group Gruppo che rappresenta il padre di cui cercare i figli
131
+ * @param {'selected' | 'unselected'} status Stato dei gruppi, selezionati o no
132
+ * @param {boolean} recursive Indica se cercare solo i gruppi direttamente collegati o se prendere anche quelli dei gruppi figli
133
+ *
134
+ * @returns {any[]} Oggetti di tipo **_group** facenti capo alla chiave **groupKey**
135
+ */
136
+ private getGroupChildGroups;
137
+ /** Finalizza le informazioni di selezione del **ItemsSelection** corrente */
138
+ private finalizeSelectionInformations;
139
+ /** Compatta una cache di indici */
140
+ private compactIndexMap;
141
+ /**
142
+ * Valuta la quantità di oggetti che sono stati selezionati al termine di un evento di selezione
143
+ *
144
+ * @returns {number} Numero di oggetti selezionati
145
+ */
146
+ private evaluateSelected;
147
+ /** Gestisce il comando di "Seleziona tutto in tutte le pagine" o il suo contrario, cioè "Reimposta selezione" */
148
+ selectAllOrResetSelection(): void;
149
+ }
@@ -0,0 +1,67 @@
1
+ import { HashingService } from "@esfaenza/extensions";
2
+ import { EsTd } from "../../../components/es-td/es_td.component";
3
+ import { EsTh } from "../../../components/es-th/es_th.component";
4
+ /** Classe di utilità per le cose comuni */
5
+ export declare class UtilitiesHandler {
6
+ private hashExts;
7
+ /** @ignore Costruttore */
8
+ constructor(hashExts: HashingService);
9
+ /**
10
+ * Data una lista di oggetti effettua dei raggruppamenti in base alla proprietà **field**,
11
+ * restituendo un oggetto del tipo { Gruppo1: oggetti[], Gruppo2: oggetti[], ecc... }
12
+ *
13
+ * @param {any[]} array Lista degli oggetti da raggruppare
14
+ * @param {string} field Campo su cui effettuare i raggruppamenti
15
+ *
16
+ * @returns {{ [id: string]: any[] }} Dizionario dei gruppi
17
+ */
18
+ groupBy(array: any[], field: string): {
19
+ [id: string]: any[];
20
+ };
21
+ /**
22
+ * Helper per effettuare il caching delle aggregazioni. Le sposta da una lista di **GroupAggregation** a una **<Map<string, Map<string, string>>**
23
+ *
24
+ * @param {any} group Gruppo di cui cachare le aggregazioni
25
+ */
26
+ cacheAggregations(group: any): void;
27
+ /** Helper per spostare un oggetto di un array da un indice all'altro, in place */
28
+ arrayMove(array: any[], oldI: number, newI: number): void;
29
+ /**
30
+ * Helper che identifica se il td attuale è di tipo **EsTd**. In caso contrario è da considerarsi **EsTdDirective**
31
+ *
32
+ * @param {any} td Cella da valutare
33
+ * @returns {boolean} Restituisce **true** se il **td** è di tipo **EsTd**, **false** se è di tipo **EsTdDirective**
34
+ */
35
+ isEsTd(td: any): td is EsTd;
36
+ /**
37
+ * Helper che identifica se il th attuale è di tipo **EsTh**. In caso contrario è da considerarsi **EsThDirective**
38
+ *
39
+ * @param {any} td Header da valutare
40
+ * @returns {boolean} Restituisce **true** se il **th** è di tipo **EsTh**, **false** se è di tipo **EsThDirective**
41
+ */
42
+ isEsTh(th: any): th is EsTh;
43
+ /**
44
+ * Date le informazioni di paginazione ottiene l'array dei pulsanti
45
+ *
46
+ * @param {number} maxBtns Numero massimo di pulsanti da visualizzare
47
+ * @param {number} page Pagina corrente
48
+ * @param {number} lastPage Ultima pagina disponibile
49
+ *
50
+ * @returns {any[]} Pseudo-array di pulsanti a cui ci si può bindare lato HTML
51
+ */
52
+ getPagesArray(maxBtns: number, page: number, lastPage: number, actualCount?: number, ipp?: number): any[];
53
+ /**
54
+ * Calcola l'hash di un oggetto qualsiasi
55
+ *
56
+ * @param {any[]} items Oggetti per cui calcolare l'hash
57
+ */
58
+ calculateHash(items: any[]): void;
59
+ /**
60
+ * Se l'Input è null (valore non settato) vede se c'è un default con cui valorizzarlo. Se non c'è utilizza il valore di fallback (qualora fornito)
61
+ *
62
+ * @param {T} inputValue Valore dell'Input
63
+ * @param {T} defaultValue Valore di default impostato da configurazione
64
+ * @param {T} fallbackValue Valore dell'Input per quando non è stato assegnato dal programmatore e non ha un default
65
+ */
66
+ InputOrDefault<T>(inputValue: T, defaultValue: T, fallbackValue?: T): T;
67
+ }
@@ -0,0 +1,9 @@
1
+ export * from "./classes/ColumnMetadataHandler";
2
+ export * from "./classes/DynamicModeHandler";
3
+ export * from "./classes/ExportHandler";
4
+ export * from "./classes/HierarchyModeHandler";
5
+ export * from "./classes/ItemsHandler";
6
+ export * from "./classes/ReportModeHandler";
7
+ export * from "./classes/RowGroupingHandler";
8
+ export * from "./classes/SelectionHandler";
9
+ export * from "./classes/UtilitiesHandler";
@@ -1,6 +1,19 @@
1
1
  import { TemplateRef } from '@angular/core';
2
+ /** Direttiva per la dichiarazione snella di un EsTd da emettere per ogni elemento, data una colonna */
2
3
  export declare class EsTdDirective {
3
- template: TemplateRef<any>;
4
- EsTdColumn: string;
5
- constructor(template: TemplateRef<any>);
4
+ Template: TemplateRef<any>;
5
+ /** Variabile interna che indica il fatto che questo componente è una direttiva. Serve per disambigualrlo dell'EsTdComponent */
6
+ _directive: boolean;
7
+ /** Indica se la cella è visibile o meno di default */
8
+ tdVisible: boolean;
9
+ /** Id della colonna, fa riferimento al **th** padre */
10
+ td: string;
11
+ /** Equivalente dell'NgIf sul td */
12
+ tdIf: boolean;
13
+ /** Eventuali classi da applicare al **td** generato */
14
+ tdClass: string;
15
+ /**
16
+ * @ignore
17
+ */
18
+ constructor(Template: TemplateRef<any>);
6
19
  }
@@ -0,0 +1,46 @@
1
+ import { TemplateRef } from "@angular/core";
2
+ import { ThAggregation } from "../domain";
3
+ /** Direttiva per la dichiarazione snella di un EsTh da emettere come header */
4
+ export declare class EsThDirective {
5
+ Template: TemplateRef<any>;
6
+ /** Variabile interna all'interno della quale viene raccolta la cache delle aggregazioni specificate in thAggregation */
7
+ _thAggregations: ThAggregation[];
8
+ /** Variabile interna che indica il fatto che questo componente è una direttiva. Serve per disambigualrlo dell'EsThComponent */
9
+ _directive: boolean;
10
+ /** Variabile interna impostata dall'**EsTable**, per controllare che ci sia almeno un TD che utilizzi quest'header */
11
+ _referenced: boolean;
12
+ /** Id della colonna, dev'essere lo stesso per tutti i **td** relativi */
13
+ th: string;
14
+ /** Indica se la colonna è pinnata o no */
15
+ thPinned: boolean;
16
+ /** Indica le dimensioni che deve avere questa colonna quando viene pinnata, senza questo tutte le colonne mi collasserebbero l'una sull'altra */
17
+ thPinnedWidth: number;
18
+ /** Indicazione sulla visibilità della colonna */
19
+ thVisible: boolean;
20
+ /** Indica se la colonna è fixed, cioè se non può né essere nascosta, né riposizionata. Solo le prime colonne possono essere Fixed */
21
+ thFixed: boolean;
22
+ /** Indica che la colonna è sotto ad un raggruppamento padre, con questo nome nel **th** */
23
+ thParent: string;
24
+ /** Ordinamento attuale della colonna */
25
+ thOrder?: 'DESC' | 'ASC';
26
+ /** Indica se questa colonna è ordinabile o meno */
27
+ thOrderable: boolean;
28
+ /** Indica se il testo presente in questo Header può andare a capo o meno, di default non può */
29
+ thWrap: boolean;
30
+ /** Indica se le dimnsioni di questa colonna sono modificabili o meno */
31
+ thResizable: boolean;
32
+ /** Classi da applicare all'Header della colonna */
33
+ thClass: string;
34
+ /** Classi da applicare alle righe quando rappresentano un Gruppo */
35
+ thGroupClass: string;
36
+ /** Equivalente dell'NgIf sul th */
37
+ thIf: boolean;
38
+ /** Indica che bisogna fare un raggruppamento su questa colonna */
39
+ thGroup: boolean;
40
+ /** Indica che bisogna fare una aggregazione su questa colonna, a fronte di almeno un altra con un raggruppamento */
41
+ thAggregation: string;
42
+ /**
43
+ * @ignore
44
+ */
45
+ constructor(Template: TemplateRef<any>);
46
+ }
@@ -0,0 +1,19 @@
1
+ /** Raccolta di tutti gli Input dell'EsTable a cui può essere logicamente sensato assegnare default per progetto */
2
+ export declare class EsTableDefaultable {
3
+ /** @ignore Vedi **EsTableComponent** */ ColumnsResizable?: boolean;
4
+ /** @ignore Vedi **EsTableComponent** */ AutoUpdate?: boolean;
5
+ /** @ignore Vedi **EsTableComponent** */ AllSearch?: boolean;
6
+ /** @ignore Vedi **EsTableComponent** */ Export?: boolean;
7
+ /** @ignore Vedi **EsTableComponent** */ HidePaging?: boolean;
8
+ /** @ignore Vedi **EsTableComponent** */ HidePagingCount?: boolean;
9
+ /** @ignore Vedi **EsTableComponent** */ HidePagingButtons?: boolean;
10
+ /** @ignore Vedi **EsTableComponent** */ ContainerClass?: string;
11
+ /** @ignore Vedi **EsTableComponent** */ TableClass?: string;
12
+ /** @ignore Vedi **EsTableComponent** */ Selection?: boolean;
13
+ /** @ignore Vedi **EsTableComponent** */ SavePreferences?: boolean;
14
+ /** @ignore Vedi **EsTableComponent** */ PagingStyle?: 'both' | 'top' | 'bottom';
15
+ /** @ignore Vedi **EsTableComponent** */ RowGroupingPagingStyle?: 'left' | 'right';
16
+ /** @ignore Vedi **EsTableComponent** */ UseSelectionCache?: boolean;
17
+ /** @ignore Vedi **EsTableComponent** */ ShowItemGroupsColumns?: boolean;
18
+ /** @ignore Vedi **EsTableComponent** */ ArraymodeItemsPerPage?: number;
19
+ }
@@ -0,0 +1,10 @@
1
+ import { EsTableDefaultable } from "./EsTableDefaultable";
2
+ /** Modello di configurazione per L'EsTable */
3
+ export declare class EsTableModuleConfig {
4
+ /** Locale da utilizzare per i messaggi, supportati "it-IT" ed "en-US" */
5
+ locale?: string;
6
+ /** Indica se scrivere messaggi di log a console */
7
+ debugMode?: boolean;
8
+ /** Eventuali proprietà di default per l'EsTable */
9
+ EsTableDefaults?: EsTableDefaultable;
10
+ }
@@ -0,0 +1,7 @@
1
+ /** Indica un'opzione cliccabile nel Corner Menù della tabella (il menù richiamabile dai 3 pallini verticli in alto a destra) */
2
+ export declare class CornerMenuOption {
3
+ /** Id dell'operazione. I callback relativi verranno effettuati con questo */
4
+ id: string;
5
+ /** Descrizione dell'operazione da presentare all'utente */
6
+ description: string;
7
+ }
@@ -1,6 +1,4 @@
1
- /**
2
- * Classe che identifica una colonna. Utilizzata in modalità "Colonne dinamiche"
3
- */
1
+ /** Classe che identifica una colonna. Utilizzata in modalità "Colonne dinamiche" */
4
2
  export declare class EsTableColumnsDefinition {
5
3
  description: string;
6
4
  propertyName: string;
@@ -11,6 +9,7 @@ export declare class EsTableColumnsDefinition {
11
9
  visible: boolean;
12
10
  clss: string;
13
11
  orderable: boolean;
12
+ headerWraps: boolean;
14
13
  /**
15
14
  * Costruttore
16
15
  *
@@ -24,10 +23,9 @@ export declare class EsTableColumnsDefinition {
24
23
  * @param {boolean} visible Visibilità o meno della colonna
25
24
  * @param {string} clss Classe da applicare sia ai TD che ai TH relativi a questa colonna
26
25
  * @param {boolean} orderable Indica se la colonna è ordinabile o no (nel senso ASC / DESC / NONE)
26
+ * @param {boolean} headerWraps Indica se il testo dell'header dev'essere wrappato all'interno del th. Di default no.
27
27
  */
28
- constructor(description: string, propertyName: string, routePath?: string, routeParameterProperties?: string[], dataOrder?: 'ASC' | 'DESC', columnOrder?: number, visible?: boolean, clss?: string, orderable?: boolean);
29
- /**
30
- * Routerlink che verrà generato a runtime basandosi sulle informazioni di **routePath** e **routeParameterProperties**
31
- */
28
+ constructor(description: string, propertyName: string, routePath?: string, routeParameterProperties?: string[], dataOrder?: 'ASC' | 'DESC', columnOrder?: number, visible?: boolean, clss?: string, orderable?: boolean, headerWraps?: boolean);
29
+ /** Routerlink che verrà generato a runtime basandosi sulle informazioni di **routePath** e **routeParameterProperties** */
32
30
  routerLink: any;
33
31
  }
@@ -1,6 +1,4 @@
1
- /**
2
- * Indica operazioni dinamiche generiche che possono essere effettuate per riga. Appaiono come colonne extra sul lato sinistro della tabella
3
- */
1
+ /** Indica operazioni dinamiche generiche che possono essere effettuate per riga. Appaiono come colonne extra sul lato sinistro della tabella */
4
2
  export declare class EsTableOperationDefinition {
5
3
  id: string;
6
4
  title: string;
@@ -0,0 +1,67 @@
1
+ import { AppOrdering } from './AppOrdering';
2
+ import { ItemsSelection } from './ItemsSelection';
3
+ import { Group } from './Group';
4
+ import { GroupFilter } from './GroupFilter';
5
+ import { GroupOrAggregation } from './GroupOrAggregation';
6
+ /**
7
+ * Classe che identifica una ricerca paginata in tutte le sue sfumature (di grigio)
8
+ */
9
+ export declare class AppSearch<T> {
10
+ /**
11
+ * Costruttore che genera un'istanza coi valori di default e impostando **firstsearch** a **true**
12
+ */
13
+ constructor();
14
+ /** Indica se c'è una ricerca in corso */
15
+ searchinprogress: boolean;
16
+ /** Indica il numero totale di pagine trovate dalla ricerca. Ogni pagina è una lista di **itemsperpageoverride** oggetti */
17
+ pages: number;
18
+ /** Conteggio totale degli oggetti trovati (inclusi quelli in pagine non attualmente selezionate) */
19
+ objectcount: number;
20
+ /** Conteggio totale dei gruppi trovati (inclusi quelli in pagine non attualmente selezionate) */
21
+ groupcount: number;
22
+ /** Pagina attualmente in visualizzazione */
23
+ page: number;
24
+ /** Numero di oggetti da persentare in ogni pagina. Per convenzione si considera valorizzato a 15 se non fornito */
25
+ itemsperpageoverride: number;
26
+ /** Lista degli oggetti nella pagina attualmente in visualizzazione */
27
+ items: T[];
28
+ /** Dizionario contenente tutti i gruppi paginati */
29
+ groups: Group[];
30
+ /** Lista di colonne per cui ordinare */
31
+ orders: AppOrdering[];
32
+ /** Lista di colonne da visualizzare */
33
+ columns: string[];
34
+ /** Lista di colonne nell'ordine corretto */
35
+ column_ordering: string[];
36
+ /** Indica se la ricerca era salvata. Qualora fosse questo il caso, al caricamento l'es-table si occuperà di ri-effettuare la ricerca ed aggiornare il modello */
37
+ savedstate: boolean;
38
+ /** Indica se bisogna ancora effettuare la prima ricerca */
39
+ firstsearch: boolean;
40
+ /**
41
+ * Oggetto che indica la selezione corrente.
42
+ *
43
+ * Se **all** è **true** vuole dire che è tutto selezionato ed eventualmente ci sono delle esclusioni (**exclusions**)
44
+ * Se **all** è **false** vuol dire che sono selezionati **item** specifici
45
+ *
46
+ * In base all'Input **UseSelectionCache** le proprietà **exclusions** e **items** fanno riferimento o alla pagina corrente (se **false**)
47
+ * o all'intera ricerca (se **true**)
48
+ */
49
+ selection: ItemsSelection<T>;
50
+ /**
51
+ * Indica che la ricerca è stata richiesta dall'estable. Questa variabile NON deve essere toccata. È gestita al 100% dall'es-table.
52
+ *
53
+ * L'unica cosa che serve è che nel modello lato C# sia presente in modo da non perderla durante la serializzazione
54
+ */
55
+ internalsearchrequest: boolean;
56
+ /** Raggruppamenti da fare per questa query. Se impostato e non ci sono **filtergroup** mi aspetto di ricevere oggetti nel campo **groups** */
57
+ groupings: GroupOrAggregation[];
58
+ /**
59
+ * Filtro da applicare ai gruppi. Qualora il numero di filtri qui fosse uguale al numero di raggruppamenti mi inizio ad apettare di ricevere oggetti
60
+ * sul campo **items**, in caso contrario mi aspetto di ricevere o i gruppi nel campo **groups** o l'N-esimo livello dei gruppi
61
+ */
62
+ requestedgroups: GroupFilter[];
63
+ /**
64
+ * Permette di resettare questo oggetto ai valori di default
65
+ */
66
+ reset(): void;
67
+ }
@@ -0,0 +1,13 @@
1
+ /** Classe che definisce un oggetto generico come lista di proprietà-valore */
2
+ export declare class GenericItem {
3
+ /** @ignore */
4
+ constructor();
5
+ /** Dizionario delle proprietà dell'oggeto con il loro valore */
6
+ properties: Record<string, string>;
7
+ /** Indica se l'oggetto in questione è selezionato o meno */
8
+ _selected: boolean;
9
+ /** Viene valorizzato da un eventuale **RowClassAssigner** (o automaticamente se in modalità gerarchica) e serve applicare stili particolari alla intera riga */
10
+ _rowClass: string;
11
+ /** Hash dell'oggetto per generare i contesti di bind all'interno dell'es-table (vedere eventualmente l'implementazione specifica) */
12
+ _hash: string;
13
+ }
@@ -0,0 +1,17 @@
1
+ import { GroupAggregation } from "./GroupAggregation";
2
+ /** Classe che rappresenta un Gruppo con le proprie aggregazioni */
3
+ export declare class Group {
4
+ column: string;
5
+ count: number;
6
+ value: string;
7
+ /**
8
+ * Costruttore
9
+ *
10
+ * @param {string} column ID della colonna raggruppata
11
+ * @param {number} count Numero di elementi raggruppati sotto questa colonna
12
+ * @param {string} value Valore del Gruppo
13
+ */
14
+ constructor(column: string, count: number, value: string);
15
+ /** Aggregazioni presenti su questo gruppo, valide per tutte le altre colonne (non a loro volta gruppate) */
16
+ aggregations: GroupAggregation[];
17
+ }
@@ -0,0 +1,14 @@
1
+ /** Classe che rappresenta un'aggregazione */
2
+ export declare class GroupAggregation {
3
+ column: string;
4
+ aggregation: 'min' | 'max' | 'sum';
5
+ value: string;
6
+ /**
7
+ * Costruttore
8
+ *
9
+ * @param {string} column ID della colonna aggregata
10
+ * @param {'min' | 'max' | 'sum' } aggregation Aggregazione da effettuare su questa colonna
11
+ * @param {string} value Valore dell'aggregazione
12
+ */
13
+ constructor(column: string, aggregation: 'min' | 'max' | 'sum', value: string);
14
+ }
@@ -0,0 +1,12 @@
1
+ /** Classe che rappresenta un filtro su un gruppo */
2
+ export declare class GroupFilter {
3
+ column: string;
4
+ value: string;
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {string} column ID della colonna gruppata per cui si richiede di filtrare
9
+ * @param {string} value Valore del gruppo su questa **column** per cui si richiede di filtrare
10
+ */
11
+ constructor(column: string, value: string);
12
+ }
@@ -0,0 +1,14 @@
1
+ /** Classe che rappresenta o un gruppo o una aggregazione su una colonna. Usata solo internamente */
2
+ export declare class GroupOrAggregation {
3
+ column: string;
4
+ aggregation?: 'min' | 'max' | 'sum';
5
+ datatype?: 'string' | 'date' | 'number';
6
+ /**
7
+ * Costruttore
8
+ *
9
+ * @param {string} column Colonna su cui è presente o un gruppo o un'aggregazione
10
+ * @param {'min' | 'max' | 'sum' } aggregation Aggregazione presente sulla **column**. Se questo campo è nullo significa che è un gruppo.
11
+ * @param {'string' | 'date' | 'number'} datatype Tipo di dati contenuto nella colonna **column** se non c'è alcuna aggregazione è inutile, pertanto non sarà valorizzato
12
+ */
13
+ constructor(column: string, aggregation?: 'min' | 'max' | 'sum', datatype?: 'string' | 'date' | 'number');
14
+ }