You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1138 lines
34 KiB
1138 lines
34 KiB
6 months ago
|
/*
|
||
|
Highcharts JS v3.0.6 (2013-10-04)
|
||
|
|
||
|
(c) 2009-2013 Torstein Hønsi
|
||
|
|
||
|
License: www.highcharts.com/license
|
||
|
*/
|
||
|
(function (j, C) {
|
||
|
function J(a, b, c) {
|
||
|
this.init.call(this, a, b, c);
|
||
|
}
|
||
|
function K(a, b, c) {
|
||
|
a.call(this, b, c);
|
||
|
if (this.chart.polar)
|
||
|
(this.closeSegment = function (a) {
|
||
|
var c = this.xAxis.center;
|
||
|
a.push('L', c[0], c[1]);
|
||
|
}),
|
||
|
(this.closedStacks = !0);
|
||
|
}
|
||
|
function L(a, b) {
|
||
|
var c = this.chart,
|
||
|
d = this.options.animation,
|
||
|
g = this.group,
|
||
|
f = this.markerGroup,
|
||
|
e = this.xAxis.center,
|
||
|
i = c.plotLeft,
|
||
|
n = c.plotTop;
|
||
|
if (c.polar) {
|
||
|
if (c.renderer.isSVG)
|
||
|
if ((d === !0 && (d = {}), b)) {
|
||
|
if (
|
||
|
((c = { translateX: e[0] + i, translateY: e[1] + n, scaleX: 0.001, scaleY: 0.001 }),
|
||
|
g.attr(c),
|
||
|
f)
|
||
|
)
|
||
|
(f.attrSetters = g.attrSetters), f.attr(c);
|
||
|
} else
|
||
|
(c = { translateX: i, translateY: n, scaleX: 1, scaleY: 1 }),
|
||
|
g.animate(c, d),
|
||
|
f && f.animate(c, d),
|
||
|
(this.animate = null);
|
||
|
} else a.call(this, b);
|
||
|
}
|
||
|
var P = j.arrayMin,
|
||
|
Q = j.arrayMax,
|
||
|
s = j.each,
|
||
|
F = j.extend,
|
||
|
p = j.merge,
|
||
|
R = j.map,
|
||
|
r = j.pick,
|
||
|
v = j.pInt,
|
||
|
m = j.getOptions().plotOptions,
|
||
|
h = j.seriesTypes,
|
||
|
x = j.extendClass,
|
||
|
M = j.splat,
|
||
|
o = j.wrap,
|
||
|
N = j.Axis,
|
||
|
u = j.Tick,
|
||
|
z = j.Series,
|
||
|
q = h.column.prototype,
|
||
|
t = Math,
|
||
|
D = t.round,
|
||
|
A = t.floor,
|
||
|
S = t.max,
|
||
|
w = function () {};
|
||
|
F(J.prototype, {
|
||
|
init: function (a, b, c) {
|
||
|
var d = this,
|
||
|
g = d.defaultOptions;
|
||
|
d.chart = b;
|
||
|
if (b.angular) g.background = {};
|
||
|
d.options = a = p(g, a);
|
||
|
(a = a.background) &&
|
||
|
s([].concat(M(a)).reverse(), function (a) {
|
||
|
var b = a.backgroundColor,
|
||
|
a = p(d.defaultBackgroundOptions, a);
|
||
|
if (b) a.backgroundColor = b;
|
||
|
a.color = a.backgroundColor;
|
||
|
c.options.plotBands.unshift(a);
|
||
|
});
|
||
|
},
|
||
|
defaultOptions: { center: ['50%', '50%'], size: '85%', startAngle: 0 },
|
||
|
defaultBackgroundOptions: {
|
||
|
shape: 'circle',
|
||
|
borderWidth: 1,
|
||
|
borderColor: 'silver',
|
||
|
backgroundColor: {
|
||
|
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
|
||
|
stops: [
|
||
|
[0, '#FFF'],
|
||
|
[1, '#DDD'],
|
||
|
],
|
||
|
},
|
||
|
from: Number.MIN_VALUE,
|
||
|
innerRadius: 0,
|
||
|
to: Number.MAX_VALUE,
|
||
|
outerRadius: '105%',
|
||
|
},
|
||
|
});
|
||
|
var G = N.prototype,
|
||
|
u = u.prototype,
|
||
|
T = {
|
||
|
getOffset: w,
|
||
|
redraw: function () {
|
||
|
this.isDirty = !1;
|
||
|
},
|
||
|
render: function () {
|
||
|
this.isDirty = !1;
|
||
|
},
|
||
|
setScale: w,
|
||
|
setCategories: w,
|
||
|
setTitle: w,
|
||
|
},
|
||
|
O = {
|
||
|
isRadial: !0,
|
||
|
defaultRadialGaugeOptions: {
|
||
|
labels: { align: 'center', x: 0, y: null },
|
||
|
minorGridLineWidth: 0,
|
||
|
minorTickInterval: 'auto',
|
||
|
minorTickLength: 10,
|
||
|
minorTickPosition: 'inside',
|
||
|
minorTickWidth: 1,
|
||
|
plotBands: [],
|
||
|
tickLength: 10,
|
||
|
tickPosition: 'inside',
|
||
|
tickWidth: 2,
|
||
|
title: { rotation: 0 },
|
||
|
zIndex: 2,
|
||
|
},
|
||
|
defaultRadialXOptions: {
|
||
|
gridLineWidth: 1,
|
||
|
labels: { align: null, distance: 15, x: 0, y: null },
|
||
|
maxPadding: 0,
|
||
|
minPadding: 0,
|
||
|
plotBands: [],
|
||
|
showLastLabel: !1,
|
||
|
tickLength: 0,
|
||
|
},
|
||
|
defaultRadialYOptions: {
|
||
|
gridLineInterpolation: 'circle',
|
||
|
labels: { align: 'right', x: -3, y: -2 },
|
||
|
plotBands: [],
|
||
|
showLastLabel: !1,
|
||
|
title: { x: 4, text: null, rotation: 90 },
|
||
|
},
|
||
|
setOptions: function (a) {
|
||
|
this.options = p(this.defaultOptions, this.defaultRadialOptions, a);
|
||
|
},
|
||
|
getOffset: function () {
|
||
|
G.getOffset.call(this);
|
||
|
this.chart.axisOffset[this.side] = 0;
|
||
|
},
|
||
|
getLinePath: function (a, b) {
|
||
|
var c = this.center,
|
||
|
b = r(b, c[2] / 2 - this.offset);
|
||
|
return this.chart.renderer.symbols.arc(this.left + c[0], this.top + c[1], b, b, {
|
||
|
start: this.startAngleRad,
|
||
|
end: this.endAngleRad,
|
||
|
open: !0,
|
||
|
innerR: 0,
|
||
|
});
|
||
|
},
|
||
|
setAxisTranslation: function () {
|
||
|
G.setAxisTranslation.call(this);
|
||
|
if (
|
||
|
this.center &&
|
||
|
((this.transA = this.isCircular
|
||
|
? (this.endAngleRad - this.startAngleRad) / (this.max - this.min || 1)
|
||
|
: this.center[2] / 2 / (this.max - this.min || 1)),
|
||
|
this.isXAxis)
|
||
|
)
|
||
|
this.minPixelPadding =
|
||
|
this.transA * this.minPointOffset +
|
||
|
(this.reversed ? (this.endAngleRad - this.startAngleRad) / 4 : 0);
|
||
|
},
|
||
|
beforeSetTickPositions: function () {
|
||
|
this.autoConnect &&
|
||
|
(this.max += (this.categories && 1) || this.pointRange || this.closestPointRange || 0);
|
||
|
},
|
||
|
setAxisSize: function () {
|
||
|
G.setAxisSize.call(this);
|
||
|
if (this.isRadial)
|
||
|
(this.center = this.pane.center = h.pie.prototype.getCenter.call(this.pane)),
|
||
|
(this.len =
|
||
|
this.width =
|
||
|
this.height =
|
||
|
this.isCircular
|
||
|
? (this.center[2] * (this.endAngleRad - this.startAngleRad)) / 2
|
||
|
: this.center[2] / 2);
|
||
|
},
|
||
|
getPosition: function (a, b) {
|
||
|
if (!this.isCircular) (b = this.translate(a)), (a = this.min);
|
||
|
return this.postTranslate(this.translate(a), r(b, this.center[2] / 2) - this.offset);
|
||
|
},
|
||
|
postTranslate: function (a, b) {
|
||
|
var c = this.chart,
|
||
|
d = this.center,
|
||
|
a = this.startAngleRad + a;
|
||
|
return { x: c.plotLeft + d[0] + Math.cos(a) * b, y: c.plotTop + d[1] + Math.sin(a) * b };
|
||
|
},
|
||
|
getPlotBandPath: function (a, b, c) {
|
||
|
var d = this.center,
|
||
|
g = this.startAngleRad,
|
||
|
f = d[2] / 2,
|
||
|
e = [r(c.outerRadius, '100%'), c.innerRadius, r(c.thickness, 10)],
|
||
|
i = /%$/,
|
||
|
n,
|
||
|
l = this.isCircular;
|
||
|
this.options.gridLineInterpolation === 'polygon'
|
||
|
? (d = this.getPlotLinePath(a).concat(this.getPlotLinePath(b, !0)))
|
||
|
: (l || ((e[0] = this.translate(a)), (e[1] = this.translate(b))),
|
||
|
(e = R(e, function (a) {
|
||
|
i.test(a) && (a = (v(a, 10) * f) / 100);
|
||
|
return a;
|
||
|
})),
|
||
|
c.shape === 'circle' || !l
|
||
|
? ((a = -Math.PI / 2), (b = Math.PI * 1.5), (n = !0))
|
||
|
: ((a = g + this.translate(a)), (b = g + this.translate(b))),
|
||
|
(d = this.chart.renderer.symbols.arc(this.left + d[0], this.top + d[1], e[0], e[0], {
|
||
|
start: a,
|
||
|
end: b,
|
||
|
innerR: r(e[1], e[0] - e[2]),
|
||
|
open: n,
|
||
|
})));
|
||
|
return d;
|
||
|
},
|
||
|
getPlotLinePath: function (a, b) {
|
||
|
var c = this.center,
|
||
|
d = this.chart,
|
||
|
g = this.getPosition(a),
|
||
|
f,
|
||
|
e,
|
||
|
i;
|
||
|
this.isCircular
|
||
|
? (i = ['M', c[0] + d.plotLeft, c[1] + d.plotTop, 'L', g.x, g.y])
|
||
|
: this.options.gridLineInterpolation === 'circle'
|
||
|
? (a = this.translate(a)) && (i = this.getLinePath(0, a))
|
||
|
: ((f = d.xAxis[0]),
|
||
|
(i = []),
|
||
|
(a = this.translate(a)),
|
||
|
(c = f.tickPositions),
|
||
|
f.autoConnect && (c = c.concat([c[0]])),
|
||
|
b && (c = [].concat(c).reverse()),
|
||
|
s(c, function (c, b) {
|
||
|
e = f.getPosition(c, a);
|
||
|
i.push(b ? 'L' : 'M', e.x, e.y);
|
||
|
}));
|
||
|
return i;
|
||
|
},
|
||
|
getTitlePosition: function () {
|
||
|
var a = this.center,
|
||
|
b = this.chart,
|
||
|
c = this.options.title;
|
||
|
return {
|
||
|
x: b.plotLeft + a[0] + (c.x || 0),
|
||
|
y: b.plotTop + a[1] - { high: 0.5, middle: 0.25, low: 0 }[c.align] * a[2] + (c.y || 0),
|
||
|
};
|
||
|
},
|
||
|
};
|
||
|
o(G, 'init', function (a, b, c) {
|
||
|
var k;
|
||
|
var d = b.angular,
|
||
|
g = b.polar,
|
||
|
f = c.isX,
|
||
|
e = d && f,
|
||
|
i,
|
||
|
n;
|
||
|
n = b.options;
|
||
|
var l = c.pane || 0;
|
||
|
if (d) {
|
||
|
if ((F(this, e ? T : O), (i = !f)))
|
||
|
this.defaultRadialOptions = this.defaultRadialGaugeOptions;
|
||
|
} else if (g) F(this, O), (this.defaultRadialOptions = (i = f) ? this.defaultRadialXOptions : p(this.defaultYAxisOptions, this.defaultRadialYOptions));
|
||
|
a.call(this, b, c);
|
||
|
if (!e && (d || g)) {
|
||
|
a = this.options;
|
||
|
if (!b.panes) b.panes = [];
|
||
|
this.pane = ((k = b.panes[l] = b.panes[l] || new J(M(n.pane)[l], b, this)), (l = k));
|
||
|
l = l.options;
|
||
|
b.inverted = !1;
|
||
|
n.chart.zoomType = null;
|
||
|
this.startAngleRad = b = ((l.startAngle - 90) * Math.PI) / 180;
|
||
|
this.endAngleRad = n = ((r(l.endAngle, l.startAngle + 360) - 90) * Math.PI) / 180;
|
||
|
this.offset = a.offset || 0;
|
||
|
if ((this.isCircular = i) && c.max === C && n - b === 2 * Math.PI) this.autoConnect = !0;
|
||
|
}
|
||
|
});
|
||
|
o(u, 'getPosition', function (a, b, c, d, g) {
|
||
|
var f = this.axis;
|
||
|
return f.getPosition ? f.getPosition(c) : a.call(this, b, c, d, g);
|
||
|
});
|
||
|
o(u, 'getLabelPosition', function (a, b, c, d, g, f, e, i, n) {
|
||
|
var l = this.axis,
|
||
|
k = f.y,
|
||
|
h = f.align,
|
||
|
j = (((l.translate(this.pos) + l.startAngleRad + Math.PI / 2) / Math.PI) * 180) % 360;
|
||
|
l.isRadial
|
||
|
? ((a = l.getPosition(this.pos, l.center[2] / 2 + r(f.distance, -25))),
|
||
|
f.rotation === 'auto'
|
||
|
? d.attr({ rotation: j })
|
||
|
: k === null && (k = v(d.styles.lineHeight) * 0.9 - d.getBBox().height / 2),
|
||
|
h === null &&
|
||
|
((h = l.isCircular
|
||
|
? j > 20 && j < 160
|
||
|
? 'left'
|
||
|
: j > 200 && j < 340
|
||
|
? 'right'
|
||
|
: 'center'
|
||
|
: 'center'),
|
||
|
d.attr({ align: h })),
|
||
|
(a.x += f.x),
|
||
|
(a.y += k))
|
||
|
: (a = a.call(this, b, c, d, g, f, e, i, n));
|
||
|
return a;
|
||
|
});
|
||
|
o(u, 'getMarkPath', function (a, b, c, d, g, f, e) {
|
||
|
var i = this.axis;
|
||
|
i.isRadial
|
||
|
? ((a = i.getPosition(this.pos, i.center[2] / 2 + d)), (b = ['M', b, c, 'L', a.x, a.y]))
|
||
|
: (b = a.call(this, b, c, d, g, f, e));
|
||
|
return b;
|
||
|
});
|
||
|
m.arearange = p(m.area, {
|
||
|
lineWidth: 1,
|
||
|
marker: null,
|
||
|
threshold: null,
|
||
|
tooltip: {
|
||
|
pointFormat:
|
||
|
'<span style="color:{series.color}">{series.name}</span>: <b>{point.low}</b> - <b>{point.high}</b><br/>',
|
||
|
},
|
||
|
trackByArea: !0,
|
||
|
dataLabels: { verticalAlign: null, xLow: 0, xHigh: 0, yLow: 0, yHigh: 0 },
|
||
|
});
|
||
|
h.arearange = j.extendClass(h.area, {
|
||
|
type: 'arearange',
|
||
|
pointArrayMap: ['low', 'high'],
|
||
|
toYData: function (a) {
|
||
|
return [a.low, a.high];
|
||
|
},
|
||
|
pointValKey: 'low',
|
||
|
getSegments: function () {
|
||
|
var a = this;
|
||
|
s(a.points, function (b) {
|
||
|
if (!a.options.connectNulls && (b.low === null || b.high === null)) b.y = null;
|
||
|
else if (b.low === null && b.high !== null) b.y = b.high;
|
||
|
});
|
||
|
z.prototype.getSegments.call(this);
|
||
|
},
|
||
|
translate: function () {
|
||
|
var a = this.yAxis;
|
||
|
h.area.prototype.translate.apply(this);
|
||
|
s(this.points, function (b) {
|
||
|
var c = b.low,
|
||
|
d = b.high,
|
||
|
g = b.plotY;
|
||
|
d === null && c === null
|
||
|
? (b.y = null)
|
||
|
: c === null
|
||
|
? ((b.plotLow = b.plotY = null), (b.plotHigh = a.translate(d, 0, 1, 0, 1)))
|
||
|
: d === null
|
||
|
? ((b.plotLow = g), (b.plotHigh = null))
|
||
|
: ((b.plotLow = g), (b.plotHigh = a.translate(d, 0, 1, 0, 1)));
|
||
|
});
|
||
|
},
|
||
|
getSegmentPath: function (a) {
|
||
|
var b,
|
||
|
c = [],
|
||
|
d = a.length,
|
||
|
g = z.prototype.getSegmentPath,
|
||
|
f,
|
||
|
e;
|
||
|
e = this.options;
|
||
|
var i = e.step;
|
||
|
for (
|
||
|
b = HighchartsAdapter.grep(a, function (a) {
|
||
|
return a.plotLow !== null;
|
||
|
});
|
||
|
d--;
|
||
|
|
||
|
)
|
||
|
(f = a[d]), f.plotHigh !== null && c.push({ plotX: f.plotX, plotY: f.plotHigh });
|
||
|
a = g.call(this, b);
|
||
|
if (i)
|
||
|
i === !0 && (i = 'left'), (e.step = { left: 'right', center: 'center', right: 'left' }[i]);
|
||
|
c = g.call(this, c);
|
||
|
e.step = i;
|
||
|
e = [].concat(a, c);
|
||
|
c[0] = 'L';
|
||
|
this.areaPath = this.areaPath.concat(a, c);
|
||
|
return e;
|
||
|
},
|
||
|
drawDataLabels: function () {
|
||
|
var a = this.data,
|
||
|
b = a.length,
|
||
|
c,
|
||
|
d = [],
|
||
|
g = z.prototype,
|
||
|
f = this.options.dataLabels,
|
||
|
e,
|
||
|
i = this.chart.inverted;
|
||
|
if (f.enabled || this._hasPointLabels) {
|
||
|
for (c = b; c--; )
|
||
|
(e = a[c]),
|
||
|
(e.y = e.high),
|
||
|
(e.plotY = e.plotHigh),
|
||
|
(d[c] = e.dataLabel),
|
||
|
(e.dataLabel = e.dataLabelUpper),
|
||
|
(e.below = !1),
|
||
|
i ? ((f.align = 'left'), (f.x = f.xHigh)) : (f.y = f.yHigh);
|
||
|
g.drawDataLabels.apply(this, arguments);
|
||
|
for (c = b; c--; )
|
||
|
(e = a[c]),
|
||
|
(e.dataLabelUpper = e.dataLabel),
|
||
|
(e.dataLabel = d[c]),
|
||
|
(e.y = e.low),
|
||
|
(e.plotY = e.plotLow),
|
||
|
(e.below = !0),
|
||
|
i ? ((f.align = 'right'), (f.x = f.xLow)) : (f.y = f.yLow);
|
||
|
g.drawDataLabels.apply(this, arguments);
|
||
|
}
|
||
|
},
|
||
|
alignDataLabel: h.column.prototype.alignDataLabel,
|
||
|
getSymbol: h.column.prototype.getSymbol,
|
||
|
drawPoints: w,
|
||
|
});
|
||
|
m.areasplinerange = p(m.arearange);
|
||
|
h.areasplinerange = x(h.arearange, {
|
||
|
type: 'areasplinerange',
|
||
|
getPointSpline: h.spline.prototype.getPointSpline,
|
||
|
});
|
||
|
m.columnrange = p(m.column, m.arearange, { lineWidth: 1, pointRange: null });
|
||
|
h.columnrange = x(h.arearange, {
|
||
|
type: 'columnrange',
|
||
|
translate: function () {
|
||
|
var a = this,
|
||
|
b = a.yAxis,
|
||
|
c;
|
||
|
q.translate.apply(a);
|
||
|
s(a.points, function (d) {
|
||
|
var g = d.shapeArgs,
|
||
|
f = a.options.minPointLength,
|
||
|
e;
|
||
|
d.plotHigh = c = b.translate(d.high, 0, 1, 0, 1);
|
||
|
d.plotLow = d.plotY;
|
||
|
e = c;
|
||
|
d = d.plotY - c;
|
||
|
d < f && ((f -= d), (d += f), (e -= f / 2));
|
||
|
g.height = d;
|
||
|
g.y = e;
|
||
|
});
|
||
|
},
|
||
|
trackerGroups: ['group', 'dataLabels'],
|
||
|
drawGraph: w,
|
||
|
pointAttrToOptions: q.pointAttrToOptions,
|
||
|
drawPoints: q.drawPoints,
|
||
|
drawTracker: q.drawTracker,
|
||
|
animate: q.animate,
|
||
|
getColumnMetrics: q.getColumnMetrics,
|
||
|
});
|
||
|
m.gauge = p(m.line, {
|
||
|
dataLabels: {
|
||
|
enabled: !0,
|
||
|
y: 15,
|
||
|
borderWidth: 1,
|
||
|
borderColor: 'silver',
|
||
|
borderRadius: 3,
|
||
|
style: { fontWeight: 'bold' },
|
||
|
verticalAlign: 'top',
|
||
|
zIndex: 2,
|
||
|
},
|
||
|
dial: {},
|
||
|
pivot: {},
|
||
|
tooltip: { headerFormat: '' },
|
||
|
showInLegend: !1,
|
||
|
});
|
||
|
u = {
|
||
|
type: 'gauge',
|
||
|
pointClass: j.extendClass(j.Point, {
|
||
|
setState: function (a) {
|
||
|
this.state = a;
|
||
|
},
|
||
|
}),
|
||
|
angular: !0,
|
||
|
drawGraph: w,
|
||
|
fixedBox: !0,
|
||
|
trackerGroups: ['group', 'dataLabels'],
|
||
|
translate: function () {
|
||
|
var a = this.yAxis,
|
||
|
b = this.options,
|
||
|
c = a.center;
|
||
|
this.generatePoints();
|
||
|
s(this.points, function (d) {
|
||
|
var g = p(b.dial, d.dial),
|
||
|
f = (v(r(g.radius, 80)) * c[2]) / 200,
|
||
|
e = (v(r(g.baseLength, 70)) * f) / 100,
|
||
|
i = (v(r(g.rearLength, 10)) * f) / 100,
|
||
|
n = g.baseWidth || 3,
|
||
|
l = g.topWidth || 1,
|
||
|
k = a.startAngleRad + a.translate(d.y, null, null, null, !0);
|
||
|
b.wrap === !1 && (k = Math.max(a.startAngleRad, Math.min(a.endAngleRad, k)));
|
||
|
k = (k * 180) / Math.PI;
|
||
|
d.shapeType = 'path';
|
||
|
d.shapeArgs = {
|
||
|
d: g.path || [
|
||
|
'M',
|
||
|
-i,
|
||
|
-n / 2,
|
||
|
'L',
|
||
|
e,
|
||
|
-n / 2,
|
||
|
f,
|
||
|
-l / 2,
|
||
|
f,
|
||
|
l / 2,
|
||
|
e,
|
||
|
n / 2,
|
||
|
-i,
|
||
|
n / 2,
|
||
|
'z',
|
||
|
],
|
||
|
translateX: c[0],
|
||
|
translateY: c[1],
|
||
|
rotation: k,
|
||
|
};
|
||
|
d.plotX = c[0];
|
||
|
d.plotY = c[1];
|
||
|
});
|
||
|
},
|
||
|
drawPoints: function () {
|
||
|
var a = this,
|
||
|
b = a.yAxis.center,
|
||
|
c = a.pivot,
|
||
|
d = a.options,
|
||
|
g = d.pivot,
|
||
|
f = a.chart.renderer;
|
||
|
s(a.points, function (c) {
|
||
|
var b = c.graphic,
|
||
|
g = c.shapeArgs,
|
||
|
l = g.d,
|
||
|
k = p(d.dial, c.dial);
|
||
|
b
|
||
|
? (b.animate(g), (g.d = l))
|
||
|
: (c.graphic = f[c.shapeType](g)
|
||
|
.attr({
|
||
|
stroke: k.borderColor || 'none',
|
||
|
'stroke-width': k.borderWidth || 0,
|
||
|
fill: k.backgroundColor || 'black',
|
||
|
rotation: g.rotation,
|
||
|
})
|
||
|
.add(a.group));
|
||
|
});
|
||
|
c
|
||
|
? c.animate({ translateX: b[0], translateY: b[1] })
|
||
|
: (a.pivot = f
|
||
|
.circle(0, 0, r(g.radius, 5))
|
||
|
.attr({
|
||
|
'stroke-width': g.borderWidth || 0,
|
||
|
stroke: g.borderColor || 'silver',
|
||
|
fill: g.backgroundColor || 'black',
|
||
|
})
|
||
|
.translate(b[0], b[1])
|
||
|
.add(a.group));
|
||
|
},
|
||
|
animate: function (a) {
|
||
|
var b = this;
|
||
|
if (!a)
|
||
|
s(b.points, function (a) {
|
||
|
var d = a.graphic;
|
||
|
d &&
|
||
|
(d.attr({ rotation: (b.yAxis.startAngleRad * 180) / Math.PI }),
|
||
|
d.animate({ rotation: a.shapeArgs.rotation }, b.options.animation));
|
||
|
}),
|
||
|
(b.animate = null);
|
||
|
},
|
||
|
render: function () {
|
||
|
this.group = this.plotGroup(
|
||
|
'group',
|
||
|
'series',
|
||
|
this.visible ? 'visible' : 'hidden',
|
||
|
this.options.zIndex,
|
||
|
this.chart.seriesGroup,
|
||
|
);
|
||
|
h.pie.prototype.render.call(this);
|
||
|
this.group.clip(this.chart.clipRect);
|
||
|
},
|
||
|
setData: h.pie.prototype.setData,
|
||
|
drawTracker: h.column.prototype.drawTracker,
|
||
|
};
|
||
|
h.gauge = j.extendClass(h.line, u);
|
||
|
m.boxplot = p(m.column, {
|
||
|
fillColor: '#FFFFFF',
|
||
|
lineWidth: 1,
|
||
|
medianWidth: 2,
|
||
|
states: { hover: { brightness: -0.3 } },
|
||
|
threshold: null,
|
||
|
tooltip: {
|
||
|
pointFormat:
|
||
|
'<span style="color:{series.color};font-weight:bold">{series.name}</span><br/>Maximum: {point.high}<br/>Upper quartile: {point.q3}<br/>Median: {point.median}<br/>Lower quartile: {point.q1}<br/>Minimum: {point.low}<br/>',
|
||
|
},
|
||
|
whiskerLength: '50%',
|
||
|
whiskerWidth: 2,
|
||
|
});
|
||
|
h.boxplot = x(h.column, {
|
||
|
type: 'boxplot',
|
||
|
pointArrayMap: ['low', 'q1', 'median', 'q3', 'high'],
|
||
|
toYData: function (a) {
|
||
|
return [a.low, a.q1, a.median, a.q3, a.high];
|
||
|
},
|
||
|
pointValKey: 'high',
|
||
|
pointAttrToOptions: { fill: 'fillColor', stroke: 'color', 'stroke-width': 'lineWidth' },
|
||
|
drawDataLabels: w,
|
||
|
translate: function () {
|
||
|
var a = this.yAxis,
|
||
|
b = this.pointArrayMap;
|
||
|
h.column.prototype.translate.apply(this);
|
||
|
s(this.points, function (c) {
|
||
|
s(b, function (b) {
|
||
|
c[b] !== null && (c[b + 'Plot'] = a.translate(c[b], 0, 1, 0, 1));
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
drawPoints: function () {
|
||
|
var a = this,
|
||
|
b = a.points,
|
||
|
c = a.options,
|
||
|
d = a.chart.renderer,
|
||
|
g,
|
||
|
f,
|
||
|
e,
|
||
|
i,
|
||
|
n,
|
||
|
l,
|
||
|
k,
|
||
|
h,
|
||
|
j,
|
||
|
m,
|
||
|
o,
|
||
|
H,
|
||
|
p,
|
||
|
E,
|
||
|
I,
|
||
|
q,
|
||
|
w,
|
||
|
t,
|
||
|
v,
|
||
|
u,
|
||
|
z,
|
||
|
y,
|
||
|
x = a.doQuartiles !== !1,
|
||
|
B = parseInt(a.options.whiskerLength, 10) / 100;
|
||
|
s(b, function (b) {
|
||
|
j = b.graphic;
|
||
|
z = b.shapeArgs;
|
||
|
o = {};
|
||
|
E = {};
|
||
|
q = {};
|
||
|
y = b.color || a.color;
|
||
|
if (b.plotY !== C)
|
||
|
if (
|
||
|
((g = b.pointAttr[b.selected ? 'selected' : '']),
|
||
|
(w = z.width),
|
||
|
(t = A(z.x)),
|
||
|
(v = t + w),
|
||
|
(u = D(w / 2)),
|
||
|
(f = A(x ? b.q1Plot : b.lowPlot)),
|
||
|
(e = A(x ? b.q3Plot : b.lowPlot)),
|
||
|
(i = A(b.highPlot)),
|
||
|
(n = A(b.lowPlot)),
|
||
|
(o.stroke = b.stemColor || c.stemColor || y),
|
||
|
(o['stroke-width'] = r(b.stemWidth, c.stemWidth, c.lineWidth)),
|
||
|
(o.dashstyle = b.stemDashStyle || c.stemDashStyle),
|
||
|
(E.stroke = b.whiskerColor || c.whiskerColor || y),
|
||
|
(E['stroke-width'] = r(b.whiskerWidth, c.whiskerWidth, c.lineWidth)),
|
||
|
(q.stroke = b.medianColor || c.medianColor || y),
|
||
|
(q['stroke-width'] = r(b.medianWidth, c.medianWidth, c.lineWidth)),
|
||
|
(k = (o['stroke-width'] % 2) / 2),
|
||
|
(h = t + u + k),
|
||
|
(m = ['M', h, e, 'L', h, i, 'M', h, f, 'L', h, n, 'z']),
|
||
|
x &&
|
||
|
((k = (g['stroke-width'] % 2) / 2),
|
||
|
(h = A(h) + k),
|
||
|
(f = A(f) + k),
|
||
|
(e = A(e) + k),
|
||
|
(t += k),
|
||
|
(v += k),
|
||
|
(H = ['M', t, e, 'L', t, f, 'L', v, f, 'L', v, e, 'L', t, e, 'z'])),
|
||
|
B &&
|
||
|
((k = (E['stroke-width'] % 2) / 2),
|
||
|
(i += k),
|
||
|
(n += k),
|
||
|
(p = ['M', h - u * B, i, 'L', h + u * B, i, 'M', h - u * B, n, 'L', h + u * B, n])),
|
||
|
(k = (q['stroke-width'] % 2) / 2),
|
||
|
(l = D(b.medianPlot) + k),
|
||
|
(I = ['M', t, l, 'L', v, l, 'z']),
|
||
|
j)
|
||
|
)
|
||
|
b.stem.animate({ d: m }),
|
||
|
B && b.whiskers.animate({ d: p }),
|
||
|
x && b.box.animate({ d: H }),
|
||
|
b.medianShape.animate({ d: I });
|
||
|
else {
|
||
|
b.graphic = j = d.g().add(a.group);
|
||
|
b.stem = d.path(m).attr(o).add(j);
|
||
|
if (B) b.whiskers = d.path(p).attr(E).add(j);
|
||
|
if (x) b.box = d.path(H).attr(g).add(j);
|
||
|
b.medianShape = d.path(I).attr(q).add(j);
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
});
|
||
|
m.errorbar = p(m.boxplot, {
|
||
|
color: '#000000',
|
||
|
grouping: !1,
|
||
|
linkedTo: ':previous',
|
||
|
tooltip: { pointFormat: m.arearange.tooltip.pointFormat },
|
||
|
whiskerWidth: null,
|
||
|
});
|
||
|
h.errorbar = x(h.boxplot, {
|
||
|
type: 'errorbar',
|
||
|
pointArrayMap: ['low', 'high'],
|
||
|
toYData: function (a) {
|
||
|
return [a.low, a.high];
|
||
|
},
|
||
|
pointValKey: 'high',
|
||
|
doQuartiles: !1,
|
||
|
getColumnMetrics: function () {
|
||
|
return (
|
||
|
(this.linkedParent && this.linkedParent.columnMetrics) ||
|
||
|
h.column.prototype.getColumnMetrics.call(this)
|
||
|
);
|
||
|
},
|
||
|
});
|
||
|
m.waterfall = p(m.column, {
|
||
|
lineWidth: 1,
|
||
|
lineColor: '#333',
|
||
|
dashStyle: 'dot',
|
||
|
borderColor: '#333',
|
||
|
});
|
||
|
h.waterfall = x(h.column, {
|
||
|
type: 'waterfall',
|
||
|
upColorProp: 'fill',
|
||
|
pointArrayMap: ['low', 'y'],
|
||
|
pointValKey: 'y',
|
||
|
init: function (a, b) {
|
||
|
b.stacking = !0;
|
||
|
h.column.prototype.init.call(this, a, b);
|
||
|
},
|
||
|
translate: function () {
|
||
|
var a = this.options,
|
||
|
b = this.yAxis,
|
||
|
c,
|
||
|
d,
|
||
|
g,
|
||
|
f,
|
||
|
e,
|
||
|
i,
|
||
|
n,
|
||
|
l,
|
||
|
k;
|
||
|
c = a.threshold;
|
||
|
a = (a.borderWidth % 2) / 2;
|
||
|
h.column.prototype.translate.apply(this);
|
||
|
l = c;
|
||
|
g = this.points;
|
||
|
for (d = 0, c = g.length; d < c; d++) {
|
||
|
f = g[d];
|
||
|
e = f.shapeArgs;
|
||
|
i = this.getStack(d);
|
||
|
k = i.points[this.index];
|
||
|
if (isNaN(f.y)) f.y = this.yData[d];
|
||
|
n = S(l, l + f.y) + k[0];
|
||
|
e.y = b.translate(n, 0, 1);
|
||
|
f.isSum || f.isIntermediateSum
|
||
|
? ((e.y = b.translate(k[1], 0, 1)), (e.height = b.translate(k[0], 0, 1) - e.y))
|
||
|
: (l += i.total);
|
||
|
e.height < 0 && ((e.y += e.height), (e.height *= -1));
|
||
|
f.plotY = e.y = D(e.y) - a;
|
||
|
e.height = D(e.height);
|
||
|
f.yBottom = e.y + e.height;
|
||
|
}
|
||
|
},
|
||
|
processData: function (a) {
|
||
|
var b = this.yData,
|
||
|
c = this.points,
|
||
|
d,
|
||
|
g = b.length,
|
||
|
f = this.options.threshold || 0,
|
||
|
e,
|
||
|
i,
|
||
|
h,
|
||
|
l,
|
||
|
k,
|
||
|
j;
|
||
|
i = e = h = l = f;
|
||
|
for (j = 0; j < g; j++)
|
||
|
(k = b[j]),
|
||
|
(d = c && c[j] ? c[j] : {}),
|
||
|
k === 'sum' || d.isSum
|
||
|
? (b[j] = i)
|
||
|
: k === 'intermediateSum' || d.isIntermediateSum
|
||
|
? ((b[j] = e), (e = f))
|
||
|
: ((i += k), (e += k)),
|
||
|
(h = Math.min(i, h)),
|
||
|
(l = Math.max(i, l));
|
||
|
z.prototype.processData.call(this, a);
|
||
|
this.dataMin = h;
|
||
|
this.dataMax = l;
|
||
|
},
|
||
|
toYData: function (a) {
|
||
|
if (a.isSum) return 'sum';
|
||
|
else if (a.isIntermediateSum) return 'intermediateSum';
|
||
|
return a.y;
|
||
|
},
|
||
|
getAttribs: function () {
|
||
|
h.column.prototype.getAttribs.apply(this, arguments);
|
||
|
var a = this.options,
|
||
|
b = a.states,
|
||
|
c = a.upColor || this.color,
|
||
|
a = j.Color(c).brighten(0.1).get(),
|
||
|
d = p(this.pointAttr),
|
||
|
g = this.upColorProp;
|
||
|
d[''][g] = c;
|
||
|
d.hover[g] = b.hover.upColor || a;
|
||
|
d.select[g] = b.select.upColor || c;
|
||
|
s(this.points, function (a) {
|
||
|
if (a.y > 0 && !a.color) (a.pointAttr = d), (a.color = c);
|
||
|
});
|
||
|
},
|
||
|
getGraphPath: function () {
|
||
|
var a = this.data,
|
||
|
b = a.length,
|
||
|
c = (D(this.options.lineWidth + this.options.borderWidth) % 2) / 2,
|
||
|
d = [],
|
||
|
g,
|
||
|
f,
|
||
|
e;
|
||
|
for (e = 1; e < b; e++)
|
||
|
(f = a[e].shapeArgs),
|
||
|
(g = a[e - 1].shapeArgs),
|
||
|
(f = ['M', g.x + g.width, g.y + c, 'L', f.x, g.y + c]),
|
||
|
a[e - 1].y < 0 && ((f[2] += g.height), (f[5] += g.height)),
|
||
|
(d = d.concat(f));
|
||
|
return d;
|
||
|
},
|
||
|
getExtremes: w,
|
||
|
getStack: function (a) {
|
||
|
var b = this.yAxis.stacks,
|
||
|
c = this.stackKey;
|
||
|
this.processedYData[a] < this.options.threshold && (c = '-' + c);
|
||
|
return b[c][a];
|
||
|
},
|
||
|
drawGraph: z.prototype.drawGraph,
|
||
|
});
|
||
|
m.bubble = p(m.scatter, {
|
||
|
dataLabels: {
|
||
|
inside: !0,
|
||
|
style: { color: 'white', textShadow: '0px 0px 3px black' },
|
||
|
verticalAlign: 'middle',
|
||
|
},
|
||
|
marker: { lineColor: null, lineWidth: 1 },
|
||
|
minSize: 8,
|
||
|
maxSize: '20%',
|
||
|
tooltip: { pointFormat: '({point.x}, {point.y}), Size: {point.z}' },
|
||
|
turboThreshold: 0,
|
||
|
zThreshold: 0,
|
||
|
});
|
||
|
h.bubble = x(h.scatter, {
|
||
|
type: 'bubble',
|
||
|
pointArrayMap: ['y', 'z'],
|
||
|
trackerGroups: ['group', 'dataLabelsGroup'],
|
||
|
pointAttrToOptions: { stroke: 'lineColor', 'stroke-width': 'lineWidth', fill: 'fillColor' },
|
||
|
applyOpacity: function (a) {
|
||
|
var b = this.options.marker,
|
||
|
c = r(b.fillOpacity, 0.5),
|
||
|
a = a || b.fillColor || this.color;
|
||
|
c !== 1 && (a = j.Color(a).setOpacity(c).get('rgba'));
|
||
|
return a;
|
||
|
},
|
||
|
convertAttribs: function () {
|
||
|
var a = z.prototype.convertAttribs.apply(this, arguments);
|
||
|
a.fill = this.applyOpacity(a.fill);
|
||
|
return a;
|
||
|
},
|
||
|
getRadii: function (a, b, c, d) {
|
||
|
var g,
|
||
|
f,
|
||
|
e,
|
||
|
i = this.zData,
|
||
|
h = [];
|
||
|
for (f = 0, g = i.length; f < g; f++)
|
||
|
(e = b - a), (e = e > 0 ? (i[f] - a) / (b - a) : 0.5), h.push(t.ceil(c + e * (d - c)) / 2);
|
||
|
this.radii = h;
|
||
|
},
|
||
|
animate: function (a) {
|
||
|
var b = this.options.animation;
|
||
|
if (!a)
|
||
|
s(this.points, function (a) {
|
||
|
var d = a.graphic,
|
||
|
a = a.shapeArgs;
|
||
|
d && a && (d.attr('r', 1), d.animate({ r: a.r }, b));
|
||
|
}),
|
||
|
(this.animate = null);
|
||
|
},
|
||
|
translate: function () {
|
||
|
var a,
|
||
|
b = this.data,
|
||
|
c,
|
||
|
d,
|
||
|
g = this.radii;
|
||
|
h.scatter.prototype.translate.call(this);
|
||
|
for (a = b.length; a--; )
|
||
|
(c = b[a]),
|
||
|
(d = g ? g[a] : 0),
|
||
|
(c.negative = c.z < (this.options.zThreshold || 0)),
|
||
|
d >= this.minPxSize / 2
|
||
|
? ((c.shapeType = 'circle'),
|
||
|
(c.shapeArgs = { x: c.plotX, y: c.plotY, r: d }),
|
||
|
(c.dlBox = { x: c.plotX - d, y: c.plotY - d, width: 2 * d, height: 2 * d }))
|
||
|
: (c.shapeArgs = c.plotY = c.dlBox = C);
|
||
|
},
|
||
|
drawLegendSymbol: function (a, b) {
|
||
|
var c = v(a.itemStyle.fontSize) / 2;
|
||
|
b.legendSymbol = this.chart.renderer
|
||
|
.circle(c, a.baseline - c, c)
|
||
|
.attr({ zIndex: 3 })
|
||
|
.add(b.legendGroup);
|
||
|
b.legendSymbol.isMarker = !0;
|
||
|
},
|
||
|
drawPoints: h.column.prototype.drawPoints,
|
||
|
alignDataLabel: h.column.prototype.alignDataLabel,
|
||
|
});
|
||
|
N.prototype.beforePadding = function () {
|
||
|
var a = this,
|
||
|
b = this.len,
|
||
|
c = this.chart,
|
||
|
d = 0,
|
||
|
g = b,
|
||
|
f = this.isXAxis,
|
||
|
e = f ? 'xData' : 'yData',
|
||
|
i = this.min,
|
||
|
h = {},
|
||
|
j = t.min(c.plotWidth, c.plotHeight),
|
||
|
k = Number.MAX_VALUE,
|
||
|
m = -Number.MAX_VALUE,
|
||
|
o = this.max - i,
|
||
|
p = b / o,
|
||
|
q = [];
|
||
|
this.tickPositions &&
|
||
|
(s(this.series, function (b) {
|
||
|
var c = b.options;
|
||
|
if (b.type === 'bubble' && b.visible && ((a.allowZoomOutside = !0), q.push(b), f))
|
||
|
s(['minSize', 'maxSize'], function (a) {
|
||
|
var b = c[a],
|
||
|
d = /%$/.test(b),
|
||
|
b = v(b);
|
||
|
h[a] = d ? (j * b) / 100 : b;
|
||
|
}),
|
||
|
(b.minPxSize = h.minSize),
|
||
|
(b = b.zData),
|
||
|
b.length &&
|
||
|
((k = t.min(
|
||
|
k,
|
||
|
t.max(P(b), c.displayNegative === !1 ? c.zThreshold : -Number.MAX_VALUE),
|
||
|
)),
|
||
|
(m = t.max(m, Q(b))));
|
||
|
}),
|
||
|
s(q, function (a) {
|
||
|
var b = a[e],
|
||
|
c = b.length,
|
||
|
j;
|
||
|
f && a.getRadii(k, m, h.minSize, h.maxSize);
|
||
|
if (o > 0)
|
||
|
for (; c--; )
|
||
|
(j = a.radii[c]),
|
||
|
(d = Math.min((b[c] - i) * p - j, d)),
|
||
|
(g = Math.max((b[c] - i) * p + j, g));
|
||
|
}),
|
||
|
q.length &&
|
||
|
o > 0 &&
|
||
|
r(this.options.min, this.userMin) === C &&
|
||
|
r(this.options.max, this.userMax) === C &&
|
||
|
((g -= b), (p *= (b + d - g) / b), (this.min += d / p), (this.max += g / p)));
|
||
|
};
|
||
|
var y = z.prototype,
|
||
|
m = j.Pointer.prototype;
|
||
|
y.toXY = function (a) {
|
||
|
var b,
|
||
|
c = this.chart;
|
||
|
b = a.plotX;
|
||
|
var d = a.plotY;
|
||
|
a.rectPlotX = b;
|
||
|
a.rectPlotY = d;
|
||
|
a.clientX = ((b / Math.PI) * 180 + this.xAxis.pane.options.startAngle) % 360;
|
||
|
b = this.xAxis.postTranslate(a.plotX, this.yAxis.len - d);
|
||
|
a.plotX = a.polarPlotX = b.x - c.plotLeft;
|
||
|
a.plotY = a.polarPlotY = b.y - c.plotTop;
|
||
|
};
|
||
|
y.orderTooltipPoints = function (a) {
|
||
|
if (
|
||
|
this.chart.polar &&
|
||
|
(a.sort(function (a, c) {
|
||
|
return a.clientX - c.clientX;
|
||
|
}),
|
||
|
a[0])
|
||
|
)
|
||
|
(a[0].wrappedClientX = a[0].clientX + 360), a.push(a[0]);
|
||
|
};
|
||
|
o(h.area.prototype, 'init', K);
|
||
|
o(h.areaspline.prototype, 'init', K);
|
||
|
o(h.spline.prototype, 'getPointSpline', function (a, b, c, d) {
|
||
|
var g, f, e, i, h, j, k;
|
||
|
if (this.chart.polar) {
|
||
|
g = c.plotX;
|
||
|
f = c.plotY;
|
||
|
a = b[d - 1];
|
||
|
e = b[d + 1];
|
||
|
this.connectEnds && (a || (a = b[b.length - 2]), e || (e = b[1]));
|
||
|
if (a && e)
|
||
|
(i = a.plotX),
|
||
|
(h = a.plotY),
|
||
|
(b = e.plotX),
|
||
|
(j = e.plotY),
|
||
|
(i = (1.5 * g + i) / 2.5),
|
||
|
(h = (1.5 * f + h) / 2.5),
|
||
|
(e = (1.5 * g + b) / 2.5),
|
||
|
(k = (1.5 * f + j) / 2.5),
|
||
|
(b = Math.sqrt(Math.pow(i - g, 2) + Math.pow(h - f, 2))),
|
||
|
(j = Math.sqrt(Math.pow(e - g, 2) + Math.pow(k - f, 2))),
|
||
|
(i = Math.atan2(h - f, i - g)),
|
||
|
(h = Math.atan2(k - f, e - g)),
|
||
|
(k = Math.PI / 2 + (i + h) / 2),
|
||
|
Math.abs(i - k) > Math.PI / 2 && (k -= Math.PI),
|
||
|
(i = g + Math.cos(k) * b),
|
||
|
(h = f + Math.sin(k) * b),
|
||
|
(e = g + Math.cos(Math.PI + k) * j),
|
||
|
(k = f + Math.sin(Math.PI + k) * j),
|
||
|
(c.rightContX = e),
|
||
|
(c.rightContY = k);
|
||
|
d
|
||
|
? ((c = ['C', a.rightContX || a.plotX, a.rightContY || a.plotY, i || g, h || f, g, f]),
|
||
|
(a.rightContX = a.rightContY = null))
|
||
|
: (c = ['M', g, f]);
|
||
|
} else c = a.call(this, b, c, d);
|
||
|
return c;
|
||
|
});
|
||
|
o(y, 'translate', function (a) {
|
||
|
a.call(this);
|
||
|
if (this.chart.polar && !this.preventPostTranslate)
|
||
|
for (var a = this.points, b = a.length; b--; ) this.toXY(a[b]);
|
||
|
});
|
||
|
o(y, 'getSegmentPath', function (a, b) {
|
||
|
var c = this.points;
|
||
|
if (
|
||
|
this.chart.polar &&
|
||
|
this.options.connectEnds !== !1 &&
|
||
|
b[b.length - 1] === c[c.length - 1] &&
|
||
|
c[0].y !== null
|
||
|
)
|
||
|
(this.connectEnds = !0), (b = [].concat(b, [c[0]]));
|
||
|
return a.call(this, b);
|
||
|
});
|
||
|
o(y, 'animate', L);
|
||
|
o(q, 'animate', L);
|
||
|
o(y, 'setTooltipPoints', function (a, b) {
|
||
|
this.chart.polar && F(this.xAxis, { tooltipLen: 360 });
|
||
|
return a.call(this, b);
|
||
|
});
|
||
|
o(q, 'translate', function (a) {
|
||
|
var b = this.xAxis,
|
||
|
c = this.yAxis.len,
|
||
|
d = b.center,
|
||
|
g = b.startAngleRad,
|
||
|
f = this.chart.renderer,
|
||
|
e,
|
||
|
h;
|
||
|
this.preventPostTranslate = !0;
|
||
|
a.call(this);
|
||
|
if (b.isRadial) {
|
||
|
b = this.points;
|
||
|
for (h = b.length; h--; )
|
||
|
(e = b[h]),
|
||
|
(a = e.barX + g),
|
||
|
(e.shapeType = 'path'),
|
||
|
(e.shapeArgs = {
|
||
|
d: f.symbols.arc(d[0], d[1], c - e.plotY, null, {
|
||
|
start: a,
|
||
|
end: a + e.pointWidth,
|
||
|
innerR: c - r(e.yBottom, c),
|
||
|
}),
|
||
|
}),
|
||
|
this.toXY(e);
|
||
|
}
|
||
|
});
|
||
|
o(q, 'alignDataLabel', function (a, b, c, d, g, f) {
|
||
|
if (this.chart.polar) {
|
||
|
a = (b.rectPlotX / Math.PI) * 180;
|
||
|
if (d.align === null)
|
||
|
d.align = a > 20 && a < 160 ? 'left' : a > 200 && a < 340 ? 'right' : 'center';
|
||
|
if (d.verticalAlign === null)
|
||
|
d.verticalAlign = a < 45 || a > 315 ? 'bottom' : a > 135 && a < 225 ? 'top' : 'middle';
|
||
|
y.alignDataLabel.call(this, b, c, d, g, f);
|
||
|
} else a.call(this, b, c, d, g, f);
|
||
|
});
|
||
|
o(m, 'getIndex', function (a, b) {
|
||
|
var c,
|
||
|
d = this.chart,
|
||
|
g;
|
||
|
d.polar
|
||
|
? ((g = d.xAxis[0].center),
|
||
|
(c = b.chartX - g[0] - d.plotLeft),
|
||
|
(d = b.chartY - g[1] - d.plotTop),
|
||
|
(c = 180 - Math.round((Math.atan2(c, d) / Math.PI) * 180)))
|
||
|
: (c = a.call(this, b));
|
||
|
return c;
|
||
|
});
|
||
|
o(m, 'getCoordinates', function (a, b) {
|
||
|
var c = this.chart,
|
||
|
d = { xAxis: [], yAxis: [] };
|
||
|
c.polar
|
||
|
? s(c.axes, function (a) {
|
||
|
var f = a.isXAxis,
|
||
|
e = a.center,
|
||
|
h = b.chartX - e[0] - c.plotLeft,
|
||
|
e = b.chartY - e[1] - c.plotTop;
|
||
|
d[f ? 'xAxis' : 'yAxis'].push({
|
||
|
axis: a,
|
||
|
value: a.translate(
|
||
|
f ? Math.PI - Math.atan2(h, e) : Math.sqrt(Math.pow(h, 2) + Math.pow(e, 2)),
|
||
|
!0,
|
||
|
),
|
||
|
});
|
||
|
})
|
||
|
: (d = a.call(this, b));
|
||
|
return d;
|
||
|
});
|
||
|
})(Highcharts);
|