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 ]; }