@esfaenza/es-charts 12.2.13 → 13.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esfaenza-es-charts.d.ts +1 -6
- package/esm2020/esfaenza-es-charts.mjs +5 -0
- package/esm2020/lib/adapters/classes/BaseAdapter.mjs +50 -0
- package/{esm2015/lib/adapters/classes/IBaseAdapter.js → esm2020/lib/adapters/classes/IBaseAdapter.mjs} +0 -0
- package/{esm2015/lib/adapters/index.js → esm2020/lib/adapters/index.mjs} +0 -0
- package/esm2020/lib/components/base/base-chart.component.mjs +339 -0
- package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +89 -0
- package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
- package/esm2020/lib/components/specializations/es-area-chart.component.mjs +78 -0
- package/esm2020/lib/components/specializations/es-chart.component.mjs +111 -0
- package/esm2020/lib/components/specializations/es-line-chart.component.mjs +110 -0
- package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +99 -0
- package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +96 -0
- package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +93 -0
- package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +93 -0
- package/esm2020/lib/es-charts.module.mjs +61 -0
- package/{esm2015/lib/models/EsChaartsModuleConfig.js → esm2020/lib/models/EsChaartsModuleConfig.mjs} +0 -0
- package/esm2020/lib/models/core/classes/ChartDispatcher.mjs +91 -0
- package/{esm2015/lib/models/core/classes/ChartLoader.js → esm2020/lib/models/core/classes/ChartLoader.mjs} +0 -0
- package/{esm2015/lib/models/core/classes/ChartThemes.js → esm2020/lib/models/core/classes/ChartThemes.mjs} +0 -0
- package/{esm2015/lib/models/core/index.js → esm2020/lib/models/core/index.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/AreaChartData.js → esm2020/lib/models/data/classes/AreaChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/LineChartData.js → esm2020/lib/models/data/classes/LineChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/PagedChartData.js → esm2020/lib/models/data/classes/PagedChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/PieChartData.js → esm2020/lib/models/data/classes/PieChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/Vertical2DChartData.js → esm2020/lib/models/data/classes/Vertical2DChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/VerticalChartData.js → esm2020/lib/models/data/classes/VerticalChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/VerticalStackedChartData.js → esm2020/lib/models/data/classes/VerticalStackedChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/DateValue.js → esm2020/lib/models/data/classes/base/DateValue.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/KeyValue.js → esm2020/lib/models/data/classes/base/KeyValue.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/KeyValueColor.js → esm2020/lib/models/data/classes/base/KeyValueColor.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/Limit.js → esm2020/lib/models/data/classes/base/Limit.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/LineSerie.js → esm2020/lib/models/data/classes/base/LineSerie.mjs} +0 -0
- package/{esm2015/lib/models/data/index.js → esm2020/lib/models/data/index.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/AreaChartSettings.js → esm2020/lib/models/settings/classes/AreaChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/LineChartSettings.js → esm2020/lib/models/settings/classes/LineChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/PieChartSettings.js → esm2020/lib/models/settings/classes/PieChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/Vertical2DChartSettings.js → esm2020/lib/models/settings/classes/Vertical2DChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/VerticalChartSettings.js → esm2020/lib/models/settings/classes/VerticalChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/VerticalStackedChartSettings.js → esm2020/lib/models/settings/classes/VerticalStackedChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/BaseInterval.js → esm2020/lib/models/settings/classes/base/BaseInterval.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/BaseSettings.js → esm2020/lib/models/settings/classes/base/BaseSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/LegendPad.js → esm2020/lib/models/settings/classes/base/LegendPad.mjs} +0 -0
- package/{esm2015/lib/models/settings/index.js → esm2020/lib/models/settings/index.mjs} +0 -0
- package/esm2020/lib/services/classes/AreaChartService.mjs +134 -0
- package/esm2020/lib/services/classes/LineChartService.mjs +356 -0
- package/esm2020/lib/services/classes/PieChartService.mjs +111 -0
- package/esm2020/lib/services/classes/Vertical2DChartService.mjs +160 -0
- package/esm2020/lib/services/classes/VerticalChartService.mjs +103 -0
- package/esm2020/lib/services/classes/VerticalStackedChartService.mjs +124 -0
- package/{esm2015/lib/services/classes/base/IBaseService.js → esm2020/lib/services/classes/base/IBaseService.mjs} +0 -0
- package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/public-api.mjs +38 -0
- package/fesm2015/{esfaenza-es-charts.js → esfaenza-es-charts.mjs} +530 -384
- package/fesm2015/esfaenza-es-charts.mjs.map +1 -0
- package/fesm2020/esfaenza-es-charts.mjs +2747 -0
- package/fesm2020/esfaenza-es-charts.mjs.map +1 -0
- package/lib/adapters/classes/BaseAdapter.d.ts +3 -0
- package/lib/components/base/base-chart.component.d.ts +12 -0
- package/lib/components/chart-pager/chart-pager.component.d.ts +3 -0
- package/lib/components/specializations/es-area-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-line-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-pie-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +3 -0
- package/lib/es-charts.module.d.ts +13 -0
- package/lib/models/core/classes/ChartDispatcher.d.ts +3 -0
- package/lib/services/classes/LineChartService.d.ts +4 -0
- package/package.json +22 -10
- package/public-api.d.ts +2 -0
- package/bundles/esfaenza-es-charts.umd.js +0 -3212
- package/bundles/esfaenza-es-charts.umd.js.map +0 -1
- package/esfaenza-es-charts.metadata.json +0 -1
- package/esm2015/esfaenza-es-charts.js +0 -11
- package/esm2015/lib/adapters/classes/BaseAdapter.js +0 -47
- package/esm2015/lib/components/base/base-chart.component.js +0 -311
- package/esm2015/lib/components/chart-pager/chart-pager.component.js +0 -84
- package/esm2015/lib/components/specializations/es-area-chart.component.js +0 -75
- package/esm2015/lib/components/specializations/es-chart.component.js +0 -108
- package/esm2015/lib/components/specializations/es-line-chart.component.js +0 -98
- package/esm2015/lib/components/specializations/es-pie-chart.component.js +0 -89
- package/esm2015/lib/components/specializations/es-vertical-2d-chart.component.js +0 -87
- package/esm2015/lib/components/specializations/es-vertical-chart.component.js +0 -85
- package/esm2015/lib/components/specializations/es-vertical-stacked-chart.component.js +0 -85
- package/esm2015/lib/es-charts.module.js +0 -42
- package/esm2015/lib/models/core/classes/ChartDispatcher.js +0 -88
- package/esm2015/lib/services/classes/AreaChartService.js +0 -135
- package/esm2015/lib/services/classes/LineChartService.js +0 -326
- package/esm2015/lib/services/classes/PieChartService.js +0 -112
- package/esm2015/lib/services/classes/Vertical2DChartService.js +0 -163
- package/esm2015/lib/services/classes/VerticalChartService.js +0 -105
- package/esm2015/lib/services/classes/VerticalStackedChartService.js +0 -127
- package/esm2015/public-api.js +0 -36
- package/fesm2015/esfaenza-es-charts.js.map +0 -1
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Inject, PLATFORM_ID, NgZone, ChangeDetectionStrategy, ElementRef } from '@angular/core';
|
|
2
|
-
import { BaseAdapter } from '../../adapters';
|
|
3
|
-
import { ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME, ESC_LOGS } from '../../tokens';
|
|
4
|
-
import { BaseChartComponent } from '../base/base-chart.component';
|
|
5
|
-
import { ChartLoader, ChartDispatcher } from "../../models/core";
|
|
6
|
-
import { VerticalStackedChartSettings } from '../../models/settings';
|
|
7
|
-
import { VerticalStackedChartService } from '../../services';
|
|
8
|
-
/**
|
|
9
|
-
* Componente specifico per la graficazione di un grafico a Barre in modalità Stacked (una serie sopra l'altra)
|
|
10
|
-
*/
|
|
11
|
-
export class EsVerticalStackedChartComponent extends BaseChartComponent {
|
|
12
|
-
/**
|
|
13
|
-
* @ignore
|
|
14
|
-
*/
|
|
15
|
-
constructor(el, ChartLoader, ChartDispatcher, adapter, zone, platformId, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME) {
|
|
16
|
-
super(el, platformId, zone, ChartLoader, ChartDispatcher, ESC_LOGS, ESC_ANIMATIONS, ESC_LOCALE, ESC_THEME);
|
|
17
|
-
this.adapter = adapter;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Ottiene le proprietà specifiche per questa tipologia di grafico per cui serve rigraficare
|
|
21
|
-
*/
|
|
22
|
-
getSpecificPropertiesToCheck() {
|
|
23
|
-
return ["Data", "DataArray"];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Ottiene i Settings (Ereditati dalla classe base, quindi del tipo generico **BaseSettings**) castati al tipo specifico per questo grafico
|
|
27
|
-
*
|
|
28
|
-
* @returns {VerticalStackedChartSettings} Settings castati al tipo giusto
|
|
29
|
-
*/
|
|
30
|
-
getCastedSettings() {
|
|
31
|
-
var _a;
|
|
32
|
-
return ((_a = this.Settings) !== null && _a !== void 0 ? _a : new VerticalStackedChartSettings());
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Integra i Settings base con tutti gli Input specifici di questo grafico, dando priorità ai Settings se definiti
|
|
36
|
-
*
|
|
37
|
-
* @param {VerticalStackedChartSettings} settingsCasted Settings castati al tipo giusto
|
|
38
|
-
*/
|
|
39
|
-
fillSpecificSettings(settingsCasted) {
|
|
40
|
-
settingsCasted.ColumnWidthPercentage = settingsCasted.ColumnWidthPercentage != null ? settingsCasted.ColumnWidthPercentage : this.ColumnWidthPercentage;
|
|
41
|
-
settingsCasted.LabelWidth = settingsCasted.LabelWidth != null ? settingsCasted.LabelWidth : this.LabelWidth;
|
|
42
|
-
settingsCasted.LabelVerticalOrientationCutoffWidth = settingsCasted.LabelVerticalOrientationCutoffWidth != null ? settingsCasted.LabelVerticalOrientationCutoffWidth : this.LabelVerticalOrientationCutoffWidth;
|
|
43
|
-
settingsCasted.LabelRightWhenCompressed = settingsCasted.LabelRightWhenCompressed != null ? settingsCasted.LabelRightWhenCompressed : this.LabelRightWhenCompressed;
|
|
44
|
-
settingsCasted.LabelTopWhenCompressed = settingsCasted.LabelTopWhenCompressed != null ? settingsCasted.LabelTopWhenCompressed : this.LabelTopWhenCompressed;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Effettua il rendering di questo grafico in base ai Settings
|
|
48
|
-
*
|
|
49
|
-
* @param {VerticalStackedChartSettings} settingsCasted Impostazioni di graficazione
|
|
50
|
-
* @returns {VerticalStackedChartService} La service utilizzata per il rendering nello stato subito successivo al rendering effettuato
|
|
51
|
-
*/
|
|
52
|
-
graphicate(settingsCasted) {
|
|
53
|
-
return new VerticalStackedChartService(this.adapter).graphicate(this.Data, settingsCasted);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
EsVerticalStackedChartComponent.decorators = [
|
|
57
|
-
{ type: Component, args: [{
|
|
58
|
-
selector: 'es-vertical-stacked-chart',
|
|
59
|
-
template: "<chart-pager *ngIf=\"isPaged\" (onPageChange)=\"changePage($event)\" [Items]=\"DataArray\" [Dtos]=\"DataDtos\" [StartIndex]=\"DataDtoStartIndex\"\r\n [BrowseDelayMs]=\"BrowseDelayMs\">\r\n <ng-template #header_inner let-headerItem>\r\n <ng-container *ngTemplateOutlet=\"header_tr; context : {$implicit: headerItem}\"></ng-container>\r\n </ng-template>\r\n</chart-pager>\r\n\r\n<ng-container *ngIf=\"loadingChart && loading_template\">\r\n <div style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <ng-container *ngTemplateOutlet=\"loading_template\"></ng-container>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"loadingChart && !loading_template\">\r\n <div class=\"esc-loading-overlay\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\">\r\n <p class=\"label\">Loading....</p>\r\n </div>\r\n</ng-container>\r\n\r\n<div [class.hide-block]=\"loadingChart\" id=\"{{name}}\" style=\"width: 100%;\" [style.height]=\"isPaged ? 'calc(100% - 44px)' : '100%'\"></div>",
|
|
60
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
61
|
-
styles: [".esc-loading-overlay{background:#9999;text-transform:uppercase;font-size:30px;font-weight:bold;color:#fff;text-align:center;font-family:monospace}.esc-loading-overlay .label{margin:0;padding-top:7%}.hide-block{display:none}\n"]
|
|
62
|
-
},] }
|
|
63
|
-
];
|
|
64
|
-
EsVerticalStackedChartComponent.ctorParameters = () => [
|
|
65
|
-
{ type: ElementRef },
|
|
66
|
-
{ type: ChartLoader },
|
|
67
|
-
{ type: ChartDispatcher },
|
|
68
|
-
{ type: BaseAdapter },
|
|
69
|
-
{ type: NgZone },
|
|
70
|
-
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
|
|
71
|
-
{ type: Boolean, decorators: [{ type: Inject, args: [ESC_LOGS,] }] },
|
|
72
|
-
{ type: Boolean, decorators: [{ type: Inject, args: [ESC_ANIMATIONS,] }] },
|
|
73
|
-
{ type: String, decorators: [{ type: Inject, args: [ESC_LOCALE,] }] },
|
|
74
|
-
{ type: String, decorators: [{ type: Inject, args: [ESC_THEME,] }] }
|
|
75
|
-
];
|
|
76
|
-
EsVerticalStackedChartComponent.propDecorators = {
|
|
77
|
-
Data: [{ type: Input }],
|
|
78
|
-
DataArray: [{ type: Input }],
|
|
79
|
-
ColumnWidthPercentage: [{ type: Input }],
|
|
80
|
-
LabelWidth: [{ type: Input }],
|
|
81
|
-
LabelVerticalOrientationCutoffWidth: [{ type: Input }],
|
|
82
|
-
LabelRightWhenCompressed: [{ type: Input }],
|
|
83
|
-
LabelTopWhenCompressed: [{ type: Input }]
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtdmVydGljYWwtc3RhY2tlZC1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9jb21wb25lbnRzL3NwZWNpYWxpemF0aW9ucy9lcy12ZXJ0aWNhbC1zdGFja2VkLWNoYXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RDs7R0FFRztBQU9ILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxrQkFBa0I7SUFzQ3JFOztPQUVHO0lBQ0gsWUFBWSxFQUFjLEVBQUUsV0FBd0IsRUFBRSxlQUFnQyxFQUFVLE9BQW9CLEVBQUUsSUFBWSxFQUMzRyxVQUFrQixFQUNyQixRQUFpQixFQUNYLGNBQXVCLEVBQzNCLFVBQWtCLEVBQ25CLFNBQWlCO1FBQ3BDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBTmIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtJQU9wSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCw0QkFBNEI7UUFDMUIsT0FBTyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGlCQUFpQjs7UUFDZixPQUFxQyxDQUFDLE1BQUEsSUFBSSxDQUFDLFFBQVEsbUNBQUksSUFBSSw0QkFBNEIsRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxjQUE0QztRQUMvRCxjQUFjLENBQUMscUJBQXFCLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDeEosY0FBYyxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM1RyxjQUFjLENBQUMsbUNBQW1DLEdBQUcsY0FBYyxDQUFDLG1DQUFtQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUM7UUFDaE4sY0FBYyxDQUFDLHdCQUF3QixHQUFHLGNBQWMsQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3BLLGNBQWMsQ0FBQyxzQkFBc0IsR0FBRyxjQUFjLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM5SixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsY0FBNEM7UUFDckQsT0FBTyxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQTJCLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkgsQ0FBQzs7O1lBN0ZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxra0NBQWdEO2dCQUVoRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7OztZQXBCZ0YsVUFBVTtZQU1sRixXQUFXO1lBQUUsZUFBZTtZQUo1QixXQUFXO1lBRjRCLE1BQU07WUErRGpCLE1BQU0sdUJBQXRDLE1BQU0sU0FBQyxXQUFXOzBDQUNsQixNQUFNLFNBQUMsUUFBUTswQ0FDZixNQUFNLFNBQUMsY0FBYzt5Q0FDckIsTUFBTSxTQUFDLFVBQVU7eUNBQ2pCLE1BQU0sU0FBQyxTQUFTOzs7bUJBekNsQixLQUFLO3dCQUtMLEtBQUs7b0NBTUosS0FBSzt5QkFLTCxLQUFLO2tEQUtMLEtBQUs7dUNBS0wsS0FBSztxQ0FLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBQTEFURk9STV9JRCwgTmdab25lLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycyc7XHJcbmltcG9ydCB7IEVTQ19BTklNQVRJT05TLCBFU0NfTE9DQUxFLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbmltcG9ydCB7IEJhc2VDaGFydENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvYmFzZS1jaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb3JlXCI7XHJcblxyXG5pbXBvcnQgeyBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NldHRpbmdzJztcclxuaW1wb3J0IHsgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGEsIFBhZ2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3BlY2lmaWNvIHBlciBsYSBncmFmaWNhemlvbmUgZGkgdW4gZ3JhZmljbyBhIEJhcnJlIGluIG1vZGFsaXTDoCBTdGFja2VkICh1bmEgc2VyaWUgc29wcmEgbCdhbHRyYSlcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZXMtdmVydGljYWwtc3RhY2tlZC1jaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuLi9iYXNlL2Jhc2UtY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNWZXJ0aWNhbFN0YWNrZWRDaGFydENvbXBvbmVudCBleHRlbmRzIEJhc2VDaGFydENvbXBvbmVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIERhdGkgc3BlY2lmaWNpIHBlciBpbCBncmFmaWNvIG8gZGkgdW4gdGlwbyB0cmFtdXRhYmlsZSBhbCB0aXBvICoqVmVydGljYWxTdGFja2VkQ2hhcnREYXRhKiogY29sIHN1cHBvcnRvIGRlbCAqKkJhc2VBZGFwdGVyKipcclxuICAgKi9cclxuICBASW5wdXQoKSBEYXRhOiBWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGEgfCBhbnk7XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RhIGRpIERhdGkgc3BlY2lmaWNpIHBlciB1biBncmFmaWNvIHBhZ2luYXRvIG8gZGkgY3VpIG9nbmkgYmxvY2NvIGRhdGkgw6ggdHJhbXV0YWJpbGUgYWwgdGlwbyAqKlZlcnRpY2FsU3RhY2tlZENoYXJ0RGF0YSoqIGNvbCBzdXBwb3J0byBkZWwgKipCYXNlQWRhcHRlcioqXHJcbiAgICovXHJcbiAgQElucHV0KCkgRGF0YUFycmF5OiBQYWdlZENoYXJ0RGF0YTxWZXJ0aWNhbFN0YWNrZWRDaGFydERhdGE+W10gfCBQYWdlZENoYXJ0RGF0YTxhbnk+W107XHJcblxyXG4gIC8qKlxyXG4gICAqIEluZGljYSBsYSBwZXJjZW50dWFsZSBkaSBjZWxsYSBjaGUgbGEgY29sb25uYSBhbmRyw6AgYSByaWVtcGlyZS4gVW4gdmFsb3JlIHBhcmkgYSAxMDAgcmllbXBpcsOgIGxhIGNlbGxhIGNvbXBsZXRhbWVudGUgXHJcbiAgICogZSB0dXR0ZSBsZSBiYXJyZSByaXN1bHRlcmFubm8gYXBwaWNjaWNhdGUgbCd1biBsJ2FsdHJhXHJcbiAgICovXHJcbiAgIEBJbnB1dCgpIENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyO1xyXG5cclxuICAgLyoqXHJcbiAgICAqIEluZGljYSBsZSBkaW1lbnNpb25pIG1hc3NpbWUgZGVsbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlXHJcbiAgICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbFdpZHRoOiBudW1iZXI7XHJcbiBcclxuICAgLyoqXHJcbiAgICAqIEluZGljYSBsYSBkaW1lbnNpb25lIG1hc3NpbWEgc290dG8gbGEgcXVhbGUgbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlIHNpIGluY2xpbmEgY2VyY2FuZG8gZGkgb2NjdXBhcmUgbWVubyBzcGF6aW9cclxuICAgICovXHJcbiAgIEBJbnB1dCgpIExhYmVsVmVydGljYWxPcmllbnRhdGlvbkN1dG9mZldpZHRoOiBudW1iZXI7XHJcbiBcclxuICAgLyoqXHJcbiAgICAqIEluZGljYSB1biBvZmZzZXQgb3JpenpvbnRhbGUgZGEgYXBwbGljYXJlIGFsbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlIHF1YWxvcmEgZm9zc2UgY29tcHJlc3NhIGEgY2F1c2EgZGVsbGEgbWFuY2FuemEgZGkgc3BhemlvXHJcbiAgICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlcjtcclxuIFxyXG4gICAvKipcclxuICAgICogSW5kaWNhIHVuIG9mZnNldCB2ZXJ0aWNhbGUgZGEgYXBwbGljYXJlIGFsbGEgbGFiZWwgYXNzb2NpYXRhIGEgdW4gZ3J1cHBvIGRpIGJhcnJlIHF1YWxvcmEgZm9zc2UgY29tcHJlc3NhIGEgY2F1c2EgZGVsbGEgbWFuY2FuemEgZGkgc3BhemlvXHJcbiAgICAqL1xyXG4gICBASW5wdXQoKSBMYWJlbFRvcFdoZW5Db21wcmVzc2VkOiBudW1iZXI7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQGlnbm9yZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCBDaGFydExvYWRlcjogQ2hhcnRMb2FkZXIsIENoYXJ0RGlzcGF0Y2hlcjogQ2hhcnREaXNwYXRjaGVyLCBwcml2YXRlIGFkYXB0ZXI6IEJhc2VBZGFwdGVyLCB6b25lOiBOZ1pvbmUsXHJcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QsXHJcbiAgICBASW5qZWN0KEVTQ19MT0dTKSBFU0NfTE9HUzogYm9vbGVhbixcclxuICAgIEBJbmplY3QoRVNDX0FOSU1BVElPTlMpIEVTQ19BTklNQVRJT05TOiBib29sZWFuLFxyXG4gICAgQEluamVjdChFU0NfTE9DQUxFKSBFU0NfTE9DQUxFOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVTQ19USEVNRSkgRVNDX1RIRU1FOiBzdHJpbmcpIHtcclxuICAgIHN1cGVyKGVsLCBwbGF0Zm9ybUlkLCB6b25lLCBDaGFydExvYWRlciwgQ2hhcnREaXNwYXRjaGVyLCBFU0NfTE9HUywgRVNDX0FOSU1BVElPTlMsIEVTQ19MT0NBTEUsIEVTQ19USEVNRSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPdHRpZW5lIGxlIHByb3ByaWV0w6Agc3BlY2lmaWNoZSBwZXIgcXVlc3RhIHRpcG9sb2dpYSBkaSBncmFmaWNvIHBlciBjdWkgc2VydmUgcmlncmFmaWNhcmVcclxuICAgKi9cclxuICBnZXRTcGVjaWZpY1Byb3BlcnRpZXNUb0NoZWNrKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBbXCJEYXRhXCIsIFwiRGF0YUFycmF5XCJdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3R0aWVuZSBpIFNldHRpbmdzIChFcmVkaXRhdGkgZGFsbGEgY2xhc3NlIGJhc2UsIHF1aW5kaSBkZWwgdGlwbyBnZW5lcmljbyAqKkJhc2VTZXR0aW5ncyoqKSBjYXN0YXRpIGFsIHRpcG8gc3BlY2lmaWNvIHBlciBxdWVzdG8gZ3JhZmljb1xyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzfSBTZXR0aW5ncyBjYXN0YXRpIGFsIHRpcG8gZ2l1c3RvXHJcbiAgICovXHJcbiAgZ2V0Q2FzdGVkU2V0dGluZ3MoKTogVmVydGljYWxTdGFja2VkQ2hhcnRTZXR0aW5ncyB7XHJcbiAgICByZXR1cm4gPFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3M+KHRoaXMuU2V0dGluZ3MgPz8gbmV3IFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3MoKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnRlZ3JhIGkgU2V0dGluZ3MgYmFzZSBjb24gdHV0dGkgZ2xpIElucHV0IHNwZWNpZmljaSBkaSBxdWVzdG8gZ3JhZmljbywgZGFuZG8gcHJpb3JpdMOgIGFpIFNldHRpbmdzIHNlIGRlZmluaXRpXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzfSBzZXR0aW5nc0Nhc3RlZCBTZXR0aW5ncyBjYXN0YXRpIGFsIHRpcG8gZ2l1c3RvXHJcbiAgICovXHJcbiAgZmlsbFNwZWNpZmljU2V0dGluZ3Moc2V0dGluZ3NDYXN0ZWQ6IFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3MpOiB2b2lkIHtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkNvbHVtbldpZHRoUGVyY2VudGFnZSA9IHNldHRpbmdzQ2FzdGVkLkNvbHVtbldpZHRoUGVyY2VudGFnZSAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuQ29sdW1uV2lkdGhQZXJjZW50YWdlIDogdGhpcy5Db2x1bW5XaWR0aFBlcmNlbnRhZ2U7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5MYWJlbFdpZHRoID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxXaWR0aCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxXaWR0aCA6IHRoaXMuTGFiZWxXaWR0aDtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsVmVydGljYWxPcmllbnRhdGlvbkN1dG9mZldpZHRoID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGggIT0gbnVsbCA/IHNldHRpbmdzQ2FzdGVkLkxhYmVsVmVydGljYWxPcmllbnRhdGlvbkN1dG9mZldpZHRoIDogdGhpcy5MYWJlbFZlcnRpY2FsT3JpZW50YXRpb25DdXRvZmZXaWR0aDtcclxuICAgIHNldHRpbmdzQ2FzdGVkLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZCA9IHNldHRpbmdzQ2FzdGVkLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkIDogdGhpcy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ7XHJcbiAgICBzZXR0aW5nc0Nhc3RlZC5MYWJlbFRvcFdoZW5Db21wcmVzc2VkID0gc2V0dGluZ3NDYXN0ZWQuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCAhPSBudWxsID8gc2V0dGluZ3NDYXN0ZWQuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCA6IHRoaXMuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVmZmV0dHVhIGlsIHJlbmRlcmluZyBkaSBxdWVzdG8gZ3JhZmljbyBpbiBiYXNlIGFpIFNldHRpbmdzXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzfSBzZXR0aW5nc0Nhc3RlZCBJbXBvc3RhemlvbmkgZGkgZ3JhZmljYXppb25lXHJcbiAgICogQHJldHVybnMge1ZlcnRpY2FsU3RhY2tlZENoYXJ0U2VydmljZX0gTGEgc2VydmljZSB1dGlsaXp6YXRhIHBlciBpbCByZW5kZXJpbmcgbmVsbG8gc3RhdG8gc3ViaXRvIHN1Y2Nlc3Npdm8gYWwgcmVuZGVyaW5nIGVmZmV0dHVhdG9cclxuICAgKi9cclxuICBncmFwaGljYXRlKHNldHRpbmdzQ2FzdGVkOiBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzKTogYW55IHtcclxuICAgIHJldHVybiBuZXcgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlKHRoaXMuYWRhcHRlcikuZ3JhcGhpY2F0ZSg8VmVydGljYWxTdGFja2VkQ2hhcnREYXRhPnRoaXMuRGF0YSwgc2V0dGluZ3NDYXN0ZWQpO1xyXG4gIH1cclxufSJdfQ==
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { EsChartComponent, EsLineChartComponent, EsAreaChartComponent, EsPieChartComponent, EsVertical2DChartComponent, EsVerticalChartComponent, EsVerticalStackedChartComponent, PageChartSelector } from '../lib/components';
|
|
3
|
-
import { ChartLoader, ChartDispatcher } from './models/core';
|
|
4
|
-
import { BaseAdapter } from './adapters';
|
|
5
|
-
import { ESC_LOCALE, ESC_ANIMATIONS, ESC_THEME, ESC_LOGS } from './tokens';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
/** Componenti esportati dal modulo */
|
|
8
|
-
const COMPONENTS = [
|
|
9
|
-
EsChartComponent,
|
|
10
|
-
EsLineChartComponent,
|
|
11
|
-
EsPieChartComponent,
|
|
12
|
-
EsVertical2DChartComponent,
|
|
13
|
-
EsVerticalChartComponent,
|
|
14
|
-
EsVerticalStackedChartComponent,
|
|
15
|
-
PageChartSelector,
|
|
16
|
-
EsAreaChartComponent
|
|
17
|
-
];
|
|
18
|
-
export class EsChartsModule {
|
|
19
|
-
static forRoot(config) {
|
|
20
|
-
return {
|
|
21
|
-
ngModule: EsChartsModule,
|
|
22
|
-
providers: [
|
|
23
|
-
{ provide: ESC_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
|
|
24
|
-
{ provide: ESC_ANIMATIONS, useValue: (config === null || config === void 0 ? void 0 : config.animations) == null ? true : config === null || config === void 0 ? void 0 : config.animations },
|
|
25
|
-
{ provide: ESC_THEME, useValue: (config === null || config === void 0 ? void 0 : config.theme) || 'spiritedaway' },
|
|
26
|
-
{ provide: ESC_LOGS, useValue: (config === null || config === void 0 ? void 0 : config.debugMode) == null ? false : config === null || config === void 0 ? void 0 : config.debugMode },
|
|
27
|
-
{ provide: BaseAdapter, useClass: (config === null || config === void 0 ? void 0 : config.adapter) || BaseAdapter },
|
|
28
|
-
// Singleton cattiva by Ema. Verificare strade migliori
|
|
29
|
-
{ provide: ChartLoader, useValue: new ChartLoader((config === null || config === void 0 ? void 0 : config.debugMode) == null ? false : config === null || config === void 0 ? void 0 : config.debugMode) }
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
EsChartsModule.decorators = [
|
|
35
|
-
{ type: NgModule, args: [{
|
|
36
|
-
imports: [CommonModule],
|
|
37
|
-
declarations: [...COMPONENTS],
|
|
38
|
-
providers: [ChartDispatcher],
|
|
39
|
-
exports: [...COMPONENTS]
|
|
40
|
-
},] }
|
|
41
|
-
];
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtY2hhcnRzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL2VzLWNoYXJ0cy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLCtCQUErQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHaE8sT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLEdBQUc7SUFDakIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4QiwrQkFBK0I7SUFDL0IsaUJBQWlCO0lBQ2pCLG9CQUFvQjtDQUNyQixDQUFBO0FBUUQsTUFBTSxPQUFPLGNBQWM7SUFFekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE2QjtRQUMxQyxPQUFPO1lBQ0wsUUFBUSxFQUFFLGNBQWM7WUFDeEIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxLQUFJLE9BQU8sRUFBRTtnQkFDNUQsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxVQUFVLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxVQUFVLEVBQUU7Z0JBQzdGLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsS0FBSyxLQUFJLGNBQWMsRUFBRTtnQkFDakUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLEVBQUU7Z0JBQ3RGLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxLQUFJLFdBQVcsRUFBRTtnQkFDbEUsdURBQXVEO2dCQUN2RCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsS0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFNBQVMsQ0FBQyxFQUFFO2FBQzNHO1NBQ0YsQ0FBQztJQUNKLENBQUM7OztZQXJCRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUN2QixZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDN0IsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO2dCQUM1QixPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQzthQUN6QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVzQ2hhcnRDb21wb25lbnQsIEVzTGluZUNoYXJ0Q29tcG9uZW50LCBFc0FyZWFDaGFydENvbXBvbmVudCwgRXNQaWVDaGFydENvbXBvbmVudCwgRXNWZXJ0aWNhbDJEQ2hhcnRDb21wb25lbnQsIEVzVmVydGljYWxDaGFydENvbXBvbmVudCwgRXNWZXJ0aWNhbFN0YWNrZWRDaGFydENvbXBvbmVudCwgUGFnZUNoYXJ0U2VsZWN0b3IgfSBmcm9tICcuLi9saWIvY29tcG9uZW50cyc7XHJcblxyXG5pbXBvcnQgeyBFc0NoYXJ0c01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0VzQ2hhYXJ0c01vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IENoYXJ0TG9hZGVyLCBDaGFydERpc3BhdGNoZXIgfSBmcm9tICcuL21vZGVscy9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuL2FkYXB0ZXJzJztcclxuXHJcbmltcG9ydCB7IEVTQ19MT0NBTEUsIEVTQ19BTklNQVRJT05TLCBFU0NfVEhFTUUsIEVTQ19MT0dTIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuLyoqIENvbXBvbmVudGkgZXNwb3J0YXRpIGRhbCBtb2R1bG8gKi9cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICBFc0NoYXJ0Q29tcG9uZW50LFxyXG4gIEVzTGluZUNoYXJ0Q29tcG9uZW50LFxyXG4gIEVzUGllQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNWZXJ0aWNhbDJEQ2hhcnRDb21wb25lbnQsXHJcbiAgRXNWZXJ0aWNhbENoYXJ0Q29tcG9uZW50LFxyXG4gIEVzVmVydGljYWxTdGFja2VkQ2hhcnRDb21wb25lbnQsXHJcbiAgUGFnZUNoYXJ0U2VsZWN0b3IsXHJcbiAgRXNBcmVhQ2hhcnRDb21wb25lbnRcclxuXVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcclxuICBwcm92aWRlcnM6IFtDaGFydERpc3BhdGNoZXJdLFxyXG4gIGV4cG9ydHM6IFsuLi5DT01QT05FTlRTXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNDaGFydHNNb2R1bGUge1xyXG5cclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBFc0NoYXJ0c01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RXNDaGFydHNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBFc0NoYXJ0c01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBFU0NfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRVNDX0FOSU1BVElPTlMsIHVzZVZhbHVlOiBjb25maWc/LmFuaW1hdGlvbnMgPT0gbnVsbCA/IHRydWUgOiBjb25maWc/LmFuaW1hdGlvbnMgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19USEVNRSwgdXNlVmFsdWU6IGNvbmZpZz8udGhlbWUgfHwgJ3NwaXJpdGVkYXdheScgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEVTQ19MT0dTLCB1c2VWYWx1ZTogY29uZmlnPy5kZWJ1Z01vZGUgPT0gbnVsbCA/IGZhbHNlIDogY29uZmlnPy5kZWJ1Z01vZGUgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEJhc2VBZGFwdGVyLCB1c2VDbGFzczogY29uZmlnPy5hZGFwdGVyIHx8IEJhc2VBZGFwdGVyIH0sXHJcbiAgICAgICAgLy8gU2luZ2xldG9uIGNhdHRpdmEgYnkgRW1hLiBWZXJpZmljYXJlIHN0cmFkZSBtaWdsaW9yaVxyXG4gICAgICAgIHsgcHJvdmlkZTogQ2hhcnRMb2FkZXIsIHVzZVZhbHVlOiBuZXcgQ2hhcnRMb2FkZXIoY29uZmlnPy5kZWJ1Z01vZGUgPT0gbnVsbCA/IGZhbHNlIDogY29uZmlnPy5kZWJ1Z01vZGUpIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject } from '@angular/core';
|
|
2
|
-
import { ESC_LOGS } from '../../../tokens';
|
|
3
|
-
/**
|
|
4
|
-
* Classe che si occupa del dispatch delle operazioni di rendering dei grafici utilizzando una coda per permettere ad ogni grafico di avere temi e localizzazione custom
|
|
5
|
-
*/
|
|
6
|
-
export class ChartDispatcher {
|
|
7
|
-
/**
|
|
8
|
-
* @ignore
|
|
9
|
-
*/
|
|
10
|
-
constructor(logs) {
|
|
11
|
-
this.logs = logs;
|
|
12
|
-
/**
|
|
13
|
-
* Coda di inizializzazioni ancora da eseguire. Quando questa è vuota significa che nessuno sta creando grafici
|
|
14
|
-
*/
|
|
15
|
-
this.Initializations = [];
|
|
16
|
-
/**
|
|
17
|
-
* Lista dei grafici inizializzati e attivi in un dato momento (viene registrata la proprietà **name**). Non è possibile registrare due grafici con lo stesso identificativo
|
|
18
|
-
*/
|
|
19
|
-
this.InitializedGraphs = [];
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Registra un grafico da visualizzare insieme alla propria funzione di creazione. Quest'ultima sarà differita fino a che tutti i grafici
|
|
23
|
-
* precedentemente registati non hanno finito la fase di inizializzazione
|
|
24
|
-
*
|
|
25
|
-
* @param {string} name Identificativo del grafico da registrare
|
|
26
|
-
* @param {Function} chartCreationFunction Funzione che fisicamente dovrà occuparsi della creazione del grafico
|
|
27
|
-
*/
|
|
28
|
-
register(name, chartCreationFunction) {
|
|
29
|
-
if (this.InitializedGraphs.indexOf(name) != -1)
|
|
30
|
-
throw "Attempting to register a duplicate chart '" + name + "'. Make sure the 'name' properties of your charts are univoque";
|
|
31
|
-
this.log("DISPATCHER: Registering chart creation function execution for " + name);
|
|
32
|
-
this.Initializations.push({ name: name, function: chartCreationFunction });
|
|
33
|
-
if (this.Initializations.length == 1) {
|
|
34
|
-
this.log("DISPATCHER: Initial drain started");
|
|
35
|
-
this.drainInitQueues();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Deregistra un grafico presente. Chiamata generalmente al dispose del grafico in questione quando non dev'essere più mostrato nella pagina corrente
|
|
40
|
-
*
|
|
41
|
-
* @param {string} name Identificativo del grafico da deregistrare
|
|
42
|
-
*/
|
|
43
|
-
deregisterGraph(name) {
|
|
44
|
-
let index = this.InitializedGraphs.indexOf(name);
|
|
45
|
-
if (index == -1) {
|
|
46
|
-
//Questo succede quando si cerca di distruggere il grafico mentre sta venendo graficato
|
|
47
|
-
this.log("DISPATCHER: Registration missing for chart " + name + " it was probably destroyed during load");
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
this.log("DISPATCHER: Chart deregistered " + name);
|
|
51
|
-
this.InitializedGraphs.splice(index, 1);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Metodo che esegue in maniera sequenziale le funzioni di inizializzazione dei grafici finché presenti
|
|
55
|
-
* in modo che nessun grafico possa essere inizializzato contemporaneamente ad un altro.
|
|
56
|
-
*
|
|
57
|
-
* Questo è il punto chiave che permette di avere per ogni grafico temi e locale differenti
|
|
58
|
-
*/
|
|
59
|
-
drainInitQueues() {
|
|
60
|
-
let toExecute = this.Initializations[0];
|
|
61
|
-
this.log("DISPATCHER: Executing initialization function for chart " + toExecute.name);
|
|
62
|
-
toExecute.function().then(() => {
|
|
63
|
-
this.log("DISPATCHER: initialization for chart " + toExecute.name + " is done");
|
|
64
|
-
this.InitializedGraphs.push(toExecute.name);
|
|
65
|
-
this.Initializations.splice(0, 1);
|
|
66
|
-
if (this.Initializations.length >= 1) {
|
|
67
|
-
this.log("DISPATCHER: Found queued initializations. Continuing");
|
|
68
|
-
this.drainInitQueues();
|
|
69
|
-
}
|
|
70
|
-
else
|
|
71
|
-
this.log("DISPATCHER: queue is over, nothing more to do");
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* @ignore
|
|
76
|
-
*/
|
|
77
|
-
log(text) {
|
|
78
|
-
if (this.logs)
|
|
79
|
-
console.log("@esfaenza/es-charts: " + text);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
ChartDispatcher.decorators = [
|
|
83
|
-
{ type: Injectable }
|
|
84
|
-
];
|
|
85
|
-
ChartDispatcher.ctorParameters = () => [
|
|
86
|
-
{ type: Boolean, decorators: [{ type: Inject, args: [ESC_LOGS,] }] }
|
|
87
|
-
];
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhcnREaXNwYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvbW9kZWxzL2NvcmUvY2xhc3Nlcy9DaGFydERpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFZeEI7O09BRUc7SUFDSCxZQUFzQyxJQUFhO1FBQWIsU0FBSSxHQUFKLElBQUksQ0FBUztRQWJuRDs7V0FFRztRQUNLLG9CQUFlLEdBQXNDLEVBQUUsQ0FBQztRQUVoRTs7V0FFRztRQUNLLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUtjLENBQUM7SUFFeEQ7Ozs7OztPQU1HO0lBQ0ksUUFBUSxDQUFDLElBQVksRUFBRSxxQkFBK0I7UUFDekQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxNQUFNLDRDQUE0QyxHQUFHLElBQUksR0FBRyxnRUFBZ0UsQ0FBQztRQUVqSSxJQUFJLENBQUMsR0FBRyxDQUFDLGdFQUFnRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxJQUFZO1FBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQ2Y7WUFDSSx1RkFBdUY7WUFDdkYsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsR0FBRyxJQUFJLEdBQUcsd0NBQXdDLENBQUMsQ0FBQztZQUMxRyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGVBQWU7UUFDbkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBEQUEwRCxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0RixTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUMxQjs7Z0JBRUcsSUFBSSxDQUFDLEdBQUcsQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssR0FBRyxDQUFDLElBQVk7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7O1lBcEZKLFVBQVU7OzswQ0FnQk0sTUFBTSxTQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEVTQ19MT0dTIH0gZnJvbSAnLi4vLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgY2hlIHNpIG9jY3VwYSBkZWwgZGlzcGF0Y2ggZGVsbGUgb3BlcmF6aW9uaSBkaSByZW5kZXJpbmcgZGVpIGdyYWZpY2kgdXRpbGl6emFuZG8gdW5hIGNvZGEgcGVyIHBlcm1ldHRlcmUgYWQgb2duaSBncmFmaWNvIGRpIGF2ZXJlIHRlbWkgZSBsb2NhbGl6emF6aW9uZSBjdXN0b21cclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIENoYXJ0RGlzcGF0Y2hlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RhIGRpIGluaXppYWxpenphemlvbmkgYW5jb3JhIGRhIGVzZWd1aXJlLiBRdWFuZG8gcXVlc3RhIMOoIHZ1b3RhIHNpZ25pZmljYSBjaGUgbmVzc3VubyBzdGEgY3JlYW5kbyBncmFmaWNpXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgSW5pdGlhbGl6YXRpb25zOiB7IG5hbWU6IHN0cmluZywgZnVuY3Rpb246IGFueSB9W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RhIGRlaSBncmFmaWNpIGluaXppYWxpenphdGkgZSBhdHRpdmkgaW4gdW4gZGF0byBtb21lbnRvICh2aWVuZSByZWdpc3RyYXRhIGxhIHByb3ByaWV0w6AgKipuYW1lKiopLiBOb24gw6ggcG9zc2liaWxlIHJlZ2lzdHJhcmUgZHVlIGdyYWZpY2kgY29uIGxvIHN0ZXNzbyBpZGVudGlmaWNhdGl2b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIEluaXRpYWxpemVkR3JhcGhzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEVTQ19MT0dTKSBwcml2YXRlIGxvZ3M6IGJvb2xlYW4pIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVnaXN0cmEgdW4gZ3JhZmljbyBkYSB2aXN1YWxpenphcmUgaW5zaWVtZSBhbGxhIHByb3ByaWEgZnVuemlvbmUgZGkgY3JlYXppb25lLiBRdWVzdCd1bHRpbWEgc2Fyw6AgZGlmZmVyaXRhIGZpbm8gYSBjaGUgdHV0dGkgaSBncmFmaWNpXHJcbiAgICAgKiBwcmVjZWRlbnRlbWVudGUgcmVnaXN0YXRpIG5vbiBoYW5ubyBmaW5pdG8gbGEgZmFzZSBkaSBpbml6aWFsaXp6YXppb25lXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIElkZW50aWZpY2F0aXZvIGRlbCBncmFmaWNvIGRhIHJlZ2lzdHJhcmVcclxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGNoYXJ0Q3JlYXRpb25GdW5jdGlvbiBGdW56aW9uZSBjaGUgZmlzaWNhbWVudGUgZG92csOgIG9jY3VwYXJzaSBkZWxsYSBjcmVhemlvbmUgZGVsIGdyYWZpY29cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZ2lzdGVyKG5hbWU6IHN0cmluZywgY2hhcnRDcmVhdGlvbkZ1bmN0aW9uOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0aGlzLkluaXRpYWxpemVkR3JhcGhzLmluZGV4T2YobmFtZSkgIT0gLTEpXHJcbiAgICAgICAgICAgIHRocm93IFwiQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIGR1cGxpY2F0ZSBjaGFydCAnXCIgKyBuYW1lICsgXCInLiBNYWtlIHN1cmUgdGhlICduYW1lJyBwcm9wZXJ0aWVzIG9mIHlvdXIgY2hhcnRzIGFyZSB1bml2b3F1ZVwiO1xyXG5cclxuICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IFJlZ2lzdGVyaW5nIGNoYXJ0IGNyZWF0aW9uIGZ1bmN0aW9uIGV4ZWN1dGlvbiBmb3IgXCIgKyBuYW1lKTtcclxuICAgICAgICB0aGlzLkluaXRpYWxpemF0aW9ucy5wdXNoKHsgbmFtZTogbmFtZSwgZnVuY3Rpb246IGNoYXJ0Q3JlYXRpb25GdW5jdGlvbiB9KTtcclxuICAgICAgICBpZiAodGhpcy5Jbml0aWFsaXphdGlvbnMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBJbml0aWFsIGRyYWluIHN0YXJ0ZWRcIik7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhaW5Jbml0UXVldWVzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVyZWdpc3RyYSB1biBncmFmaWNvIHByZXNlbnRlLiBDaGlhbWF0YSBnZW5lcmFsbWVudGUgYWwgZGlzcG9zZSBkZWwgZ3JhZmljbyBpbiBxdWVzdGlvbmUgcXVhbmRvIG5vbiBkZXYnZXNzZXJlIHBpw7kgbW9zdHJhdG8gbmVsbGEgcGFnaW5hIGNvcnJlbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIElkZW50aWZpY2F0aXZvIGRlbCBncmFmaWNvIGRhIGRlcmVnaXN0cmFyZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVyZWdpc3RlckdyYXBoKG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMuaW5kZXhPZihuYW1lKTtcclxuICAgICAgICBpZiAoaW5kZXggPT0gLTEpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICAvL1F1ZXN0byBzdWNjZWRlIHF1YW5kbyBzaSBjZXJjYSBkaSBkaXN0cnVnZ2VyZSBpbCBncmFmaWNvIG1lbnRyZSBzdGEgdmVuZW5kbyBncmFmaWNhdG9cclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBSZWdpc3RyYXRpb24gbWlzc2luZyBmb3IgY2hhcnQgXCIgKyBuYW1lICsgXCIgaXQgd2FzIHByb2JhYmx5IGRlc3Ryb3llZCBkdXJpbmcgbG9hZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBDaGFydCBkZXJlZ2lzdGVyZWQgXCIgKyBuYW1lKTtcclxuICAgICAgICB0aGlzLkluaXRpYWxpemVkR3JhcGhzLnNwbGljZShpbmRleCwgMSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZXNlZ3VlIGluIG1hbmllcmEgc2VxdWVuemlhbGUgbGUgZnVuemlvbmkgZGkgaW5pemlhbGl6emF6aW9uZSBkZWkgZ3JhZmljaSBmaW5jaMOpIHByZXNlbnRpIFxyXG4gICAgICogaW4gbW9kbyBjaGUgbmVzc3VuIGdyYWZpY28gcG9zc2EgZXNzZXJlIGluaXppYWxpenphdG8gY29udGVtcG9yYW5lYW1lbnRlIGFkIHVuIGFsdHJvLlxyXG4gICAgICogXHJcbiAgICAgKiBRdWVzdG8gw6ggaWwgcHVudG8gY2hpYXZlIGNoZSBwZXJtZXR0ZSBkaSBhdmVyZSBwZXIgb2duaSBncmFmaWNvIHRlbWkgZSBsb2NhbGUgZGlmZmVyZW50aVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRyYWluSW5pdFF1ZXVlcygpIHtcclxuICAgICAgICBsZXQgdG9FeGVjdXRlID0gdGhpcy5Jbml0aWFsaXphdGlvbnNbMF07XHJcbiAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBFeGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIGNoYXJ0IFwiICsgdG9FeGVjdXRlLm5hbWUpO1xyXG5cclxuICAgICAgICB0b0V4ZWN1dGUuZnVuY3Rpb24oKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2coXCJESVNQQVRDSEVSOiBpbml0aWFsaXphdGlvbiBmb3IgY2hhcnQgXCIgKyB0b0V4ZWN1dGUubmFtZSArIFwiIGlzIGRvbmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMuSW5pdGlhbGl6ZWRHcmFwaHMucHVzaCh0b0V4ZWN1dGUubmFtZSk7XHJcbiAgICAgICAgICAgIHRoaXMuSW5pdGlhbGl6YXRpb25zLnNwbGljZSgwLCAxKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuSW5pdGlhbGl6YXRpb25zLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZyhcIkRJU1BBVENIRVI6IEZvdW5kIHF1ZXVlZCBpbml0aWFsaXphdGlvbnMuIENvbnRpbnVpbmdcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRyYWluSW5pdFF1ZXVlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKFwiRElTUEFUQ0hFUjogcXVldWUgaXMgb3Zlciwgbm90aGluZyBtb3JlIHRvIGRvXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvZyh0ZXh0OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2dzKVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkBlc2ZhZW56YS9lcy1jaGFydHM6IFwiICsgdGV4dCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,135 +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
|
-
var _a, _b, _c, _d, _e, _f;
|
|
20
|
-
if (settings.Timeline) {
|
|
21
|
-
console.error("Timeline not supported for area chart");
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
let dataConverted = this.Adapter ? this.Adapter.adaptDataForAreaChart(data) : data;
|
|
25
|
-
let showTicks = settings.ShowTicks == null ? true : settings === null || settings === void 0 ? void 0 : settings.ShowTicks;
|
|
26
|
-
let interval = dataConverted.interval;
|
|
27
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
28
|
-
am4core.options.autoDispose = true;
|
|
29
|
-
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
30
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
31
|
-
if (settings.Legend) {
|
|
32
|
-
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
33
|
-
ChartInstanceCasted.legend.position = (_a = settings === null || settings === void 0 ? void 0 : settings.LegendPosition) !== null && _a !== void 0 ? _a : 'right';
|
|
34
|
-
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
35
|
-
if (settings.LegendPadding) {
|
|
36
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
37
|
-
template.paddingTop = (_b = settings.LegendPadding.top) !== null && _b !== void 0 ? _b : 0;
|
|
38
|
-
template.paddingBottom = (_c = settings.LegendPadding.bottom) !== null && _c !== void 0 ? _c : 0;
|
|
39
|
-
template.paddingLeft = (_d = settings.LegendPadding.left) !== null && _d !== void 0 ? _d : 0;
|
|
40
|
-
template.paddingRight = (_e = settings.LegendPadding.right) !== null && _e !== void 0 ? _e : 0;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
44
|
-
yAxis.tooltip.disabled = true;
|
|
45
|
-
if (settings.YAxisTitle) {
|
|
46
|
-
yAxis.title.text = settings.YAxisTitle;
|
|
47
|
-
yAxis.title.fontWeight = "bold";
|
|
48
|
-
}
|
|
49
|
-
yAxis.min = 0;
|
|
50
|
-
let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
|
|
51
|
-
dateAxis.renderer.minGridDistance = (_f = settings === null || settings === void 0 ? void 0 : settings.MinGridDistance) !== null && _f !== void 0 ? _f : 50;
|
|
52
|
-
dateAxis.startLocation = 0.5;
|
|
53
|
-
dateAxis.endLocation = 0.5;
|
|
54
|
-
if (settings.XAxisTitle) {
|
|
55
|
-
dateAxis.title.text = settings.XAxisTitle;
|
|
56
|
-
dateAxis.title.fontWeight = "bold";
|
|
57
|
-
}
|
|
58
|
-
if (showTicks) {
|
|
59
|
-
dateAxis.renderer.ticks.template.disabled = false;
|
|
60
|
-
dateAxis.renderer.ticks.template.strokeOpacity = 1;
|
|
61
|
-
dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
|
|
62
|
-
dateAxis.renderer.ticks.template.strokeWidth = 2;
|
|
63
|
-
dateAxis.renderer.ticks.template.length = 10;
|
|
64
|
-
dateAxis.renderer.ticks.template.location = 0;
|
|
65
|
-
}
|
|
66
|
-
if (!!interval)
|
|
67
|
-
dateAxis.baseInterval = { count: interval.count, timeUnit: interval.timeunit };
|
|
68
|
-
// Unisco il dataset e tiro fuori i dati
|
|
69
|
-
let chartData = [];
|
|
70
|
-
let seriesToMakeCache = {};
|
|
71
|
-
let seriesToMake = [];
|
|
72
|
-
for (let i = 0; i < dataConverted.groups.length; i++) {
|
|
73
|
-
let group = dataConverted.groups[i];
|
|
74
|
-
let dataItem = { date: group.name };
|
|
75
|
-
for (let ii = 0; ii < group.values.length; ii++) {
|
|
76
|
-
let val = group.values[ii];
|
|
77
|
-
dataItem[val.k] = val.v;
|
|
78
|
-
if (!seriesToMakeCache[val.k]) {
|
|
79
|
-
seriesToMakeCache[val.k] = true;
|
|
80
|
-
seriesToMake.push(val.k);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
chartData.push(dataItem);
|
|
84
|
-
}
|
|
85
|
-
ChartInstanceCasted.data = chartData;
|
|
86
|
-
//---------------------------------------------------------
|
|
87
|
-
seriesToMake.forEach(s => { this.createSeries(ChartInstanceCasted, s); });
|
|
88
|
-
ChartInstanceCasted.cursor = new am4charts.XYCursor();
|
|
89
|
-
ChartInstanceCasted.cursor.xAxis = dateAxis;
|
|
90
|
-
dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
|
|
91
|
-
dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
|
|
92
|
-
return this;
|
|
93
|
-
}
|
|
94
|
-
/** @ignore */
|
|
95
|
-
refreshData(data) {
|
|
96
|
-
//TODO:IMPL
|
|
97
|
-
}
|
|
98
|
-
/** @ignore */
|
|
99
|
-
emitSelectionChanged(ev, settings) {
|
|
100
|
-
if (settings.OnSelectionChangedCallback) {
|
|
101
|
-
this.throttla("selchange", () => {
|
|
102
|
-
var axis = ev.target;
|
|
103
|
-
var start = new Date(axis.minZoomed);
|
|
104
|
-
var end = new Date(axis.maxZoomed);
|
|
105
|
-
var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
|
|
106
|
-
settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
|
|
107
|
-
}, 150);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
/** @ignore */
|
|
111
|
-
createSeries(chart, name) {
|
|
112
|
-
let series = chart.series.push(new am4charts.LineSeries());
|
|
113
|
-
series.dataFields.dateX = "date";
|
|
114
|
-
series.name = name[0].toUpperCase() + name.slice(1);
|
|
115
|
-
series.dataFields.valueY = name;
|
|
116
|
-
series.tooltipText = "[#000]{valueY.value}[/]";
|
|
117
|
-
//series.tooltip.background.fill = am4core.color("#FFF");
|
|
118
|
-
series.tooltip.getStrokeFromObject = true;
|
|
119
|
-
series.tooltip.background.strokeWidth = 3;
|
|
120
|
-
series.tooltip.getFillFromObject = false;
|
|
121
|
-
series.fillOpacity = 0.6;
|
|
122
|
-
series.strokeWidth = 2;
|
|
123
|
-
series.stacked = true;
|
|
124
|
-
return series;
|
|
125
|
-
}
|
|
126
|
-
/** @ignore */
|
|
127
|
-
throttla(id, func, throttleTime) {
|
|
128
|
-
//Se ho la funzione che vuole eseguire ripulisco quel timeout
|
|
129
|
-
if (this.executionTimers[id])
|
|
130
|
-
clearTimeout(this.executionTimers[id]);
|
|
131
|
-
//Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
|
|
132
|
-
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJlYUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL2NsYXNzZXMvQXJlYUNoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFJeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBSzNCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBaUl2Qyx1R0FBdUc7UUFDdkcsK0RBQStEO1FBQy9ELGNBQWM7UUFDTixvQkFBZSxHQUE2QixFQUFFLENBQUM7SUFwSVosQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUF5QixFQUFFLFFBQTJCOztRQUN0RSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLGFBQWEsR0FBa0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2xHLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxTQUFTLENBQUM7UUFDeEUsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUV0Qyx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFD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LENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTUQsY0FBYztJQUNOLFFBQVEsQ0FBQyxFQUFVLEVBQUUsSUFBYyxFQUFFLFlBQW9CO1FBQy9ELDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFekMsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUcsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlL0lCYXNlU2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xyXG5pbXBvcnQgeyBBcmVhQ2hhcnREYXRhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RhdGEnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuaW1wb3J0IHsgQXJlYUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MvY2xhc3Nlcy9BcmVhQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBBcmVhQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBcmVhQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBBcmVhQ2hhcnRcclxuICAgKi9cclxuICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBBcmVhQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogQXJlYUNoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgYXJlYSBjaGFydFwiKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YUNvbnZlcnRlZDogQXJlYUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JBcmVhQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG4gICAgbGV0IHNob3dUaWNrcyA9IHNldHRpbmdzLlNob3dUaWNrcyA9PSBudWxsID8gdHJ1ZSA6IHNldHRpbmdzPy5TaG93VGlja3M7XHJcbiAgICBsZXQgaW50ZXJ2YWwgPSBkYXRhQ29udmVydGVkLmludGVydmFsO1xyXG5cclxuICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICBhbTRjb3JlLm9wdGlvbnMuYXV0b0Rpc3Bvc2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuXHJcbiAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgIHlBeGlzLnRvb2x0aXAuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgaWYgKHNldHRpbmdzLllBeGlzVGl0bGUpIHtcclxuICAgICAgeUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLllBeGlzVGl0bGVcclxuICAgICAgeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG4gICAgeUF4aXMubWluID0gMDtcclxuXHJcbiAgICBsZXQgZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuICAgIGRhdGVBeGlzLnJlbmRlcmVyLm1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzPy5NaW5HcmlkRGlzdGFuY2UgPz8gNTA7XHJcbiAgICBkYXRlQXhpcy5zdGFydExvY2F0aW9uID0gMC41O1xyXG4gICAgZGF0ZUF4aXMuZW5kTG9jYXRpb24gPSAwLjU7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLlhBeGlzVGl0bGUpIHtcclxuICAgICAgZGF0ZUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLlhBeGlzVGl0bGVcclxuICAgICAgZGF0ZUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzaG93VGlja3MpIHtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZSA9IGFtNGNvcmUuY29sb3IoXCIjNDk1QzQzXCIpO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxlbmd0aCA9IDEwO1xyXG4gICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEhaW50ZXJ2YWwpXHJcbiAgICAgIGRhdGVBeGlzLmJhc2VJbnRlcnZhbCA9IHsgY291bnQ6IGludGVydmFsLmNvdW50LCB0aW1lVW5pdDogaW50ZXJ2YWwudGltZXVuaXQgfTtcclxuXHJcbiAgICAvLyBVbmlzY28gaWwgZGF0YXNldCBlIHRpcm8gZnVvcmkgaSBkYXRpXHJcbiAgICBsZXQgY2hhcnREYXRhID0gW107XHJcbiAgICBsZXQgc2VyaWVzVG9NYWtlQ2FjaGU6IHsgW2luZGV4OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuICAgIGxldCBzZXJpZXNUb01ha2U6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFDb252ZXJ0ZWQuZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBncm91cCA9IGRhdGFDb252ZXJ0ZWQuZ3JvdXBzW2ldO1xyXG4gICAgICBsZXQgZGF0YUl0ZW0gPSB7IGRhdGU6IGdyb3VwLm5hbWUgfTtcclxuICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IGdyb3VwLnZhbHVlcy5sZW5ndGg7IGlpKyspIHtcclxuICAgICAgICBsZXQgdmFsID0gZ3JvdXAudmFsdWVzW2lpXTtcclxuICAgICAgICBkYXRhSXRlbVt2YWwua10gPSB2YWwudjtcclxuICAgICAgICBpZiAoIXNlcmllc1RvTWFrZUNhY2hlW3ZhbC5rXSkge1xyXG4gICAgICAgICAgc2VyaWVzVG9NYWtlQ2FjaGVbdmFsLmtdID0gdHJ1ZTtcclxuICAgICAgICAgIHNlcmllc1RvTWFrZS5wdXNoKHZhbC5rKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2hhcnREYXRhLnB1c2goZGF0YUl0ZW0pO1xyXG4gICAgfVxyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5kYXRhID0gY2hhcnREYXRhO1xyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBzZXJpZXNUb01ha2UuZm9yRWFjaChzID0+IHsgdGhpcy5jcmVhdGVTZXJpZXMoQ2hhcnRJbnN0YW5jZUNhc3RlZCwgcyk7IH0pO1xyXG5cclxuICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY3Vyc29yID0gbmV3IGFtNGNoYXJ0cy5YWUN1cnNvcigpO1xyXG4gICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jdXJzb3IueEF4aXMgPSBkYXRlQXhpcztcclxuXHJcbiAgICBkYXRlQXhpcy5ldmVudHMub24oXCJzdGFydGNoYW5nZWRcIiwgdCA9PiB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkKHQsIHNldHRpbmdzKSk7XHJcbiAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyByZWZyZXNoRGF0YShkYXRhOiBBcmVhQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAvL1RPRE86SU1QTFxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2VkKGV2LCBzZXR0aW5ncykge1xyXG4gICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICB2YXIgYXhpcyA9IDxhbTRjaGFydHMuRGF0ZUF4aXM+ZXYudGFyZ2V0XHJcbiAgICAgICAgdmFyIHN0YXJ0ID0gbmV3IERhdGUoYXhpcy5taW5ab29tZWQpO1xyXG4gICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWwgPSBheGlzLm1pbiA9PSBheGlzLm1pblpvb21lZCAmJiBheGlzLm1heCA9PSBheGlzLm1heFpvb21lZDtcclxuICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2soeyBmcm9tOiBzdGFydCwgdG86IGVuZCwgaW5pdGlhbDogaW5pdGlhbCB9KTtcclxuICAgICAgfSwgMTUwKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGNyZWF0ZVNlcmllcyhjaGFydDogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5MaW5lU2VyaWVzID0gY2hhcnQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCkpXHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5kYXRlWCA9IFwiZGF0ZVwiO1xyXG4gICAgc2VyaWVzLm5hbWUgPSBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gbmFtZTtcclxuICAgIHNlcmllcy50b29sdGlwVGV4dCA9IFwiWyMwMDBde3ZhbHVlWS52YWx1ZX1bL11cIjtcclxuICAgIC8vc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsID0gYW00Y29yZS5jb2xvcihcIiNGRkZcIik7XHJcbiAgICBzZXJpZXMudG9vbHRpcC5nZXRTdHJva2VGcm9tT2JqZWN0ID0gdHJ1ZTtcclxuICAgIHNlcmllcy50b29sdGlwLmJhY2tncm91bmQuc3Ryb2tlV2lkdGggPSAzO1xyXG4gICAgc2VyaWVzLnRvb2x0aXAuZ2V0RmlsbEZyb21PYmplY3QgPSBmYWxzZTtcclxuICAgIHNlcmllcy5maWxsT3BhY2l0eSA9IDAuNjtcclxuICAgIHNlcmllcy5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICBzZXJpZXMuc3RhY2tlZCA9IHRydWU7XHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gIC8vVE9ETzogc3Bvc3RhcmxhIGluIHVuIG1ldG9kbyBkaSB1dGlsaXTDoCAoZXNmYWVuemEvZXh0ZW5zaW9ucylcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgdGhyb3R0bGEoaWQ6IHN0cmluZywgZnVuYzogRnVuY3Rpb24sIHRocm90dGxlVGltZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvL1NlIGhvIGxhIGZ1bnppb25lIGNoZSB2dW9sZSBlc2VndWlyZSByaXB1bGlzY28gcXVlbCB0aW1lb3V0XHJcbiAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAvL1JpY3JlbyBpbCB0aW1lb3V0IHBlciBlc2VndWlyZSBxdWVsbGEgZnVuemlvbmUgZG9wbyB0aHJvdHRsZVRpbWUgbWlsbGlzZWNvbmRpXHJcbiAgICB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYygpOyB0aGlzLmV4ZWN1dGlvblRpbWVyc1tpZF0gPSBudWxsOyB9LCB0aHJvdHRsZVRpbWUpO1xyXG4gIH1cclxuICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
|