@esfaenza/es-charts 18.2.2 → 19.2.1
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/fesm2022/esfaenza-es-charts.mjs +49 -49
- package/fesm2022/esfaenza-es-charts.mjs.map +1 -1
- package/lib/components/base/base-chart.component.d.ts +1 -1
- package/package.json +6 -8
- package/esm2022/esfaenza-es-charts.mjs +0 -5
- package/esm2022/lib/adapters/BaseAdapter.mjs +0 -50
- package/esm2022/lib/adapters/IBaseAdapter.mjs +0 -2
- package/esm2022/lib/components/base/base-chart.component.mjs +0 -350
- package/esm2022/lib/components/chart-pager/chart-pager.component.mjs +0 -89
- package/esm2022/lib/components/specializations/es-area-chart.component.mjs +0 -77
- package/esm2022/lib/components/specializations/es-chart.component.mjs +0 -122
- package/esm2022/lib/components/specializations/es-line-chart.component.mjs +0 -112
- package/esm2022/lib/components/specializations/es-pie-chart.component.mjs +0 -98
- package/esm2022/lib/components/specializations/es-vertical-2d-chart.component.mjs +0 -95
- package/esm2022/lib/components/specializations/es-vertical-chart.component.mjs +0 -92
- package/esm2022/lib/components/specializations/es-vertical-stacked-chart.component.mjs +0 -92
- package/esm2022/lib/es-charts.module.mjs +0 -67
- package/esm2022/lib/models/EsChaartsModuleConfig.mjs +0 -6
- package/esm2022/lib/models/core/ChartDispatcher.mjs +0 -91
- package/esm2022/lib/models/core/ChartLoader.mjs +0 -212
- package/esm2022/lib/models/core/ChartThemes.mjs +0 -61
- package/esm2022/lib/models/data/AreaChartData.mjs +0 -16
- package/esm2022/lib/models/data/LineChartData.mjs +0 -16
- package/esm2022/lib/models/data/PagedChartData.mjs +0 -20
- package/esm2022/lib/models/data/PieChartData.mjs +0 -14
- package/esm2022/lib/models/data/Vertical2DChartData.mjs +0 -16
- package/esm2022/lib/models/data/VerticalChartData.mjs +0 -14
- package/esm2022/lib/models/data/VerticalStackedChartData.mjs +0 -14
- package/esm2022/lib/models/data/base/DateValue.mjs +0 -11
- package/esm2022/lib/models/data/base/KeyValue.mjs +0 -11
- package/esm2022/lib/models/data/base/KeyValueColor.mjs +0 -13
- package/esm2022/lib/models/data/base/Limit.mjs +0 -16
- package/esm2022/lib/models/data/base/LineSerie.mjs +0 -28
- package/esm2022/lib/models/settings/AreaChartSettings.mjs +0 -11
- package/esm2022/lib/models/settings/LineChartSettings.mjs +0 -11
- package/esm2022/lib/models/settings/PieChartSettings.mjs +0 -7
- package/esm2022/lib/models/settings/Vertical2DChartSettings.mjs +0 -11
- package/esm2022/lib/models/settings/VerticalChartSettings.mjs +0 -11
- package/esm2022/lib/models/settings/VerticalStackedChartSettings.mjs +0 -11
- package/esm2022/lib/models/settings/base/BaseInterval.mjs +0 -6
- package/esm2022/lib/models/settings/base/BaseSettings.mjs +0 -6
- package/esm2022/lib/models/settings/base/LegendPad.mjs +0 -6
- package/esm2022/lib/services/AreaChartService.mjs +0 -157
- package/esm2022/lib/services/LineChartService.mjs +0 -392
- package/esm2022/lib/services/PieChartService.mjs +0 -114
- package/esm2022/lib/services/Vertical2DChartService.mjs +0 -163
- package/esm2022/lib/services/VerticalChartService.mjs +0 -114
- package/esm2022/lib/services/VerticalStackedChartService.mjs +0 -127
- package/esm2022/lib/services/base/IBaseService.mjs +0 -2
- package/esm2022/lib/tokens.mjs +0 -14
- package/esm2022/public-api.mjs +0 -39
|
@@ -1,114 +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 PieChart
|
|
5
|
-
*/
|
|
6
|
-
export class PieChartService {
|
|
7
|
-
/** @ignore */
|
|
8
|
-
constructor(Adapter) {
|
|
9
|
-
this.Adapter = Adapter;
|
|
10
|
-
/** @ignore */
|
|
11
|
-
this.ViewAbsoluteValues = true;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un PieChart
|
|
15
|
-
*/
|
|
16
|
-
graphicate(data, settings) {
|
|
17
|
-
if (settings.Timeline) {
|
|
18
|
-
console.error("Timeline not supported for pie chart");
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
22
|
-
am4core.options.autoDispose = true;
|
|
23
|
-
this.ChartInstance = am4core.create(settings.Name, settings.Mode3D ? am4charts.PieChart3D : am4charts.PieChart);
|
|
24
|
-
this.ChartInstance.innerRadius = ((settings.DonutRadiusPercentage || 15) / 100) * settings.ContainerHeight;
|
|
25
|
-
let series = this.ChartInstance.series.push(settings.Mode3D ? new am4charts.PieSeries3D() : new am4charts.PieSeries());
|
|
26
|
-
series.dataFields.value = "v";
|
|
27
|
-
series.dataFields.category = "k";
|
|
28
|
-
//Il default sono valori percentuali
|
|
29
|
-
if (this.ViewAbsoluteValues) {
|
|
30
|
-
series.legendSettings.valueText = "{value}";
|
|
31
|
-
series.labels.template.text = "{category}: [bold]{value}[/]";
|
|
32
|
-
}
|
|
33
|
-
series.slices.template.stroke = am4core.color("#fff");
|
|
34
|
-
series.slices.template.strokeOpacity = 1;
|
|
35
|
-
series.slices.template.togglable = false;
|
|
36
|
-
series.hiddenState.properties.opacity = 1;
|
|
37
|
-
series.hiddenState.properties.endAngle = -90;
|
|
38
|
-
series.hiddenState.properties.startAngle = -90;
|
|
39
|
-
if (settings.HideZeroes == null ? true : settings.HideZeroes) {
|
|
40
|
-
series.ticks.template.events.on("ready", this.hideZeroes);
|
|
41
|
-
series.ticks.template.events.on("visibilitychanged", this.hideZeroes);
|
|
42
|
-
series.labels.template.events.on("ready", this.hideZeroes);
|
|
43
|
-
series.labels.template.events.on("visibilitychanged", this.hideZeroes);
|
|
44
|
-
}
|
|
45
|
-
series.slices.template.events.on("hit", (ev) => {
|
|
46
|
-
if (settings.OnSeriesClickCallback) {
|
|
47
|
-
let clickedSeries = ev.target.dataItem.dataContext.k;
|
|
48
|
-
settings.OnSeriesClickCallback(clickedSeries);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
let dataConverted = this.Adapter ? this.Adapter.adaptDataForPieChart(data) : data;
|
|
52
|
-
let defaultIndex = 0;
|
|
53
|
-
for (let i = 0; i < dataConverted.values.length; i++) {
|
|
54
|
-
if (!dataConverted.values[i].c) {
|
|
55
|
-
dataConverted.values[i].c = this.ChartInstance.colors.list[defaultIndex % this.ChartInstance.colors.list.length];
|
|
56
|
-
defaultIndex++;
|
|
57
|
-
}
|
|
58
|
-
else
|
|
59
|
-
dataConverted.values[i].c = am4core.color(dataConverted.values[i].c);
|
|
60
|
-
}
|
|
61
|
-
series.slices.template.propertyFields.fill = "c";
|
|
62
|
-
this.ChartInstance.data = dataConverted.values;
|
|
63
|
-
if (!settings.LabelsVisible) {
|
|
64
|
-
series.labels.template.disabled = true;
|
|
65
|
-
series.ticks.template.disabled = true;
|
|
66
|
-
}
|
|
67
|
-
else if (settings.LabelsWrap || settings.LabelsTruncate) {
|
|
68
|
-
series.labels.template.maxWidth = settings.LabelsWidth || 100;
|
|
69
|
-
if (settings.LabelsWrap)
|
|
70
|
-
series.labels.template.wrap = true;
|
|
71
|
-
else if (settings.LabelsTruncate)
|
|
72
|
-
series.labels.template.truncate = true;
|
|
73
|
-
}
|
|
74
|
-
if (settings.Legend) {
|
|
75
|
-
let legend = new am4charts.Legend();
|
|
76
|
-
this.ChartInstance.legend = legend;
|
|
77
|
-
legend.position = settings?.LegendPosition || "bottom";
|
|
78
|
-
legend.itemContainers.template.togglable = settings.HideSeriesOnLabelClick === true;
|
|
79
|
-
legend.itemContainers.template.tooltipText = "{category}";
|
|
80
|
-
//Se la legenda non fa il toggle della serie la considero come se fosse un click sulla serie in se
|
|
81
|
-
if (!settings.HideSeriesOnLabelClick) {
|
|
82
|
-
legend.itemContainers.template.events.on("hit", (ev) => {
|
|
83
|
-
if (settings.OnSeriesClickCallback) {
|
|
84
|
-
let clickedSeries = ev.target.dataItem.dataContext.legendDataItem.name;
|
|
85
|
-
settings.OnSeriesClickCallback(clickedSeries);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (settings.LegendPadding) {
|
|
90
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
91
|
-
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
92
|
-
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
93
|
-
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
94
|
-
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
/** @ignore */
|
|
100
|
-
setSelection(from, to) {
|
|
101
|
-
}
|
|
102
|
-
/** @ignore */
|
|
103
|
-
refreshData(data) {
|
|
104
|
-
//TODO:IMPL
|
|
105
|
-
}
|
|
106
|
-
/** @ignore */
|
|
107
|
-
hideZeroes(ev) {
|
|
108
|
-
if (ev.target.dataItem && (ev.target.dataItem.values.value.percent == 0))
|
|
109
|
-
ev.target.hide();
|
|
110
|
-
else
|
|
111
|
-
ev.target.show();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGllQ2hhcnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvUGllQ2hhcnRTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxPQUFPLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFNBQVMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBTXhCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBSnZDLGNBQWM7UUFDTix1QkFBa0IsR0FBWSxJQUFJLENBQUM7SUFHQSxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXdCLEVBQUUsUUFBMEI7UUFDbEUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFTLFFBQVMsQ0FBQyxlQUFlLENBQUM7UUFFbEgsSUFBSSxNQUFNLEdBQWdELElBQUksQ0FBQyxhQUFhLENBQUMsTUFB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QVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztnQkFDNUQsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7Z0JBQ3hELFFBQVEsQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1lBQzlELENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsSUFBVSxFQUFFLEVBQVE7SUFFakMsQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBd0I7UUFDdkMsV0FBVztJQUNmLENBQUM7SUFFRCxjQUFjO0lBQ04sVUFBVSxDQUFDLEVBQUU7UUFDakIsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztZQUNwRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDOztZQUVqQixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgUGllQ2hhcnREYXRhIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGEvUGllQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgS2V5VmFsdWVDb2xvciB9IGZyb20gJy4uL21vZGVscy9kYXRhL2Jhc2UvS2V5VmFsdWVDb2xvcic7XHJcbmltcG9ydCB7IFBpZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvUGllQ2hhcnRTZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBQaWVDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBpZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+e1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuUGllQ2hhcnQzRCB8IGFtNGNoYXJ0cy5QaWVDaGFydDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIFZpZXdBYnNvbHV0ZVZhbHVlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gUGllQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogUGllQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogUGllQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+IHtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHBpZSBjaGFydFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIHNldHRpbmdzLk1vZGUzRCA/IGFtNGNoYXJ0cy5QaWVDaGFydDNEIDogYW00Y2hhcnRzLlBpZUNoYXJ0KTtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuaW5uZXJSYWRpdXMgPSAoKHNldHRpbmdzLkRvbnV0UmFkaXVzUGVyY2VudGFnZSB8fCAxNSkgLyAxMDApICogKDxhbnk+c2V0dGluZ3MpLkNvbnRhaW5lckhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllczogYW00Y2hhcnRzLlBpZVNlcmllczNEIHwgYW00Y2hhcnRzLlBpZVNlcmllcyA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMucHVzaChzZXR0aW5ncy5Nb2RlM0QgPyBuZXcgYW00Y2hhcnRzLlBpZVNlcmllczNEKCkgOiBuZXcgYW00Y2hhcnRzLlBpZVNlcmllcygpKTtcclxuICAgICAgICBzZXJpZXMuZGF0YUZpZWxkcy52YWx1ZSA9IFwidlwiO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmNhdGVnb3J5ID0gXCJrXCI7XHJcbiAgICAgICAgLy9JbCBkZWZhdWx0IHNvbm8gdmFsb3JpIHBlcmNlbnR1YWxpXHJcbiAgICAgICAgaWYgKHRoaXMuVmlld0Fic29sdXRlVmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5sZWdlbmRTZXR0aW5ncy52YWx1ZVRleHQgPSBcInt2YWx1ZX1cIjtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS50ZXh0ID0gXCJ7Y2F0ZWdvcnl9OiBbYm9sZF17dmFsdWV9Wy9dXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzLnNsaWNlcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiI2ZmZlwiKTtcclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUudG9nZ2xhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuZW5kQW5nbGUgPSAtOTA7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuc3RhcnRBbmdsZSA9IC05MDtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkhpZGVaZXJvZXMgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncy5IaWRlWmVyb2VzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMudGlja3MudGVtcGxhdGUuZXZlbnRzLm9uKFwidmlzaWJpbGl0eWNoYW5nZWRcIiwgdGhpcy5oaWRlWmVyb2VzKTtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLmV2ZW50cy5vbihcInZpc2liaWxpdHljaGFuZ2VkXCIsIHRoaXMuaGlkZVplcm9lcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLmV2ZW50cy5vbihcImhpdFwiLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxLZXlWYWx1ZUNvbG9yPmV2LnRhcmdldC5kYXRhSXRlbS5kYXRhQ29udGV4dCkuaztcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2soY2xpY2tlZFNlcmllcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IFBpZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JQaWVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUNvbnZlcnRlZC52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT50aGlzLkNoYXJ0SW5zdGFuY2UuY29sb3JzLmxpc3RbZGVmYXVsdEluZGV4ICUgdGhpcy5DaGFydEluc3RhbmNlLmNvbG9ycy5saXN0Lmxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT5hbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnByb3BlcnR5RmllbGRzLmZpbGwgPSBcImNcIjtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IGRhdGFDb252ZXJ0ZWQudmFsdWVzO1xyXG5cclxuICAgICAgICBpZiAoIXNldHRpbmdzLkxhYmVsc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXAgfHwgc2V0dGluZ3MuTGFiZWxzVHJ1bmNhdGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsc1dpZHRoIHx8IDEwMDtcclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXApXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLndyYXAgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5MYWJlbHNUcnVuY2F0ZSlcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sYWJlbHMudGVtcGxhdGUudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICBsZXQgbGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZCA9IGxlZ2VuZFxyXG4gICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gfHwgXCJib3R0b21cIjtcclxuICAgICAgICAgICAgbGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvZ2dsYWJsZSA9IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgPT09IHRydWU7XHJcbiAgICAgICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBsZWdlbmRhIG5vbiBmYSBpbCB0b2dnbGUgZGVsbGEgc2VyaWUgbGEgY29uc2lkZXJvIGNvbWUgc2UgZm9zc2UgdW4gY2xpY2sgc3VsbGEgc2VyaWUgaW4gc2VcclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5IaWRlU2VyaWVzT25MYWJlbENsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwiaGl0XCIsIChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxhbnk+ZXYudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KS5sZWdlbmREYXRhSXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKGNsaWNrZWRTZXJpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFBpZUNoYXJ0RGF0YSB8IGFueSl7XHJcbiAgICAgICAgLy9UT0RPOklNUExcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBoaWRlWmVyb2VzKGV2KSB7XHJcbiAgICAgICAgaWYgKGV2LnRhcmdldC5kYXRhSXRlbSAmJiAoZXYudGFyZ2V0LmRhdGFJdGVtLnZhbHVlcy52YWx1ZS5wZXJjZW50ID09IDApKVxyXG4gICAgICAgICAgICBldi50YXJnZXQuaGlkZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZXYudGFyZ2V0LnNob3coKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,163 +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 Vertical2DChart
|
|
5
|
-
*/
|
|
6
|
-
export class Vertical2DChartService {
|
|
7
|
-
/** @ignore */
|
|
8
|
-
constructor(Adapter) {
|
|
9
|
-
this.Adapter = Adapter;
|
|
10
|
-
/** @ignore */
|
|
11
|
-
this.DefaultGroupPaddingPercentage = 5;
|
|
12
|
-
/** @ignore */
|
|
13
|
-
this.dangerZone = 50;
|
|
14
|
-
/** @ignore */
|
|
15
|
-
this.LabelWidth = 150;
|
|
16
|
-
/** @ignore */
|
|
17
|
-
this.LabelRightWhenCompressed = 20;
|
|
18
|
-
/** @ignore */
|
|
19
|
-
this.LabelTopWhenCompressed = -5;
|
|
20
|
-
/** @ignore */
|
|
21
|
-
this.DefaultColumnWidthPercentage = 85;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un Vertical2DChart
|
|
25
|
-
*/
|
|
26
|
-
graphicate(data, settings) {
|
|
27
|
-
if (settings.Timeline) {
|
|
28
|
-
console.error("Timeline not supported for vertical chart");
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
32
|
-
am4core.options.autoDispose = true;
|
|
33
|
-
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
34
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
35
|
-
if (settings.Legend) {
|
|
36
|
-
ChartInstanceCasted.legend = new am4charts.Legend();
|
|
37
|
-
ChartInstanceCasted.legend.position = settings?.LegendPosition ?? 'right';
|
|
38
|
-
ChartInstanceCasted.legend.itemContainers.template.tooltipText = "{category}";
|
|
39
|
-
if (settings.LegendPadding) {
|
|
40
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
41
|
-
template.paddingTop = settings.LegendPadding.top ?? 0;
|
|
42
|
-
template.paddingBottom = settings.LegendPadding.bottom ?? 0;
|
|
43
|
-
template.paddingLeft = settings.LegendPadding.left ?? 0;
|
|
44
|
-
template.paddingRight = settings.LegendPadding.right ?? 0;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
48
|
-
if (settings.YAxisTitle) {
|
|
49
|
-
yAxis.title.text = settings.YAxisTitle;
|
|
50
|
-
yAxis.title.fontWeight = "bold";
|
|
51
|
-
}
|
|
52
|
-
let categoryAxis = ChartInstanceCasted.xAxes.push(new am4charts.CategoryAxis());
|
|
53
|
-
if (settings.XAxisTitle) {
|
|
54
|
-
categoryAxis.title.text = settings.XAxisTitle;
|
|
55
|
-
categoryAxis.title.fontWeight = "bold";
|
|
56
|
-
}
|
|
57
|
-
yAxis.min = 0;
|
|
58
|
-
categoryAxis.dataFields.category = 'key';
|
|
59
|
-
categoryAxis.renderer.cellStartLocation = am4core.percent(settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage).value;
|
|
60
|
-
categoryAxis.renderer.cellEndLocation = am4core.percent(100 - (settings.GroupPaddingPercentage ?? this.DefaultGroupPaddingPercentage)).value;
|
|
61
|
-
categoryAxis.renderer.grid.template.location = 0;
|
|
62
|
-
categoryAxis.renderer.minGridDistance = settings?.MinGridDistance ?? 30;
|
|
63
|
-
let label = categoryAxis.renderer.labels.template;
|
|
64
|
-
label.truncate = true;
|
|
65
|
-
label.maxWidth = settings.LabelWidth ?? this.LabelWidth;
|
|
66
|
-
label.tooltipText = "{category}";
|
|
67
|
-
if (settings?.AdaptLabelSizeAndOrientation == null ? true : settings?.AdaptLabelSizeAndOrientation) {
|
|
68
|
-
categoryAxis.events.on("sizechanged", (ev) => {
|
|
69
|
-
let axis = ev.target;
|
|
70
|
-
var cellWidth = axis.pixelWidth / (axis.endIndex - axis.startIndex);
|
|
71
|
-
if (cellWidth < axis.renderer.labels.template.maxWidth) {
|
|
72
|
-
let areWeInDangerZone = cellWidth < (settings?.LabelVerticalOrientationCutoffWidth ?? this.dangerZone);
|
|
73
|
-
axis.renderer.labels.template.rotation = areWeInDangerZone ? -90 : -45;
|
|
74
|
-
axis.renderer.labels.template.dx = settings.LabelRightWhenCompressed ?? areWeInDangerZone ? 0 : this.LabelRightWhenCompressed;
|
|
75
|
-
axis.renderer.labels.template.dy = settings.LabelTopWhenCompressed ?? this.LabelTopWhenCompressed;
|
|
76
|
-
axis.renderer.labels.template.horizontalCenter = "right";
|
|
77
|
-
axis.renderer.labels.template.verticalCenter = "middle";
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
axis.renderer.labels.template.rotation = 0;
|
|
81
|
-
axis.renderer.labels.template.dx = 0;
|
|
82
|
-
axis.renderer.labels.template.dy = 0;
|
|
83
|
-
axis.renderer.labels.template.horizontalCenter = "middle";
|
|
84
|
-
axis.renderer.labels.template.verticalCenter = "top";
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
let dataPreConverted = this.Adapter ? this.Adapter.adaptDataForVertical2DChart(data) : data;
|
|
89
|
-
let dataConverted = [];
|
|
90
|
-
for (let i = 0; i < dataPreConverted.groups.length; i++) {
|
|
91
|
-
let item = dataPreConverted.groups[i];
|
|
92
|
-
let obj = { key: item.name };
|
|
93
|
-
for (let p = 0; p < item.values.length; p++) {
|
|
94
|
-
let value = item.values[p];
|
|
95
|
-
obj[value.k] = value.v;
|
|
96
|
-
}
|
|
97
|
-
dataConverted.push(obj);
|
|
98
|
-
}
|
|
99
|
-
ChartInstanceCasted.data = dataConverted;
|
|
100
|
-
if (dataPreConverted.colorinfos)
|
|
101
|
-
ChartInstanceCasted.colors.list = dataPreConverted.colorinfos.map(c => am4core.color(c.color));
|
|
102
|
-
//Prendo la prima categoria e mi baso sulle proprietà per dfeinire le serie
|
|
103
|
-
for (let prop in dataConverted[0])
|
|
104
|
-
if (prop !== "key")
|
|
105
|
-
this.createSeries(ChartInstanceCasted, settings, prop, prop);
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
/** @ignore */
|
|
109
|
-
setSelection(from, to) {
|
|
110
|
-
}
|
|
111
|
-
/** @ignore */
|
|
112
|
-
refreshData(data) {
|
|
113
|
-
//TODO:IMPL
|
|
114
|
-
}
|
|
115
|
-
/** @ignore */
|
|
116
|
-
createSeries(chart, settings, value, name) {
|
|
117
|
-
let series = chart.series.push(new am4charts.ColumnSeries());
|
|
118
|
-
series.dataFields.valueY = value;
|
|
119
|
-
series.dataFields.categoryX = 'key';
|
|
120
|
-
series.name = name;
|
|
121
|
-
series.columns.template.tooltipText = "{name} {categoryX}: [bold]{valueY}[/]";
|
|
122
|
-
series.columns.template.fillOpacity = .8;
|
|
123
|
-
series.columns.template.width = am4core.percent(settings.ColumnWidthPercentage ?? this.DefaultColumnWidthPercentage);
|
|
124
|
-
series.events.on("hidden", () => this.arrangeColumns);
|
|
125
|
-
series.events.on("shown", () => this.arrangeColumns);
|
|
126
|
-
return series;
|
|
127
|
-
}
|
|
128
|
-
/** @ignore */
|
|
129
|
-
arrangeColumns() {
|
|
130
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
131
|
-
let series = ChartInstanceCasted.series.getIndex(0);
|
|
132
|
-
let xAxis = ChartInstanceCasted.xAxes.getIndex(0);
|
|
133
|
-
let w = 1 - xAxis.renderer.cellStartLocation - (1 - xAxis.renderer.cellEndLocation);
|
|
134
|
-
if (series.dataItems.length > 1) {
|
|
135
|
-
let x0 = xAxis.getX(series.dataItems.getIndex(0), "categoryX");
|
|
136
|
-
let x1 = xAxis.getX(series.dataItems.getIndex(1), "categoryX");
|
|
137
|
-
let delta = ((x1 - x0) / ChartInstanceCasted.series.length) * w;
|
|
138
|
-
if (am4core.isNumber(delta)) {
|
|
139
|
-
let middle = ChartInstanceCasted.series.length / 2;
|
|
140
|
-
let newIndex = 0;
|
|
141
|
-
ChartInstanceCasted.series.each((series) => {
|
|
142
|
-
if (!series.isHidden && !series.isHiding) {
|
|
143
|
-
series.dummyData = newIndex;
|
|
144
|
-
newIndex++;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
series.dummyData = ChartInstanceCasted.series.indexOf(series);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
let visibleCount = newIndex;
|
|
151
|
-
let newMiddle = visibleCount / 2;
|
|
152
|
-
ChartInstanceCasted.series.each((series) => {
|
|
153
|
-
let trueIndex = ChartInstanceCasted.series.indexOf(series);
|
|
154
|
-
let newIndex = series.dummyData;
|
|
155
|
-
let dx = (newIndex - trueIndex + middle - newMiddle) * delta;
|
|
156
|
-
series.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
|
|
157
|
-
series.bulletsContainer.animate({ property: "dx", to: dx }, series.interpolationDuration, series.interpolationEasing);
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWwyRENoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL1ZlcnRpY2FsMkRDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQWdCakMsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFkdkMsY0FBYztRQUNOLGtDQUE2QixHQUFXLENBQUMsQ0FBQztRQUNsRCxjQUFjO1FBQ04sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxjQUFjO1FBQ04sZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUNqQyxjQUFjO1FBQ04sNkJBQXdCLEdBQVcsRUFBRSxDQUFDO1FBQzlDLGNBQWM7UUFDTiwyQkFBc0IsR0FBVyxDQUFDLENBQUMsQ0FBQztRQUM1QyxjQUFjO1FBQ04saUNBQTRCLEdBQVcsRUFBRSxDQUFDO0lBR1AsQ0FBQztJQUU1Qzs7T0FFRztJQUNJLFVBQVUsQ0FBQyxJQUErQixFQUFFLFFBQWlDO1FBRWxGLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUMzRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLG1CQUFt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LENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0QsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztvQkFFaEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEdBQUcsU0FBUyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7b0JBRTVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3JHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hILENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi9hZGFwdGVycy9CYXNlQWRhcHRlcic7XHJcbmltcG9ydCB7IFZlcnRpY2FsMkRDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbDJEQ2hhcnREYXRhJztcclxuaW1wb3J0IHsgVmVydGljYWwyRENoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvVmVydGljYWwyRENoYXJ0U2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gVmVydGljYWwyRENoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmVydGljYWwyRENoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgQ2hhcnRJbnN0YW5jZTogYW00Y2hhcnRzLlhZQ2hhcnQ7XHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIERlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlOiBudW1iZXIgPSA1O1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBkYW5nZXJab25lOiBudW1iZXIgPSA1MDtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgTGFiZWxXaWR0aDogbnVtYmVyID0gMTUwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlciA9IDIwO1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBMYWJlbFRvcFdoZW5Db21wcmVzc2VkOiBudW1iZXIgPSAtNTtcclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByaXZhdGUgRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZTogbnVtYmVyID0gODU7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIFZlcnRpY2FsMkRDaGFydFxyXG4gICAqL1xyXG4gIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IFZlcnRpY2FsMkRDaGFydERhdGEgfCBhbnksIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD4ge1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgdmVydGljYWwgY2hhcnRcIik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vUGVyIGV2aXRhcmUgZGkgZGltZW50aWNhcm1lbGkgZSBnZXN0aXJlIGNvbXVucXVlIGJlbmUgZ2xpIG5naWYgZWNjLi4uXHJcbiAgICBhbTRjb3JlLm9wdGlvbnMuYXV0b0Rpc3Bvc2UgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgIGxldCBDaGFydEluc3RhbmNlQ2FzdGVkID0gPGFtNGNoYXJ0cy5YWUNoYXJ0PnRoaXMuQ2hhcnRJbnN0YW5jZTtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQubGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gPz8gJ3JpZ2h0JztcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuICAgICAgXHJcbiAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmRQYWRkaW5nKSB7XHJcbiAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nQm90dG9tID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5ib3R0b20gPz8gMDtcclxuICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgIH1cclxuICAgIGxldCBjYXRlZ29yeUF4aXM6IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5DYXRlZ29yeUF4aXMoKSlcclxuICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgIGNhdGVnb3J5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICBjYXRlZ29yeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHlBeGlzLm1pbiA9IDA7XHJcbiAgICBjYXRlZ29yeUF4aXMuZGF0YUZpZWxkcy5jYXRlZ29yeSA9ICdrZXknXHJcbiAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuY2VsbFN0YXJ0TG9jYXRpb24gPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKS52YWx1ZVxyXG4gICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLmNlbGxFbmRMb2NhdGlvbiA9IGFtNGNvcmUucGVyY2VudCgxMDAgLSAoc2V0dGluZ3MuR3JvdXBQYWRkaW5nUGVyY2VudGFnZSA/PyB0aGlzLkRlZmF1bHRHcm91cFBhZGRpbmdQZXJjZW50YWdlKSkudmFsdWVcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5ncmlkLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgIGNhdGVnb3J5QXhpcy5yZW5kZXJlci5taW5HcmlkRGlzdGFuY2UgPSBzZXR0aW5ncz8uTWluR3JpZERpc3RhbmNlID8/IDMwO1xyXG5cclxuICAgIGxldCBsYWJlbCA9IGNhdGVnb3J5QXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGU7XHJcbiAgICBsYWJlbC50cnVuY2F0ZSA9IHRydWU7XHJcbiAgICBsYWJlbC5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsV2lkdGggPz8gdGhpcy5MYWJlbFdpZHRoO1xyXG4gICAgbGFiZWwudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuXHJcbiAgICBpZiAoc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24gPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncz8uQWRhcHRMYWJlbFNpemVBbmRPcmllbnRhdGlvbikge1xyXG4gICAgICBjYXRlZ29yeUF4aXMuZXZlbnRzLm9uKFwic2l6ZWNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgbGV0IGF4aXMgPSBldi50YXJnZXQ7XHJcbiAgICAgICAgdmFyIGNlbGxXaWR0aCA9IGF4aXMucGl4ZWxXaWR0aCAvIChheGlzLmVuZEluZGV4IC0gYXhpcy5zdGFydEluZGV4KTtcclxuICAgICAgICBpZiAoY2VsbFdpZHRoIDwgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUubWF4V2lkdGgpIHtcclxuICAgICAgICAgIGxldCBhcmVXZUluRGFuZ2VyWm9uZSA9IGNlbGxXaWR0aCA8IChzZXR0aW5ncz8uTGFiZWxWZXJ0aWNhbE9yaWVudGF0aW9uQ3V0b2ZmV2lkdGggPz8gdGhpcy5kYW5nZXJab25lKTtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gYXJlV2VJbkRhbmdlclpvbmUgPyAtOTAgOiAtNDU7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IHNldHRpbmdzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZCA/PyBhcmVXZUluRGFuZ2VyWm9uZSA/IDAgOiB0aGlzLkxhYmVsUmlnaHRXaGVuQ29tcHJlc3NlZDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gc2V0dGluZ3MuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZCA/PyB0aGlzLkxhYmVsVG9wV2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR4ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmR5ID0gMDtcclxuICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmhvcml6b250YWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUudmVydGljYWxDZW50ZXIgPSBcInRvcFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGFQcmVDb252ZXJ0ZWQ6IFZlcnRpY2FsMkRDaGFydERhdGEgPSB0aGlzLkFkYXB0ZXIgPyB0aGlzLkFkYXB0ZXIuYWRhcHREYXRhRm9yVmVydGljYWwyRENoYXJ0KGRhdGEpIDogZGF0YTtcclxuXHJcbiAgICBsZXQgZGF0YUNvbnZlcnRlZCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhUHJlQ29udmVydGVkLmdyb3Vwcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IGRhdGFQcmVDb252ZXJ0ZWQuZ3JvdXBzW2ldO1xyXG4gICAgICBsZXQgb2JqID0geyBrZXk6IGl0ZW0ubmFtZSB9O1xyXG4gICAgICBmb3IgKGxldCBwID0gMDsgcCA8IGl0ZW0udmFsdWVzLmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gaXRlbS52YWx1ZXNbcF07XHJcbiAgICAgICAgb2JqW3ZhbHVlLmtdID0gdmFsdWUudjtcclxuICAgICAgfVxyXG4gICAgICBkYXRhQ29udmVydGVkLnB1c2gob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBkYXRhQ29udmVydGVkO1xyXG4gICAgaWYgKGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JpbmZvcylcclxuICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IGRhdGFQcmVDb252ZXJ0ZWQuY29sb3JpbmZvcy5tYXAoYyA9PiBhbTRjb3JlLmNvbG9yKGMuY29sb3IpKTtcclxuXHJcbiAgICAvL1ByZW5kbyBsYSBwcmltYSBjYXRlZ29yaWEgZSBtaSBiYXNvIHN1bGxlIHByb3ByaWV0w6AgcGVyIGRmZWluaXJlIGxlIHNlcmllXHJcbiAgICBmb3IgKGxldCBwcm9wIGluIGRhdGFDb252ZXJ0ZWRbMF0pXHJcbiAgICAgIGlmIChwcm9wICE9PSBcImtleVwiKVxyXG4gICAgICAgIHRoaXMuY3JlYXRlU2VyaWVzKENoYXJ0SW5zdGFuY2VDYXN0ZWQsIHNldHRpbmdzLCBwcm9wLCBwcm9wKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogVmVydGljYWwyRENoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgLy9UT0RPOklNUExcclxuICB9XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSBjcmVhdGVTZXJpZXMoY2hhcnQsIHNldHRpbmdzOiBWZXJ0aWNhbDJEQ2hhcnRTZXR0aW5ncywgdmFsdWUsIG5hbWUpIHtcclxuICAgIGxldCBzZXJpZXM6IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMgPSBjaGFydC5zZXJpZXMucHVzaChuZXcgYW00Y2hhcnRzLkNvbHVtblNlcmllcygpKVxyXG4gICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gdmFsdWU7XHJcbiAgICBzZXJpZXMuZGF0YUZpZWxkcy5jYXRlZ29yeVggPSAna2V5JztcclxuICAgIHNlcmllcy5uYW1lID0gbmFtZTtcclxuICAgIHNlcmllcy5jb2x1bW5zLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX0ge2NhdGVnb3J5WH06IFtib2xkXXt2YWx1ZVl9Wy9dXCI7XHJcbiAgICBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZS5maWxsT3BhY2l0eSA9IC44O1xyXG4gICAgc2VyaWVzLmNvbHVtbnMudGVtcGxhdGUud2lkdGggPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuQ29sdW1uV2lkdGhQZXJjZW50YWdlID8/IHRoaXMuRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZSk7XHJcblxyXG4gICAgc2VyaWVzLmV2ZW50cy5vbihcImhpZGRlblwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuICAgIHNlcmllcy5ldmVudHMub24oXCJzaG93blwiLCAoKSA9PiB0aGlzLmFycmFuZ2VDb2x1bW5zKTtcclxuXHJcbiAgICByZXR1cm4gc2VyaWVzO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBpZ25vcmUgKi9cclxuICBwcml2YXRlIGFycmFuZ2VDb2x1bW5zKCkge1xyXG4gICAgbGV0IENoYXJ0SW5zdGFuY2VDYXN0ZWQgPSA8YW00Y2hhcnRzLlhZQ2hhcnQ+dGhpcy5DaGFydEluc3RhbmNlO1xyXG4gICAgbGV0IHNlcmllcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmdldEluZGV4KDApO1xyXG4gICAgbGV0IHhBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC54QXhlcy5nZXRJbmRleCgwKTtcclxuXHJcbiAgICBsZXQgdyA9IDEgLSB4QXhpcy5yZW5kZXJlci5jZWxsU3RhcnRMb2NhdGlvbiAtICgxIC0geEF4aXMucmVuZGVyZXIuY2VsbEVuZExvY2F0aW9uKTtcclxuICAgIGlmIChzZXJpZXMuZGF0YUl0ZW1zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgbGV0IHgwID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDApLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IHgxID0geEF4aXMuZ2V0WChzZXJpZXMuZGF0YUl0ZW1zLmdldEluZGV4KDEpLCBcImNhdGVnb3J5WFwiKTtcclxuICAgICAgbGV0IGRlbHRhID0gKCh4MSAtIHgwKSAvIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmxlbmd0aCkgKiB3O1xyXG4gICAgICBpZiAoYW00Y29yZS5pc051bWJlcihkZWx0YSkpIHtcclxuICAgICAgICBsZXQgbWlkZGxlID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC5zZXJpZXMubGVuZ3RoIC8gMjtcclxuXHJcbiAgICAgICAgbGV0IG5ld0luZGV4ID0gMDtcclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgIGlmICghc2VyaWVzLmlzSGlkZGVuICYmICFzZXJpZXMuaXNIaWRpbmcpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmR1bW15RGF0YSA9IG5ld0luZGV4O1xyXG4gICAgICAgICAgICBuZXdJbmRleCsrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5kdW1teURhdGEgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5pbmRleE9mKHNlcmllcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBsZXQgdmlzaWJsZUNvdW50ID0gbmV3SW5kZXg7XHJcbiAgICAgICAgbGV0IG5ld01pZGRsZSA9IHZpc2libGVDb3VudCAvIDI7XHJcblxyXG4gICAgICAgIENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmVhY2goKHNlcmllcykgPT4ge1xyXG4gICAgICAgICAgbGV0IHRydWVJbmRleCA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLmluZGV4T2Yoc2VyaWVzKTtcclxuICAgICAgICAgIGxldCBuZXdJbmRleCA9IHNlcmllcy5kdW1teURhdGE7XHJcblxyXG4gICAgICAgICAgbGV0IGR4ID0gKG5ld0luZGV4IC0gdHJ1ZUluZGV4ICsgbWlkZGxlIC0gbmV3TWlkZGxlKSAqIGRlbHRhXHJcblxyXG4gICAgICAgICAgc2VyaWVzLmFuaW1hdGUoeyBwcm9wZXJ0eTogXCJkeFwiLCB0bzogZHggfSwgc2VyaWVzLmludGVycG9sYXRpb25EdXJhdGlvbiwgc2VyaWVzLmludGVycG9sYXRpb25FYXNpbmcpO1xyXG4gICAgICAgICAgc2VyaWVzLmJ1bGxldHNDb250YWluZXIuYW5pbWF0ZSh7IHByb3BlcnR5OiBcImR4XCIsIHRvOiBkeCB9LCBzZXJpZXMuaW50ZXJwb2xhdGlvbkR1cmF0aW9uLCBzZXJpZXMuaW50ZXJwb2xhdGlvbkVhc2luZyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
|
|
@@ -1,114 +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 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
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVydGljYWxDaGFydFNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy1jaGFydHMvc3JjL2xpYi9zZXJ2aWNlcy9WZXJ0aWNhbENoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBYzdCLGNBQWM7SUFDZCxZQUFtQixPQUFvQjtRQUFwQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBWnZDLGNBQWM7UUFDTixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ2hDLGNBQWM7UUFDTixlQUFVLEdBQVcsR0FBRyxDQUFDO1FBQ2pDLGNBQWM7UUFDTiw2QkFBd0IsR0FBVyxFQUFFLENBQUM7UUFDOUMsY0FBYztRQUNOLDJCQUFzQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzVDLGNBQWM7UUFDTixpQ0FBNEIsR0FBVyxFQUFFLENBQUM7SUFHUCxDQUFDO0lBRTVDOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQTZCLEVBQUUsUUFBK0I7UUFFNUUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQzNELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxJQUFJLG1CQUFtQixHQUFzQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBRWhFLElBQUksYUFB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QyxDQUFDO1lBQ2pDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFNLE9BQU8sQ0FBQyxLQUFLLENBQWlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUgsQ0FBQzthQUNJLENBQUM7WUFDRixjQUFjLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUMvQixjQUFjLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWM7SUFDZCxZQUFZLENBQUMsSUFBVSxFQUFFLEVBQVE7SUFFakMsQ0FBQztJQUVELGNBQWM7SUFDUCxXQUFXLENBQUMsSUFBNkI7UUFDNUMsV0FBVztJQUNmLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uL2FkYXB0ZXJzL0Jhc2VBZGFwdGVyJztcclxuaW1wb3J0IHsgVmVydGljYWxDaGFydERhdGEgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9WZXJ0aWNhbENoYXJ0RGF0YSc7XHJcbmltcG9ydCB7IEtleVZhbHVlQ29sb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS9iYXNlL0tleVZhbHVlQ29sb3InO1xyXG5pbXBvcnQgeyBWZXJ0aWNhbENoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi9tb2RlbHMvc2V0dGluZ3MvVmVydGljYWxDaGFydFNldHRpbmdzJztcclxuXHJcbmltcG9ydCAqIGFzIGFtNGNvcmUgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBhbTRjaGFydHMgZnJvbSBcIkBhbWNoYXJ0cy9hbWNoYXJ0czQvY2hhcnRzXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGlsIGN1aSB1bmljbyBzY29wbyDDqCBnZXN0aXJlIGlsIHNldHVwIGUgcmVuZGVyaW5nIGRpIHVuIFZlcnRpY2FsQ2hhcnRcclxuICovXHJcbmV4cG9ydCBjbGFzcyBWZXJ0aWNhbENoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZGFuZ2VyWm9uZTogbnVtYmVyID0gNTA7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBMYWJlbFdpZHRoOiBudW1iZXIgPSAxNTA7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBMYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ6IG51bWJlciA9IDIwO1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDogbnVtYmVyID0gLTU7XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBEZWZhdWx0Q29sdW1uV2lkdGhQZXJjZW50YWdlOiBudW1iZXIgPSA4NTtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIEFkYXB0ZXI6IEJhc2VBZGFwdGVyKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldG9kbyBjaGUgZGF0YSB1bmEgY29wcGlhIERhdGkgLSBJbXBvc3RhemlvbmkgbGkgdXRpbGl6emEgcGVyIGNyZWFyZSBlIHZpc3VhbGl6emFyZSB1biBWZXJ0aWNhbENoYXJ0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBncmFwaGljYXRlKGRhdGE6IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogVmVydGljYWxDaGFydFNldHRpbmdzKTogSUJhc2VTZXJ2aWNlPGFtNGNoYXJ0cy5YWUNoYXJ0PiB7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5UaW1lbGluZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGltZWxpbmUgbm90IHN1cHBvcnRlZCBmb3IgdmVydGljYWwgY2hhcnRcIik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9QZXIgZXZpdGFyZSBkaSBkaW1lbnRpY2FybWVsaSBlIGdlc3RpcmUgY29tdW5xdWUgYmVuZSBnbGkgbmdpZiBlY2MuLi5cclxuICAgICAgICBhbTRjb3JlLm9wdGlvbnMuYXV0b0Rpc3Bvc2UgPSB0cnVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCBkYXRhQ29udmVydGVkOiBWZXJ0aWNhbENoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JWZXJ0aWNhbENoYXJ0KGRhdGEpIDogZGF0YTtcclxuICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmRhdGEgPSBkYXRhQ29udmVydGVkLnZhbHVlcztcclxuXHJcbiAgICAgICAgbGV0IG5vU3Ryb2tlcyA9IGRhdGFDb252ZXJ0ZWQudmFsdWVzLnNvbWUodCA9PiAhIXQuYyk7XHJcblxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5MZWdlbmQpIHtcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5wb3NpdGlvbiA9IHNldHRpbmdzPy5MZWdlbmRQb3NpdGlvbiA/PyAncmlnaHQnO1xyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcpIHtcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nVG9wID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy50b3AgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdCb3R0b20gPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmJvdHRvbSA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0xlZnQgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLmxlZnQgPz8gMDtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdSaWdodCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcucmlnaHQgPz8gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHlBeGlzID0gQ2hhcnRJbnN0YW5jZUNhc3RlZC55QXhlcy5wdXNoKG5ldyBhbTRjaGFydHMuVmFsdWVBeGlzKCkpO1xyXG4gICAgICAgIGlmIChzZXR0aW5ncy5ZQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLnRleHQgPSBzZXR0aW5ncy5ZQXhpc1RpdGxlXHJcbiAgICAgICAgICAgIHlBeGlzLnRpdGxlLmZvbnRXZWlnaHQgPSBcImJvbGRcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGNhdGVnb3J5QXhpczogYW00Y2hhcnRzLkNhdGVnb3J5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueEF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLkNhdGVnb3J5QXhpcygpKVxyXG4gICAgICAgIGlmIChzZXR0aW5ncy5YQXhpc1RpdGxlKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWEF4aXNUaXRsZVxyXG4gICAgICAgICAgICBjYXRlZ29yeUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2F0ZWdvcnlBeGlzLmRhdGFGaWVsZHMuY2F0ZWdvcnkgPSBcImtcIjtcclxuICAgICAgICBjYXRlZ29yeUF4aXMucmVuZGVyZXIuZ3JpZC50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICAgICAgY2F0ZWdvcnlBeGlzLnJlbmRlcmVyLm1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzPy5NaW5HcmlkRGlzdGFuY2UgPz8gMzA7XHJcblxyXG4gICAgICAgIGxldCBsYWJlbCA9IGNhdGVnb3J5QXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGU7XHJcbiAgICAgICAgbGFiZWwudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgICAgIGxhYmVsLm1heFdpZHRoID0gc2V0dGluZ3MuTGFiZWxXaWR0aCA/PyB0aGlzLkxhYmVsV2lkdGg7XHJcbiAgICAgICAgbGFiZWwudG9vbHRpcFRleHQgPSBcIntjYXRlZ29yeX1cIjtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzPy5BZGFwdExhYmVsU2l6ZUFuZE9yaWVudGF0aW9uID09IG51bGwgPyB0cnVlIDogc2V0dGluZ3M/LkFkYXB0TGFiZWxTaXplQW5kT3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnlBeGlzLmV2ZW50cy5vbihcInNpemVjaGFuZ2VkXCIsIChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGF4aXMgPSBldi50YXJnZXQ7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2VsbFdpZHRoID0gYXhpcy5waXhlbFdpZHRoIC8gKGF4aXMuZW5kSW5kZXggLSBheGlzLnN0YXJ0SW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGxXaWR0aCA8IGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLm1heFdpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFyZVdlSW5EYW5nZXJab25lID0gY2VsbFdpZHRoIDwgKHNldHRpbmdzPy5MYWJlbFZlcnRpY2FsT3JpZW50YXRpb25DdXRvZmZXaWR0aCA/PyB0aGlzLmRhbmdlclpvbmUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gYXJlV2VJbkRhbmdlclpvbmUgPyAtOTAgOiAtNDU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHggPSBzZXR0aW5ncy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQgPz8gYXJlV2VJbkRhbmdlclpvbmUgPyAwIDogdGhpcy5MYWJlbFJpZ2h0V2hlbkNvbXByZXNzZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHkgPSBzZXR0aW5ncy5MYWJlbFRvcFdoZW5Db21wcmVzc2VkID8/IHRoaXMuTGFiZWxUb3BXaGVuQ29tcHJlc3NlZDtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5ob3Jpem9udGFsQ2VudGVyID0gXCJyaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJtaWRkbGVcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnJvdGF0aW9uID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBheGlzLnJlbmRlcmVyLmxhYmVscy50ZW1wbGF0ZS5keCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgYXhpcy5yZW5kZXJlci5sYWJlbHMudGVtcGxhdGUuZHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLmhvcml6b250YWxDZW50ZXIgPSBcIm1pZGRsZVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGF4aXMucmVuZGVyZXIubGFiZWxzLnRlbXBsYXRlLnZlcnRpY2FsQ2VudGVyID0gXCJ0b3BcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDcmVhdGUgc2VyaWVzXHJcbiAgICAgICAgbGV0IHNlcmllcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQuc2VyaWVzLnB1c2gobmV3IGFtNGNoYXJ0cy5Db2x1bW5TZXJpZXMoKSk7XHJcbiAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMudmFsdWVZID0gXCJ2XCI7XHJcbiAgICAgICAgc2VyaWVzLmRhdGFGaWVsZHMuY2F0ZWdvcnlYID0gXCJrXCI7XHJcbiAgICAgICAgc2VyaWVzLm5hbWUgPSBcIlwiO1xyXG5cclxuICAgICAgICBsZXQgY29sdW1uVGVtcGxhdGUgPSBzZXJpZXMuY29sdW1ucy50ZW1wbGF0ZTtcclxuICAgICAgICBjb2x1bW5UZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5WH06IFtib2xkXXt2YWx1ZVl9Wy9dIHt0fVwiO1xyXG4gICAgICAgIGNvbHVtblRlbXBsYXRlLmZpbGxPcGFjaXR5ID0gLjg7XHJcbiAgICAgICAgY29sdW1uVGVtcGxhdGUud2lkdGggPSBhbTRjb3JlLnBlcmNlbnQoc2V0dGluZ3MuQ29sdW1uV2lkdGhQZXJjZW50YWdlID8/IHRoaXMuRGVmYXVsdENvbHVtbldpZHRoUGVyY2VudGFnZSk7XHJcbiAgICAgICAgaWYgKG5vU3Ryb2tlcykge1xyXG4gICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZS5zdHJva2VPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgY29sdW1uVGVtcGxhdGUuc3Ryb2tlV2lkdGggPSAwO1xyXG4gICAgICAgICAgICBjb2x1bW5UZW1wbGF0ZS5hZGFwdGVyLmFkZChcImZpbGxcIiwgKF8sIHRhcmdldCkgPT4gPGFueT5hbTRjb3JlLmNvbG9yKCg8S2V5VmFsdWVDb2xvcj50YXJnZXQuZGF0YUl0ZW0uZGF0YUNvbnRleHQpLmMpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbHVtblRlbXBsYXRlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgY29sdW1uVGVtcGxhdGUuc3Ryb2tlT3BhY2l0eSA9IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgc2V0U2VsZWN0aW9uKGZyb206IERhdGUsIHRvOiBEYXRlKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFZlcnRpY2FsQ2hhcnREYXRhIHwgYW55KSB7XHJcbiAgICAgICAgLy9UT0RPOklNUExcclxuICAgIH1cclxufSJdfQ==
|