@esfaenza/es-charts 12.2.11 → 13.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esfaenza-es-charts.d.ts +1 -6
- package/esm2020/esfaenza-es-charts.mjs +5 -0
- package/esm2020/lib/adapters/classes/BaseAdapter.mjs +50 -0
- package/{esm2015/lib/adapters/classes/IBaseAdapter.js → esm2020/lib/adapters/classes/IBaseAdapter.mjs} +0 -0
- package/{esm2015/lib/adapters/index.js → esm2020/lib/adapters/index.mjs} +0 -0
- package/esm2020/lib/components/base/base-chart.component.mjs +325 -0
- package/esm2020/lib/components/chart-pager/chart-pager.component.mjs +89 -0
- package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
- package/esm2020/lib/components/specializations/es-area-chart.component.mjs +78 -0
- package/esm2020/lib/components/specializations/es-chart.component.mjs +111 -0
- package/esm2020/lib/components/specializations/es-line-chart.component.mjs +110 -0
- package/esm2020/lib/components/specializations/es-pie-chart.component.mjs +99 -0
- package/esm2020/lib/components/specializations/es-vertical-2d-chart.component.mjs +96 -0
- package/esm2020/lib/components/specializations/es-vertical-chart.component.mjs +93 -0
- package/esm2020/lib/components/specializations/es-vertical-stacked-chart.component.mjs +93 -0
- package/esm2020/lib/es-charts.module.mjs +61 -0
- package/{esm2015/lib/models/EsChaartsModuleConfig.js → esm2020/lib/models/EsChaartsModuleConfig.mjs} +0 -0
- package/esm2020/lib/models/core/classes/ChartDispatcher.mjs +91 -0
- package/{esm2015/lib/models/core/classes/ChartLoader.js → esm2020/lib/models/core/classes/ChartLoader.mjs} +0 -0
- package/{esm2015/lib/models/core/classes/ChartThemes.js → esm2020/lib/models/core/classes/ChartThemes.mjs} +0 -0
- package/{esm2015/lib/models/core/index.js → esm2020/lib/models/core/index.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/AreaChartData.js → esm2020/lib/models/data/classes/AreaChartData.mjs} +0 -0
- package/esm2020/lib/models/data/classes/LineChartData.mjs +16 -0
- package/{esm2015/lib/models/data/classes/PagedChartData.js → esm2020/lib/models/data/classes/PagedChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/PieChartData.js → esm2020/lib/models/data/classes/PieChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/Vertical2DChartData.js → esm2020/lib/models/data/classes/Vertical2DChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/VerticalChartData.js → esm2020/lib/models/data/classes/VerticalChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/VerticalStackedChartData.js → esm2020/lib/models/data/classes/VerticalStackedChartData.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/DateValue.js → esm2020/lib/models/data/classes/base/DateValue.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/KeyValue.js → esm2020/lib/models/data/classes/base/KeyValue.mjs} +0 -0
- package/{esm2015/lib/models/data/classes/base/KeyValueColor.js → esm2020/lib/models/data/classes/base/KeyValueColor.mjs} +0 -0
- package/esm2020/lib/models/data/classes/base/Limit.mjs +15 -0
- package/esm2020/lib/models/data/classes/base/LineSerie.mjs +24 -0
- package/{esm2015/lib/models/data/index.js → esm2020/lib/models/data/index.mjs} +2 -1
- package/{esm2015/lib/models/settings/classes/AreaChartSettings.js → esm2020/lib/models/settings/classes/AreaChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/LineChartSettings.js → esm2020/lib/models/settings/classes/LineChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/PieChartSettings.js → esm2020/lib/models/settings/classes/PieChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/Vertical2DChartSettings.js → esm2020/lib/models/settings/classes/Vertical2DChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/VerticalChartSettings.js → esm2020/lib/models/settings/classes/VerticalChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/VerticalStackedChartSettings.js → esm2020/lib/models/settings/classes/VerticalStackedChartSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/BaseInterval.js → esm2020/lib/models/settings/classes/base/BaseInterval.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/BaseSettings.js → esm2020/lib/models/settings/classes/base/BaseSettings.mjs} +0 -0
- package/{esm2015/lib/models/settings/classes/base/LegendPad.js → esm2020/lib/models/settings/classes/base/LegendPad.mjs} +0 -0
- package/{esm2015/lib/models/settings/index.js → esm2020/lib/models/settings/index.mjs} +0 -0
- package/esm2020/lib/services/classes/AreaChartService.mjs +134 -0
- package/esm2020/lib/services/classes/LineChartService.mjs +324 -0
- package/esm2020/lib/services/classes/PieChartService.mjs +111 -0
- package/esm2020/lib/services/classes/Vertical2DChartService.mjs +160 -0
- package/esm2020/lib/services/classes/VerticalChartService.mjs +103 -0
- package/esm2020/lib/services/classes/VerticalStackedChartService.mjs +124 -0
- package/{esm2015/lib/services/classes/base/IBaseService.js → esm2020/lib/services/classes/base/IBaseService.mjs} +0 -0
- package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/public-api.mjs +37 -0
- package/fesm2015/{esfaenza-es-charts.js → esfaenza-es-charts.mjs} +521 -372
- package/fesm2015/esfaenza-es-charts.mjs.map +1 -0
- package/fesm2020/esfaenza-es-charts.mjs +2701 -0
- package/fesm2020/esfaenza-es-charts.mjs.map +1 -0
- package/lib/adapters/classes/BaseAdapter.d.ts +3 -0
- package/lib/components/base/base-chart.component.d.ts +3 -0
- package/lib/components/chart-pager/chart-pager.component.d.ts +3 -0
- package/lib/components/specializations/es-area-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-line-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-pie-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-2d-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-chart.component.d.ts +3 -0
- package/lib/components/specializations/es-vertical-stacked-chart.component.d.ts +3 -0
- package/lib/es-charts.module.d.ts +13 -0
- package/lib/models/core/classes/ChartDispatcher.d.ts +3 -0
- package/lib/models/data/classes/LineChartData.d.ts +4 -1
- package/lib/models/data/classes/base/Limit.d.ts +13 -0
- package/lib/models/data/classes/base/LineSerie.d.ts +4 -2
- package/lib/models/data/index.d.ts +1 -0
- package/package.json +23 -11
- package/public-api.d.ts +2 -0
- package/bundles/esfaenza-es-charts.umd.js +0 -3161
- package/bundles/esfaenza-es-charts.umd.js.map +0 -1
- package/esfaenza-es-charts.metadata.json +0 -1
- package/esm2015/esfaenza-es-charts.js +0 -11
- package/esm2015/lib/adapters/classes/BaseAdapter.js +0 -47
- package/esm2015/lib/components/base/base-chart.component.js +0 -311
- package/esm2015/lib/components/chart-pager/chart-pager.component.js +0 -84
- package/esm2015/lib/components/specializations/es-area-chart.component.js +0 -75
- package/esm2015/lib/components/specializations/es-chart.component.js +0 -108
- package/esm2015/lib/components/specializations/es-line-chart.component.js +0 -98
- package/esm2015/lib/components/specializations/es-pie-chart.component.js +0 -89
- package/esm2015/lib/components/specializations/es-vertical-2d-chart.component.js +0 -87
- package/esm2015/lib/components/specializations/es-vertical-chart.component.js +0 -85
- package/esm2015/lib/components/specializations/es-vertical-stacked-chart.component.js +0 -85
- package/esm2015/lib/es-charts.module.js +0 -42
- package/esm2015/lib/models/core/classes/ChartDispatcher.js +0 -88
- package/esm2015/lib/models/data/classes/LineChartData.js +0 -14
- package/esm2015/lib/models/data/classes/base/LineSerie.js +0 -22
- package/esm2015/lib/services/classes/AreaChartService.js +0 -135
- package/esm2015/lib/services/classes/LineChartService.js +0 -296
- package/esm2015/lib/services/classes/PieChartService.js +0 -112
- package/esm2015/lib/services/classes/Vertical2DChartService.js +0 -163
- package/esm2015/lib/services/classes/VerticalChartService.js +0 -105
- package/esm2015/lib/services/classes/VerticalStackedChartService.js +0 -127
- package/esm2015/public-api.js +0 -35
- package/fesm2015/esfaenza-es-charts.js.map +0 -1
|
@@ -1,296 +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 LineChart
|
|
5
|
-
*/
|
|
6
|
-
export class LineChartService {
|
|
7
|
-
/** @ignore */
|
|
8
|
-
constructor(Adapter, dateExts) {
|
|
9
|
-
this.Adapter = Adapter;
|
|
10
|
-
this.dateExts = dateExts;
|
|
11
|
-
/** @ignore */
|
|
12
|
-
this.DataGroupBucketSize = 1500;
|
|
13
|
-
/** @ignore */
|
|
14
|
-
this.OpacityOnSelected = 0.3;
|
|
15
|
-
//******************** Funzione di throttling per non spammare richieste in caso di animazioni attivate
|
|
16
|
-
//TODO: spostarla in un metodo di utilità (esfaenza/extensions)
|
|
17
|
-
/** @ignore */
|
|
18
|
-
this.executionTimers = {};
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Metodo che data una coppia Dati - Impostazioni li utilizza per creare e visualizzare un LineChart
|
|
22
|
-
*/
|
|
23
|
-
graphicate(data, settings) {
|
|
24
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
25
|
-
let dataConverted = this.Adapter ? this.Adapter.adaptDataForLineChart(data) : data;
|
|
26
|
-
let threshold = (_a = settings.DataGroupingThreshold) !== null && _a !== void 0 ? _a : 3000;
|
|
27
|
-
let singleDataSet = (_b = settings.MergeDatasets) !== null && _b !== void 0 ? _b : false;
|
|
28
|
-
let showTicks = settings.ShowTicks == null ? true : settings === null || settings === void 0 ? void 0 : settings.ShowTicks;
|
|
29
|
-
let dataShouldBeGrouped = Math.max(...dataConverted.series.map(t => t.values.length)) > threshold;
|
|
30
|
-
let showTimeline = settings.Timeline || dataShouldBeGrouped;
|
|
31
|
-
let seriesWithInterval = dataConverted.series.some(t => t.interval);
|
|
32
|
-
let interval = seriesWithInterval ? dataConverted.series.find(t => t.interval).interval : null;
|
|
33
|
-
let gapsAllowed = (settings === null || settings === void 0 ? void 0 : settings.AllowGaps) == null ? seriesWithInterval : settings === null || settings === void 0 ? void 0 : settings.AllowGaps;
|
|
34
|
-
let finalInstant = (_c = settings === null || settings === void 0 ? void 0 : settings.FinalInstants) !== null && _c !== void 0 ? _c : true;
|
|
35
|
-
let fill = (_d = settings === null || settings === void 0 ? void 0 : settings.Fill) !== null && _d !== void 0 ? _d : false;
|
|
36
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
37
|
-
am4core.options.autoDispose = true;
|
|
38
|
-
this.ChartInstance = am4core.create(settings.Name, am4charts.XYChart);
|
|
39
|
-
let ChartInstanceCasted = this.ChartInstance;
|
|
40
|
-
let yAxis = ChartInstanceCasted.yAxes.push(new am4charts.ValueAxis());
|
|
41
|
-
if (settings.YAxisTitle) {
|
|
42
|
-
yAxis.title.text = settings.YAxisTitle;
|
|
43
|
-
yAxis.title.fontWeight = "bold";
|
|
44
|
-
}
|
|
45
|
-
if (settings.Min)
|
|
46
|
-
yAxis.min = settings.Min;
|
|
47
|
-
if (settings.Max)
|
|
48
|
-
yAxis.max = settings.Max;
|
|
49
|
-
let dateAxis = ChartInstanceCasted.xAxes.push(new am4charts.DateAxis());
|
|
50
|
-
if (settings.XAxisTitle) {
|
|
51
|
-
dateAxis.title.text = settings.XAxisTitle;
|
|
52
|
-
dateAxis.title.fontWeight = "bold";
|
|
53
|
-
}
|
|
54
|
-
if (showTicks) {
|
|
55
|
-
dateAxis.renderer.ticks.template.disabled = false;
|
|
56
|
-
dateAxis.renderer.ticks.template.strokeOpacity = 1;
|
|
57
|
-
dateAxis.renderer.ticks.template.stroke = am4core.color("#495C43");
|
|
58
|
-
dateAxis.renderer.ticks.template.strokeWidth = 2;
|
|
59
|
-
dateAxis.renderer.ticks.template.length = 10;
|
|
60
|
-
dateAxis.renderer.ticks.template.location = 0;
|
|
61
|
-
}
|
|
62
|
-
dateAxis.renderer.minGridDistance = (_e = settings === null || settings === void 0 ? void 0 : settings.MinGridDistance) !== null && _e !== void 0 ? _e : 50;
|
|
63
|
-
dateAxis.renderer.grid.template.location = 0;
|
|
64
|
-
dateAxis.minZoomCount = 5;
|
|
65
|
-
dateAxis.groupData = dataShouldBeGrouped;
|
|
66
|
-
dateAxis.groupCount = (_f = settings.DataGroupBucketSize) !== null && _f !== void 0 ? _f : this.DataGroupBucketSize;
|
|
67
|
-
//Se ho almeno una serie ad intervallo e i settings non mi impediscono esplicitamente di usare i gaps, visualizzo i dati col gap
|
|
68
|
-
if (gapsAllowed) {
|
|
69
|
-
if (!seriesWithInterval) {
|
|
70
|
-
console.error("Per utilizzare la funzionalità dei gap è obbligatorio definire un intervallo nelle serie del grafico");
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
dateAxis.baseInterval = { count: interval.count, timeUnit: interval.timeunit };
|
|
74
|
-
}
|
|
75
|
-
if (showTimeline)
|
|
76
|
-
ChartInstanceCasted.scrollbarX = new am4charts.XYChartScrollbar();
|
|
77
|
-
let seriesToPush = [];
|
|
78
|
-
let seriesColors = [];
|
|
79
|
-
let defaultIndex = 0;
|
|
80
|
-
//-- Generazione di un unico dataset invece che N, per poter gestire un unico tooltip
|
|
81
|
-
if (singleDataSet) {
|
|
82
|
-
let dto = {};
|
|
83
|
-
dataConverted.series.forEach((vs, index) => {
|
|
84
|
-
for (let i = 0; i < vs.values.length; i++) {
|
|
85
|
-
var dataitem = vs.values[i];
|
|
86
|
-
var indexer = new Date(dataitem.d).valueOf();
|
|
87
|
-
if (!dto[indexer])
|
|
88
|
-
dto[indexer] = {};
|
|
89
|
-
dto[indexer]['v' + index] = dataitem.v;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
var dates = Object.keys(dto);
|
|
93
|
-
let singleDS = [];
|
|
94
|
-
for (let i = 0; i < dates.length; i++) {
|
|
95
|
-
let values = dto[dates[i]];
|
|
96
|
-
let item = { d: new Date(parseInt(dates[i])) };
|
|
97
|
-
var vals = Object.keys(values);
|
|
98
|
-
for (let ii = 0; ii < vals.length; ii++) {
|
|
99
|
-
let series = vals[ii];
|
|
100
|
-
let singleVal = values[series];
|
|
101
|
-
item[series] = singleVal;
|
|
102
|
-
}
|
|
103
|
-
singleDS.push(item);
|
|
104
|
-
}
|
|
105
|
-
this.ChartInstance.data = singleDS;
|
|
106
|
-
dateAxis.cursorTooltipEnabled = false;
|
|
107
|
-
}
|
|
108
|
-
//-- Fine generazione
|
|
109
|
-
dataConverted.series.forEach((s, index) => {
|
|
110
|
-
var _a, _b;
|
|
111
|
-
if (s.values[0] && !(s.values[0].d instanceof Date)) {
|
|
112
|
-
for (let v = 0; v < s.values.length; v++)
|
|
113
|
-
s.values[v].d = new Date(s.values[v].d);
|
|
114
|
-
}
|
|
115
|
-
var correctOrder = true;
|
|
116
|
-
var prevDate = null;
|
|
117
|
-
for (let v = 0; v < s.values.length; v++) {
|
|
118
|
-
if (!prevDate)
|
|
119
|
-
prevDate = s.values[v].d;
|
|
120
|
-
else if (s.values[v].d < prevDate) {
|
|
121
|
-
correctOrder = false;
|
|
122
|
-
break;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (!correctOrder)
|
|
126
|
-
s.values.sort((d1, d2) => d1.d.getTime() - d2.d.getTime());
|
|
127
|
-
let series = (settings === null || settings === void 0 ? void 0 : settings.Step) ? new am4charts.StepLineSeries() : new am4charts.LineSeries();
|
|
128
|
-
series.dataFields.valueY = "v" + (singleDataSet ? index : "");
|
|
129
|
-
series.dataFields.dateX = "d";
|
|
130
|
-
series.dataFields.measureUnit = s.uom;
|
|
131
|
-
series.name = s.name;
|
|
132
|
-
series.strokeWidth = (_a = settings === null || settings === void 0 ? void 0 : settings.StrokeSize) !== null && _a !== void 0 ? _a : 1;
|
|
133
|
-
series.connect = !gapsAllowed;
|
|
134
|
-
series.minBulletDistance = 10;
|
|
135
|
-
series.tooltipText = singleDataSet ? "" : "{name}: [bold]{valueY}[/]";
|
|
136
|
-
series.tooltip.pointerOrientation = "vertical";
|
|
137
|
-
series.tooltip.background.fillOpacity = 0.5;
|
|
138
|
-
series.tooltip.label.padding(12, 12, 12, 12);
|
|
139
|
-
series.fillOpacity = fill ? 1 : 0.0001;
|
|
140
|
-
series.stacked = fill;
|
|
141
|
-
//Dataset singolo, i dati sono registrati a livello di chart, creo il tooltip che permette di vederli tutti insieme
|
|
142
|
-
//altrimenti assegno i dati della serie direttamente alla serie
|
|
143
|
-
if (singleDataSet) {
|
|
144
|
-
series.tooltip.getFillFromObject = false;
|
|
145
|
-
series.tooltip.background.fill = am4core.color("#eee");
|
|
146
|
-
series.tooltip.label.fill = am4core.color("#00");
|
|
147
|
-
series.tooltip.defaultState.transitionDuration = 0;
|
|
148
|
-
series.tooltip.hiddenState.transitionDuration = 0;
|
|
149
|
-
//Utilizzo il mio dateService per la formattazione della data in modo che non debba mai gestire n formati fra n librerie... bellissimo
|
|
150
|
-
series.dateFormatter.format = (source) => {
|
|
151
|
-
if (interval && finalInstant) {
|
|
152
|
-
let timepart = null;
|
|
153
|
-
switch (interval.timeunit) {
|
|
154
|
-
case "hour":
|
|
155
|
-
timepart = 'day';
|
|
156
|
-
break;
|
|
157
|
-
case "minute":
|
|
158
|
-
timepart = 'hour';
|
|
159
|
-
break;
|
|
160
|
-
case "second":
|
|
161
|
-
timepart = 'minute';
|
|
162
|
-
break;
|
|
163
|
-
}
|
|
164
|
-
if (timepart)
|
|
165
|
-
return this.dateExts.adjustDateToFinalInstant(source, timepart, interval ? interval.timeunit == "second" : false);
|
|
166
|
-
}
|
|
167
|
-
else
|
|
168
|
-
return this.dateExts.getFormatted(source, false, interval ? interval.timeunit == "second" : false);
|
|
169
|
-
};
|
|
170
|
-
series.adapter.add("tooltipText", () => {
|
|
171
|
-
var text = "[bold]{dateX.formatDate()}[/]\n";
|
|
172
|
-
this.ChartInstance.series.each((item) => {
|
|
173
|
-
let uom = " [font-style: italic]" + series.dataFields.measureUnit || "" + "[/]";
|
|
174
|
-
text += "[" + item.stroke.hex + "]●[/] " + item.name + ": [bold]{" + item.dataFields.valueY + "}[/]" + uom + "\n";
|
|
175
|
-
});
|
|
176
|
-
return text;
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
else
|
|
180
|
-
series.data = s.values;
|
|
181
|
-
let segment = series.segments.template;
|
|
182
|
-
let hoverState = segment.states.create("hover");
|
|
183
|
-
hoverState.properties.strokeWidth = ((_b = settings === null || settings === void 0 ? void 0 : settings.StrokeSize) !== null && _b !== void 0 ? _b : 1) + 1;
|
|
184
|
-
let dimmed = segment.states.create("dimmed");
|
|
185
|
-
dimmed.properties.stroke = am4core.color("#dadada");
|
|
186
|
-
//Se la serie ha un colore, uso quello, altrimenti pesco dai colori di default andando in ordine
|
|
187
|
-
if (s.color)
|
|
188
|
-
seriesColors.push(am4core.color(s.color));
|
|
189
|
-
else {
|
|
190
|
-
seriesColors.push(ChartInstanceCasted.colors.list[defaultIndex % ChartInstanceCasted.colors.list.length]);
|
|
191
|
-
defaultIndex++;
|
|
192
|
-
}
|
|
193
|
-
seriesToPush.push(series);
|
|
194
|
-
});
|
|
195
|
-
ChartInstanceCasted.colors.list = seriesColors;
|
|
196
|
-
//Scrivo le serie nel grafico
|
|
197
|
-
seriesToPush.forEach(s => {
|
|
198
|
-
ChartInstanceCasted.series.push(s);
|
|
199
|
-
if (showTimeline)
|
|
200
|
-
ChartInstanceCasted.scrollbarX.series.push(s);
|
|
201
|
-
});
|
|
202
|
-
if (settings.Legend) {
|
|
203
|
-
this.ChartInstance.legend = new am4charts.Legend();
|
|
204
|
-
this.ChartInstance.legend.position = (_g = settings === null || settings === void 0 ? void 0 : settings.LegendPosition) !== null && _g !== void 0 ? _g : 'right';
|
|
205
|
-
this.ChartInstance.legend.scrollable = true;
|
|
206
|
-
this.ChartInstance.legend.itemContainers.template.tooltipText = "{name}";
|
|
207
|
-
this.ChartInstance.legend.itemContainers.template.events.on("over", (event) => { this.processOver(event.target.dataItem.dataContext, fill); });
|
|
208
|
-
this.ChartInstance.legend.itemContainers.template.events.on("out", (event) => { this.processOut(fill); });
|
|
209
|
-
if (settings.LegendPadding) {
|
|
210
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
211
|
-
template.paddingTop = (_h = settings.LegendPadding.top) !== null && _h !== void 0 ? _h : 0;
|
|
212
|
-
template.paddingBottom = (_j = settings.LegendPadding.bottom) !== null && _j !== void 0 ? _j : 0;
|
|
213
|
-
template.paddingLeft = (_k = settings.LegendPadding.left) !== null && _k !== void 0 ? _k : 0;
|
|
214
|
-
template.paddingRight = (_l = settings.LegendPadding.right) !== null && _l !== void 0 ? _l : 0;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
this.ChartInstance.cursor = new am4charts.XYCursor();
|
|
218
|
-
//Prove******************************************************************************************************************************
|
|
219
|
-
// this.ChartInstance.cursor.events.on("cursorpositionchanged", (ev) => {
|
|
220
|
-
// //var value = dateAxis.positionToDate(dateAxis.toAxisPosition(ev.target.xPosition));
|
|
221
|
-
// var dt = dateAxis.series.values.find(t => t.dataItem.values.dateX);
|
|
222
|
-
// if (dt && dt.dataItem) {
|
|
223
|
-
// console.log(dt.dataItem.values);
|
|
224
|
-
// // this.ChartInstance.tooltipText = dt;
|
|
225
|
-
// }
|
|
226
|
-
// else {
|
|
227
|
-
// this.ChartInstance.tooltipText = "";
|
|
228
|
-
// }
|
|
229
|
-
// });
|
|
230
|
-
//******************************************************************************************************************************
|
|
231
|
-
this.ChartInstance.cursor.xAxis = dateAxis;
|
|
232
|
-
this.ChartInstance.cursor.yAxis = yAxis;
|
|
233
|
-
if (singleDataSet)
|
|
234
|
-
this.ChartInstance.cursor.maxTooltipDistance = -1;
|
|
235
|
-
//TODO: Cercare di capire perché è figlio di puttana......
|
|
236
|
-
dateAxis.events.on("startchanged", t => this.emitSelectionChanged(t, settings));
|
|
237
|
-
dateAxis.events.on("endchanged", t => this.emitSelectionChanged(t, settings));
|
|
238
|
-
return this;
|
|
239
|
-
}
|
|
240
|
-
/** @ignore */
|
|
241
|
-
refreshData(data) {
|
|
242
|
-
//TODO:IMPL
|
|
243
|
-
}
|
|
244
|
-
/** @ignore */
|
|
245
|
-
emitSelectionChanged(ev, settings) {
|
|
246
|
-
if (settings.OnSelectionChangedCallback) {
|
|
247
|
-
this.throttla("selchange", () => {
|
|
248
|
-
var axis = ev.target;
|
|
249
|
-
var start = new Date(axis.minZoomed);
|
|
250
|
-
var end = new Date(axis.maxZoomed);
|
|
251
|
-
var initial = axis.min == axis.minZoomed && axis.max == axis.maxZoomed;
|
|
252
|
-
settings.OnSelectionChangedCallback({ from: start, to: end, initial: initial });
|
|
253
|
-
}, 150);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
/** @ignore */
|
|
257
|
-
processOver(hoveredSeries, fill) {
|
|
258
|
-
hoveredSeries.toFront();
|
|
259
|
-
hoveredSeries.segments.each((segment) => {
|
|
260
|
-
segment.setState("hover");
|
|
261
|
-
if (!fill)
|
|
262
|
-
segment.fillSprite.fillOpacity = this.OpacityOnSelected;
|
|
263
|
-
});
|
|
264
|
-
if (!fill)
|
|
265
|
-
hoveredSeries.legendDataItem.marker.children.getIndex(1).fillOpacity = this.OpacityOnSelected;
|
|
266
|
-
this.ChartInstance.series.each((series) => {
|
|
267
|
-
if (series != hoveredSeries)
|
|
268
|
-
series.segments.each((segment) => {
|
|
269
|
-
segment.setState("dimmed");
|
|
270
|
-
if (!fill)
|
|
271
|
-
segment.fillSprite.fillOpacity = 0;
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
/** @ignore */
|
|
276
|
-
processOut(fill) {
|
|
277
|
-
this.ChartInstance.series.each((series) => {
|
|
278
|
-
series.segments.each((segment) => {
|
|
279
|
-
segment.setState("default");
|
|
280
|
-
if (!fill)
|
|
281
|
-
segment.fillSprite.fillOpacity = 0;
|
|
282
|
-
});
|
|
283
|
-
if (!fill)
|
|
284
|
-
series.legendDataItem.marker.children.getIndex(1).fillOpacity = 0;
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
/** @ignore */
|
|
288
|
-
throttla(id, func, throttleTime) {
|
|
289
|
-
//Se ho la funzione che vuole eseguire ripulisco quel timeout
|
|
290
|
-
if (this.executionTimers[id])
|
|
291
|
-
clearTimeout(this.executionTimers[id]);
|
|
292
|
-
//Ricreo il timeout per eseguire quella funzione dopo throttleTime millisecondi
|
|
293
|
-
this.executionTimers[id] = setTimeout(() => { func(); this.executionTimers[id] = null; }, throttleTime);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluZUNoYXJ0U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLWNoYXJ0cy9zcmMvbGliL3NlcnZpY2VzL2NsYXNzZXMvTGluZUNoYXJ0U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEtBQUssT0FBTyxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxTQUFTLE1BQU0sNEJBQTRCLENBQUM7QUFFeEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUXpCLGNBQWM7SUFDZCxZQUFtQixPQUFvQixFQUFVLFFBQXFCO1FBQW5ELFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFhO1FBTnRFLGNBQWM7UUFDTix3QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDM0MsY0FBYztRQUNOLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQXNUeEMsdUdBQXVHO1FBQ3ZHLCtEQUErRDtRQUMvRCxjQUFjO1FBQ04sb0JBQWUsR0FBNkIsRUFBRSxDQUFDO0lBdFRtQixDQUFDO0lBRTNFOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQXlCLEVBQUUsUUFBMkI7O1FBQ3BFLElBQUksYUFBYSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEcsSUFBSSxTQUFTLEdBQUcsTUFBQSxRQUFRLENBQUMscUJBQXFCLG1DQUFJLElBQUksQ0FBQztRQUN2RCxJQUFJLGFBQWEsR0FBRyxNQUFBLFFBQVEsQ0FBQyxhQUFhLG1DQUFJLEtBQUssQ0FBQztRQUNwRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLGFBQVIs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Q0wsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUk7Z0JBQ0wsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQU1ELGNBQWM7SUFDTixRQUFRLENBQUMsRUFBVSxFQUFFLElBQWMsRUFBRSxZQUFvQjtRQUM3RCw2REFBNkQ7UUFDN0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN4QixZQUFZLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTNDLCtFQUErRTtRQUMvRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzVHLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJy4vYmFzZS9JQmFzZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0RGF0YSB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhJztcclxuaW1wb3J0IHsgTGluZUNoYXJ0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2V0dGluZ3MnO1xyXG5cclxuaW1wb3J0ICogYXMgYW00Y29yZSBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIGFtNGNoYXJ0cyBmcm9tIFwiQGFtY2hhcnRzL2FtY2hhcnRzNC9jaGFydHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgaWwgY3VpIHVuaWNvIHNjb3BvIMOoIGdlc3RpcmUgaWwgc2V0dXAgZSByZW5kZXJpbmcgZGkgdW4gTGluZUNoYXJ0XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGluZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuWFlDaGFydD57XHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIENoYXJ0SW5zdGFuY2U6IGFtNGNoYXJ0cy5YWUNoYXJ0O1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgRGF0YUdyb3VwQnVja2V0U2l6ZTogbnVtYmVyID0gMTUwMDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIE9wYWNpdHlPblNlbGVjdGVkOiBudW1iZXIgPSAwLjM7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlciwgcHJpdmF0ZSBkYXRlRXh0czogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0b2RvIGNoZSBkYXRhIHVuYSBjb3BwaWEgRGF0aSAtIEltcG9zdGF6aW9uaSBsaSB1dGlsaXp6YSBwZXIgY3JlYXJlIGUgdmlzdWFsaXp6YXJlIHVuIExpbmVDaGFydFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ3JhcGhpY2F0ZShkYXRhOiBMaW5lQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogTGluZUNoYXJ0U2V0dGluZ3MpOiBJQmFzZVNlcnZpY2U8YW00Y2hhcnRzLlhZQ2hhcnQ+IHtcclxuICAgICAgICBsZXQgZGF0YUNvbnZlcnRlZDogTGluZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JMaW5lQ2hhcnQoZGF0YSkgOiBkYXRhO1xyXG4gICAgICAgIGxldCB0aHJlc2hvbGQgPSBzZXR0aW5ncy5EYXRhR3JvdXBpbmdUaHJlc2hvbGQgPz8gMzAwMDtcclxuICAgICAgICBsZXQgc2luZ2xlRGF0YVNldCA9IHNldHRpbmdzLk1lcmdlRGF0YXNldHMgPz8gZmFsc2U7XHJcbiAgICAgICAgbGV0IHNob3dUaWNrcyA9IHNldHRpbmdzLlNob3dUaWNrcyA9PSBudWxsID8gdHJ1ZSA6IHNldHRpbmdzPy5TaG93VGlja3M7XHJcbiAgICAgICAgbGV0IGRhdGFTaG91bGRCZUdyb3VwZWQgPSBNYXRoLm1heCguLi5kYXRhQ29udmVydGVkLnNlcmllcy5tYXAodCA9PiB0LnZhbHVlcy5sZW5ndGgpKSA+IHRocmVzaG9sZDtcclxuICAgICAgICBsZXQgc2hvd1RpbWVsaW5lID0gc2V0dGluZ3MuVGltZWxpbmUgfHwgZGF0YVNob3VsZEJlR3JvdXBlZDtcclxuICAgICAgICBsZXQgc2VyaWVzV2l0aEludGVydmFsID0gZGF0YUNvbnZlcnRlZC5zZXJpZXMuc29tZSh0ID0+IHQuaW50ZXJ2YWwpO1xyXG4gICAgICAgIGxldCBpbnRlcnZhbCA9IHNlcmllc1dpdGhJbnRlcnZhbCA/IGRhdGFDb252ZXJ0ZWQuc2VyaWVzLmZpbmQodCA9PiB0LmludGVydmFsKS5pbnRlcnZhbCA6IG51bGw7XHJcbiAgICAgICAgbGV0IGdhcHNBbGxvd2VkID0gc2V0dGluZ3M/LkFsbG93R2FwcyA9PSBudWxsID8gc2VyaWVzV2l0aEludGVydmFsIDogc2V0dGluZ3M/LkFsbG93R2FwcztcclxuICAgICAgICBsZXQgZmluYWxJbnN0YW50ID0gc2V0dGluZ3M/LkZpbmFsSW5zdGFudHMgPz8gdHJ1ZTtcclxuICAgICAgICBsZXQgZmlsbCA9IHNldHRpbmdzPy5GaWxsID8/IGZhbHNlO1xyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIGFtNGNoYXJ0cy5YWUNoYXJ0KTtcclxuICAgICAgICBsZXQgQ2hhcnRJbnN0YW5jZUNhc3RlZCA9IDxhbTRjaGFydHMuWFlDaGFydD50aGlzLkNoYXJ0SW5zdGFuY2U7XHJcblxyXG4gICAgICAgIGxldCB5QXhpcyA9IENoYXJ0SW5zdGFuY2VDYXN0ZWQueUF4ZXMucHVzaChuZXcgYW00Y2hhcnRzLlZhbHVlQXhpcygpKTtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuWUF4aXNUaXRsZSkge1xyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS50ZXh0ID0gc2V0dGluZ3MuWUF4aXNUaXRsZVxyXG4gICAgICAgICAgICB5QXhpcy50aXRsZS5mb250V2VpZ2h0ID0gXCJib2xkXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTWluKVxyXG4gICAgICAgICAgICB5QXhpcy5taW4gPSBzZXR0aW5ncy5NaW47XHJcbiAgICAgICAgaWYgKHNldHRpbmdzLk1heClcclxuICAgICAgICAgICAgeUF4aXMubWF4ID0gc2V0dGluZ3MuTWF4O1xyXG5cclxuICAgICAgICBsZXQgZGF0ZUF4aXMgPSBDaGFydEluc3RhbmNlQ2FzdGVkLnhBeGVzLnB1c2gobmV3IGFtNGNoYXJ0cy5EYXRlQXhpcygpKTtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLlhBeGlzVGl0bGUpIHtcclxuICAgICAgICAgICAgZGF0ZUF4aXMudGl0bGUudGV4dCA9IHNldHRpbmdzLlhBeGlzVGl0bGVcclxuICAgICAgICAgICAgZGF0ZUF4aXMudGl0bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNob3dUaWNrcykge1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBkYXRlQXhpcy5yZW5kZXJlci50aWNrcy50ZW1wbGF0ZS5zdHJva2VPcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiM0OTVDNDNcIik7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLnN0cm9rZVdpZHRoID0gMjtcclxuICAgICAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIudGlja3MudGVtcGxhdGUubGVuZ3RoID0gMTA7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLnRpY2tzLnRlbXBsYXRlLmxvY2F0aW9uID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRhdGVBeGlzLnJlbmRlcmVyLm1pbkdyaWREaXN0YW5jZSA9IHNldHRpbmdzPy5NaW5HcmlkRGlzdGFuY2UgPz8gNTA7XHJcbiAgICAgICAgZGF0ZUF4aXMucmVuZGVyZXIuZ3JpZC50ZW1wbGF0ZS5sb2NhdGlvbiA9IDA7XHJcbiAgICAgICAgZGF0ZUF4aXMubWluWm9vbUNvdW50ID0gNTtcclxuICAgICAgICBkYXRlQXhpcy5ncm91cERhdGEgPSBkYXRhU2hvdWxkQmVHcm91cGVkO1xyXG4gICAgICAgIGRhdGVBeGlzLmdyb3VwQ291bnQgPSBzZXR0aW5ncy5EYXRhR3JvdXBCdWNrZXRTaXplID8/IHRoaXMuRGF0YUdyb3VwQnVja2V0U2l6ZTtcclxuXHJcbiAgICAgICAgLy9TZSBobyBhbG1lbm8gdW5hIHNlcmllIGFkIGludGVydmFsbG8gZSBpIHNldHRpbmdzIG5vbiBtaSBpbXBlZGlzY29ubyBlc3BsaWNpdGFtZW50ZSBkaSB1c2FyZSBpIGdhcHMsIHZpc3VhbGl6em8gaSBkYXRpIGNvbCBnYXBcclxuXHJcbiAgICAgICAgaWYgKGdhcHNBbGxvd2VkKSB7XHJcbiAgICAgICAgICAgIGlmICghc2VyaWVzV2l0aEludGVydmFsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUGVyIHV0aWxpenphcmUgbGEgZnVuemlvbmFsaXTDoCBkZWkgZ2FwIMOoIG9iYmxpZ2F0b3JpbyBkZWZpbmlyZSB1biBpbnRlcnZhbGxvIG5lbGxlIHNlcmllIGRlbCBncmFmaWNvXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGRhdGVBeGlzLmJhc2VJbnRlcnZhbCA9IHsgY291bnQ6IGludGVydmFsLmNvdW50LCB0aW1lVW5pdDogaW50ZXJ2YWwudGltZXVuaXQgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNob3dUaW1lbGluZSlcclxuICAgICAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5zY3JvbGxiYXJYID0gbmV3IGFtNGNoYXJ0cy5YWUNoYXJ0U2Nyb2xsYmFyKCk7XHJcblxyXG4gICAgICAgIGxldCBzZXJpZXNUb1B1c2ggPSBbXTtcclxuICAgICAgICBsZXQgc2VyaWVzQ29sb3JzOiBhbTRjb3JlLkNvbG9yW10gPSBbXTtcclxuICAgICAgICBsZXQgZGVmYXVsdEluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgLy8tLSBHZW5lcmF6aW9uZSBkaSB1biB1bmljbyBkYXRhc2V0IGludmVjZSBjaGUgTiwgcGVyIHBvdGVyIGdlc3RpcmUgdW4gdW5pY28gdG9vbHRpcFxyXG4gICAgICAgIGlmIChzaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgIGxldCBkdG86IHsgW2luZGV4OiBudW1iZXJdOiB7IFtzaW5kZXg6IHN0cmluZ106IG51bWJlciB9IH0gPSB7fTtcclxuICAgICAgICAgICAgZGF0YUNvbnZlcnRlZC5zZXJpZXMuZm9yRWFjaCgodnMsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhaXRlbSA9IHZzLnZhbHVlc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXhlciA9IG5ldyBEYXRlKGRhdGFpdGVtLmQpLnZhbHVlT2YoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkdG9baW5kZXhlcl0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR0b1tpbmRleGVyXSA9IHt9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBkdG9baW5kZXhlcl1bJ3YnICsgaW5kZXhdID0gZGF0YWl0ZW0udjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0ZXMgPSBPYmplY3Qua2V5cyhkdG8pO1xyXG4gICAgICAgICAgICBsZXQgc2luZ2xlRFMgPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlczogeyBbc2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IGR0b1tkYXRlc1tpXV07XHJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IHsgZDogbmV3IERhdGUocGFyc2VJbnQoZGF0ZXNbaV0pKSB9XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHZhbHMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaWkgPSAwOyBpaSA8IHZhbHMubGVuZ3RoOyBpaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlcmllcyA9IHZhbHNbaWldO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzaW5nbGVWYWwgPSB2YWx1ZXNbc2VyaWVzXTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtW3Nlcmllc10gPSBzaW5nbGVWYWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzaW5nbGVEUy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5kYXRhID0gc2luZ2xlRFM7XHJcbiAgICAgICAgICAgIGRhdGVBeGlzLmN1cnNvclRvb2x0aXBFbmFibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vLS0gRmluZSBnZW5lcmF6aW9uZVxyXG5cclxuICAgICAgICBkYXRhQ29udmVydGVkLnNlcmllcy5mb3JFYWNoKChzLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocy52YWx1ZXNbMF0gJiYgIShzLnZhbHVlc1swXS5kIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgcy52YWx1ZXMubGVuZ3RoOyB2KyspXHJcbiAgICAgICAgICAgICAgICAgICAgcy52YWx1ZXNbdl0uZCA9IG5ldyBEYXRlKHMudmFsdWVzW3ZdLmQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgY29ycmVjdE9yZGVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgdmFyIHByZXZEYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCBzLnZhbHVlcy5sZW5ndGg7IHYrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2RGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBwcmV2RGF0ZSA9IHMudmFsdWVzW3ZdLmQ7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMudmFsdWVzW3ZdLmQgPCBwcmV2RGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3JyZWN0T3JkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWNvcnJlY3RPcmRlcilcclxuICAgICAgICAgICAgICAgIHMudmFsdWVzLnNvcnQoKGQxLCBkMikgPT4gZDEuZC5nZXRUaW1lKCkgLSBkMi5kLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgc2VyaWVzOiBhbTRjaGFydHMuU3RlcExpbmVTZXJpZXMgfCBhbTRjaGFydHMuTGluZVNlcmllcyA9IHNldHRpbmdzPy5TdGVwID8gbmV3IGFtNGNoYXJ0cy5TdGVwTGluZVNlcmllcygpIDogbmV3IGFtNGNoYXJ0cy5MaW5lU2VyaWVzKCk7XHJcbiAgICAgICAgICAgIHNlcmllcy5kYXRhRmllbGRzLnZhbHVlWSA9IFwidlwiICsgKHNpbmdsZURhdGFTZXQgPyBpbmRleCA6IFwiXCIpO1xyXG4gICAgICAgICAgICBzZXJpZXMuZGF0YUZpZWxkcy5kYXRlWCA9IFwiZFwiO1xyXG4gICAgICAgICAgICAoPGFueT5zZXJpZXMuZGF0YUZpZWxkcykubWVhc3VyZVVuaXQgPSBzLnVvbTtcclxuICAgICAgICAgICAgc2VyaWVzLm5hbWUgPSBzLm5hbWU7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdHJva2VXaWR0aCA9IHNldHRpbmdzPy5TdHJva2VTaXplID8/IDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5jb25uZWN0ID0gIWdhcHNBbGxvd2VkO1xyXG4gICAgICAgICAgICBzZXJpZXMubWluQnVsbGV0RGlzdGFuY2UgPSAxMDtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXBUZXh0ID0gc2luZ2xlRGF0YVNldCA/IFwiXCIgOiBcIntuYW1lfTogW2JvbGRde3ZhbHVlWX1bL11cIjtcclxuICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAucG9pbnRlck9yaWVudGF0aW9uID0gXCJ2ZXJ0aWNhbFwiO1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5iYWNrZ3JvdW5kLmZpbGxPcGFjaXR5ID0gMC41O1xyXG4gICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5wYWRkaW5nKDEyLCAxMiwgMTIsIDEyKTtcclxuICAgICAgICAgICAgc2VyaWVzLmZpbGxPcGFjaXR5ID0gZmlsbCA/IDEgOiAwLjAwMDE7XHJcbiAgICAgICAgICAgIHNlcmllcy5zdGFja2VkID0gZmlsbDtcclxuXHJcbiAgICAgICAgICAgIC8vRGF0YXNldCBzaW5nb2xvLCBpIGRhdGkgc29ubyByZWdpc3RyYXRpIGEgbGl2ZWxsbyBkaSBjaGFydCwgY3JlbyBpbCB0b29sdGlwIGNoZSBwZXJtZXR0ZSBkaSB2ZWRlcmxpIHR1dHRpIGluc2llbWVcclxuICAgICAgICAgICAgLy9hbHRyaW1lbnRpIGFzc2Vnbm8gaSBkYXRpIGRlbGxhIHNlcmllIGRpcmV0dGFtZW50ZSBhbGxhIHNlcmllXHJcbiAgICAgICAgICAgIGlmIChzaW5nbGVEYXRhU2V0KSB7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5nZXRGaWxsRnJvbU9iamVjdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuYmFja2dyb3VuZC5maWxsID0gYW00Y29yZS5jb2xvcihcIiNlZWVcIik7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXMudG9vbHRpcC5sYWJlbC5maWxsID0gYW00Y29yZS5jb2xvcihcIiMwMFwiKTtcclxuICAgICAgICAgICAgICAgIHNlcmllcy50b29sdGlwLmRlZmF1bHRTdGF0ZS50cmFuc2l0aW9uRHVyYXRpb24gPSAwO1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLnRvb2x0aXAuaGlkZGVuU3RhdGUudHJhbnNpdGlvbkR1cmF0aW9uID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICAvL1V0aWxpenpvIGlsIG1pbyBkYXRlU2VydmljZSBwZXIgbGEgZm9ybWF0dGF6aW9uZSBkZWxsYSBkYXRhIGluIG1vZG8gY2hlIG5vbiBkZWJiYSBtYWkgZ2VzdGlyZSBuIGZvcm1hdGkgZnJhIG4gbGlicmVyaWUuLi4gYmVsbGlzc2ltb1xyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmRhdGVGb3JtYXR0ZXIuZm9ybWF0ID0gKHNvdXJjZTogRGF0ZSk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGludGVydmFsICYmIGZpbmFsSW5zdGFudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGltZXBhcnQ6IFwibWludXRlXCIgfCBcImhvdXJcIiB8IFwiZGF5XCIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGludGVydmFsLnRpbWV1bml0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwiaG91clwiOiB0aW1lcGFydCA9ICdkYXknOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW51dGVcIjogdGltZXBhcnQgPSAnaG91cic7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInNlY29uZFwiOiB0aW1lcGFydCA9ICdtaW51dGUnOyBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGltZXBhcnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlRXh0cy5hZGp1c3REYXRlVG9GaW5hbEluc3RhbnQoc291cmNlLCB0aW1lcGFydCwgaW50ZXJ2YWwgPyBpbnRlcnZhbC50aW1ldW5pdCA9PSBcInNlY29uZFwiIDogZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVFeHRzLmdldEZvcm1hdHRlZChzb3VyY2UsIGZhbHNlLCBpbnRlcnZhbCA/IGludGVydmFsLnRpbWV1bml0ID09IFwic2Vjb25kXCIgOiBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2VyaWVzLmFkYXB0ZXIpLmFkZChcInRvb2x0aXBUZXh0XCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IFwiW2JvbGRde2RhdGVYLmZvcm1hdERhdGUoKX1bL11cXG5cIjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2Uuc2VyaWVzLmVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVvbSA9IFwiIFtmb250LXN0eWxlOiBpdGFsaWNdXCIgKyAoPGFueT5zZXJpZXMuZGF0YUZpZWxkcykubWVhc3VyZVVuaXQgfHwgXCJcIiArIFwiWy9dXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgKz0gXCJbXCIgKyAoPGFueT5pdGVtLnN0cm9rZSkuaGV4ICsgXCJd4pePWy9dIFwiICsgaXRlbS5uYW1lICsgXCI6IFtib2xkXXtcIiArIGl0ZW0uZGF0YUZpZWxkcy52YWx1ZVkgKyBcIn1bL11cIiArIHVvbSArIFwiXFxuXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMuZGF0YSA9IHMudmFsdWVzO1xyXG5cclxuICAgICAgICAgICAgbGV0IHNlZ21lbnQgPSBzZXJpZXMuc2VnbWVudHMudGVtcGxhdGU7XHJcblxyXG4gICAgICAgICAgICBsZXQgaG92ZXJTdGF0ZSA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImhvdmVyXCIpO1xyXG4gICAgICAgICAgICBob3ZlclN0YXRlLnByb3BlcnRpZXMuc3Ryb2tlV2lkdGggPSAoc2V0dGluZ3M/LlN0cm9rZVNpemUgPz8gMSkgKyAxO1xyXG5cclxuICAgICAgICAgICAgbGV0IGRpbW1lZCA9IHNlZ21lbnQuc3RhdGVzLmNyZWF0ZShcImRpbW1lZFwiKTtcclxuICAgICAgICAgICAgZGltbWVkLnByb3BlcnRpZXMuc3Ryb2tlID0gYW00Y29yZS5jb2xvcihcIiNkYWRhZGFcIik7XHJcblxyXG4gICAgICAgICAgICAvL1NlIGxhIHNlcmllIGhhIHVuIGNvbG9yZSwgdXNvIHF1ZWxsbywgYWx0cmltZW50aSBwZXNjbyBkYWkgY29sb3JpIGRpIGRlZmF1bHQgYW5kYW5kbyBpbiBvcmRpbmVcclxuICAgICAgICAgICAgaWYgKHMuY29sb3IpXHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChhbTRjb3JlLmNvbG9yKHMuY29sb3IpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXJpZXNDb2xvcnMucHVzaChDaGFydEluc3RhbmNlQ2FzdGVkLmNvbG9ycy5saXN0W2RlZmF1bHRJbmRleCAlIENoYXJ0SW5zdGFuY2VDYXN0ZWQuY29sb3JzLmxpc3QubGVuZ3RoXSlcclxuICAgICAgICAgICAgICAgIGRlZmF1bHRJbmRleCsrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXJpZXNUb1B1c2gucHVzaChzZXJpZXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgQ2hhcnRJbnN0YW5jZUNhc3RlZC5jb2xvcnMubGlzdCA9IHNlcmllc0NvbG9ycztcclxuICAgICAgICAvL1Njcml2byBsZSBzZXJpZSBuZWwgZ3JhZmljb1xyXG4gICAgICAgIHNlcmllc1RvUHVzaC5mb3JFYWNoKHMgPT4ge1xyXG4gICAgICAgICAgICBDaGFydEluc3RhbmNlQ2FzdGVkLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgICAgICBpZiAoc2hvd1RpbWVsaW5lKVxyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuWFlDaGFydFNjcm9sbGJhcj5DaGFydEluc3RhbmNlQ2FzdGVkLnNjcm9sbGJhclgpLnNlcmllcy5wdXNoKHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQgPSBuZXcgYW00Y2hhcnRzLkxlZ2VuZCgpO1xyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLnBvc2l0aW9uID0gc2V0dGluZ3M/LkxlZ2VuZFBvc2l0aW9uID8/ICdyaWdodCc7XHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5sZWdlbmQuc2Nyb2xsYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UubGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvb2x0aXBUZXh0ID0gXCJ7bmFtZX1cIjtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdmVyXCIsIChldmVudCkgPT4geyB0aGlzLnByb2Nlc3NPdmVyKDxhbTRjaGFydHMuTGluZVNlcmllcz5ldmVudC50YXJnZXQuZGF0YUl0ZW0uZGF0YUNvbnRleHQsIGZpbGwpOyB9KTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS5ldmVudHMub24oXCJvdXRcIiwgKGV2ZW50KSA9PiB7IHRoaXMucHJvY2Vzc091dChmaWxsKTsgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yID0gbmV3IGFtNGNoYXJ0cy5YWUN1cnNvcigpO1xyXG5cclxuICAgICAgICAvL1Byb3ZlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgICAgLy8gdGhpcy5DaGFydEluc3RhbmNlLmN1cnNvci5ldmVudHMub24oXCJjdXJzb3Jwb3NpdGlvbmNoYW5nZWRcIiwgKGV2KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vdmFyIHZhbHVlID0gZGF0ZUF4aXMucG9zaXRpb25Ub0RhdGUoZGF0ZUF4aXMudG9BeGlzUG9zaXRpb24oZXYudGFyZ2V0LnhQb3NpdGlvbikpO1xyXG4gICAgICAgIC8vICAgICB2YXIgZHQgPSBkYXRlQXhpcy5zZXJpZXMudmFsdWVzLmZpbmQodCA9PiB0LmRhdGFJdGVtLnZhbHVlcy5kYXRlWCk7XHJcbiAgICAgICAgLy8gICAgIGlmIChkdCAmJiBkdC5kYXRhSXRlbSkge1xyXG4gICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coZHQuZGF0YUl0ZW0udmFsdWVzKTtcclxuICAgICAgICAvLyAgICAgICAgIC8vIHRoaXMuQ2hhcnRJbnN0YW5jZS50b29sdGlwVGV4dCA9IGR0O1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGVsc2Uge1xyXG4gICAgICAgIC8vICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnRvb2x0aXBUZXh0ID0gXCJcIjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IueEF4aXMgPSBkYXRlQXhpcztcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuY3Vyc29yLnlBeGlzID0geUF4aXM7XHJcbiAgICAgICAgaWYgKHNpbmdsZURhdGFTZXQpXHJcbiAgICAgICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5jdXJzb3IubWF4VG9vbHRpcERpc3RhbmNlID0gLTE7XHJcblxyXG4gICAgICAgIC8vVE9ETzogQ2VyY2FyZSBkaSBjYXBpcmUgcGVyY2jDqSDDqCBmaWdsaW8gZGkgcHV0dGFuYS4uLi4uLlxyXG4gICAgICAgIGRhdGVBeGlzLmV2ZW50cy5vbihcInN0YXJ0Y2hhbmdlZFwiLCB0ID0+IHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWQodCwgc2V0dGluZ3MpKTtcclxuICAgICAgICBkYXRlQXhpcy5ldmVudHMub24oXCJlbmRjaGFuZ2VkXCIsIHQgPT4gdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZCh0LCBzZXR0aW5ncykpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwdWJsaWMgcmVmcmVzaERhdGEoZGF0YTogTGluZUNoYXJ0RGF0YSB8IGFueSkge1xyXG4gICAgICAgIC8vVE9ETzpJTVBMXHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZWQoZXYsIHNldHRpbmdzKSB7XHJcbiAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnRocm90dGxhKFwic2VsY2hhbmdlXCIsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBheGlzID0gPGFtNGNoYXJ0cy5EYXRlQXhpcz5ldi50YXJnZXRcclxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKGF4aXMubWluWm9vbWVkKTtcclxuICAgICAgICAgICAgICAgIHZhciBlbmQgPSBuZXcgRGF0ZShheGlzLm1heFpvb21lZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgaW5pdGlhbCA9IGF4aXMubWluID09IGF4aXMubWluWm9vbWVkICYmIGF4aXMubWF4ID09IGF4aXMubWF4Wm9vbWVkO1xyXG4gICAgICAgICAgICAgICAgKDxhbnk+c2V0dGluZ3MpLk9uU2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKHsgZnJvbTogc3RhcnQsIHRvOiBlbmQsIGluaXRpYWw6IGluaXRpYWwgfSk7XHJcbiAgICAgICAgICAgIH0sIDE1MClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgcHJvY2Vzc092ZXIoaG92ZXJlZFNlcmllczogYW00Y2hhcnRzLkxpbmVTZXJpZXMsIGZpbGw6IGJvb2xlYW4pIHtcclxuICAgICAgICBob3ZlcmVkU2VyaWVzLnRvRnJvbnQoKTtcclxuXHJcbiAgICAgICAgaG92ZXJlZFNlcmllcy5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHNlZ21lbnQuc2V0U3RhdGUoXCJob3ZlclwiKTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWZpbGwpXHJcbiAgICAgICAgICAgIGhvdmVyZWRTZXJpZXMubGVnZW5kRGF0YUl0ZW0ubWFya2VyLmNoaWxkcmVuLmdldEluZGV4KDEpLmZpbGxPcGFjaXR5ID0gdGhpcy5PcGFjaXR5T25TZWxlY3RlZDtcclxuXHJcbiAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLnNlcmllcy5lYWNoKChzZXJpZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNlcmllcyAhPSBob3ZlcmVkU2VyaWVzKVxyXG4gICAgICAgICAgICAgICAgKDxhbTRjaGFydHMuTGluZVNlcmllcz5zZXJpZXMpLnNlZ21lbnRzLmVhY2goKHNlZ21lbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGltbWVkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5maWxsU3ByaXRlLmZpbGxPcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHByb2Nlc3NPdXQoZmlsbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMuZWFjaCgoc2VyaWVzKSA9PiB7XHJcbiAgICAgICAgICAgICg8YW00Y2hhcnRzLkxpbmVTZXJpZXM+c2VyaWVzKS5zZWdtZW50cy5lYWNoKChzZWdtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZWdtZW50LnNldFN0YXRlKFwiZGVmYXVsdFwiKTtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsbClcclxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZpbGxTcHJpdGUuZmlsbE9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCFmaWxsKVxyXG4gICAgICAgICAgICAgICAgc2VyaWVzLmxlZ2VuZERhdGFJdGVtLm1hcmtlci5jaGlsZHJlbi5nZXRJbmRleCgxKS5maWxsT3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8qKioqKioqKioqKioqKioqKioqKiBGdW56aW9uZSBkaSB0aHJvdHRsaW5nIHBlciBub24gc3BhbW1hcmUgcmljaGllc3RlIGluIGNhc28gZGkgYW5pbWF6aW9uaSBhdHRpdmF0ZVxyXG4gICAgLy9UT0RPOiBzcG9zdGFybGEgaW4gdW4gbWV0b2RvIGRpIHV0aWxpdMOgIChlc2ZhZW56YS9leHRlbnNpb25zKVxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHByaXZhdGUgZXhlY3V0aW9uVGltZXJzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIHRocm90dGxhKGlkOiBzdHJpbmcsIGZ1bmM6IEZ1bmN0aW9uLCB0aHJvdHRsZVRpbWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIC8vU2UgaG8gbGEgZnVuemlvbmUgY2hlIHZ1b2xlIGVzZWd1aXJlIHJpcHVsaXNjbyBxdWVsIHRpbWVvdXRcclxuICAgICAgICBpZiAodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKVxyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5leGVjdXRpb25UaW1lcnNbaWRdKTtcclxuXHJcbiAgICAgICAgLy9SaWNyZW8gaWwgdGltZW91dCBwZXIgZXNlZ3VpcmUgcXVlbGxhIGZ1bnppb25lIGRvcG8gdGhyb3R0bGVUaW1lIG1pbGxpc2Vjb25kaVxyXG4gICAgICAgIHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IHNldFRpbWVvdXQoKCkgPT4geyBmdW5jKCk7IHRoaXMuZXhlY3V0aW9uVGltZXJzW2lkXSA9IG51bGw7IH0sIHRocm90dGxlVGltZSk7XHJcbiAgICB9XHJcbiAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKipcclxufSJdfQ==
|
|
@@ -1,112 +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
|
-
var _a, _b, _c, _d;
|
|
18
|
-
if (settings.Timeline) {
|
|
19
|
-
console.error("Timeline not supported for pie chart");
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
//Per evitare di dimenticarmeli e gestire comunque bene gli ngif ecc...
|
|
23
|
-
am4core.options.autoDispose = true;
|
|
24
|
-
this.ChartInstance = am4core.create(settings.Name, settings.Mode3D ? am4charts.PieChart3D : am4charts.PieChart);
|
|
25
|
-
this.ChartInstance.innerRadius = ((settings.DonutRadiusPercentage || 15) / 100) * settings.ContainerHeight;
|
|
26
|
-
let series = this.ChartInstance.series.push(settings.Mode3D ? new am4charts.PieSeries3D() : new am4charts.PieSeries());
|
|
27
|
-
series.dataFields.value = "v";
|
|
28
|
-
series.dataFields.category = "k";
|
|
29
|
-
//Il default sono valori percentuali
|
|
30
|
-
if (this.ViewAbsoluteValues) {
|
|
31
|
-
series.legendSettings.valueText = "{value}";
|
|
32
|
-
series.labels.template.text = "{category}: [bold]{value}[/]";
|
|
33
|
-
}
|
|
34
|
-
series.slices.template.stroke = am4core.color("#fff");
|
|
35
|
-
series.slices.template.strokeOpacity = 1;
|
|
36
|
-
series.slices.template.togglable = false;
|
|
37
|
-
series.hiddenState.properties.opacity = 1;
|
|
38
|
-
series.hiddenState.properties.endAngle = -90;
|
|
39
|
-
series.hiddenState.properties.startAngle = -90;
|
|
40
|
-
if (settings.HideZeroes == null ? true : settings.HideZeroes) {
|
|
41
|
-
series.ticks.template.events.on("ready", this.hideZeroes);
|
|
42
|
-
series.ticks.template.events.on("visibilitychanged", this.hideZeroes);
|
|
43
|
-
series.labels.template.events.on("ready", this.hideZeroes);
|
|
44
|
-
series.labels.template.events.on("visibilitychanged", this.hideZeroes);
|
|
45
|
-
}
|
|
46
|
-
series.slices.template.events.on("hit", (ev) => {
|
|
47
|
-
if (settings.OnSeriesClickCallback) {
|
|
48
|
-
let clickedSeries = ev.target.dataItem.dataContext.k;
|
|
49
|
-
settings.OnSeriesClickCallback(clickedSeries);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
let dataConverted = this.Adapter ? this.Adapter.adaptDataForPieChart(data) : data;
|
|
53
|
-
let defaultIndex = 0;
|
|
54
|
-
for (let i = 0; i < dataConverted.values.length; i++) {
|
|
55
|
-
if (!dataConverted.values[i].c) {
|
|
56
|
-
dataConverted.values[i].c = this.ChartInstance.colors.list[defaultIndex % this.ChartInstance.colors.list.length];
|
|
57
|
-
defaultIndex++;
|
|
58
|
-
}
|
|
59
|
-
else
|
|
60
|
-
dataConverted.values[i].c = am4core.color(dataConverted.values[i].c);
|
|
61
|
-
}
|
|
62
|
-
series.slices.template.propertyFields.fill = "c";
|
|
63
|
-
this.ChartInstance.data = dataConverted.values;
|
|
64
|
-
if (!settings.LabelsVisible) {
|
|
65
|
-
series.labels.template.disabled = true;
|
|
66
|
-
series.ticks.template.disabled = true;
|
|
67
|
-
}
|
|
68
|
-
else if (settings.LabelsWrap || settings.LabelsTruncate) {
|
|
69
|
-
series.labels.template.maxWidth = settings.LabelsWidth || 100;
|
|
70
|
-
if (settings.LabelsWrap)
|
|
71
|
-
series.labels.template.wrap = true;
|
|
72
|
-
else if (settings.LabelsTruncate)
|
|
73
|
-
series.labels.template.truncate = true;
|
|
74
|
-
}
|
|
75
|
-
if (settings.Legend) {
|
|
76
|
-
let legend = new am4charts.Legend();
|
|
77
|
-
this.ChartInstance.legend = legend;
|
|
78
|
-
legend.position = (settings === null || settings === void 0 ? void 0 : settings.LegendPosition) || "bottom";
|
|
79
|
-
legend.itemContainers.template.togglable = settings.HideSeriesOnLabelClick === true;
|
|
80
|
-
legend.itemContainers.template.tooltipText = "{category}";
|
|
81
|
-
//Se la legenda non fa il toggle della serie la considero come se fosse un click sulla serie in se
|
|
82
|
-
if (!settings.HideSeriesOnLabelClick) {
|
|
83
|
-
legend.itemContainers.template.events.on("hit", (ev) => {
|
|
84
|
-
if (settings.OnSeriesClickCallback) {
|
|
85
|
-
let clickedSeries = ev.target.dataItem.dataContext.legendDataItem.name;
|
|
86
|
-
settings.OnSeriesClickCallback(clickedSeries);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
if (settings.LegendPadding) {
|
|
91
|
-
let template = this.ChartInstance.legend.itemContainers.template;
|
|
92
|
-
template.paddingTop = (_a = settings.LegendPadding.top) !== null && _a !== void 0 ? _a : 0;
|
|
93
|
-
template.paddingBottom = (_b = settings.LegendPadding.bottom) !== null && _b !== void 0 ? _b : 0;
|
|
94
|
-
template.paddingLeft = (_c = settings.LegendPadding.left) !== null && _c !== void 0 ? _c : 0;
|
|
95
|
-
template.paddingRight = (_d = settings.LegendPadding.right) !== null && _d !== void 0 ? _d : 0;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return this;
|
|
99
|
-
}
|
|
100
|
-
/** @ignore */
|
|
101
|
-
refreshData(data) {
|
|
102
|
-
//TODO:IMPL
|
|
103
|
-
}
|
|
104
|
-
/** @ignore */
|
|
105
|
-
hideZeroes(ev) {
|
|
106
|
-
if (ev.target.dataItem && (ev.target.dataItem.values.value.percent == 0))
|
|
107
|
-
ev.target.hide();
|
|
108
|
-
else
|
|
109
|
-
ev.target.show();
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGllQ2hhcnRTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtY2hhcnRzL3NyYy9saWIvc2VydmljZXMvY2xhc3Nlcy9QaWVDaGFydFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE9BQU8sTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLDRCQUE0QixDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFNeEIsY0FBYztJQUNkLFlBQW1CLE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFKdkMsY0FBYztRQUNOLHVCQUFrQixHQUFZLElBQUksQ0FBQztJQUdBLENBQUM7SUFFNUM7O09BRUc7SUFDSSxVQUFVLENBQUMsSUFBd0IsRUFBRSxRQUEwQjs7UUFDbEUsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsdUVBQXVFO1FBQ3ZFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVuQyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBUyxRQUFTLENBQUMsZUFBZSxDQUFDO1FBRWxILElBQUksTUFBTSxHQUFnRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1B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QUFHLE1BQUEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLG1DQUFJLENBQUMsQ0FBQztnQkFDeEQsUUFBUSxDQUFDLFlBQVksR0FBRyxNQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxtQ0FBSSxDQUFDLENBQUM7YUFDN0Q7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxjQUFjO0lBQ1AsV0FBVyxDQUFDLElBQXdCO1FBQ3ZDLFdBQVc7SUFDZixDQUFDO0lBRUQsY0FBYztJQUNOLFVBQVUsQ0FBQyxFQUFFO1FBQ2pCLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUM7WUFDcEUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7WUFFakIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UvSUJhc2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZUFkYXB0ZXIgfSBmcm9tICcuLi8uLi9hZGFwdGVycyc7XHJcbmltcG9ydCB7IFBpZUNoYXJ0RGF0YSwgS2V5VmFsdWVDb2xvciB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRhJztcclxuaW1wb3J0IHsgUGllQ2hhcnRTZXR0aW5ncyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXR0aW5ncyc7XHJcblxyXG5pbXBvcnQgKiBhcyBhbTRjb3JlIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NvcmVcIjtcclxuaW1wb3J0ICogYXMgYW00Y2hhcnRzIGZyb20gXCJAYW1jaGFydHMvYW1jaGFydHM0L2NoYXJ0c1wiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBpbCBjdWkgdW5pY28gc2NvcG8gw6ggZ2VzdGlyZSBpbCBzZXR1cCBlIHJlbmRlcmluZyBkaSB1biBQaWVDaGFydFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBpZUNoYXJ0U2VydmljZSBpbXBsZW1lbnRzIElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+e1xyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIHB1YmxpYyBDaGFydEluc3RhbmNlOiBhbTRjaGFydHMuUGllQ2hhcnQzRCB8IGFtNGNoYXJ0cy5QaWVDaGFydDtcclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBwcml2YXRlIFZpZXdBYnNvbHV0ZVZhbHVlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBBZGFwdGVyOiBCYXNlQWRhcHRlcikgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRvZG8gY2hlIGRhdGEgdW5hIGNvcHBpYSBEYXRpIC0gSW1wb3N0YXppb25pIGxpIHV0aWxpenphIHBlciBjcmVhcmUgZSB2aXN1YWxpenphcmUgdW4gUGllQ2hhcnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdyYXBoaWNhdGUoZGF0YTogUGllQ2hhcnREYXRhIHwgYW55LCBzZXR0aW5nczogUGllQ2hhcnRTZXR0aW5ncyk6IElCYXNlU2VydmljZTxhbTRjaGFydHMuUGllQ2hhcnQ+IHtcclxuICAgICAgICBpZiAoc2V0dGluZ3MuVGltZWxpbmUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIlRpbWVsaW5lIG5vdCBzdXBwb3J0ZWQgZm9yIHBpZSBjaGFydFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL1BlciBldml0YXJlIGRpIGRpbWVudGljYXJtZWxpIGUgZ2VzdGlyZSBjb211bnF1ZSBiZW5lIGdsaSBuZ2lmIGVjYy4uLlxyXG4gICAgICAgIGFtNGNvcmUub3B0aW9ucy5hdXRvRGlzcG9zZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuQ2hhcnRJbnN0YW5jZSA9IGFtNGNvcmUuY3JlYXRlKHNldHRpbmdzLk5hbWUsIHNldHRpbmdzLk1vZGUzRCA/IGFtNGNoYXJ0cy5QaWVDaGFydDNEIDogYW00Y2hhcnRzLlBpZUNoYXJ0KTtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuaW5uZXJSYWRpdXMgPSAoKHNldHRpbmdzLkRvbnV0UmFkaXVzUGVyY2VudGFnZSB8fCAxNSkgLyAxMDApICogKDxhbnk+c2V0dGluZ3MpLkNvbnRhaW5lckhlaWdodDtcclxuXHJcbiAgICAgICAgbGV0IHNlcmllczogYW00Y2hhcnRzLlBpZVNlcmllczNEIHwgYW00Y2hhcnRzLlBpZVNlcmllcyA9IHRoaXMuQ2hhcnRJbnN0YW5jZS5zZXJpZXMucHVzaChzZXR0aW5ncy5Nb2RlM0QgPyBuZXcgYW00Y2hhcnRzLlBpZVNlcmllczNEKCkgOiBuZXcgYW00Y2hhcnRzLlBpZVNlcmllcygpKTtcclxuICAgICAgICBzZXJpZXMuZGF0YUZpZWxkcy52YWx1ZSA9IFwidlwiO1xyXG4gICAgICAgIHNlcmllcy5kYXRhRmllbGRzLmNhdGVnb3J5ID0gXCJrXCI7XHJcbiAgICAgICAgLy9JbCBkZWZhdWx0IHNvbm8gdmFsb3JpIHBlcmNlbnR1YWxpXHJcbiAgICAgICAgaWYgKHRoaXMuVmlld0Fic29sdXRlVmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy5sZWdlbmRTZXR0aW5ncy52YWx1ZVRleHQgPSBcInt2YWx1ZX1cIjtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS50ZXh0ID0gXCJ7Y2F0ZWdvcnl9OiBbYm9sZF17dmFsdWV9Wy9dXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzLnNsaWNlcy50ZW1wbGF0ZS5zdHJva2UgPSBhbTRjb3JlLmNvbG9yKFwiI2ZmZlwiKTtcclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnN0cm9rZU9wYWNpdHkgPSAxO1xyXG4gICAgICAgIHNlcmllcy5zbGljZXMudGVtcGxhdGUudG9nZ2xhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuZW5kQW5nbGUgPSAtOTA7XHJcbiAgICAgICAgc2VyaWVzLmhpZGRlblN0YXRlLnByb3BlcnRpZXMuc3RhcnRBbmdsZSA9IC05MDtcclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkhpZGVaZXJvZXMgPT0gbnVsbCA/IHRydWUgOiBzZXR0aW5ncy5IaWRlWmVyb2VzKSB7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMudGlja3MudGVtcGxhdGUuZXZlbnRzLm9uKFwidmlzaWJpbGl0eWNoYW5nZWRcIiwgdGhpcy5oaWRlWmVyb2VzKTtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5ldmVudHMub24oXCJyZWFkeVwiLCB0aGlzLmhpZGVaZXJvZXMpO1xyXG4gICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLmV2ZW50cy5vbihcInZpc2liaWxpdHljaGFuZ2VkXCIsIHRoaXMuaGlkZVplcm9lcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLmV2ZW50cy5vbihcImhpdFwiLCAoZXYpID0+IHtcclxuICAgICAgICAgICAgaWYgKCg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxLZXlWYWx1ZUNvbG9yPmV2LnRhcmdldC5kYXRhSXRlbS5kYXRhQ29udGV4dCkuaztcclxuICAgICAgICAgICAgICAgICg8YW55PnNldHRpbmdzKS5PblNlcmllc0NsaWNrQ2FsbGJhY2soY2xpY2tlZFNlcmllcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IGRhdGFDb252ZXJ0ZWQ6IFBpZUNoYXJ0RGF0YSA9IHRoaXMuQWRhcHRlciA/IHRoaXMuQWRhcHRlci5hZGFwdERhdGFGb3JQaWVDaGFydChkYXRhKSA6IGRhdGE7XHJcblxyXG4gICAgICAgIGxldCBkZWZhdWx0SW5kZXggPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUNvbnZlcnRlZC52YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jKSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT50aGlzLkNoYXJ0SW5zdGFuY2UuY29sb3JzLmxpc3RbZGVmYXVsdEluZGV4ICUgdGhpcy5DaGFydEluc3RhbmNlLmNvbG9ycy5saXN0Lmxlbmd0aF07XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0SW5kZXgrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBkYXRhQ29udmVydGVkLnZhbHVlc1tpXS5jID0gPGFueT5hbTRjb3JlLmNvbG9yKGRhdGFDb252ZXJ0ZWQudmFsdWVzW2ldLmMpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXJpZXMuc2xpY2VzLnRlbXBsYXRlLnByb3BlcnR5RmllbGRzLmZpbGwgPSBcImNcIjtcclxuICAgICAgICB0aGlzLkNoYXJ0SW5zdGFuY2UuZGF0YSA9IGRhdGFDb252ZXJ0ZWQudmFsdWVzO1xyXG5cclxuICAgICAgICBpZiAoIXNldHRpbmdzLkxhYmVsc1Zpc2libGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHNlcmllcy50aWNrcy50ZW1wbGF0ZS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXAgfHwgc2V0dGluZ3MuTGFiZWxzVHJ1bmNhdGUpIHtcclxuICAgICAgICAgICAgc2VyaWVzLmxhYmVscy50ZW1wbGF0ZS5tYXhXaWR0aCA9IHNldHRpbmdzLkxhYmVsc1dpZHRoIHx8IDEwMDtcclxuICAgICAgICAgICAgaWYgKHNldHRpbmdzLkxhYmVsc1dyYXApXHJcbiAgICAgICAgICAgICAgICBzZXJpZXMubGFiZWxzLnRlbXBsYXRlLndyYXAgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChzZXR0aW5ncy5MYWJlbHNUcnVuY2F0ZSlcclxuICAgICAgICAgICAgICAgIHNlcmllcy5sYWJlbHMudGVtcGxhdGUudHJ1bmNhdGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNldHRpbmdzLkxlZ2VuZCkge1xyXG4gICAgICAgICAgICBsZXQgbGVnZW5kID0gbmV3IGFtNGNoYXJ0cy5MZWdlbmQoKTtcclxuICAgICAgICAgICAgdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZCA9IGxlZ2VuZFxyXG4gICAgICAgICAgICBsZWdlbmQucG9zaXRpb24gPSBzZXR0aW5ncz8uTGVnZW5kUG9zaXRpb24gfHwgXCJib3R0b21cIjtcclxuICAgICAgICAgICAgbGVnZW5kLml0ZW1Db250YWluZXJzLnRlbXBsYXRlLnRvZ2dsYWJsZSA9IHNldHRpbmdzLkhpZGVTZXJpZXNPbkxhYmVsQ2xpY2sgPT09IHRydWU7XHJcbiAgICAgICAgICAgIGxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZS50b29sdGlwVGV4dCA9IFwie2NhdGVnb3J5fVwiO1xyXG5cclxuICAgICAgICAgICAgLy9TZSBsYSBsZWdlbmRhIG5vbiBmYSBpbCB0b2dnbGUgZGVsbGEgc2VyaWUgbGEgY29uc2lkZXJvIGNvbWUgc2UgZm9zc2UgdW4gY2xpY2sgc3VsbGEgc2VyaWUgaW4gc2VcclxuICAgICAgICAgICAgaWYgKCFzZXR0aW5ncy5IaWRlU2VyaWVzT25MYWJlbENsaWNrKSB7XHJcbiAgICAgICAgICAgICAgICBsZWdlbmQuaXRlbUNvbnRhaW5lcnMudGVtcGxhdGUuZXZlbnRzLm9uKFwiaGl0XCIsIChldikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbGlja2VkU2VyaWVzID0gKDxhbnk+ZXYudGFyZ2V0LmRhdGFJdGVtLmRhdGFDb250ZXh0KS5sZWdlbmREYXRhSXRlbS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoPGFueT5zZXR0aW5ncykuT25TZXJpZXNDbGlja0NhbGxiYWNrKGNsaWNrZWRTZXJpZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuTGVnZW5kUGFkZGluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBsYXRlID0gdGhpcy5DaGFydEluc3RhbmNlLmxlZ2VuZC5pdGVtQ29udGFpbmVycy50ZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgIHRlbXBsYXRlLnBhZGRpbmdUb3AgPSBzZXR0aW5ncy5MZWdlbmRQYWRkaW5nLnRvcCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ0JvdHRvbSA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcuYm90dG9tID8/IDA7XHJcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS5wYWRkaW5nTGVmdCA9IHNldHRpbmdzLkxlZ2VuZFBhZGRpbmcubGVmdCA/PyAwO1xyXG4gICAgICAgICAgICAgICAgdGVtcGxhdGUucGFkZGluZ1JpZ2h0ID0gc2V0dGluZ3MuTGVnZW5kUGFkZGluZy5yaWdodCA/PyAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hEYXRhKGRhdGE6IFBpZUNoYXJ0RGF0YSB8IGFueSl7XHJcbiAgICAgICAgLy9UT0RPOklNUExcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgcHJpdmF0ZSBoaWRlWmVyb2VzKGV2KSB7XHJcbiAgICAgICAgaWYgKGV2LnRhcmdldC5kYXRhSXRlbSAmJiAoZXYudGFyZ2V0LmRhdGFJdGVtLnZhbHVlcy52YWx1ZS5wZXJjZW50ID09IDApKVxyXG4gICAgICAgICAgICBldi50YXJnZXQuaGlkZSgpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgZXYudGFyZ2V0LnNob3coKTtcclxuICAgIH1cclxufSJdfQ==
|