@esfaenza/es-charts 15.2.7 → 16.2.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.
Files changed (102) hide show
  1. package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
  2. package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
  3. package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
  5. package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
  6. package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
  7. package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
  8. package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
  9. package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
  10. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
  11. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
  12. package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
  13. package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
  14. package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
  16. package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
  17. package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
  18. package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
  19. package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
  20. package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
  21. package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
  22. package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
  23. package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
  24. package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
  25. package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
  26. package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
  27. package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
  28. package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
  29. package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
  30. package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
  31. package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
  32. package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
  34. package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
  35. package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
  36. package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
  39. package/esm2022/lib/services/AreaChartService.mjs +157 -0
  40. package/esm2022/lib/services/LineChartService.mjs +392 -0
  41. package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
  42. package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
  43. package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
  44. package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
  45. package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
  47. package/{esm2020 → esm2022}/public-api.mjs +38 -38
  48. package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
  49. package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
  50. package/index.d.ts +5 -5
  51. package/lib/adapters/BaseAdapter.d.ts +40 -40
  52. package/lib/adapters/IBaseAdapter.d.ts +35 -35
  53. package/lib/components/base/base-chart.component.d.ts +304 -304
  54. package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
  55. package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
  56. package/lib/components/specializations/es-chart.component.d.ts +71 -71
  57. package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
  58. package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
  59. package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
  60. package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
  61. package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
  62. package/lib/es-charts.module.d.ts +18 -18
  63. package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
  64. package/lib/models/core/ChartDispatcher.d.ts +46 -46
  65. package/lib/models/core/ChartLoader.d.ts +92 -92
  66. package/lib/models/core/ChartThemes.d.ts +23 -23
  67. package/lib/models/data/AreaChartData.d.ts +22 -22
  68. package/lib/models/data/LineChartData.d.ts +16 -16
  69. package/lib/models/data/PagedChartData.d.ts +23 -23
  70. package/lib/models/data/PieChartData.d.ts +13 -13
  71. package/lib/models/data/Vertical2DChartData.d.ts +27 -27
  72. package/lib/models/data/VerticalChartData.d.ts +13 -13
  73. package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
  74. package/lib/models/data/base/DateValue.d.ts +9 -9
  75. package/lib/models/data/base/KeyValue.d.ts +9 -9
  76. package/lib/models/data/base/KeyValueColor.d.ts +11 -11
  77. package/lib/models/data/base/Limit.d.ts +14 -14
  78. package/lib/models/data/base/LineSerie.d.ts +28 -28
  79. package/lib/models/settings/AreaChartSettings.d.ts +10 -10
  80. package/lib/models/settings/LineChartSettings.d.ts +67 -67
  81. package/lib/models/settings/PieChartSettings.d.ts +34 -34
  82. package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
  83. package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
  84. package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
  85. package/lib/models/settings/base/BaseInterval.d.ts +13 -13
  86. package/lib/models/settings/base/BaseSettings.d.ts +67 -67
  87. package/lib/models/settings/base/LegendPad.d.ts +21 -21
  88. package/lib/services/AreaChartService.d.ts +32 -31
  89. package/lib/services/LineChartService.d.ts +48 -47
  90. package/lib/services/PieChartService.d.ts +27 -27
  91. package/lib/services/Vertical2DChartService.d.ts +39 -39
  92. package/lib/services/VerticalChartService.d.ts +33 -33
  93. package/lib/services/VerticalStackedChartService.d.ts +35 -35
  94. package/lib/services/base/IBaseService.d.ts +38 -38
  95. package/lib/tokens.d.ts +13 -13
  96. package/package.json +11 -17
  97. package/public-api.d.ts +35 -35
  98. package/esm2020/lib/services/AreaChartService.mjs +0 -137
  99. package/esm2020/lib/services/LineChartService.mjs +0 -372
  100. package/fesm2015/esfaenza-es-charts.mjs +0 -2829
  101. package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
  102. package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
@@ -1,304 +1,304 @@
1
- import { SimpleChanges, AfterViewInit, NgZone, OnDestroy, OnInit, OnChanges, EventEmitter, ElementRef } from '@angular/core';
2
- import { IBaseService } from '../../services/base/IBaseService';
3
- import { BaseSettings } from '../../models/settings/base/BaseSettings';
4
- import { LegendPad } from '../../models/settings/base/LegendPad';
5
- import { ChartLoader } from "../../models/core/ChartLoader";
6
- import { ChartDispatcher } from "../../models/core/ChartDispatcher";
7
- import { LineChartData } from "../../models/data/LineChartData";
8
- import { PieChartData } from "../../models/data/PieChartData";
9
- import { VerticalChartData } from "../../models/data/VerticalChartData";
10
- import { Vertical2DChartData } from "../../models/data/Vertical2DChartData";
11
- import { PagedChartData } from "../../models/data/PagedChartData";
12
- import * as am4charts from "@amcharts/amcharts4/charts";
13
- import * as i0 from "@angular/core";
14
- /**
15
- * Componente Grafico Base che gestisce tutte le cose comuni dei vari grafici istanziabili, come la presenza o menu di una legenda,
16
- * il tema utilizzato, il locale del singolo grafico, ecc ecc...
17
- */
18
- export declare abstract class BaseChartComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {
19
- private el;
20
- private platformId;
21
- private zone;
22
- private Charter;
23
- private Dispatcher;
24
- private logs;
25
- private animations;
26
- private locale;
27
- private theme;
28
- /**
29
- * Titolo per l'asse X
30
- */
31
- XTitle: string;
32
- /**
33
- * Titolo per l'asse Y
34
- */
35
- YTitle: string;
36
- /**
37
- * Impostazioni di base
38
- */
39
- Settings: BaseSettings;
40
- /**
41
- * Presenza o meno della legenda
42
- */
43
- Legend: boolean;
44
- /**
45
- * Posizione della legenda
46
- */
47
- LegendPosition: "top" | "bottom" | "left" | "right";
48
- /**
49
- * Presenza o meno della timeline
50
- */
51
- Timeline: boolean;
52
- /**
53
- * Nome del grafico, fondamentale assegnarlo per permettere alla libreria di schedularne la creazione
54
- */
55
- name: string;
56
- /**
57
- * Utilizzo o meno delle animazioni. Senza animazioni il grafico è leggermente più performante, specialmente all'aumentare dei punti nella serie
58
- */
59
- Animations: boolean;
60
- /**
61
- * Tema da utilizzare, valido solo per il grafico in questione. Gli altri grafici della pagina possono avere stili diversi.
62
- *
63
- * Essendo i temi caricati in maniera asincrona in base all'utilizzo utilizzarne tanti diversi in un'unica pagina potrebbe rallentare il primo caricamento
64
- */
65
- Theme: 'spiritedaway' | 'moonrisekingdom' | 'frozen' | 'dark' | 'kelly' | 'material' | 'dataviz' | 'none';
66
- /**
67
- * Locale del singolo grafico
68
- */
69
- Locale: string;
70
- /**
71
- * Indica se utilizzare il comportamento di default per i click delle serie sulla Legenda. Mettendo questa variabile a **false**
72
- * e collegando l'output **onSeriesClicked** è possibile generare un evento ogni volta che l'utente fa click su una serie della Legenda
73
- */
74
- HideSeriesOnLabelClick: boolean;
75
- /**
76
- * Minima distanza nella griglia fra i valori, modifica la quantità di step fra i valori dell'asse X e quindi la granularità dei dati.
77
- *
78
- * Più piccola è, più valori verranno inseriti nell'asse X
79
- */
80
- MinGridDistance: number;
81
- /**
82
- * Cerca di aggiustare i vari step dell'asse X ruotandoli e diminuendone le dimensioni abbastanza per mostrarne il più possibile
83
- */
84
- AdaptLabelSizeAndOrientation: boolean;
85
- /**
86
- * Padding da applicare alla Legenda in caso si voglia spostare un po'
87
- */
88
- LegendPadding: LegendPad;
89
- /**
90
- * Lista di dto generici che verranno emessi dal sistema di grafici uno per uno attraverso la funzione **DataRetrieve**, che dovranno essere
91
- * usati per uan sorta di caricamento "paginato" dei grafici
92
- */
93
- DataDtos: any[];
94
- /**
95
- * Indice dell'array **DataDtos** o dell'array **DataArray** da cui iniziare ad emettere i valori, utile per supportare il "back" da un eventuale pagina di dettaglio
96
- */
97
- DataDtoStartIndex: number;
98
- /**
99
- * Funzione definita lato applicativo che in base al **DataDto** corrente restituisce una Promise del tipo di dati richiesto per il grafico corrente
100
- */
101
- DataRetrieve: (dto: any, index: number) => Promise<any>;
102
- /**
103
- * Dopo aver navigato a un nuovo grafico verranno attesi questi millisecondi prima di richiedere i dati attraverso la **DataRetrieve**.
104
- *
105
- * Questo per evitare che l'utente cliccando velocemente "avanti" generi tonnellate di richieste inutili
106
- */
107
- BrowseDelayMs: number;
108
- /**
109
- * Intestazione dei grafici nel caso si utilizzi la modalità paginata
110
- */
111
- header_tr: any;
112
- /**
113
- * Messaggio di caricamento fra un grafico e l'altro
114
- */
115
- loading_template: any;
116
- /**
117
- * Evento lanciato sulla selezione di un range di dati o dalla timeline o dal grafico. Valido per tutti i grafici che supportano serie basate sulle date
118
- */
119
- onSelectionChanged: EventEmitter<{
120
- from: Date;
121
- to: Date;
122
- initial: boolean;
123
- }>;
124
- /**
125
- * Evento lanciato dal click di una serie dalla Legenda, a patto che l'Input **HideSeriesOnLabelClick** sia impostato a false
126
- */
127
- onSeriesClicked: EventEmitter<string>;
128
- /**
129
- * Evento lanciato all'inizio del caricamento di una nuova pagina del grafico
130
- */
131
- onLoadStart: EventEmitter<void>;
132
- /**
133
- * Evento lanciato al termine del caricamento di una nuova pagina del grafico
134
- */
135
- onLoadEnd: EventEmitter<void>;
136
- /**
137
- * Evento lanciato al termine della creazione del grafico referenziando l'istanza nativa del grafico creato in modo da poter effettuare modifiche
138
- * post inizializzazione lato applicativo
139
- */
140
- chartLoaded: EventEmitter<BaseChartComponent>;
141
- /**
142
- * Serve a decidere se sarà presente l'interfaccia di paginazione
143
- */
144
- isPaged: boolean;
145
- /**
146
- * @ignore
147
- */
148
- private initDone;
149
- /**
150
- * Istanza nativa del grafico amcharts. Qualsiasi cosa non fa questa libreria si può prendere questa istanza e modificare a piacimento
151
- */
152
- Chart: am4charts.Chart;
153
- /**
154
- * Servizio di graficazione del grafico
155
- */
156
- ChartService: IBaseService<any>;
157
- /**
158
- * Variabile che indica se una nuova pagina del grafico è in fase di caricamento
159
- */
160
- loadingChart: boolean;
161
- /**
162
- * Dati del grafico. Ogni implementazione gestirà questa variabile in base al proprio tipo di Dati
163
- */
164
- abstract Data: any;
165
- /**
166
- * Dati del grafico in modalità paginata, per quando tutte le pagine sono precaricate in memoria (in caso contrario verrebberò utilizzati i **DataDtos**)
167
- */
168
- abstract DataArray: PagedChartData<any>[];
169
- /**
170
- * Indica le proprietà specifica per una data implementazione che devono causare un repaint del grafico
171
- */
172
- abstract getSpecificPropertiesToCheck(): string[];
173
- /**
174
- * Metodo generico di graficazione, reimplementato dalle varie implementazioni
175
- */
176
- abstract graphicate(castedSettings: any): IBaseService<any>;
177
- /**
178
- * Metodo generico che prende le impostazioni generiche del grafico e le casta alla tipologia giusta per il grafico specifico
179
- */
180
- abstract getCastedSettings(): any;
181
- /**
182
- * Metodo che "Riempie" la classe delle impostazioni con tutte le impostazioni specifiche passate a un dato grafico come Input
183
- */
184
- abstract fillSpecificSettings(settingsCasted: any): void;
185
- /**
186
- * Costruttore
187
- *
188
- * @param {ElementRef} el Contenitore all'interno del cui viene creato il grafico. Utilizzato per estrapolarne la **ContainerHeight**
189
- * @param {Object} platformId piattaforma Angular (browser, ecc...) per essere sicuri che amcharts venga attivato solo lato browser. Non utilizzando SSR nelle applicazioni che consumano questa libreria non è particolarmente significativo, ma non si sa mai
190
- * @param {NgZone} zone NgZone di default per permettere di inizializzare il grafico all'infuori di Angular per avere qualche prestazione in più
191
- * @param {ChartLoader} Charter Istanza del Loader che si occuperà di caricare in memoria tutto ciò che serve per il grafico attuale (temi, locale, animazioni, ecc...)
192
- * @param {ChartDispatcher} Dispatcher Istanza del Dispatcher che si occupa di differire il caricamento dei grafici 1 dopo l'altro in modo che caricamenti pseudo paralleli incasinino tutto
193
- * @param {boolean} logs Indica se effettuare log a console o meno, iniettato dalle classi specializzate dal token ESC_DEBUG_MODE
194
- * @param {boolean} animations Indica se per questo grafico devono essere attive o meno le animazioni. Impostazione generica presa dal token ESC_ANIMATIONS
195
- * @param {string} locale Indica il locale specifico per questo grafico. Impostazione generica presa dal LocalizationService
196
- * @param {string} theme Indica il tema specifico per questo grafico. Impostazione generica presa dal token ESC_THEME
197
- */
198
- constructor(el: ElementRef, platformId: Object, zone: NgZone, Charter: ChartLoader, Dispatcher: ChartDispatcher, logs: boolean, animations: boolean, locale: string, theme: string);
199
- /**
200
- * Metodo di inizializzazione post valorizzazione degli input, utilizzato per valorizzare correttamente le proprietà essenziali del grafico (Animazioni, Tema e Locale)
201
- *
202
- * Viene data priorità ai Settings (HTML), priorità secondaria agli Input diretti (Lato HTML), priorità ultima alle impostazioni globali,
203
- * impostate in fase di import del modulo assegnando valori ai token ESC_ANIMATIONS, ESC_THEME
204
- */
205
- ngOnInit(): void;
206
- /**
207
- * Implementazione utilizzata per controllare eventuali proprietà chiave del grafico e rigraficare tutto qualora si rivelasse necessario
208
- *
209
- * @param {SimpleChanges} changes Indicazione dei cambiamenti sulle proprietà del grafico. Vedere documentazione Angular in merito
210
- */
211
- ngOnChanges(changes: SimpleChanges): void;
212
- /**
213
- * Nel post inizializzazione, a patto che mi trovi in ambiente "browser", proseguo al caricamento del grafico sull'HTML
214
- */
215
- ngAfterViewInit(): void;
216
- /**
217
- * All'onDestroy scarico il grafico per liberare memoria
218
- */
219
- ngOnDestroy(): void;
220
- /**
221
- * Registra il grafico attuale nel Dispatcher in modo che venga caricato appena possibile
222
- */
223
- private dispatchLoadChart;
224
- /**
225
- * Il caricamento del grafico funziona nel seguente modo:
226
- *
227
- * 1) Caricamento del tema e delle animazioni, qualora necessari
228
- *
229
- * 2) Caricamento delle impostazioni specifiche e integrazione con le impostazioni generiche
230
- *
231
- * 3) Graficazione
232
- *
233
- * 4) Caricamento del locale
234
- */
235
- private loadChart;
236
- /**
237
- * Riempimento delle impostazioni nella classe Settings. Si danno priorità ai valori già impostati nei Settings,
238
- * integrando eventualmente con le proprietà del grafico
239
- *
240
- * @param {BaseSettings} settings Impostazioni base ricevute dalla specializzazione del grafico
241
- */
242
- private fillSettings;
243
- /**
244
- * Controlla i cambiamenti avvenuti alle proprietà chiave e rieffettua la graficazione qualora necessario
245
- *
246
- * @param {SimpleChanges} changes Indicazione della modifiche avvenute nei vari Input
247
- * @param {string[]} propsToCheck Lista degli Input da controllare per cui una modifica causa una rigraficazione
248
- */
249
- private checkPropertiesAndRegraphicateAsNeeded;
250
- /**
251
- * Funzione che effettua un cambio di pagina per i grafici paginati. Qualora **data** fosse nullo significa che è iniziato un caricamento
252
- * e anche lato applicativo il DataRetrieve dovrà considerare che l'assenza di valori non è altro che un'indicazione di inizio caricamento
253
- *
254
- * Il caricamento di qualsiasi pagina genererà comunque una primo evento con **data** nullo in modo da indicare l'inizio caricamento e
255
- * in seconda istanza un altro evento in cui **data** sarà sempre valorizzato, o con il Dto da usare per recuperare i dati, o con i dati
256
- * veri e propri già presenti nel **DataArray**
257
- *
258
- * I callback **onLoadStart** e **onLoadEnd** vengono sempre chiamati
259
- *
260
- * @param {{ data: LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any, index: number }} nd Indice del caricamento dati, con eventualmente già i dati se disponibili
261
- */
262
- changePage(nd: {
263
- data: LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any;
264
- index: number;
265
- }): void;
266
- /**
267
- * Al termine del caricamento dei dati di una pagina questo metodo viene chiamato per rigraficare la situazione con i nuovi dati
268
- *
269
- * @param {LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any} data Dati del grafico
270
- */
271
- private changePageDataReceived;
272
- /**
273
- * Ricarica il grafico distruggendo il vecchio e ricreando il nuovo
274
- *
275
- * Le chiamate a questo metodo possono essere trasformate in chiamate al metodo **graphicate** della Service, se solo quel metodo fosse abbastanza intelligente per capire
276
- * le differenze fra il grafico com'era prima e come deve diventare, in modo da non ricrearlo ma semplicemente modificare quello che già è disegnato
277
- */
278
- private reloadChart;
279
- /**
280
- * Permette di aggiungere un blocco di dati in maniera "live" ad un grafico
281
- */
282
- addData(chartData: any): void;
283
- /**
284
- * Funzione che si occupa di caricare i temi necessari per il grafico in oggetto. Prima applica il tema, poi, se serve, applica le animazioni
285
- */
286
- private setupAmChartsThemes;
287
- /**
288
- * @ignore
289
- */
290
- private log;
291
- /**
292
- * Imposta lo zoom dal **from** al **to**
293
- *
294
- * @param {Date} from Inizio dello zoom
295
- * @param {Date} to Fine dello zoom
296
- */
297
- setSelection(from: Date, to: Date): void;
298
- /**
299
- * @ignore
300
- */
301
- browserOnly(f: () => void): void;
302
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseChartComponent, never>;
303
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseChartComponent, never, never, { "XTitle": "XTitle"; "YTitle": "YTitle"; "Settings": "Settings"; "Legend": "Legend"; "LegendPosition": "LegendPosition"; "Timeline": "Timeline"; "name": "name"; "Animations": "Animations"; "Theme": "Theme"; "Locale": "Locale"; "HideSeriesOnLabelClick": "HideSeriesOnLabelClick"; "MinGridDistance": "MinGridDistance"; "AdaptLabelSizeAndOrientation": "AdaptLabelSizeAndOrientation"; "LegendPadding": "LegendPadding"; "DataDtos": "DataDtos"; "DataDtoStartIndex": "DataDtoStartIndex"; "DataRetrieve": "DataRetrieve"; "BrowseDelayMs": "BrowseDelayMs"; }, { "onSelectionChanged": "onSelectionChanged"; "onSeriesClicked": "onSeriesClicked"; "onLoadStart": "onLoadStart"; "onLoadEnd": "onLoadEnd"; "chartLoaded": "chartLoaded"; }, ["header_tr", "loading_template"], never, false, never>;
304
- }
1
+ import { SimpleChanges, AfterViewInit, NgZone, OnDestroy, OnInit, OnChanges, EventEmitter, ElementRef } from '@angular/core';
2
+ import { IBaseService } from '../../services/base/IBaseService';
3
+ import { BaseSettings } from '../../models/settings/base/BaseSettings';
4
+ import { LegendPad } from '../../models/settings/base/LegendPad';
5
+ import { ChartLoader } from "../../models/core/ChartLoader";
6
+ import { ChartDispatcher } from "../../models/core/ChartDispatcher";
7
+ import { LineChartData } from "../../models/data/LineChartData";
8
+ import { PieChartData } from "../../models/data/PieChartData";
9
+ import { VerticalChartData } from "../../models/data/VerticalChartData";
10
+ import { Vertical2DChartData } from "../../models/data/Vertical2DChartData";
11
+ import { PagedChartData } from "../../models/data/PagedChartData";
12
+ import * as am4charts from "@amcharts/amcharts4/charts";
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * Componente Grafico Base che gestisce tutte le cose comuni dei vari grafici istanziabili, come la presenza o menu di una legenda,
16
+ * il tema utilizzato, il locale del singolo grafico, ecc ecc...
17
+ */
18
+ export declare abstract class BaseChartComponent implements AfterViewInit, OnDestroy, OnInit, OnChanges {
19
+ private el;
20
+ private platformId;
21
+ private zone;
22
+ private Charter;
23
+ private Dispatcher;
24
+ private logs;
25
+ private animations;
26
+ private locale;
27
+ private theme;
28
+ /**
29
+ * Titolo per l'asse X
30
+ */
31
+ XTitle: string;
32
+ /**
33
+ * Titolo per l'asse Y
34
+ */
35
+ YTitle: string;
36
+ /**
37
+ * Impostazioni di base
38
+ */
39
+ Settings: BaseSettings;
40
+ /**
41
+ * Presenza o meno della legenda
42
+ */
43
+ Legend: boolean;
44
+ /**
45
+ * Posizione della legenda
46
+ */
47
+ LegendPosition: "top" | "bottom" | "left" | "right";
48
+ /**
49
+ * Presenza o meno della timeline
50
+ */
51
+ Timeline: boolean;
52
+ /**
53
+ * Nome del grafico, fondamentale assegnarlo per permettere alla libreria di schedularne la creazione
54
+ */
55
+ name: string;
56
+ /**
57
+ * Utilizzo o meno delle animazioni. Senza animazioni il grafico è leggermente più performante, specialmente all'aumentare dei punti nella serie
58
+ */
59
+ Animations: boolean;
60
+ /**
61
+ * Tema da utilizzare, valido solo per il grafico in questione. Gli altri grafici della pagina possono avere stili diversi.
62
+ *
63
+ * Essendo i temi caricati in maniera asincrona in base all'utilizzo utilizzarne tanti diversi in un'unica pagina potrebbe rallentare il primo caricamento
64
+ */
65
+ Theme: 'spiritedaway' | 'moonrisekingdom' | 'frozen' | 'dark' | 'kelly' | 'material' | 'dataviz' | 'none';
66
+ /**
67
+ * Locale del singolo grafico
68
+ */
69
+ Locale: string;
70
+ /**
71
+ * Indica se utilizzare il comportamento di default per i click delle serie sulla Legenda. Mettendo questa variabile a **false**
72
+ * e collegando l'output **onSeriesClicked** è possibile generare un evento ogni volta che l'utente fa click su una serie della Legenda
73
+ */
74
+ HideSeriesOnLabelClick: boolean;
75
+ /**
76
+ * Minima distanza nella griglia fra i valori, modifica la quantità di step fra i valori dell'asse X e quindi la granularità dei dati.
77
+ *
78
+ * Più piccola è, più valori verranno inseriti nell'asse X
79
+ */
80
+ MinGridDistance: number;
81
+ /**
82
+ * Cerca di aggiustare i vari step dell'asse X ruotandoli e diminuendone le dimensioni abbastanza per mostrarne il più possibile
83
+ */
84
+ AdaptLabelSizeAndOrientation: boolean;
85
+ /**
86
+ * Padding da applicare alla Legenda in caso si voglia spostare un po'
87
+ */
88
+ LegendPadding: LegendPad;
89
+ /**
90
+ * Lista di dto generici che verranno emessi dal sistema di grafici uno per uno attraverso la funzione **DataRetrieve**, che dovranno essere
91
+ * usati per uan sorta di caricamento "paginato" dei grafici
92
+ */
93
+ DataDtos: any[];
94
+ /**
95
+ * Indice dell'array **DataDtos** o dell'array **DataArray** da cui iniziare ad emettere i valori, utile per supportare il "back" da un eventuale pagina di dettaglio
96
+ */
97
+ DataDtoStartIndex: number;
98
+ /**
99
+ * Funzione definita lato applicativo che in base al **DataDto** corrente restituisce una Promise del tipo di dati richiesto per il grafico corrente
100
+ */
101
+ DataRetrieve: (dto: any, index: number) => Promise<any>;
102
+ /**
103
+ * Dopo aver navigato a un nuovo grafico verranno attesi questi millisecondi prima di richiedere i dati attraverso la **DataRetrieve**.
104
+ *
105
+ * Questo per evitare che l'utente cliccando velocemente "avanti" generi tonnellate di richieste inutili
106
+ */
107
+ BrowseDelayMs: number;
108
+ /**
109
+ * Intestazione dei grafici nel caso si utilizzi la modalità paginata
110
+ */
111
+ header_tr: any;
112
+ /**
113
+ * Messaggio di caricamento fra un grafico e l'altro
114
+ */
115
+ loading_template: any;
116
+ /**
117
+ * Evento lanciato sulla selezione di un range di dati o dalla timeline o dal grafico. Valido per tutti i grafici che supportano serie basate sulle date
118
+ */
119
+ onSelectionChanged: EventEmitter<{
120
+ from: Date;
121
+ to: Date;
122
+ initial: boolean;
123
+ }>;
124
+ /**
125
+ * Evento lanciato dal click di una serie dalla Legenda, a patto che l'Input **HideSeriesOnLabelClick** sia impostato a false
126
+ */
127
+ onSeriesClicked: EventEmitter<string>;
128
+ /**
129
+ * Evento lanciato all'inizio del caricamento di una nuova pagina del grafico
130
+ */
131
+ onLoadStart: EventEmitter<void>;
132
+ /**
133
+ * Evento lanciato al termine del caricamento di una nuova pagina del grafico
134
+ */
135
+ onLoadEnd: EventEmitter<void>;
136
+ /**
137
+ * Evento lanciato al termine della creazione del grafico referenziando l'istanza nativa del grafico creato in modo da poter effettuare modifiche
138
+ * post inizializzazione lato applicativo
139
+ */
140
+ chartLoaded: EventEmitter<BaseChartComponent>;
141
+ /**
142
+ * Serve a decidere se sarà presente l'interfaccia di paginazione
143
+ */
144
+ isPaged: boolean;
145
+ /**
146
+ * @ignore
147
+ */
148
+ private initDone;
149
+ /**
150
+ * Istanza nativa del grafico amcharts. Qualsiasi cosa non fa questa libreria si può prendere questa istanza e modificare a piacimento
151
+ */
152
+ Chart: am4charts.Chart;
153
+ /**
154
+ * Servizio di graficazione del grafico
155
+ */
156
+ ChartService: IBaseService<any>;
157
+ /**
158
+ * Variabile che indica se una nuova pagina del grafico è in fase di caricamento
159
+ */
160
+ loadingChart: boolean;
161
+ /**
162
+ * Dati del grafico. Ogni implementazione gestirà questa variabile in base al proprio tipo di Dati
163
+ */
164
+ abstract Data: any;
165
+ /**
166
+ * Dati del grafico in modalità paginata, per quando tutte le pagine sono precaricate in memoria (in caso contrario verrebberò utilizzati i **DataDtos**)
167
+ */
168
+ abstract DataArray: PagedChartData<any>[];
169
+ /**
170
+ * Indica le proprietà specifica per una data implementazione che devono causare un repaint del grafico
171
+ */
172
+ abstract getSpecificPropertiesToCheck(): string[];
173
+ /**
174
+ * Metodo generico di graficazione, reimplementato dalle varie implementazioni
175
+ */
176
+ abstract graphicate(castedSettings: any): IBaseService<any>;
177
+ /**
178
+ * Metodo generico che prende le impostazioni generiche del grafico e le casta alla tipologia giusta per il grafico specifico
179
+ */
180
+ abstract getCastedSettings(): any;
181
+ /**
182
+ * Metodo che "Riempie" la classe delle impostazioni con tutte le impostazioni specifiche passate a un dato grafico come Input
183
+ */
184
+ abstract fillSpecificSettings(settingsCasted: any): void;
185
+ /**
186
+ * Costruttore
187
+ *
188
+ * @param {ElementRef} el Contenitore all'interno del cui viene creato il grafico. Utilizzato per estrapolarne la **ContainerHeight**
189
+ * @param {Object} platformId piattaforma Angular (browser, ecc...) per essere sicuri che amcharts venga attivato solo lato browser. Non utilizzando SSR nelle applicazioni che consumano questa libreria non è particolarmente significativo, ma non si sa mai
190
+ * @param {NgZone} zone NgZone di default per permettere di inizializzare il grafico all'infuori di Angular per avere qualche prestazione in più
191
+ * @param {ChartLoader} Charter Istanza del Loader che si occuperà di caricare in memoria tutto ciò che serve per il grafico attuale (temi, locale, animazioni, ecc...)
192
+ * @param {ChartDispatcher} Dispatcher Istanza del Dispatcher che si occupa di differire il caricamento dei grafici 1 dopo l'altro in modo che caricamenti pseudo paralleli incasinino tutto
193
+ * @param {boolean} logs Indica se effettuare log a console o meno, iniettato dalle classi specializzate dal token ESC_DEBUG_MODE
194
+ * @param {boolean} animations Indica se per questo grafico devono essere attive o meno le animazioni. Impostazione generica presa dal token ESC_ANIMATIONS
195
+ * @param {string} locale Indica il locale specifico per questo grafico. Impostazione generica presa dal LocalizationService
196
+ * @param {string} theme Indica il tema specifico per questo grafico. Impostazione generica presa dal token ESC_THEME
197
+ */
198
+ constructor(el: ElementRef, platformId: Object, zone: NgZone, Charter: ChartLoader, Dispatcher: ChartDispatcher, logs: boolean, animations: boolean, locale: string, theme: string);
199
+ /**
200
+ * Metodo di inizializzazione post valorizzazione degli input, utilizzato per valorizzare correttamente le proprietà essenziali del grafico (Animazioni, Tema e Locale)
201
+ *
202
+ * Viene data priorità ai Settings (HTML), priorità secondaria agli Input diretti (Lato HTML), priorità ultima alle impostazioni globali,
203
+ * impostate in fase di import del modulo assegnando valori ai token ESC_ANIMATIONS, ESC_THEME
204
+ */
205
+ ngOnInit(): void;
206
+ /**
207
+ * Implementazione utilizzata per controllare eventuali proprietà chiave del grafico e rigraficare tutto qualora si rivelasse necessario
208
+ *
209
+ * @param {SimpleChanges} changes Indicazione dei cambiamenti sulle proprietà del grafico. Vedere documentazione Angular in merito
210
+ */
211
+ ngOnChanges(changes: SimpleChanges): void;
212
+ /**
213
+ * Nel post inizializzazione, a patto che mi trovi in ambiente "browser", proseguo al caricamento del grafico sull'HTML
214
+ */
215
+ ngAfterViewInit(): void;
216
+ /**
217
+ * All'onDestroy scarico il grafico per liberare memoria
218
+ */
219
+ ngOnDestroy(): void;
220
+ /**
221
+ * Registra il grafico attuale nel Dispatcher in modo che venga caricato appena possibile
222
+ */
223
+ private dispatchLoadChart;
224
+ /**
225
+ * Il caricamento del grafico funziona nel seguente modo:
226
+ *
227
+ * 1) Caricamento del tema e delle animazioni, qualora necessari
228
+ *
229
+ * 2) Caricamento delle impostazioni specifiche e integrazione con le impostazioni generiche
230
+ *
231
+ * 3) Graficazione
232
+ *
233
+ * 4) Caricamento del locale
234
+ */
235
+ private loadChart;
236
+ /**
237
+ * Riempimento delle impostazioni nella classe Settings. Si danno priorità ai valori già impostati nei Settings,
238
+ * integrando eventualmente con le proprietà del grafico
239
+ *
240
+ * @param {BaseSettings} settings Impostazioni base ricevute dalla specializzazione del grafico
241
+ */
242
+ private fillSettings;
243
+ /**
244
+ * Controlla i cambiamenti avvenuti alle proprietà chiave e rieffettua la graficazione qualora necessario
245
+ *
246
+ * @param {SimpleChanges} changes Indicazione della modifiche avvenute nei vari Input
247
+ * @param {string[]} propsToCheck Lista degli Input da controllare per cui una modifica causa una rigraficazione
248
+ */
249
+ private checkPropertiesAndRegraphicateAsNeeded;
250
+ /**
251
+ * Funzione che effettua un cambio di pagina per i grafici paginati. Qualora **data** fosse nullo significa che è iniziato un caricamento
252
+ * e anche lato applicativo il DataRetrieve dovrà considerare che l'assenza di valori non è altro che un'indicazione di inizio caricamento
253
+ *
254
+ * Il caricamento di qualsiasi pagina genererà comunque una primo evento con **data** nullo in modo da indicare l'inizio caricamento e
255
+ * in seconda istanza un altro evento in cui **data** sarà sempre valorizzato, o con il Dto da usare per recuperare i dati, o con i dati
256
+ * veri e propri già presenti nel **DataArray**
257
+ *
258
+ * I callback **onLoadStart** e **onLoadEnd** vengono sempre chiamati
259
+ *
260
+ * @param {{ data: LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any, index: number }} nd Indice del caricamento dati, con eventualmente già i dati se disponibili
261
+ */
262
+ changePage(nd: {
263
+ data: LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any;
264
+ index: number;
265
+ }): void;
266
+ /**
267
+ * Al termine del caricamento dei dati di una pagina questo metodo viene chiamato per rigraficare la situazione con i nuovi dati
268
+ *
269
+ * @param {LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | any} data Dati del grafico
270
+ */
271
+ private changePageDataReceived;
272
+ /**
273
+ * Ricarica il grafico distruggendo il vecchio e ricreando il nuovo
274
+ *
275
+ * Le chiamate a questo metodo possono essere trasformate in chiamate al metodo **graphicate** della Service, se solo quel metodo fosse abbastanza intelligente per capire
276
+ * le differenze fra il grafico com'era prima e come deve diventare, in modo da non ricrearlo ma semplicemente modificare quello che già è disegnato
277
+ */
278
+ private reloadChart;
279
+ /**
280
+ * Permette di aggiungere un blocco di dati in maniera "live" ad un grafico
281
+ */
282
+ addData(chartData: any): void;
283
+ /**
284
+ * Funzione che si occupa di caricare i temi necessari per il grafico in oggetto. Prima applica il tema, poi, se serve, applica le animazioni
285
+ */
286
+ private setupAmChartsThemes;
287
+ /**
288
+ * @ignore
289
+ */
290
+ private log;
291
+ /**
292
+ * Imposta lo zoom dal **from** al **to**
293
+ *
294
+ * @param {Date} from Inizio dello zoom
295
+ * @param {Date} to Fine dello zoom
296
+ */
297
+ setSelection(from: Date, to: Date): void;
298
+ /**
299
+ * @ignore
300
+ */
301
+ browserOnly(f: () => void): void;
302
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseChartComponent, never>;
303
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseChartComponent, never, never, { "XTitle": { "alias": "XTitle"; "required": false; }; "YTitle": { "alias": "YTitle"; "required": false; }; "Settings": { "alias": "Settings"; "required": false; }; "Legend": { "alias": "Legend"; "required": false; }; "LegendPosition": { "alias": "LegendPosition"; "required": false; }; "Timeline": { "alias": "Timeline"; "required": false; }; "name": { "alias": "name"; "required": false; }; "Animations": { "alias": "Animations"; "required": false; }; "Theme": { "alias": "Theme"; "required": false; }; "Locale": { "alias": "Locale"; "required": false; }; "HideSeriesOnLabelClick": { "alias": "HideSeriesOnLabelClick"; "required": false; }; "MinGridDistance": { "alias": "MinGridDistance"; "required": false; }; "AdaptLabelSizeAndOrientation": { "alias": "AdaptLabelSizeAndOrientation"; "required": false; }; "LegendPadding": { "alias": "LegendPadding"; "required": false; }; "DataDtos": { "alias": "DataDtos"; "required": false; }; "DataDtoStartIndex": { "alias": "DataDtoStartIndex"; "required": false; }; "DataRetrieve": { "alias": "DataRetrieve"; "required": false; }; "BrowseDelayMs": { "alias": "BrowseDelayMs"; "required": false; }; }, { "onSelectionChanged": "onSelectionChanged"; "onSeriesClicked": "onSeriesClicked"; "onLoadStart": "onLoadStart"; "onLoadEnd": "onLoadEnd"; "chartLoaded": "chartLoaded"; }, ["header_tr", "loading_template"], never, false, never>;
304
+ }