@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,38 +1,38 @@
1
- import { BaseAdapter } from '../../adapters/BaseAdapter';
2
- /**
3
- * Interfaccia rappresentante una Service di graficamento generica
4
- */
5
- export interface IBaseService<T> {
6
- /**
7
- * Adattatore che si occupa della trasformazione fra una tipologia di dati qualsiasi e i Dto utilizzati da questa libreria
8
- */
9
- Adapter: BaseAdapter;
10
- /**
11
- * Istanza del grafico vera e propria
12
- */
13
- ChartInstance: T;
14
- /**
15
- * Crea e disegna il grafico la prima volta
16
- *
17
- * @param {string} name Nome del grafico (Chiave univoca)
18
- * @param {any} data Dati del grafico, o tipo specifico o tipolegacy che si occuperà di convertire l'**Adapter**
19
- * @param {any} settings Impostazione per la generazione del grafico
20
- * @returns {IBaseService<T>} Se stessa nello stato successivo alla graficazione
21
- */
22
- graphicate(name: string, data: any, settings: any): IBaseService<T>;
23
- /**
24
- * Aggiorna la sorgente dati del grafico senza ricrearlo da 0. Da usare al posto dei destroy-rebuild
25
- *
26
- * NOTA BENE: Mancano le implementazioni, eventualmente svilupparle
27
- *
28
- * @param {any} data Nuovi dati da sostituire a quelli precedenti
29
- */
30
- refreshData(data: any): void;
31
- /**
32
- * Imposta lo zoom dal **from** al **to**
33
- *
34
- * @param {Date} from Inizio dello zoom
35
- * @param {Date} to Fine dello zoom
36
- */
37
- setSelection(from: Date, to: Date): void;
38
- }
1
+ import { BaseAdapter } from '../../adapters/BaseAdapter';
2
+ /**
3
+ * Interfaccia rappresentante una Service di graficamento generica
4
+ */
5
+ export interface IBaseService<T> {
6
+ /**
7
+ * Adattatore che si occupa della trasformazione fra una tipologia di dati qualsiasi e i Dto utilizzati da questa libreria
8
+ */
9
+ Adapter: BaseAdapter;
10
+ /**
11
+ * Istanza del grafico vera e propria
12
+ */
13
+ ChartInstance: T;
14
+ /**
15
+ * Crea e disegna il grafico la prima volta
16
+ *
17
+ * @param {string} name Nome del grafico (Chiave univoca)
18
+ * @param {any} data Dati del grafico, o tipo specifico o tipolegacy che si occuperà di convertire l'**Adapter**
19
+ * @param {any} settings Impostazione per la generazione del grafico
20
+ * @returns {IBaseService<T>} Se stessa nello stato successivo alla graficazione
21
+ */
22
+ graphicate(name: string, data: any, settings: any): IBaseService<T>;
23
+ /**
24
+ * Aggiorna la sorgente dati del grafico senza ricrearlo da 0. Da usare al posto dei destroy-rebuild
25
+ *
26
+ * NOTA BENE: Mancano le implementazioni, eventualmente svilupparle
27
+ *
28
+ * @param {any} data Nuovi dati da sostituire a quelli precedenti
29
+ */
30
+ refreshData(data: any): void;
31
+ /**
32
+ * Imposta lo zoom dal **from** al **to**
33
+ *
34
+ * @param {Date} from Inizio dello zoom
35
+ * @param {Date} to Fine dello zoom
36
+ */
37
+ setSelection(from: Date, to: Date): void;
38
+ }
package/lib/tokens.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { InjectionToken } from '@angular/core';
2
- /**
3
- * Token che identifica il default per l'utilizzo o meno delle Animazioni per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
4
- */
5
- export declare const ESC_ANIMATIONS: InjectionToken<boolean>;
6
- /**
7
- * Token che identifica il Tema di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
8
- */
9
- export declare const ESC_THEME: InjectionToken<string>;
10
- /**
11
- * Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
12
- */
13
- export declare const ESC_DEBUG_MODE: InjectionToken<string>;
1
+ import { InjectionToken } from '@angular/core';
2
+ /**
3
+ * Token che identifica il default per l'utilizzo o meno delle Animazioni per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
4
+ */
5
+ export declare const ESC_ANIMATIONS: InjectionToken<boolean>;
6
+ /**
7
+ * Token che identifica il Tema di default per tutti i grafici, può essere sovrascritto dalle impostazioni locali (Settings e Input)
8
+ */
9
+ export declare const ESC_THEME: InjectionToken<string>;
10
+ /**
11
+ * Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
12
+ */
13
+ export declare const ESC_DEBUG_MODE: InjectionToken<string>;
package/package.json CHANGED
@@ -1,22 +1,18 @@
1
1
  {
2
2
  "name": "@esfaenza/es-charts",
3
- "version": "15.2.7",
3
+ "version": "16.2.0",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },
7
7
  "peerDependencies": {
8
- "@amcharts/amcharts4": "4.10.36",
9
- "@angular/common": "^15.2.9",
10
- "@angular/core": "^15.2.9",
11
- "@esfaenza/extensions": "^15.2.8",
12
- "@esfaenza/localizations": "^15.2.8",
13
- "dayjs": "1.11.8"
8
+ "@amcharts/amcharts4": "4.10.39",
9
+ "@angular/common": "^16.2.12",
10
+ "@angular/core": "^16.2.12",
11
+ "@esfaenza/extensions": "^16.2.0",
12
+ "@esfaenza/localizations": "^16.2.0",
13
+ "dayjs": "1.11.13"
14
14
  },
15
- "module": "fesm2015/esfaenza-es-charts.mjs",
16
- "es2020": "fesm2020/esfaenza-es-charts.mjs",
17
- "esm2020": "esm2020/esfaenza-es-charts.mjs",
18
- "fesm2020": "fesm2020/esfaenza-es-charts.mjs",
19
- "fesm2015": "fesm2015/esfaenza-es-charts.mjs",
15
+ "module": "fesm2022/esfaenza-es-charts.mjs",
20
16
  "typings": "index.d.ts",
21
17
  "exports": {
22
18
  "./package.json": {
@@ -24,11 +20,9 @@
24
20
  },
25
21
  ".": {
26
22
  "types": "./index.d.ts",
27
- "esm2020": "./esm2020/esfaenza-es-charts.mjs",
28
- "es2020": "./fesm2020/esfaenza-es-charts.mjs",
29
- "es2015": "./fesm2015/esfaenza-es-charts.mjs",
30
- "node": "./fesm2015/esfaenza-es-charts.mjs",
31
- "default": "./fesm2020/esfaenza-es-charts.mjs"
23
+ "esm2022": "./esm2022/esfaenza-es-charts.mjs",
24
+ "esm": "./esm2022/esfaenza-es-charts.mjs",
25
+ "default": "./fesm2022/esfaenza-es-charts.mjs"
32
26
  }
33
27
  },
34
28
  "sideEffects": false
package/public-api.d.ts CHANGED
@@ -1,35 +1,35 @@
1
- export * from './lib/adapters/BaseAdapter';
2
- export * from './lib/adapters/IBaseAdapter';
3
- export * from './lib/models/data/LineChartData';
4
- export * from './lib/models/data/PieChartData';
5
- export * from './lib/models/data/AreaChartData';
6
- export * from './lib/models/data/Vertical2DChartData';
7
- export * from './lib/models/data/VerticalChartData';
8
- export * from './lib/models/data/VerticalStackedChartData';
9
- export * from './lib/models/settings/AreaChartSettings';
10
- export * from './lib/models/settings/LineChartSettings';
11
- export * from './lib/models/settings/PieChartSettings';
12
- export * from './lib/models/settings/Vertical2DChartSettings';
13
- export * from './lib/models/settings/VerticalChartSettings';
14
- export * from './lib/models/settings/VerticalStackedChartSettings';
15
- export * from './lib/models/settings/base/BaseSettings';
16
- export * from './lib/models/settings/base/BaseInterval';
17
- export * from './lib/models/settings/base/LegendPad';
18
- export * from './lib/models/data/base/Limit';
19
- export * from './lib/models/data/base/DateValue';
20
- export * from './lib/models/data/base/KeyValue';
21
- export * from './lib/models/data/base/KeyValueColor';
22
- export * from './lib/models/data/base/LineSerie';
23
- export * from './lib/components/chart-pager/chart-pager.component';
24
- export * from './lib/components/base/base-chart.component';
25
- export * from './lib/components/specializations/es-chart.component';
26
- export * from './lib/components/specializations/es-area-chart.component';
27
- export * from './lib/components/specializations/es-line-chart.component';
28
- export * from './lib/components/specializations/es-pie-chart.component';
29
- export * from './lib/components/specializations/es-vertical-2d-chart.component';
30
- export * from './lib/components/specializations/es-vertical-chart.component';
31
- export * from './lib/components/specializations/es-vertical-stacked-chart.component';
32
- export * from './lib/models/core/ChartThemes';
33
- export * from './lib/models/data/PagedChartData';
34
- export * from './lib/es-charts.module';
35
- export * from './lib/tokens';
1
+ export * from './lib/adapters/BaseAdapter';
2
+ export * from './lib/adapters/IBaseAdapter';
3
+ export * from './lib/models/data/LineChartData';
4
+ export * from './lib/models/data/PieChartData';
5
+ export * from './lib/models/data/AreaChartData';
6
+ export * from './lib/models/data/Vertical2DChartData';
7
+ export * from './lib/models/data/VerticalChartData';
8
+ export * from './lib/models/data/VerticalStackedChartData';
9
+ export * from './lib/models/settings/AreaChartSettings';
10
+ export * from './lib/models/settings/LineChartSettings';
11
+ export * from './lib/models/settings/PieChartSettings';
12
+ export * from './lib/models/settings/Vertical2DChartSettings';
13
+ export * from './lib/models/settings/VerticalChartSettings';
14
+ export * from './lib/models/settings/VerticalStackedChartSettings';
15
+ export * from './lib/models/settings/base/BaseSettings';
16
+ export * from './lib/models/settings/base/BaseInterval';
17
+ export * from './lib/models/settings/base/LegendPad';
18
+ export * from './lib/models/data/base/Limit';
19
+ export * from './lib/models/data/base/DateValue';
20
+ export * from './lib/models/data/base/KeyValue';
21
+ export * from './lib/models/data/base/KeyValueColor';
22
+ export * from './lib/models/data/base/LineSerie';
23
+ export * from './lib/components/chart-pager/chart-pager.component';
24
+ export * from './lib/components/base/base-chart.component';
25
+ export * from './lib/components/specializations/es-chart.component';
26
+ export * from './lib/components/specializations/es-area-chart.component';
27
+ export * from './lib/components/specializations/es-line-chart.component';
28
+ export * from './lib/components/specializations/es-pie-chart.component';
29
+ export * from './lib/components/specializations/es-vertical-2d-chart.component';
30
+ export * from './lib/components/specializations/es-vertical-chart.component';
31
+ export * from './lib/components/specializations/es-vertical-stacked-chart.component';
32
+ export * from './lib/models/core/ChartThemes';
33
+ export * from './lib/models/data/PagedChartData';
34
+ export * from './lib/es-charts.module';
35
+ export * from './lib/tokens';
@@ -1,137 +0,0 @@
1
- import * as am4core from "@amcharts/amcharts4/core";
2
- import * as am4charts from "@amcharts/amcharts4/charts";
3
- /**
4
- * Classe il cui unico scopo è gestire il setup e rendering di un AreaChart
5
- */
6
- export class AreaChartService {
7
- /** @ignore */
8
- constructor(Adapter) {
9
- this.Adapter = Adapter;
10
- //******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
11
- //TODO: spostarla in un metodo di utilità (esfaenza/extensions)
12
- /** @ignore */
13
- this.executionTimers = {};
14
- }
15
- /**
16
- * Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un AreaChart
17
- */
18
- graphicate(data, settings) {
19
- if (settings.Timeline) {
20
- console.error("Timeline not supported for area chart");
21
- return null;
22
- }
23
- let dataConverted = this.Adapter ? this.Adapter.adaptDataForAreaChart(data) : data;
24
- let showTicks = settings.ShowTicks == null ? true : settings?.ShowTicks;
25
- let interval = dataConverted.interval;
26
- //Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
27
- am4core.options.autoDispose = true;
28
- this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
29
- let ChartInstanceCasted = this.ChartInstance;
30
- if (settings.Legend) {
31
- ChartInstanceCasted.legend = new am4charts.Legend();
32
- ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
33
- ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
34
- if (settings.LegendPadding) {
35
- let template = this.ChartInstance.legend.itemContainers.template;
36
- template.paddingTop = settings.LegendPadding.top ?? 0;
37
- template.paddingBottom = settings.LegendPadding.bottom ?? 0;
38
- template.paddingLeft = settings.LegendPadding.left ?? 0;
39
- template.paddingRight = settings.LegendPadding.right ?? 0;
40
- }
41
- }
42
- let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
43
- yAxis.tooltip.disabled = true;
44
- if (settings.YAxisTitle) {
45
- yAxis.title.text = settings.YAxisTitle;
46
- yAxis.title.fontWeight = "bold";
47
- }
48
- yAxis.min = 0;
49
- let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
50
- dateAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 50;
51
- dateAxis.startLocation = 0.5;
52
- dateAxis.endLocation = 0.5;
53
- if (settings.XAxisTitle) {
54
- dateAxis.title.text = settings.XAxisTitle;
55
- dateAxis.title.fontWeight = "bold";
56
- }
57
- if (showTicks) {
58
- dateAxis.renderer.ticks.template.disabled = false;
59
- dateAxis.renderer.ticks.template.strokeOpacity = 1;
60
- dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
61
- dateAxis.renderer.ticks.template.strokeWidth = 2;
62
- dateAxis.renderer.ticks.template.length = 10;
63
- dateAxis.renderer.ticks.template.location = 0;
64
- }
65
- if (!!interval)
66
- dateAxis.baseInterval = { count: interval.count, timeUnit: interval.timeunit };
67
- // Unisco il dataset e tiro fuori i dati
68
- let chartData = [];
69
- let seriesToMakeCache = {};
70
- let seriesToMake = [];
71
- for (let i = 0; i < dataConverted.groups.length; i++) {
72
- let group = dataConverted.groups[i];
73
- let dataItem = { date: group.name };
74
- for (let ii = 0; ii < group.values.length; ii++) {
75
- let val = group.values[ii];
76
- dataItem[val.k] = val.v;
77
- if (!seriesToMakeCache[val.k]) {
78
- seriesToMakeCache[val.k] = true;
79
- seriesToMake.push(val.k);
80
- }
81
- }
82
- chartData.push(dataItem);
83
- }
84
- ChartInstanceCasted.data = chartData;
85
- //---------------------------------------------------------
86
- seriesToMake.forEach(s => { this.createSeries(ChartInstanceCasted, s); });
87
- ChartInstanceCasted.cursor = new am4charts.XYCursor();
88
- ChartInstanceCasted.cursor.xAxis = dateAxis;
89
- dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
90
- dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
91
- return this;
92
- }
93
- /** @ignore */
94
- setSelection(from, to) {
95
- }
96
- /** @ignore */
97
- refreshData(data) {
98
- //TODO:IMPL
99
- }
100
- /** @ignore */
101
- emitSelectionChanged(ev, settings) {
102
- if (settings.OnSelectionChangedCallback) {
103
- this.throttla("selchange", () => {
104
- var axis = ev.target;
105
- var start = new Date(axis.minZoomed);
106
- var end = new Date(axis.maxZoomed);
107
- var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
108
- settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
109
- }, 150);
110
- }
111
- }
112
- /** @ignore */
113
- createSeries(chart, name) {
114
- let series = chart.series.push(new am4charts.LineSeries());
115
- series.dataFields.dateX = "date";
116
- series.name = name[0].toUpperCase() + name.slice(1);
117
- series.dataFields.valueY = name;
118
- series.tooltipText = "[#000]{valueY.value}[/]";
119
- //series.tooltip.background.fill = am4core.color("#FFF");
120
- series.tooltip.getStrokeFromObject = true;
121
- series.tooltip.background.strokeWidth = 3;
122
- series.tooltip.getFillFromObject = false;
123
- series.fillOpacity = 0.6;
124
- series.strokeWidth = 2;
125
- series.stacked = true;
126
- return series;
127
- }
128
- /** @ignore */
129
- throttla(id, func, throttleTime) {
130
- //Se ho la funzione che vuole eseguire ripulisco quel timeout
131
- if (this.executionTimers[id])
132
- clearTimeout(this.executionTimers[id]);
133
- //Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
134
- this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
135
- }
136
- }
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJlYUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL0FyZWFDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixjQUFjO0lBQ2QsWUFBbUIsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQXNJdkMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBeklaLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBeUIsRUFBRSxRQUEyQjtRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7UUFDeEUsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUV0Qyx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxD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QztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTUQsY0FBYztJQUNOLFFBQVEsQ0FBQyxFQUFVLEVBQUUsSUFBYyxFQUFFLFlBQW9CO1FBQy9ELDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekMsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUcsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5pbXBvcnQgeyBBcmVhQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvQXJlYUNoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IEFyZWFDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL0FyZWFDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIEFyZWFDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFyZWFDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIEFyZWFDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IEFyZWFDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBBcmVhQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG4gICAgaWYgKHNldHRpbmdzLlRpbWVsaW5lKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaW1lbGluZSBub3Qgc3VwcG9ydGVkIGZvciBhcmVhIGNoYXJ0XCIpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGxldCBkYXRhQ29udmVydGVkOiBBcmVhQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvckFyZWFDaGFydChkYXRhKSA6IGRhdGE7XHJcbiAgICBsZXQgc2hvd1RpY2tzID0gc2V0dGluZ3MuU2hvd1RpY2tzID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LlNob3dUaWNrcztcclxuICAgIGxldCBpbnRlcnZhbCA9IGRhdGFDb252ZXJ0ZWQuaW50ZXJ2YWw7XHJcblxyXG4gICAgLy9QZXIgZXZpdGFyZSBkaSBkaW1lbnRpY2FybWVsaSBlIGdlc3RpcmUgY29tdW5xdWUgYmVuZSBnbGkgbmdpZiBlY2MuLi5cclxuICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5MZWdlbmQpIHtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgeUF4aXMudG9vbHRpcC5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcbiAgICB5QXhpcy5taW4gPSAwO1xyXG5cclxuICAgIGxldCBkYXRlQXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkRhdGVBeGlzKCkpO1xyXG4gICAgZGF0ZUF4aXMucmVuZGVyZXIubWluR3JpZERpc3RhbmNlID0gc2V0dGluZ3M/Lk1pbkdyaWREaXN0YW5jZSA/PyA1MDtcclxuICAgIGRhdGVBeGlzLnN0YXJ0TG9jYXRpb24gPSAwLjU7XHJcbiAgICBkYXRlQXhpcy5lbmRMb2NhdGlvbiA9IDAuNTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICBkYXRlQXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBkYXRlQXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNob3dUaWNrcykge1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiM0OTVDNDNcIik7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubGVuZ3RoID0gMTA7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFpbnRlcnZhbClcclxuICAgICAgZGF0ZUF4aXMuYmFzZUludGVydmFsID0geyBjb3VudDogaW50ZXJ2YWwuY291bnQsIHRpbWVVbml0OiBpbnRlcnZhbC50aW1ldW5pdCB9O1xyXG5cclxuICAgIC8vIFVuaXNjbyBpbCBkYXRhc2V0IGUgdGlybyBmdW9yaSBpIGRhdGlcclxuICAgIGxldCBjaGFydERhdGEgPSBbXTtcclxuICAgIGxldCBzZXJpZXNUb01ha2VDYWNoZTogeyBbaW5kZXg6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG4gICAgbGV0IHNlcmllc1RvTWFrZTogc3RyaW5nW10gPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUNvbnZlcnRlZC5ncm91cHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGdyb3VwID0gZGF0YUNvbnZlcnRlZC5ncm91cHNbaV07XHJcbiAgICAgIGxldCBkYXRhSXRlbSA9IHsgZGF0ZTogZ3JvdXAubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBpaSA9IDA7IGlpIDwgZ3JvdXAudmFsdWVzLmxlbmd0aDsgaWkrKykge1xyXG4gICAgICAgIGxldCB2YWwgPSBncm91cC52YWx1ZXNbaWldO1xyXG4gICAgICAgIGRhdGFJdGVtW3ZhbC5rXSA9IHZhbC52O1xyXG4gICAgICAgIGlmICghc2VyaWVzVG9NYWtlQ2FjaGVbdmFsLmtdKSB7XHJcbiAgICAgICAgICBzZXJpZXNUb01ha2VDYWNoZVt2YWwua10gPSB0cnVlO1xyXG4gICAgICAgICAgc2VyaWVzVG9NYWtlLnB1c2godmFsLmspO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGFydERhdGEucHVzaChkYXRhSXRlbSk7XHJcbiAgICB9XHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBjaGFydERhdGE7XHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIHNlcmllc1RvTWFrZS5mb3JFYWNoKHMgPT4geyB0aGlzLmNyZWF0ZVNlcmllcyhDaGFydEluc3RhbmNlQ2FzdGVkLCBzKTsgfSk7XHJcblxyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jdXJzb3IgPSBuZXcgYW00Y2hhcnRzLlhZQ3Vyc29yKCk7XHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmN1cnNvci54QXhpcyA9IGRhdGVBeGlzO1xyXG5cclxuICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcImVuZGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogQXJlYUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgLy9UT0RPOklNUExcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlZChldiwgc2V0dGluZ3MpIHtcclxuICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spIHtcclxuICAgICAgdGhpcy50aHJvdHRsYShcInNlbGNoYW5nZVwiLCAoKSA9PiB7XHJcbiAgICAgICAgdmFyIGF4aXMgPSA8YW00Y2hhcnRzLkRhdGVBeGlzPmV2LnRhcmdldFxyXG4gICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICB2YXIgZW5kID0gbmV3IERhdGUoYXhpcy5tYXhab29tZWQpO1xyXG4gICAgICAgIHZhciBpbml0aWFsID0gYXhpcy5taW4gPT0gYXhpcy5taW5ab29tZWQgJiYgYXhpcy5tYXggPT0gYXhpcy5tYXhab29tZWQ7XHJcbiAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgIH0sIDE1MClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZXJpZXMoY2hhcnQ6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuTGluZVNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKG5ldyBhbTRjaGFydHMuTGluZVNlcmllcygpKVxyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMuZGF0ZVggPSBcImRhdGVcIjtcclxuICAgIHNlcmllcy5uYW1lID0gbmFtZVswXS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcclxuICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IG5hbWU7XHJcbiAgICBzZXJpZXMudG9vbHRpcFRleHQgPSBcIlsjMDAwXXt2YWx1ZVkudmFsdWV9Wy9dXCI7XHJcbiAgICAvL3Nlcmllcy50b29sdGlwLmJhY2tncm91bmQuZmlsbCA9IGFtNGNvcmUuY29sb3IoXCIjRkZGXCIpO1xyXG4gICAgc2VyaWVzLnRvb2x0aXAuZ2V0U3Ryb2tlRnJvbU9iamVjdCA9IHRydWU7XHJcbiAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLnN0cm9rZVdpZHRoID0gMztcclxuICAgIHNlcmllcy50b29sdGlwLmdldEZpbGxGcm9tT2JqZWN0ID0gZmFsc2U7XHJcbiAgICBzZXJpZXMuZmlsbE9wYWNpdHkgPSAwLjY7XHJcbiAgICBzZXJpZXMuc3Ryb2tlV2lkdGggPSAyO1xyXG4gICAgc2VyaWVzLnN0YWNrZWQgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHNlcmllcztcclxuICB9XHJcblxyXG4gIC8vKioqKioqKioqKioqKioqKioqKiogRnVuemlvbmUgZGkgdGhyb3R0bGluZyBwZXIgbm9uIHNwYW1tYXJlIHJpY2hpZXN0ZSBpbiBjYXNvIGRpIGFuaW1hemlvbmkgYXR0aXZhdGVcclxuICAvL1RPRE86IHNwb3N0YXJsYSBpbiB1biBtZXRvZG8gZGkgdXRpbGl0w6AgKGVzZmFlbnphL2V4dGVuc2lvbnMpXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGV4ZWN1dGlvblRpbWVyczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy9TZSBobyBsYSBmdW56aW9uZSBjaGUgdnVvbGUgZXNlZ3VpcmUgcmlwdWxpc2NvIHF1ZWwgdGltZW91dFxyXG4gICAgaWYgKHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSlcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSk7XHJcblxyXG4gICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gc2V0VGltZW91dCgoKSA9PiB7IGZ1bmMoKTsgdGhpcy5leGVjdXRpb25UaW1lcnNbaWRdID0gbnVsbDsgfSwgdGhyb3R0bGVUaW1lKTtcclxuICB9XHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqXHJcbn0iXX0=