app/assets/javascripts/highcharts/modules/funnel.js in highcharts-rails-5.0.10 vs app/assets/javascripts/highcharts/modules/funnel.js in highcharts-rails-5.0.11
- old
+ new
@@ -1,7 +1,7 @@
/**
- * @license Highcharts JS v5.0.10 (2017-03-31)
+ * @license Highcharts JS v5.0.11 (2017-05-04)
* Highcharts funnel module
*
* (c) 2010-2017 Torstein Honsi
*
* License: www.highcharts.com/license
@@ -26,10 +26,11 @@
// create shortcuts
var seriesType = Highcharts.seriesType,
seriesTypes = Highcharts.seriesTypes,
noop = Highcharts.noop,
+ pick = Highcharts.pick,
each = Highcharts.each;
seriesType('funnel', 'pie', {
animation: false,
@@ -113,12 +114,12 @@
return y > neckY || height === neckHeight ?
neckWidth :
neckWidth + (width - neckWidth) * (1 - (y - top) / (height - neckHeight));
};
- series.getX = function(y, half) {
- return centerX + (half ? -1 : 1) * ((getWidthAt(reversed ? 2 * centerY - y : y) / 2) + options.dataLabels.distance);
+ series.getX = function(y, half, point) {
+ return centerX + (half ? -1 : 1) * ((getWidthAt(reversed ? 2 * centerY - y : y) / 2) + point.labelDistance);
};
// Expose
series.center = [centerX, centerY, height];
series.centerX = centerX;
@@ -248,38 +249,45 @@
/**
* Extend the pie data label method
*/
drawDataLabels: function() {
- var data = this.data,
- labelDistance = this.options.dataLabels.distance,
+ var series = this,
+ data = series.data,
+ labelDistance = series.options.dataLabels.distance,
leftSide,
sign,
point,
i = data.length,
x,
y;
// In the original pie label anticollision logic, the slots are distributed
// from one labelDistance above to one labelDistance below the pie. In funnels
// we don't want this.
- this.center[2] -= 2 * labelDistance;
+ series.center[2] -= 2 * labelDistance;
// Set the label position array for each point.
while (i--) {
point = data[i];
leftSide = point.half;
sign = leftSide ? 1 : -1;
y = point.plotY;
- x = this.getX(y, leftSide);
+ point.labelDistance = pick(
+ point.options.dataLabels && point.options.dataLabels.distance,
+ labelDistance
+ );
+ series.maxLabelDistance = Math.max(point.labelDistance, series.maxLabelDistance || 0);
+ x = series.getX(y, leftSide, point);
+
// set the anchor point for data labels
point.labelPos = [
0, // first break of connector
y, // a/a
- x + (labelDistance - 5) * sign, // second break, right outside point shape
+ x + (point.labelDistance - 5) * sign, // second break, right outside point shape
y, // a/a
- x + labelDistance * sign, // landing point for connector
+ x + point.labelDistance * sign, // landing point for connector
y, // a/a
leftSide ? 'right' : 'left', // alignment
0 // center angle
];
}