@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.
- package/{esm2020 → esm2022}/esfaenza-es-charts.mjs +4 -4
- package/{esm2020 → esm2022}/lib/adapters/BaseAdapter.mjs +50 -50
- package/{esm2020 → esm2022}/lib/adapters/IBaseAdapter.mjs +1 -1
- package/{esm2020 → esm2022}/lib/components/base/base-chart.component.mjs +350 -350
- package/{esm2020 → esm2022}/lib/components/chart-pager/chart-pager.component.mjs +89 -89
- package/{esm2020 → esm2022}/lib/components/specializations/es-area-chart.component.mjs +77 -77
- package/{esm2020 → esm2022}/lib/components/specializations/es-chart.component.mjs +122 -122
- package/{esm2020 → esm2022}/lib/components/specializations/es-line-chart.component.mjs +112 -112
- package/{esm2020 → esm2022}/lib/components/specializations/es-pie-chart.component.mjs +98 -98
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-2d-chart.component.mjs +95 -95
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/components/specializations/es-vertical-stacked-chart.component.mjs +92 -92
- package/{esm2020 → esm2022}/lib/es-charts.module.mjs +67 -67
- package/{esm2020 → esm2022}/lib/models/EsChaartsModuleConfig.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/core/ChartDispatcher.mjs +91 -91
- package/{esm2020 → esm2022}/lib/models/core/ChartLoader.mjs +212 -212
- package/{esm2020 → esm2022}/lib/models/core/ChartThemes.mjs +60 -60
- package/{esm2020 → esm2022}/lib/models/data/AreaChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/LineChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/PagedChartData.mjs +19 -19
- package/{esm2020 → esm2022}/lib/models/data/PieChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/Vertical2DChartData.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/VerticalChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/VerticalStackedChartData.mjs +13 -13
- package/{esm2020 → esm2022}/lib/models/data/base/DateValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValue.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/data/base/KeyValueColor.mjs +12 -12
- package/{esm2020 → esm2022}/lib/models/data/base/Limit.mjs +15 -15
- package/{esm2020 → esm2022}/lib/models/data/base/LineSerie.mjs +27 -27
- package/{esm2020 → esm2022}/lib/models/settings/AreaChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/LineChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/PieChartSettings.mjs +6 -6
- package/{esm2020 → esm2022}/lib/models/settings/Vertical2DChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/VerticalStackedChartSettings.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseInterval.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/BaseSettings.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/settings/base/LegendPad.mjs +5 -5
- package/esm2022/lib/services/AreaChartService.mjs +157 -0
- package/esm2022/lib/services/LineChartService.mjs +392 -0
- package/{esm2020 → esm2022}/lib/services/PieChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/Vertical2DChartService.mjs +162 -162
- package/{esm2020 → esm2022}/lib/services/VerticalChartService.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/VerticalStackedChartService.mjs +126 -126
- package/{esm2020 → esm2022}/lib/services/base/IBaseService.mjs +1 -1
- package/{esm2020 → esm2022}/lib/tokens.mjs +13 -13
- package/{esm2020 → esm2022}/public-api.mjs +38 -38
- package/{fesm2020 → fesm2022}/esfaenza-es-charts.mjs +2728 -2688
- package/fesm2022/esfaenza-es-charts.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/adapters/BaseAdapter.d.ts +40 -40
- package/lib/adapters/IBaseAdapter.d.ts +35 -35
- package/lib/components/base/base-chart.component.d.ts +304 -304
- package/lib/components/chart-pager/chart-pager.component.d.ts +70 -70
- package/lib/components/specializations/es-area-chart.component.d.ts +53 -53
- package/lib/components/specializations/es-chart.component.d.ts +71 -71
- package/lib/components/specializations/es-line-chart.component.d.ts +112 -112
- package/lib/components/specializations/es-pie-chart.component.d.ts +81 -81
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +79 -79
- package/lib/components/specializations/es-vertical-chart.component.d.ts +74 -74
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +74 -74
- package/lib/es-charts.module.d.ts +18 -18
- package/lib/models/EsChaartsModuleConfig.d.ts +24 -24
- package/lib/models/core/ChartDispatcher.d.ts +46 -46
- package/lib/models/core/ChartLoader.d.ts +92 -92
- package/lib/models/core/ChartThemes.d.ts +23 -23
- package/lib/models/data/AreaChartData.d.ts +22 -22
- package/lib/models/data/LineChartData.d.ts +16 -16
- package/lib/models/data/PagedChartData.d.ts +23 -23
- package/lib/models/data/PieChartData.d.ts +13 -13
- package/lib/models/data/Vertical2DChartData.d.ts +27 -27
- package/lib/models/data/VerticalChartData.d.ts +13 -13
- package/lib/models/data/VerticalStackedChartData.d.ts +21 -21
- package/lib/models/data/base/DateValue.d.ts +9 -9
- package/lib/models/data/base/KeyValue.d.ts +9 -9
- package/lib/models/data/base/KeyValueColor.d.ts +11 -11
- package/lib/models/data/base/Limit.d.ts +14 -14
- package/lib/models/data/base/LineSerie.d.ts +28 -28
- package/lib/models/settings/AreaChartSettings.d.ts +10 -10
- package/lib/models/settings/LineChartSettings.d.ts +67 -67
- package/lib/models/settings/PieChartSettings.d.ts +34 -34
- package/lib/models/settings/Vertical2DChartSettings.d.ts +36 -36
- package/lib/models/settings/VerticalChartSettings.d.ts +31 -31
- package/lib/models/settings/VerticalStackedChartSettings.d.ts +31 -31
- package/lib/models/settings/base/BaseInterval.d.ts +13 -13
- package/lib/models/settings/base/BaseSettings.d.ts +67 -67
- package/lib/models/settings/base/LegendPad.d.ts +21 -21
- package/lib/services/AreaChartService.d.ts +32 -31
- package/lib/services/LineChartService.d.ts +48 -47
- package/lib/services/PieChartService.d.ts +27 -27
- package/lib/services/Vertical2DChartService.d.ts +39 -39
- package/lib/services/VerticalChartService.d.ts +33 -33
- package/lib/services/VerticalStackedChartService.d.ts +35 -35
- package/lib/services/base/IBaseService.d.ts +38 -38
- package/lib/tokens.d.ts +13 -13
- package/package.json +11 -17
- package/public-api.d.ts +35 -35
- package/esm2020/lib/services/AreaChartService.mjs +0 -137
- package/esm2020/lib/services/LineChartService.mjs +0 -372
- package/fesm2015/esfaenza-es-charts.mjs +0 -2829
- package/fesm2015/esfaenza-es-charts.mjs.map +0 -1
- package/fesm2020/esfaenza-es-charts.mjs.map +0 -1
|
@@ -1,114 +1,114 @@
|
|
|
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 VerticalChart
|
|
5
|
-
*/
|
|
6
|
-
export class VerticalChartService {
|
|
7
|
-
/** @ignore */
|
|
8
|
-
constructor(Adapter) {
|
|
9
|
-
this.Adapter = Adapter;
|
|
10
|
-
/** @ignore */
|
|
11
|
-
this.dangerZone = 50;
|
|
12
|
-
/** @ignore */
|
|
13
|
-
this.LabelWidth = 150;
|
|
14
|
-
/** @ignore */
|
|
15
|
-
this.LabelRightWhenCompressed = 20;
|
|
16
|
-
/** @ignore */
|
|
17
|
-
this.LabelTopWhenCompressed = -5;
|
|
18
|
-
/** @ignore */
|
|
19
|
-
this.DefaultColumnWidthPercentage = 85;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalChart
|
|
23
|
-
*/
|
|
24
|
-
graphicate(data, settings) {
|
|
25
|
-
if (settings.Timeline) {
|
|
26
|
-
console.error("Timeline not supported for vertical chart");
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
30
|
-
am4core.options.autoDispose = true;
|
|
31
|
-
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
32
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
33
|
-
let dataConverted = this.Adapter ? this.Adapter.adaptDataForVerticalChart(data) : data;
|
|
34
|
-
ChartInstanceCasted.data = dataConverted.values;
|
|
35
|
-
let noStrokes = dataConverted.values.some(t => !!t.c);
|
|
36
|
-
if (settings.Legend) {
|
|
37
|
-
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
38
|
-
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
39
|
-
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
40
|
-
if (settings.LegendPadding) {
|
|
41
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
42
|
-
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
43
|
-
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
44
|
-
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
45
|
-
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
49
|
-
if (settings.YAxisTitle) {
|
|
50
|
-
yAxis.title.text = settings.YAxisTitle;
|
|
51
|
-
yAxis.title.fontWeight = "bold";
|
|
52
|
-
}
|
|
53
|
-
let categoryAxis = ChartInstanceCasted.xAxes.push(new am4charts.CategoryAxis());
|
|
54
|
-
if (settings.XAxisTitle) {
|
|
55
|
-
categoryAxis.title.text = settings.XAxisTitle;
|
|
56
|
-
categoryAxis.title.fontWeight = "bold";
|
|
57
|
-
}
|
|
58
|
-
categoryAxis.dataFields.category = "k";
|
|
59
|
-
categoryAxis.renderer.grid.template.location = 0;
|
|
60
|
-
categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
|
|
61
|
-
let label = categoryAxis.renderer.labels.template;
|
|
62
|
-
label.truncate = true;
|
|
63
|
-
label.maxWidth = settings.LabelWidth ?? this.LabelWidth;
|
|
64
|
-
label.tooltipText = "{category}";
|
|
65
|
-
if (settings?.AdaptLabelSizeAndOrientation == null ? true : settings?.AdaptLabelSizeAndOrientation) {
|
|
66
|
-
categoryAxis.events.on("sizechanged", (ev) => {
|
|
67
|
-
let axis = ev.target;
|
|
68
|
-
var cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex);
|
|
69
|
-
if (cellWidth < axis.renderer.labels.template.maxWidth) {
|
|
70
|
-
let areWeInDangerZone = cellWidth < (settings?.LabelVerticalOrientationCutoffWidth ?? this.dangerZone);
|
|
71
|
-
axis.renderer.labels.template.rotation = areWeInDangerZone ? -90 : -45;
|
|
72
|
-
axis.renderer.labels.template.dx = settings.LabelRightWhenCompressed ?? areWeInDangerZone ? 0 : this.LabelRightWhenCompressed;
|
|
73
|
-
axis.renderer.labels.template.dy = settings.LabelTopWhenCompressed ?? this.LabelTopWhenCompressed;
|
|
74
|
-
axis.renderer.labels.template.horizontalCenter = "right";
|
|
75
|
-
axis.renderer.labels.template.verticalCenter = "middle";
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
axis.renderer.labels.template.rotation = 0;
|
|
79
|
-
axis.renderer.labels.template.dx = 0;
|
|
80
|
-
axis.renderer.labels.template.dy = 0;
|
|
81
|
-
axis.renderer.labels.template.horizontalCenter = "middle";
|
|
82
|
-
axis.renderer.labels.template.verticalCenter = "top";
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
// Create series
|
|
87
|
-
let series = ChartInstanceCasted.series.push(new am4charts.ColumnSeries());
|
|
88
|
-
series.dataFields.valueY = "v";
|
|
89
|
-
series.dataFields.categoryX = "k";
|
|
90
|
-
series.name = "";
|
|
91
|
-
let columnTemplate = series.columns.template;
|
|
92
|
-
columnTemplate.tooltipText = "{categoryX}: [bold]{valueY}[/] {t}";
|
|
93
|
-
columnTemplate.fillOpacity = .8;
|
|
94
|
-
columnTemplate.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
|
|
95
|
-
if (noStrokes) {
|
|
96
|
-
columnTemplate.strokeOpacity = 0;
|
|
97
|
-
columnTemplate.strokeWidth = 0;
|
|
98
|
-
columnTemplate.adapter.add("fill", (_, target) => am4core.color(target.dataItem.dataContext.c));
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
columnTemplate.strokeWidth = 2;
|
|
102
|
-
columnTemplate.strokeOpacity = 1;
|
|
103
|
-
}
|
|
104
|
-
return this;
|
|
105
|
-
}
|
|
106
|
-
/** @ignore */
|
|
107
|
-
setSelection(from, to) {
|
|
108
|
-
}
|
|
109
|
-
/** @ignore */
|
|
110
|
-
refreshData(data) {
|
|
111
|
-
//TODO:IMPL
|
|
112
|
-
}
|
|
113
|
-
}
|
|
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 VerticalChart
|
|
5
|
+
*/
|
|
6
|
+
export class VerticalChartService {
|
|
7
|
+
/** @ignore */
|
|
8
|
+
constructor(Adapter) {
|
|
9
|
+
this.Adapter = Adapter;
|
|
10
|
+
/** @ignore */
|
|
11
|
+
this.dangerZone = 50;
|
|
12
|
+
/** @ignore */
|
|
13
|
+
this.LabelWidth = 150;
|
|
14
|
+
/** @ignore */
|
|
15
|
+
this.LabelRightWhenCompressed = 20;
|
|
16
|
+
/** @ignore */
|
|
17
|
+
this.LabelTopWhenCompressed = -5;
|
|
18
|
+
/** @ignore */
|
|
19
|
+
this.DefaultColumnWidthPercentage = 85;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalChart
|
|
23
|
+
*/
|
|
24
|
+
graphicate(data, settings) {
|
|
25
|
+
if (settings.Timeline) {
|
|
26
|
+
console.error("Timeline not supported for vertical chart");
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
30
|
+
am4core.options.autoDispose = true;
|
|
31
|
+
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
32
|
+
let ChartInstanceCasted = this.ChartInstance;
|
|
33
|
+
let dataConverted = this.Adapter ? this.Adapter.adaptDataForVerticalChart(data) : data;
|
|
34
|
+
ChartInstanceCasted.data = dataConverted.values;
|
|
35
|
+
let noStrokes = dataConverted.values.some(t => !!t.c);
|
|
36
|
+
if (settings.Legend) {
|
|
37
|
+
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
38
|
+
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
39
|
+
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
40
|
+
if (settings.LegendPadding) {
|
|
41
|
+
let template = this.ChartInstance.legend.itemContainers.template;
|
|
42
|
+
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
43
|
+
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
44
|
+
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
45
|
+
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
49
|
+
if (settings.YAxisTitle) {
|
|
50
|
+
yAxis.title.text = settings.YAxisTitle;
|
|
51
|
+
yAxis.title.fontWeight = "bold";
|
|
52
|
+
}
|
|
53
|
+
let categoryAxis = ChartInstanceCasted.xAxes.push(new am4charts.CategoryAxis());
|
|
54
|
+
if (settings.XAxisTitle) {
|
|
55
|
+
categoryAxis.title.text = settings.XAxisTitle;
|
|
56
|
+
categoryAxis.title.fontWeight = "bold";
|
|
57
|
+
}
|
|
58
|
+
categoryAxis.dataFields.category = "k";
|
|
59
|
+
categoryAxis.renderer.grid.template.location = 0;
|
|
60
|
+
categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
|
|
61
|
+
let label = categoryAxis.renderer.labels.template;
|
|
62
|
+
label.truncate = true;
|
|
63
|
+
label.maxWidth = settings.LabelWidth ?? this.LabelWidth;
|
|
64
|
+
label.tooltipText = "{category}";
|
|
65
|
+
if (settings?.AdaptLabelSizeAndOrientation == null ? true : settings?.AdaptLabelSizeAndOrientation) {
|
|
66
|
+
categoryAxis.events.on("sizechanged", (ev) => {
|
|
67
|
+
let axis = ev.target;
|
|
68
|
+
var cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex);
|
|
69
|
+
if (cellWidth < axis.renderer.labels.template.maxWidth) {
|
|
70
|
+
let areWeInDangerZone = cellWidth < (settings?.LabelVerticalOrientationCutoffWidth ?? this.dangerZone);
|
|
71
|
+
axis.renderer.labels.template.rotation = areWeInDangerZone ? -90 : -45;
|
|
72
|
+
axis.renderer.labels.template.dx = settings.LabelRightWhenCompressed ?? areWeInDangerZone ? 0 : this.LabelRightWhenCompressed;
|
|
73
|
+
axis.renderer.labels.template.dy = settings.LabelTopWhenCompressed ?? this.LabelTopWhenCompressed;
|
|
74
|
+
axis.renderer.labels.template.horizontalCenter = "right";
|
|
75
|
+
axis.renderer.labels.template.verticalCenter = "middle";
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
axis.renderer.labels.template.rotation = 0;
|
|
79
|
+
axis.renderer.labels.template.dx = 0;
|
|
80
|
+
axis.renderer.labels.template.dy = 0;
|
|
81
|
+
axis.renderer.labels.template.horizontalCenter = "middle";
|
|
82
|
+
axis.renderer.labels.template.verticalCenter = "top";
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// Create series
|
|
87
|
+
let series = ChartInstanceCasted.series.push(new am4charts.ColumnSeries());
|
|
88
|
+
series.dataFields.valueY = "v";
|
|
89
|
+
series.dataFields.categoryX = "k";
|
|
90
|
+
series.name = "";
|
|
91
|
+
let columnTemplate = series.columns.template;
|
|
92
|
+
columnTemplate.tooltipText = "{categoryX}: [bold]{valueY}[/] {t}";
|
|
93
|
+
columnTemplate.fillOpacity = .8;
|
|
94
|
+
columnTemplate.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
|
|
95
|
+
if (noStrokes) {
|
|
96
|
+
columnTemplate.strokeOpacity = 0;
|
|
97
|
+
columnTemplate.strokeWidth = 0;
|
|
98
|
+
columnTemplate.adapter.add("fill", (_, target) => am4core.color(target.dataItem.dataContext.c));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
columnTemplate.strokeWidth = 2;
|
|
102
|
+
columnTemplate.strokeOpacity = 1;
|
|
103
|
+
}
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
/** @ignore */
|
|
107
|
+
setSelection(from, to) {
|
|
108
|
+
}
|
|
109
|
+
/** @ignore */
|
|
110
|
+
refreshData(data) {
|
|
111
|
+
//TODO:IMPL
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
114
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWxDaGFydFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9zZXJ2aWNlcy9WZXJ0aWNhbENoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBYzdCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBWnZDLGNBQWM7UUFDTixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLGNBQWM7UUFDTixlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ2pDLGNBQWM7UUFDTiw2QkFBd0IsR0FBVyxFQUFFLENBQUM7UUFDOUMsY0FBYztRQUNOLDJCQUFzQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzVDLGNBQWM7UUFDTixpQ0FBNEIsR0FBVyxFQUFFLENBQUM7SUFHUCxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQTZCLEVBQUUsUUFBK0I7UUFFNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUMzRCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsdUVBQXVFO1FBQ3ZFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEUsSUFBSSxtQkFBbUIsR0FBc0IsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUVoRSxJQUFJLGFBQWEsR0FBc0IsSUFB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QUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBTSxPQUFPLENBQUMsS0FBSyxDQUFpQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pIO2FBQ0k7WUFDRCxjQUFjLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUMvQixjQUFjLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLElBQVUsRUFBRSxFQUFRO0lBRWpDLENBQUM7SUFFRCxjQUFjO0lBQ1AsV0FBVyxDQUFDLElBQTZCO1FBQzVDLFdBQVc7SUFDZixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IFZlcnRpY2FsQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvVmVydGljYWxDaGFydERhdGEnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZUNvbG9yIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvYmFzZS9LZXlWYWx1ZUNvbG9yJztcclxuaW1wb3J0IHsgVmVydGljYWxDaGFydFNldHRpbmdzIH0gZnJvbSAnLi4vbW9kZWxzL3NldHRpbmdzL1ZlcnRpY2FsQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBWZXJ0aWNhbENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWxDaGFydFNlcnZpY2UgaW1wbGVtZW50cyBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+e1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuWFlDaGFydDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIGRhbmdlclpvbmU6IG51bWJlciA9IDUwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgTGFiZWxXaWR0aDogbnVtYmVyID0gMTUwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAyMDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIExhYmVsVG9wV2hlbkNvbXByZXNzZWQ6IG51bWJlciA9IC01O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyID0gODU7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gVmVydGljYWxDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IFZlcnRpY2FsQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHZlcnRpY2FsIGNoYXJ0XCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICAgICAgYW00Y29yZS5vcHRpb25zLmF1dG9EaXNwb3NlID0gdHJ1ZTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UgPSBhbTRjb3JlLmNyZWF0ZShzZXR0aW5ncy5OYW1lLCBhbTRjaGFydHMuWFlDaGFydCk7XHJcbiAgICAgICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogVmVydGljYWxDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yVmVydGljYWxDaGFydChkYXRhKSA6IGRhdGE7XHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5kYXRhID0gZGF0YUNvbnZlcnRlZC52YWx1ZXM7XHJcblxyXG4gICAgICAgIGxldCBub1N0cm9rZXMgPSBkYXRhQ29udmVydGVkLnZhbHVlcy5zb21lKHQgPT4gISF0LmMpO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1RvcCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcudG9wID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nUmlnaHQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnJpZ2h0ID8/IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBjYXRlZ29yeUF4aXM6IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMoKSlcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWEF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICBjYXRlZ29yeUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLlhBeGlzVGl0bGVcclxuICAgICAgICAgICAgY2F0ZWdvcnlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhdGVnb3J5QXhpcy5kYXRhRmllbGRzLmNhdGVnb3J5ID0gXCJrXCI7XHJcbiAgICAgICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmdyaWQudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDMwO1xyXG5cclxuICAgICAgICBsZXQgbGFiZWwgPSBjYXRlZ29yeUF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlO1xyXG4gICAgICAgIGxhYmVsLnRydW5jYXRlID0gdHJ1ZTtcclxuICAgICAgICBsYWJlbC5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsV2lkdGggPz8gdGhpcy5MYWJlbFdpZHRoO1xyXG4gICAgICAgIGxhYmVsLnRvb2x0aXBUZXh0ID0gXCJ7Y2F0ZWdvcnl9XCI7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncz8uQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiA9PSBudWxsID8gdHJ1ZSA6IHNldHRpbmdzPy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5QXhpcy5ldmVudHMub24oXCJzaXplY2hhbmdlZFwiLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBheGlzID0gZXYudGFyZ2V0O1xyXG4gICAgICAgICAgICAgICAgdmFyIGNlbGxXaWR0aCA9IGF4aXMucGl4ZWxXaWR0aCAvIChheGlzLmVuZEluZGV4IC0gYXhpcy5zdGFydEluZGV4KTtcclxuICAgICAgICAgICAgICAgIGlmIChjZWxsV2lkdGggPCBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5tYXhXaWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBhcmVXZUluRGFuZ2VyWm9uZSA9IGNlbGxXaWR0aCA8IChzZXR0aW5ncz8uTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGggPz8gdGhpcy5kYW5nZXJab25lKTtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IGFyZVdlSW5EYW5nZXJab25lID8gLTkwIDogLTQ1O1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR4ID0gc2V0dGluZ3MuTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkID8/IGFyZVdlSW5EYW5nZXJab25lID8gMCA6IHRoaXMuTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gc2V0dGluZ3MuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCA/PyB0aGlzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuaG9yaXpvbnRhbENlbnRlciA9IFwicmlnaHRcIjtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS52ZXJ0aWNhbENlbnRlciA9IFwibWlkZGxlXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5yb3RhdGlvbiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS52ZXJ0aWNhbENlbnRlciA9IFwidG9wXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHNlcmllc1xyXG4gICAgICAgIGxldCBzZXJpZXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5wdXNoKG5ldyBhbTRjaGFydHMuQ29sdW1uU2VyaWVzKCkpO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IFwidlwiO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmNhdGVnb3J5WCA9IFwia1wiO1xyXG4gICAgICAgIHNlcmllcy5uYW1lID0gXCJcIjtcclxuXHJcbiAgICAgICAgbGV0IGNvbHVtblRlbXBsYXRlID0gc2VyaWVzLmNvbHVtbnMudGVtcGxhdGU7XHJcbiAgICAgICAgY29sdW1uVGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeVh9OiBbYm9sZF17dmFsdWVZfVsvXSB7dH1cIjtcclxuICAgICAgICBjb2x1bW5UZW1wbGF0ZS5maWxsT3BhY2l0eSA9IC44O1xyXG4gICAgICAgIGNvbHVtblRlbXBsYXRlLndpZHRoID0gYW00Y29yZS5wZXJjZW50KHNldHRpbmdzLkNvbHVtbldpZHRoUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2UpO1xyXG4gICAgICAgIGlmIChub1N0cm9rZXMpIHtcclxuICAgICAgICAgICAgY29sdW1uVGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlLnN0cm9rZVdpZHRoID0gMDtcclxuICAgICAgICAgICAgY29sdW1uVGVtcGxhdGUuYWRhcHRlci5hZGQoXCJmaWxsXCIsIChfLCB0YXJnZXQpID0+IDxhbnk+YW00Y29yZS5jb2xvcigoPEtleVZhbHVlQ29sb3I+dGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KS5jKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZS5zdHJva2VXaWR0aCA9IDI7XHJcbiAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyByZWZyZXNoRGF0YShkYXRhOiBWZXJ0aWNhbENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIC8vVE9ETzpJTVBMXHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,127 +1,127 @@
|
|
|
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 VerticalStackedChart
|
|
5
|
-
*/
|
|
6
|
-
export class VerticalStackedChartService {
|
|
7
|
-
/** @ignore */
|
|
8
|
-
constructor(Adapter) {
|
|
9
|
-
this.Adapter = Adapter;
|
|
10
|
-
/** @ignore */
|
|
11
|
-
this.dangerZone = 50;
|
|
12
|
-
/** @ignore */
|
|
13
|
-
this.LabelWidth = 150;
|
|
14
|
-
/** @ignore */
|
|
15
|
-
this.LabelRightWhenCompressed = 20;
|
|
16
|
-
/** @ignore */
|
|
17
|
-
this.LabelTopWhenCompressed = -5;
|
|
18
|
-
/** @ignore */
|
|
19
|
-
this.DefaultColumnWidthPercentage = 85;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalStackedChart
|
|
23
|
-
*/
|
|
24
|
-
graphicate(data, settings) {
|
|
25
|
-
if (settings.Timeline) {
|
|
26
|
-
console.error("Timeline not supported for vertical chart");
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
30
|
-
am4core.options.autoDispose = true;
|
|
31
|
-
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
32
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
33
|
-
// Create axes
|
|
34
|
-
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
35
|
-
if (settings.YAxisTitle) {
|
|
36
|
-
yAxis.title.text = settings.YAxisTitle;
|
|
37
|
-
yAxis.title.fontWeight = "bold";
|
|
38
|
-
}
|
|
39
|
-
let categoryAxis = ChartInstanceCasted.xAxes.push(new am4charts.CategoryAxis());
|
|
40
|
-
if (settings.XAxisTitle) {
|
|
41
|
-
categoryAxis.title.text = settings.XAxisTitle;
|
|
42
|
-
categoryAxis.title.fontWeight = "bold";
|
|
43
|
-
}
|
|
44
|
-
yAxis.min = 0;
|
|
45
|
-
categoryAxis.dataFields.category = "key";
|
|
46
|
-
categoryAxis.renderer.grid.template.location = 0;
|
|
47
|
-
categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
|
|
48
|
-
let label = categoryAxis.renderer.labels.template;
|
|
49
|
-
label.truncate = true;
|
|
50
|
-
label.maxWidth = settings.LabelWidth ?? this.LabelWidth;
|
|
51
|
-
label.tooltipText = "{category}";
|
|
52
|
-
if (settings?.AdaptLabelSizeAndOrientation == null ? true : settings?.AdaptLabelSizeAndOrientation) {
|
|
53
|
-
categoryAxis.events.on("sizechanged", (ev) => {
|
|
54
|
-
let axis = ev.target;
|
|
55
|
-
var cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex);
|
|
56
|
-
if (cellWidth < axis.renderer.labels.template.maxWidth) {
|
|
57
|
-
let areWeInDangerZone = cellWidth < (settings?.LabelVerticalOrientationCutoffWidth ?? this.dangerZone);
|
|
58
|
-
axis.renderer.labels.template.rotation = areWeInDangerZone ? -90 : -45;
|
|
59
|
-
axis.renderer.labels.template.dx = settings.LabelRightWhenCompressed ?? areWeInDangerZone ? 0 : this.LabelRightWhenCompressed;
|
|
60
|
-
axis.renderer.labels.template.dy = settings.LabelTopWhenCompressed ?? this.LabelTopWhenCompressed;
|
|
61
|
-
axis.renderer.labels.template.horizontalCenter = "right";
|
|
62
|
-
axis.renderer.labels.template.verticalCenter = "middle";
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
axis.renderer.labels.template.rotation = 0;
|
|
66
|
-
axis.renderer.labels.template.dx = 0;
|
|
67
|
-
axis.renderer.labels.template.dy = 0;
|
|
68
|
-
axis.renderer.labels.template.horizontalCenter = "middle";
|
|
69
|
-
axis.renderer.labels.template.verticalCenter = "top";
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
let dataPreConverted = this.Adapter ? this.Adapter.adaptDataForVerticalStackedChart(data) : data;
|
|
74
|
-
let dataConverted = [];
|
|
75
|
-
for (let i = 0; i < dataPreConverted.groups.length; i++) {
|
|
76
|
-
let item = dataPreConverted.groups[i];
|
|
77
|
-
let obj = { key: item.name };
|
|
78
|
-
for (let p = 0; p < item.values.length; p++) {
|
|
79
|
-
let value = item.values[p];
|
|
80
|
-
obj[value.k] = value.v;
|
|
81
|
-
}
|
|
82
|
-
dataConverted.push(obj);
|
|
83
|
-
}
|
|
84
|
-
ChartInstanceCasted.data = dataConverted;
|
|
85
|
-
//Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
|
|
86
|
-
for (let prop in dataConverted[0]) {
|
|
87
|
-
if (prop !== "key")
|
|
88
|
-
this.createSeriesStacked(ChartInstanceCasted, settings, prop, prop);
|
|
89
|
-
}
|
|
90
|
-
if (settings.Legend) {
|
|
91
|
-
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
92
|
-
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
93
|
-
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
94
|
-
if (settings.LegendPadding) {
|
|
95
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
96
|
-
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
97
|
-
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
98
|
-
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
99
|
-
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return this;
|
|
103
|
-
}
|
|
104
|
-
/** @ignore */
|
|
105
|
-
setSelection(from, to) {
|
|
106
|
-
}
|
|
107
|
-
/** @ignore */
|
|
108
|
-
refreshData(data) {
|
|
109
|
-
//TODO:IMPL
|
|
110
|
-
}
|
|
111
|
-
/** @ignore */
|
|
112
|
-
createSeriesStacked(chart, settings, field, name) {
|
|
113
|
-
// Set up series
|
|
114
|
-
let series = chart.series.push(new am4charts.ColumnSeries());
|
|
115
|
-
series.name = name;
|
|
116
|
-
series.dataFields.valueY = field;
|
|
117
|
-
series.dataFields.categoryX = "key";
|
|
118
|
-
series.sequencedInterpolation = true;
|
|
119
|
-
series.columns.template.tooltipText = "{name} {categoryX}: [bold]{valueY}[/]";
|
|
120
|
-
series.columns.template.fillOpacity = .8;
|
|
121
|
-
series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
|
|
122
|
-
// Make it stacked
|
|
123
|
-
series.stacked = true;
|
|
124
|
-
return series;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
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 VerticalStackedChart
|
|
5
|
+
*/
|
|
6
|
+
export class VerticalStackedChartService {
|
|
7
|
+
/** @ignore */
|
|
8
|
+
constructor(Adapter) {
|
|
9
|
+
this.Adapter = Adapter;
|
|
10
|
+
/** @ignore */
|
|
11
|
+
this.dangerZone = 50;
|
|
12
|
+
/** @ignore */
|
|
13
|
+
this.LabelWidth = 150;
|
|
14
|
+
/** @ignore */
|
|
15
|
+
this.LabelRightWhenCompressed = 20;
|
|
16
|
+
/** @ignore */
|
|
17
|
+
this.LabelTopWhenCompressed = -5;
|
|
18
|
+
/** @ignore */
|
|
19
|
+
this.DefaultColumnWidthPercentage = 85;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un VerticalStackedChart
|
|
23
|
+
*/
|
|
24
|
+
graphicate(data, settings) {
|
|
25
|
+
if (settings.Timeline) {
|
|
26
|
+
console.error("Timeline not supported for vertical chart");
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
30
|
+
am4core.options.autoDispose = true;
|
|
31
|
+
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
32
|
+
let ChartInstanceCasted = this.ChartInstance;
|
|
33
|
+
// Create axes
|
|
34
|
+
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
35
|
+
if (settings.YAxisTitle) {
|
|
36
|
+
yAxis.title.text = settings.YAxisTitle;
|
|
37
|
+
yAxis.title.fontWeight = "bold";
|
|
38
|
+
}
|
|
39
|
+
let categoryAxis = ChartInstanceCasted.xAxes.push(new am4charts.CategoryAxis());
|
|
40
|
+
if (settings.XAxisTitle) {
|
|
41
|
+
categoryAxis.title.text = settings.XAxisTitle;
|
|
42
|
+
categoryAxis.title.fontWeight = "bold";
|
|
43
|
+
}
|
|
44
|
+
yAxis.min = 0;
|
|
45
|
+
categoryAxis.dataFields.category = "key";
|
|
46
|
+
categoryAxis.renderer.grid.template.location = 0;
|
|
47
|
+
categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
|
|
48
|
+
let label = categoryAxis.renderer.labels.template;
|
|
49
|
+
label.truncate = true;
|
|
50
|
+
label.maxWidth = settings.LabelWidth ?? this.LabelWidth;
|
|
51
|
+
label.tooltipText = "{category}";
|
|
52
|
+
if (settings?.AdaptLabelSizeAndOrientation == null ? true : settings?.AdaptLabelSizeAndOrientation) {
|
|
53
|
+
categoryAxis.events.on("sizechanged", (ev) => {
|
|
54
|
+
let axis = ev.target;
|
|
55
|
+
var cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex);
|
|
56
|
+
if (cellWidth < axis.renderer.labels.template.maxWidth) {
|
|
57
|
+
let areWeInDangerZone = cellWidth < (settings?.LabelVerticalOrientationCutoffWidth ?? this.dangerZone);
|
|
58
|
+
axis.renderer.labels.template.rotation = areWeInDangerZone ? -90 : -45;
|
|
59
|
+
axis.renderer.labels.template.dx = settings.LabelRightWhenCompressed ?? areWeInDangerZone ? 0 : this.LabelRightWhenCompressed;
|
|
60
|
+
axis.renderer.labels.template.dy = settings.LabelTopWhenCompressed ?? this.LabelTopWhenCompressed;
|
|
61
|
+
axis.renderer.labels.template.horizontalCenter = "right";
|
|
62
|
+
axis.renderer.labels.template.verticalCenter = "middle";
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
axis.renderer.labels.template.rotation = 0;
|
|
66
|
+
axis.renderer.labels.template.dx = 0;
|
|
67
|
+
axis.renderer.labels.template.dy = 0;
|
|
68
|
+
axis.renderer.labels.template.horizontalCenter = "middle";
|
|
69
|
+
axis.renderer.labels.template.verticalCenter = "top";
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
let dataPreConverted = this.Adapter ? this.Adapter.adaptDataForVerticalStackedChart(data) : data;
|
|
74
|
+
let dataConverted = [];
|
|
75
|
+
for (let i = 0; i < dataPreConverted.groups.length; i++) {
|
|
76
|
+
let item = dataPreConverted.groups[i];
|
|
77
|
+
let obj = { key: item.name };
|
|
78
|
+
for (let p = 0; p < item.values.length; p++) {
|
|
79
|
+
let value = item.values[p];
|
|
80
|
+
obj[value.k] = value.v;
|
|
81
|
+
}
|
|
82
|
+
dataConverted.push(obj);
|
|
83
|
+
}
|
|
84
|
+
ChartInstanceCasted.data = dataConverted;
|
|
85
|
+
//Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
|
|
86
|
+
for (let prop in dataConverted[0]) {
|
|
87
|
+
if (prop !== "key")
|
|
88
|
+
this.createSeriesStacked(ChartInstanceCasted, settings, prop, prop);
|
|
89
|
+
}
|
|
90
|
+
if (settings.Legend) {
|
|
91
|
+
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
92
|
+
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
93
|
+
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
94
|
+
if (settings.LegendPadding) {
|
|
95
|
+
let template = this.ChartInstance.legend.itemContainers.template;
|
|
96
|
+
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
97
|
+
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
98
|
+
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
99
|
+
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
/** @ignore */
|
|
105
|
+
setSelection(from, to) {
|
|
106
|
+
}
|
|
107
|
+
/** @ignore */
|
|
108
|
+
refreshData(data) {
|
|
109
|
+
//TODO:IMPL
|
|
110
|
+
}
|
|
111
|
+
/** @ignore */
|
|
112
|
+
createSeriesStacked(chart, settings, field, name) {
|
|
113
|
+
// Set up series
|
|
114
|
+
let series = chart.series.push(new am4charts.ColumnSeries());
|
|
115
|
+
series.name = name;
|
|
116
|
+
series.dataFields.valueY = field;
|
|
117
|
+
series.dataFields.categoryX = "key";
|
|
118
|
+
series.sequencedInterpolation = true;
|
|
119
|
+
series.columns.template.tooltipText = "{name} {categoryX}: [bold]{valueY}[/]";
|
|
120
|
+
series.columns.template.fillOpacity = .8;
|
|
121
|
+
series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
|
|
122
|
+
// Make it stacked
|
|
123
|
+
series.stacked = true;
|
|
124
|
+
return series;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
127
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTywyQkFBMkI7SUFjdEMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFadkMsY0FBYztRQUNOLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDaEMsY0FBYztRQUNOLGVBQVUsR0FBVyxHQUFHLENBQUM7UUFDakMsY0FBYztRQUNOLDZCQUF3QixHQUFXLEVBQUUsQ0FBQztRQUM5QyxjQUFjO1FBQ04sMkJBQXNCLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsY0FBYztRQUNOLGlDQUE0QixHQUFXLEVBQUUsQ0FBQztJQUdQLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBb0MsRUFBRSxRQUFzQztRQUU1RixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLG1CQUFtQixHQUFzQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWhFLGVBQWU7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Q0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2FBQzNEO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLElBQVUsRUFBRSxFQUFRO0lBRWpDLENBQUM7SUFFRCxjQUFjO0lBQ1AsV0FBVyxDQUFDLElBQW9DO1FBQ3JELFdBQVc7SUFDYixDQUFDO0lBRUQsY0FBYztJQUNOLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFzQyxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3BGLGdCQUFnQjtRQUNoQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNqQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDcEMsTUFBTSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztRQUNyQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsdUNBQXVDLENBQUM7UUFDOUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFckgsa0JBQWtCO1FBQ2xCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXRCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgVmVydGljYWxTdGFja2VkQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvVmVydGljYWxTdGFja2VkQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgVmVydGljYWxTdGFja2VkQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy9zZXR0aW5ncy9WZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIFZlcnRpY2FsU3RhY2tlZENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWxTdGFja2VkQ2hhcnRTZXJ2aWNlIGltcGxlbWVudHMgSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PntcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuWFlDaGFydDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgZGFuZ2VyWm9uZTogbnVtYmVyID0gNTA7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIExhYmVsV2lkdGg6IG51bWJlciA9IDE1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAyMDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDogbnVtYmVyID0gLTU7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRDb2x1bW5XaWR0aFBlcmNlbnRhZ2U6IG51bWJlciA9IDg1O1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBWZXJ0aWNhbFN0YWNrZWRDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IFZlcnRpY2FsU3RhY2tlZENoYXJ0RGF0YSB8IGFueSwgc2V0dGluZ3M6IFZlcnRpY2FsU3RhY2tlZENoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgIFxyXG4gICAgaWYgKHNldHRpbmdzLlRpbWVsaW5lKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaW1lbGluZSBub3Qgc3VwcG9ydGVkIGZvciB2ZXJ0aWNhbCBjaGFydFwiKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy9QZXIgZXZpdGFyZSBkaSBkaW1lbnRpY2FybWVsaSBlIGdlc3RpcmUgY29tdW5xdWUgYmVuZSBnbGkgbmdpZiBlY2MuLi5cclxuICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5DaGFydEluc3RhbmNlID0gYW00Y29yZS5jcmVhdGUoc2V0dGluZ3MuTmFtZSwgYW00Y2hhcnRzLlhZQ2hhcnQpO1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG5cclxuICAgIC8vIENyZWF0ZSBheGVzIFxyXG4gICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgaWYgKHNldHRpbmdzLllBeGlzVGl0bGUpIHtcclxuICAgICAgeUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLllBeGlzVGl0bGVcclxuICAgICAgeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG4gICAgbGV0IGNhdGVnb3J5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkNhdGVnb3J5QXhpcygpKTtcclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGNhdGVnb3J5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcblxyXG4gICAgY2F0ZWdvcnlBeGlzLmRhdGFGaWVsZHMuY2F0ZWdvcnkgPSBcImtleVwiO1xyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmdyaWQudGVtcGxhdGUubG9jYXRpb24gPSAwO1xyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLm1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzPy5NaW5HcmlkRGlzdGFuY2UgPz8gMzA7XHJcblxyXG4gICAgbGV0IGxhYmVsID0gY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZTtcclxuICAgIGxhYmVsLnRydW5jYXRlID0gdHJ1ZTtcclxuICAgIGxhYmVsLm1heFdpZHRoID0gc2V0dGluZ3MuTGFiZWxXaWR0aCA/PyB0aGlzLkxhYmVsV2lkdGg7XHJcbiAgICBsYWJlbC50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgIGlmIChzZXR0aW5ncz8uQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbiA9PSBudWxsID8gdHJ1ZSA6IHNldHRpbmdzPy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uKSB7XHJcbiAgICAgIGNhdGVnb3J5QXhpcy5ldmVudHMub24oXCJzaXplY2hhbmdlZFwiLCAoZXYpID0+IHtcclxuICAgICAgICBsZXQgYXhpcyA9IGV2LnRhcmdldDtcclxuICAgICAgICB2YXIgY2VsbFdpZHRoID0gYXhpcy5waXhlbFdpZHRoIC8gKGF4aXMuZW5kSW5kZXggLSBheGlzLnN0YXJ0SW5kZXgpO1xyXG4gICAgICAgIGlmIChjZWxsV2lkdGggPCBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5tYXhXaWR0aCkge1xyXG4gICAgICAgICAgbGV0IGFyZVdlSW5EYW5nZXJab25lID0gY2VsbFdpZHRoIDwgKHNldHRpbmdzPy5MYWJlbFZlcnRpY2FsT3JpZW50YXRpb25DdXRvZmZXaWR0aCA/PyB0aGlzLmRhbmdlclpvbmUpO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUucm90YXRpb24gPSBhcmVXZUluRGFuZ2VyWm9uZSA/IC05MCA6IC00NTtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR4ID0gc2V0dGluZ3MuTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkID8/IGFyZVdlSW5EYW5nZXJab25lID8gMCA6IHRoaXMuTGFiZWxSaWdodFdoZW5Db21wcmVzc2VkO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHkgPSBzZXR0aW5ncy5MYWJlbFRvcFdoZW5Db21wcmVzc2VkID8/IHRoaXMuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmhvcml6b250YWxDZW50ZXIgPSBcInJpZ2h0XCI7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS52ZXJ0aWNhbENlbnRlciA9IFwibWlkZGxlXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUucm90YXRpb24gPSAwO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHggPSAwO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHkgPSAwO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuaG9yaXpvbnRhbENlbnRlciA9IFwibWlkZGxlXCI7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS52ZXJ0aWNhbENlbnRlciA9IFwidG9wXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZGF0YVByZUNvbnZlcnRlZDogVmVydGljYWxTdGFja2VkQ2hhcnREYXRhID0gdGhpcy5BZGFwdGVyID8gdGhpcy5BZGFwdGVyLmFkYXB0RGF0YUZvclZlcnRpY2FsU3RhY2tlZENoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICBsZXQgZGF0YUNvbnZlcnRlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhUHJlQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGRhdGFQcmVDb252ZXJ0ZWQuZ3JvdXBzW2ldO1xyXG4gICAgICBsZXQgb2JqID0geyBrZXk6IGl0ZW0ubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBwID0gMDsgcCA8IGl0ZW0udmFsdWVzLmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gaXRlbS52YWx1ZXNbcF07XHJcbiAgICAgICAgb2JqW3ZhbHVlLmtdID0gdmFsdWUudjtcclxuICAgICAgfVxyXG4gICAgICBkYXRhQ29udmVydGVkLnB1c2gob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBkYXRhQ29udmVydGVkO1xyXG5cclxuICAgIC8vUHJlbmRvIGxhIHByaW1hIGNhdGVnb3JpYSBlIG1pIGJhc28gc3VsbGUgcHJvcHJpZXTDoCBwZXIgZGZlaW5pcmUgbGUgc2VyaWVcclxuICAgIGZvciAobGV0IHByb3AgaW4gZGF0YUNvbnZlcnRlZFswXSkge1xyXG4gICAgICBpZiAocHJvcCAhPT0gXCJrZXlcIilcclxuICAgICAgICB0aGlzLmNyZWF0ZVNlcmllc1N0YWNrZWQoQ2hhcnRJbnN0YW5jZUNhc3RlZCwgc2V0dGluZ3MsIHByb3AsIHByb3ApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZXR0aW5ncy5MZWdlbmQpIHtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdMZWZ0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5sZWZ0ID8/IDA7XHJcbiAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogVmVydGljYWxTdGFja2VkQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAvL1RPRE86SU1QTFxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGNyZWF0ZVNlcmllc1N0YWNrZWQoY2hhcnQsIHNldHRpbmdzOiBWZXJ0aWNhbFN0YWNrZWRDaGFydFNldHRpbmdzLCBmaWVsZCwgbmFtZSkge1xyXG4gICAgLy8gU2V0IHVwIHNlcmllc1xyXG4gICAgbGV0IHNlcmllcyA9IGNoYXJ0LnNlcmllcy5wdXNoKG5ldyBhbTRjaGFydHMuQ29sdW1uU2VyaWVzKCkpO1xyXG4gICAgc2VyaWVzLm5hbWUgPSBuYW1lO1xyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gZmllbGQ7XHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5jYXRlZ29yeVggPSBcImtleVwiO1xyXG4gICAgc2VyaWVzLnNlcXVlbmNlZEludGVycG9sYXRpb24gPSB0cnVlO1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntuYW1lfSB7Y2F0ZWdvcnlYfTogW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLmZpbGxPcGFjaXR5ID0gLjg7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS53aWR0aCA9IGFtNGNvcmUucGVyY2VudChzZXR0aW5ncy5Db2x1bW5XaWR0aFBlcmNlbnRhZ2UgPz8gdGhpcy5EZWZhdWx0Q29sdW1uV2lkdGhQZXJjZW50YWdlKTtcclxuXHJcbiAgICAvLyBNYWtlIGl0IHN0YWNrZWRcclxuICAgIHNlcmllcy5zdGFja2VkID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxufSJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUJhc2VTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvYmFzZS9JQmFzZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvQmFzZUFkYXB0ZXInO1xyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjY2lhIHJhcHByZXNlbnRhbnRlIHVuYSBTZXJ2aWNlIGRpIGdyYWZpY2FtZW50byBnZW5lcmljYVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQmFzZVNlcnZpY2U8VD4ge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRhdHRhdG9yZSBjaGUgc2kgb2NjdXBhIGRlbGxhIHRyYXNmb3JtYXppb25lIGZyYSB1bmEgdGlwb2xvZ2lhIGRpIGRhdGkgcXVhbHNpYXNpIGUgaSBEdG8gdXRpbGl6emF0aSBkYSBxdWVzdGEgbGlicmVyaWFcclxuICAgICAqL1xyXG4gICAgQWRhcHRlcjogQmFzZUFkYXB0ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJc3RhbnphIGRlbCBncmFmaWNvIHZlcmEgZSBwcm9wcmlhXHJcbiAgICAgKi9cclxuICAgIENoYXJ0SW5zdGFuY2U6IFQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhIGUgZGlzZWduYSBpbCBncmFmaWNvIGxhIHByaW1hIHZvbHRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5vbWUgZGVsIGdyYWZpY28gKENoaWF2ZSB1bml2b2NhKVxyXG4gICAgICogQHBhcmFtIHthbnl9IGRhdGEgRGF0aSBkZWwgZ3JhZmljbywgbyB0aXBvIHNwZWNpZmljbyBvIHRpcG9sZWdhY3kgY2hlIHNpIG9jY3VwZXLDoCBkaSBjb252ZXJ0aXJlIGwnKipBZGFwdGVyKipcclxuICAgICAqIEBwYXJhbSB7YW55fSBzZXR0aW5ncyBJbXBvc3RhemlvbmUgcGVyIGxhIGdlbmVyYXppb25lIGRlbCBncmFmaWNvXHJcbiAgICAgKiBAcmV0dXJucyB7SUJhc2VTZXJ2aWNlPFQ+fSBTZSBzdGVzc2EgbmVsbG8gc3RhdG8gc3VjY2Vzc2l2byBhbGxhIGdyYWZpY2F6aW9uZVxyXG4gICAgICovXHJcbiAgICBncmFwaGljYXRlKG5hbWU6IHN0cmluZywgZGF0YTogYW55LCBzZXR0aW5nczogYW55KTogSUJhc2VTZXJ2aWNlPFQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWdnaW9ybmEgbGEgc29yZ2VudGUgZGF0aSBkZWwgZ3JhZmljbyBzZW56YSByaWNyZWFybG8gZGEgMC4gRGEgdXNhcmUgYWwgcG9zdG8gZGVpIGRlc3Ryb3ktcmVidWlsZFxyXG4gICAgICogXHJcbiAgICAgKiBOT1RBIEJFTkU6IE1hbmNhbm8gbGUgaW1wbGVtZW50YXppb25pLCBldmVudHVhbG1lbnRlIHN2aWx1cHBhcmxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBkYXRhIE51b3ZpIGRhdGkgZGEgc29zdGl0dWlyZSBhIHF1ZWxsaSBwcmVjZWRlbnRpXHJcbiAgICAgKi9cclxuICAgIHJlZnJlc2hEYXRhKGRhdGE6IGFueSk6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxvIHpvb20gZGFsICoqZnJvbSoqIGFsICoqdG8qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0RhdGV9IGZyb20gSW5pemlvIGRlbGxvIHpvb21cclxuICAgICAqIEBwYXJhbSB7RGF0ZX0gdG8gRmluZSBkZWxsbyB6b29tXHJcbiAgICAgKi9cclxuICAgIHNldFNlbGVjdGlvbihmcm9tOiBEYXRlLCB0bzogRGF0ZSk6IHZvaWQ7XHJcbn0iXX0=
|
|
@@ -1,14 +1,14 @@
|
|
|
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 const ESC_ANIMATIONS = new InjectionToken('ESC_ANIMATIONS');
|
|
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 const ESC_THEME = new InjectionToken('ESC_THEME');
|
|
10
|
-
/**
|
|
11
|
-
* Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
|
|
12
|
-
*/
|
|
13
|
-
export const ESC_DEBUG_MODE = new InjectionToken('ESC_DEBUG_MODE');
|
|
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 const ESC_ANIMATIONS = new InjectionToken('ESC_ANIMATIONS');
|
|
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 const ESC_THEME = new InjectionToken('ESC_THEME');
|
|
10
|
+
/**
|
|
11
|
+
* Token che identifica l'utilizzo o meno del sistema di Log per l'intera libreria
|
|
12
|
+
*/
|
|
13
|
+
export const ESC_DEBUG_MODE = new InjectionToken('ESC_DEBUG_MODE');
|
|
14
14
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvdG9rZW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTRCLElBQUksY0FBYyxDQUFVLGdCQUFnQixDQUFDLENBQUM7QUFFckc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQTJCLElBQUksY0FBYyxDQUFTLFdBQVcsQ0FBQyxDQUFDO0FBRXpGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUEyQixJQUFJLGNBQWMsQ0FBUyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBjaGUgaWRlbnRpZmljYSBpbCBkZWZhdWx0IHBlciBsJ3V0aWxpenpvIG8gbWVubyBkZWxsZSBBbmltYXppb25pIHBlciB0dXR0aSBpIGdyYWZpY2ksIHB1w7IgZXNzZXJlIHNvdnJhc2NyaXR0byBkYWxsZSBpbXBvc3RhemlvbmkgbG9jYWxpIChTZXR0aW5ncyBlIElucHV0KVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IEVTQ19BTklNQVRJT05TOiBJbmplY3Rpb25Ub2tlbjxib29sZWFuPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPignRVNDX0FOSU1BVElPTlMnKTtcclxuXHJcbi8qKlxyXG4gKiBUb2tlbiBjaGUgaWRlbnRpZmljYSBpbCBUZW1hIGRpIGRlZmF1bHQgcGVyIHR1dHRpIGkgZ3JhZmljaSwgcHXDsiBlc3NlcmUgc292cmFzY3JpdHRvIGRhbGxlIGltcG9zdGF6aW9uaSBsb2NhbGkgKFNldHRpbmdzIGUgSW5wdXQpXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgRVNDX1RIRU1FOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+ID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0VTQ19USEVNRScpO1xyXG5cclxuLyoqXHJcbiAqIFRva2VuIGNoZSBpZGVudGlmaWNhIGwndXRpbGl6em8gbyBtZW5vIGRlbCBzaXN0ZW1hIGRpIExvZyBwZXIgbCdpbnRlcmEgbGlicmVyaWFcclxuICovXHJcbmV4cG9ydCBjb25zdCBFU0NfREVCVUdfTU9ERTogSW5qZWN0aW9uVG9rZW48c3RyaW5nPiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdFU0NfREVCVUdfTU9ERScpOyJdfQ==
|