highcharts-rails 4.0.4.1 → 4.1.0
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.markdown +92 -0
 - data/Rakefile +2 -0
 - data/app/assets/javascripts/highcharts.js +1865 -1219
 - data/app/assets/javascripts/highcharts/adapters/standalone-framework.js +1 -1
 - data/app/assets/javascripts/highcharts/highcharts-3d.js +174 -239
 - data/app/assets/javascripts/highcharts/highcharts-more.js +195 -187
 - data/app/assets/javascripts/highcharts/modules/canvas-tools.js +1 -1
 - data/app/assets/javascripts/highcharts/modules/data.js +125 -196
 - data/app/assets/javascripts/highcharts/modules/drilldown.js +104 -80
 - data/app/assets/javascripts/highcharts/modules/exporting.js +14 -4
 - data/app/assets/javascripts/highcharts/modules/funnel.js +7 -7
 - data/app/assets/javascripts/highcharts/modules/heatmap.js +26 -69
 - data/app/assets/javascripts/highcharts/modules/no-data-to-display.js +2 -2
 - data/app/assets/javascripts/highcharts/modules/solid-gauge.js +32 -17
 - data/app/assets/javascripts/highcharts/modules/treemap.js +806 -0
 - data/app/assets/javascripts/highcharts/themes/dark-unica.js +1 -1
 - data/app/assets/javascripts/highcharts/themes/grid-light.js +1 -1
 - data/app/assets/javascripts/highcharts/themes/sand-signika.js +1 -1
 - data/lib/highcharts/version.rb +1 -1
 - metadata +13 -12
 - checksums.yaml.gz.asc +0 -18
 - data.tar.gz.asc +0 -18
 - metadata.gz.asc +0 -18
 
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            // @compilation_level SIMPLE_OPTIMIZATIONS
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            /**
         
     | 
| 
       5 
     | 
    
         
            -
             * @license Highcharts JS v4.0 
     | 
| 
      
 5 
     | 
    
         
            +
             * @license Highcharts JS v4.1.0 (2015-02-16)
         
     | 
| 
       6 
6 
     | 
    
         
             
             *
         
     | 
| 
       7 
7 
     | 
    
         
             
             * (c) 2009-2014 Torstein Honsi
         
     | 
| 
       8 
8 
     | 
    
         
             
             *
         
     | 
| 
         @@ -72,13 +72,16 @@ extend(Pane.prototype, { 
     | 
|
| 
       72 
72 
     | 
    
         
             
            		// push them to the first axis' plot bands and borrow the existing logic there.
         
     | 
| 
       73 
73 
     | 
    
         
             
            		if (backgroundOption) {
         
     | 
| 
       74 
74 
     | 
    
         
             
            			each([].concat(splat(backgroundOption)).reverse(), function (config) {
         
     | 
| 
       75 
     | 
    
         
            -
            				var backgroundColor = config.backgroundColor 
     | 
| 
      
 75 
     | 
    
         
            +
            				var backgroundColor = config.backgroundColor,  // if defined, replace the old one (specific for gradients)
         
     | 
| 
      
 76 
     | 
    
         
            +
            					axisUserOptions = firstAxis.userOptions;
         
     | 
| 
       76 
77 
     | 
    
         
             
            				config = merge(pane.defaultBackgroundOptions, config);
         
     | 
| 
       77 
78 
     | 
    
         
             
            				if (backgroundColor) {
         
     | 
| 
       78 
79 
     | 
    
         
             
            					config.backgroundColor = backgroundColor;
         
     | 
| 
       79 
80 
     | 
    
         
             
            				}
         
     | 
| 
       80 
81 
     | 
    
         
             
            				config.color = config.backgroundColor; // due to naming in plotBands
         
     | 
| 
       81 
82 
     | 
    
         
             
            				firstAxis.options.plotBands.unshift(config);
         
     | 
| 
      
 83 
     | 
    
         
            +
            				axisUserOptions.plotBands = axisUserOptions.plotBands || []; // #3176
         
     | 
| 
      
 84 
     | 
    
         
            +
            				axisUserOptions.plotBands.unshift(config);
         
     | 
| 
       82 
85 
     | 
    
         
             
            			});
         
     | 
| 
       83 
86 
     | 
    
         
             
            		}
         
     | 
| 
       84 
87 
     | 
    
         
             
            	},
         
     | 
| 
         @@ -371,6 +374,10 @@ var radialAxisMixin = { 
     | 
|
| 
       371 
374 
     | 
    
         | 
| 
       372 
375 
     | 
    
         
             
            		// Circular grid bands
         
     | 
| 
       373 
376 
     | 
    
         
             
            		} else {
         
     | 
| 
      
 377 
     | 
    
         
            +
             
     | 
| 
      
 378 
     | 
    
         
            +
            			// Keep within bounds
         
     | 
| 
      
 379 
     | 
    
         
            +
            			from = Math.max(from, this.min);
         
     | 
| 
      
 380 
     | 
    
         
            +
            			to = Math.min(to, this.max);
         
     | 
| 
       374 
381 
     | 
    
         | 
| 
       375 
382 
     | 
    
         
             
            			// Plot bands on Y axis (radial axis) - inner and outer radius depend on to and from
         
     | 
| 
       376 
383 
     | 
    
         
             
            			if (!isCircular) {
         
     | 
| 
         @@ -403,14 +410,14 @@ var radialAxisMixin = { 
     | 
|
| 
       403 
410 
     | 
    
         
             
            				radii[0],
         
     | 
| 
       404 
411 
     | 
    
         
             
            				radii[0],
         
     | 
| 
       405 
412 
     | 
    
         
             
            				{
         
     | 
| 
       406 
     | 
    
         
            -
            					start: start,
         
     | 
| 
       407 
     | 
    
         
            -
            					end: end,
         
     | 
| 
      
 413 
     | 
    
         
            +
            					start: Math.min(start, end), // Math is for reversed yAxis (#3606)
         
     | 
| 
      
 414 
     | 
    
         
            +
            					end: Math.max(start, end),
         
     | 
| 
       408 
415 
     | 
    
         
             
            					innerR: pick(radii[1], radii[0] - radii[2]),
         
     | 
| 
       409 
416 
     | 
    
         
             
            					open: open
         
     | 
| 
       410 
417 
     | 
    
         
             
            				}
         
     | 
| 
       411 
418 
     | 
    
         
             
            			);
         
     | 
| 
       412 
419 
     | 
    
         
             
            		}
         
     | 
| 
       413 
     | 
    
         
            -
             
     | 
| 
      
 420 
     | 
    
         
            +
             
     | 
| 
       414 
421 
     | 
    
         
             
            		return ret;
         
     | 
| 
       415 
422 
     | 
    
         
             
            	},
         
     | 
| 
       416 
423 
     | 
    
         | 
| 
         @@ -575,6 +582,7 @@ wrap(tickProto, 'getLabelPosition', function (proceed, x, y, label, horiz, label 
     | 
|
| 
       575 
582 
     | 
    
         
             
            	var axis = this.axis,
         
     | 
| 
       576 
583 
     | 
    
         
             
            		optionsY = labelOptions.y,
         
     | 
| 
       577 
584 
     | 
    
         
             
            		ret,
         
     | 
| 
      
 585 
     | 
    
         
            +
            		centerSlot = 20, // 20 degrees to each side at the top and bottom
         
     | 
| 
       578 
586 
     | 
    
         
             
            		align = labelOptions.align,
         
     | 
| 
       579 
587 
     | 
    
         
             
            		angle = ((axis.translate(this.pos) + axis.startAngleRad + Math.PI / 2) / Math.PI * 180) % 360;
         
     | 
| 
       580 
588 
     | 
    
         | 
| 
         @@ -595,9 +603,12 @@ wrap(tickProto, 'getLabelPosition', function (proceed, x, y, label, horiz, label 
     | 
|
| 
       595 
603 
     | 
    
         
             
            		// Automatic alignment
         
     | 
| 
       596 
604 
     | 
    
         
             
            		if (align === null) {
         
     | 
| 
       597 
605 
     | 
    
         
             
            			if (axis.isCircular) {
         
     | 
| 
       598 
     | 
    
         
            -
            				if ( 
     | 
| 
      
 606 
     | 
    
         
            +
            				if (this.label.getBBox().width > axis.len * axis.tickInterval / (axis.max - axis.min)) { // #3506
         
     | 
| 
      
 607 
     | 
    
         
            +
            					centerSlot = 0;
         
     | 
| 
      
 608 
     | 
    
         
            +
            				}
         
     | 
| 
      
 609 
     | 
    
         
            +
            				if (angle > centerSlot && angle < 180 - centerSlot) {
         
     | 
| 
       599 
610 
     | 
    
         
             
            					align = 'left'; // right hemisphere
         
     | 
| 
       600 
     | 
    
         
            -
            				} else if (angle >  
     | 
| 
      
 611 
     | 
    
         
            +
            				} else if (angle > 180 + centerSlot && angle < 360 - centerSlot) {
         
     | 
| 
       601 
612 
     | 
    
         
             
            					align = 'right'; // left hemisphere
         
     | 
| 
       602 
613 
     | 
    
         
             
            				} else {
         
     | 
| 
       603 
614 
     | 
    
         
             
            					align = 'center'; // top or bottom
         
     | 
| 
         @@ -682,6 +693,20 @@ seriesTypes.arearange = extendClass(seriesTypes.area, { 
     | 
|
| 
       682 
693 
     | 
    
         
             
            		return [point.low, point.high];
         
     | 
| 
       683 
694 
     | 
    
         
             
            	},
         
     | 
| 
       684 
695 
     | 
    
         
             
            	pointValKey: 'low',
         
     | 
| 
      
 696 
     | 
    
         
            +
            	deferTranslatePolar: true,
         
     | 
| 
      
 697 
     | 
    
         
            +
             
     | 
| 
      
 698 
     | 
    
         
            +
            	/**
         
     | 
| 
      
 699 
     | 
    
         
            +
            	 * Translate a point's plotHigh from the internal angle and radius measures to 
         
     | 
| 
      
 700 
     | 
    
         
            +
            	 * true plotHigh coordinates. This is an addition of the toXY method found in
         
     | 
| 
      
 701 
     | 
    
         
            +
            	 * Polar.js, because it runs too early for arearanges to be considered (#3419).
         
     | 
| 
      
 702 
     | 
    
         
            +
            	 */
         
     | 
| 
      
 703 
     | 
    
         
            +
            	highToXY: function (point) {
         
     | 
| 
      
 704 
     | 
    
         
            +
            		// Find the polar plotX and plotY
         
     | 
| 
      
 705 
     | 
    
         
            +
            		var chart = this.chart,
         
     | 
| 
      
 706 
     | 
    
         
            +
            			xy = this.xAxis.postTranslate(point.rectPlotX, this.yAxis.len - point.plotHigh);
         
     | 
| 
      
 707 
     | 
    
         
            +
            		point.plotHighX = xy.x - chart.plotLeft;
         
     | 
| 
      
 708 
     | 
    
         
            +
            		point.plotHigh = xy.y - chart.plotTop;
         
     | 
| 
      
 709 
     | 
    
         
            +
            	},
         
     | 
| 
       685 
710 
     | 
    
         | 
| 
       686 
711 
     | 
    
         
             
            	/**
         
     | 
| 
       687 
712 
     | 
    
         
             
            	 * Extend getSegments to force null points if the higher value is null. #1703.
         
     | 
| 
         @@ -728,6 +753,13 @@ seriesTypes.arearange = extendClass(seriesTypes.area, { 
     | 
|
| 
       728 
753 
     | 
    
         
             
            				point.plotHigh = yAxis.translate(high, 0, 1, 0, 1);
         
     | 
| 
       729 
754 
     | 
    
         
             
            			}
         
     | 
| 
       730 
755 
     | 
    
         
             
            		});
         
     | 
| 
      
 756 
     | 
    
         
            +
             
     | 
| 
      
 757 
     | 
    
         
            +
            		// Postprocess plotHigh
         
     | 
| 
      
 758 
     | 
    
         
            +
            		if (this.chart.polar) {
         
     | 
| 
      
 759 
     | 
    
         
            +
            			each(this.points, function (point) {
         
     | 
| 
      
 760 
     | 
    
         
            +
            				series.highToXY(point);
         
     | 
| 
      
 761 
     | 
    
         
            +
            			});
         
     | 
| 
      
 762 
     | 
    
         
            +
            		}
         
     | 
| 
       731 
763 
     | 
    
         
             
            	},
         
     | 
| 
       732 
764 
     | 
    
         | 
| 
       733 
765 
     | 
    
         
             
            	/**
         
     | 
| 
         @@ -757,7 +789,7 @@ seriesTypes.arearange = extendClass(seriesTypes.area, { 
     | 
|
| 
       757 
789 
     | 
    
         
             
            			point = segment[i];
         
     | 
| 
       758 
790 
     | 
    
         
             
            			if (point.plotHigh !== null) {
         
     | 
| 
       759 
791 
     | 
    
         
             
            				highSegment.push({
         
     | 
| 
       760 
     | 
    
         
            -
            					plotX: point.plotX,
         
     | 
| 
      
 792 
     | 
    
         
            +
            					plotX: point.plotHighX || point.plotX, // plotHighX is for polar charts
         
     | 
| 
       761 
793 
     | 
    
         
             
            					plotY: point.plotHigh
         
     | 
| 
       762 
794 
     | 
    
         
             
            				});
         
     | 
| 
       763 
795 
     | 
    
         
             
            			}
         
     | 
| 
         @@ -778,7 +810,9 @@ seriesTypes.arearange = extendClass(seriesTypes.area, { 
     | 
|
| 
       778 
810 
     | 
    
         
             
            		linePath = [].concat(lowerPath, higherPath);
         
     | 
| 
       779 
811 
     | 
    
         | 
| 
       780 
812 
     | 
    
         
             
            		// For the area path, we need to change the 'move' statement into 'lineTo' or 'curveTo'
         
     | 
| 
       781 
     | 
    
         
            -
            		 
     | 
| 
      
 813 
     | 
    
         
            +
            		if (!this.chart.polar) {
         
     | 
| 
      
 814 
     | 
    
         
            +
            			higherPath[0] = 'L'; // this probably doesn't work for spline
         
     | 
| 
      
 815 
     | 
    
         
            +
            		}
         
     | 
| 
       782 
816 
     | 
    
         
             
            		this.areaPath = this.areaPath.concat(lowerPath, higherPath);
         
     | 
| 
       783 
817 
     | 
    
         | 
| 
       784 
818 
     | 
    
         
             
            		return linePath;
         
     | 
| 
         @@ -870,6 +904,8 @@ seriesTypes.arearange = extendClass(seriesTypes.area, { 
     | 
|
| 
       870 
904 
     | 
    
         
             
            		seriesTypes.column.prototype.alignDataLabel.apply(this, arguments);
         
     | 
| 
       871 
905 
     | 
    
         
             
            	},
         
     | 
| 
       872 
906 
     | 
    
         | 
| 
      
 907 
     | 
    
         
            +
            	setStackedPoints: noop,
         
     | 
| 
      
 908 
     | 
    
         
            +
            	
         
     | 
| 
       873 
909 
     | 
    
         
             
            	getSymbol: noop,
         
     | 
| 
       874 
910 
     | 
    
         | 
| 
       875 
911 
     | 
    
         
             
            	drawPoints: noop
         
     | 
| 
         @@ -967,9 +1003,6 @@ defaultPlotOptions.gauge = merge(defaultPlotOptions.line, { 
     | 
|
| 
       967 
1003 
     | 
    
         
             
            		borderColor: 'silver',
         
     | 
| 
       968 
1004 
     | 
    
         
             
            		borderRadius: 3,
         
     | 
| 
       969 
1005 
     | 
    
         
             
            		crop: false,
         
     | 
| 
       970 
     | 
    
         
            -
            		style: {
         
     | 
| 
       971 
     | 
    
         
            -
            			fontWeight: 'bold'
         
     | 
| 
       972 
     | 
    
         
            -
            		},
         
     | 
| 
       973 
1006 
     | 
    
         
             
            		verticalAlign: 'top',
         
     | 
| 
       974 
1007 
     | 
    
         
             
            		zIndex: 2
         
     | 
| 
       975 
1008 
     | 
    
         
             
            	},
         
     | 
| 
         @@ -1213,7 +1246,7 @@ defaultPlotOptions.boxplot = merge(defaultPlotOptions.column, { 
     | 
|
| 
       1213 
1246 
     | 
    
         
             
            	//stemWidth: null,
         
     | 
| 
       1214 
1247 
     | 
    
         
             
            	threshold: null,
         
     | 
| 
       1215 
1248 
     | 
    
         
             
            	tooltip: {
         
     | 
| 
       1216 
     | 
    
         
            -
            		pointFormat: '<span style="color:{ 
     | 
| 
      
 1249 
     | 
    
         
            +
            		pointFormat: '<span style="color:{point.color}">\u25CF</span> <b> {series.name}</b><br/>' + // docs
         
     | 
| 
       1217 
1250 
     | 
    
         
             
            			'Maximum: {point.high}<br/>' +
         
     | 
| 
       1218 
1251 
     | 
    
         
             
            			'Upper quartile: {point.q3}<br/>' +
         
     | 
| 
       1219 
1252 
     | 
    
         
             
            			'Median: {point.median}<br/>' +
         
     | 
| 
         @@ -1340,8 +1373,6 @@ seriesTypes.boxplot = extendClass(seriesTypes.column, { 
     | 
|
| 
       1340 
1373 
     | 
    
         
             
            				// Median attributes
         
     | 
| 
       1341 
1374 
     | 
    
         
             
            				medianAttr.stroke = point.medianColor || options.medianColor || color;
         
     | 
| 
       1342 
1375 
     | 
    
         
             
            				medianAttr['stroke-width'] = pick(point.medianWidth, options.medianWidth, options.lineWidth);
         
     | 
| 
       1343 
     | 
    
         
            -
            				medianAttr['stroke-linecap'] = 'round'; // #1638
         
     | 
| 
       1344 
     | 
    
         
            -
            				
         
     | 
| 
       1345 
1376 
     | 
    
         | 
| 
       1346 
1377 
     | 
    
         
             
            				// The stem
         
     | 
| 
       1347 
1378 
     | 
    
         
             
            				crispCorr = (stemAttr['stroke-width'] % 2) / 2;
         
     | 
| 
         @@ -1474,7 +1505,7 @@ defaultPlotOptions.errorbar = merge(defaultPlotOptions.boxplot, { 
     | 
|
| 
       1474 
1505 
     | 
    
         
             
            	grouping: false,
         
     | 
| 
       1475 
1506 
     | 
    
         
             
            	linkedTo: ':previous',
         
     | 
| 
       1476 
1507 
     | 
    
         
             
            	tooltip: {
         
     | 
| 
       1477 
     | 
    
         
            -
            		pointFormat: '<span style="color:{ 
     | 
| 
      
 1508 
     | 
    
         
            +
            		pointFormat: '<span style="color:{point.color}">\u25CF</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>' // docs
         
     | 
| 
       1478 
1509 
     | 
    
         
             
            	},
         
     | 
| 
       1479 
1510 
     | 
    
         
             
            	whiskerWidth: null
         
     | 
| 
       1480 
1511 
     | 
    
         
             
            });
         
     | 
| 
         @@ -1513,6 +1544,9 @@ defaultPlotOptions.waterfall = merge(defaultPlotOptions.column, { 
     | 
|
| 
       1513 
1544 
     | 
    
         
             
            	lineColor: '#333',
         
     | 
| 
       1514 
1545 
     | 
    
         
             
            	dashStyle: 'dot',
         
     | 
| 
       1515 
1546 
     | 
    
         
             
            	borderColor: '#333',
         
     | 
| 
      
 1547 
     | 
    
         
            +
            	dataLabels: {
         
     | 
| 
      
 1548 
     | 
    
         
            +
            		inside: true
         
     | 
| 
      
 1549 
     | 
    
         
            +
            	},
         
     | 
| 
       1516 
1550 
     | 
    
         
             
            	states: {
         
     | 
| 
       1517 
1551 
     | 
    
         
             
            		hover: {
         
     | 
| 
       1518 
1552 
     | 
    
         
             
            			lineWidthPlus: 0 // #3126
         
     | 
| 
         @@ -1531,17 +1565,6 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1531 
1565 
     | 
    
         | 
| 
       1532 
1566 
     | 
    
         
             
            	pointValKey: 'y',
         
     | 
| 
       1533 
1567 
     | 
    
         | 
| 
       1534 
     | 
    
         
            -
            	/**
         
     | 
| 
       1535 
     | 
    
         
            -
            	 * Init waterfall series, force stacking
         
     | 
| 
       1536 
     | 
    
         
            -
            	 */
         
     | 
| 
       1537 
     | 
    
         
            -
            	init: function (chart, options) {
         
     | 
| 
       1538 
     | 
    
         
            -
            		// force stacking
         
     | 
| 
       1539 
     | 
    
         
            -
            		options.stacking = true;
         
     | 
| 
       1540 
     | 
    
         
            -
             
     | 
| 
       1541 
     | 
    
         
            -
            		seriesTypes.column.prototype.init.call(this, chart, options);
         
     | 
| 
       1542 
     | 
    
         
            -
            	},
         
     | 
| 
       1543 
     | 
    
         
            -
             
     | 
| 
       1544 
     | 
    
         
            -
             
     | 
| 
       1545 
1568 
     | 
    
         
             
            	/**
         
     | 
| 
       1546 
1569 
     | 
    
         
             
            	 * Translate data points from raw values
         
     | 
| 
       1547 
1570 
     | 
    
         
             
            	 */
         
     | 
| 
         @@ -1556,10 +1579,12 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1556 
1579 
     | 
    
         
             
            			shapeArgs,
         
     | 
| 
       1557 
1580 
     | 
    
         
             
            			stack,
         
     | 
| 
       1558 
1581 
     | 
    
         
             
            			y,
         
     | 
| 
      
 1582 
     | 
    
         
            +
            			yValue,
         
     | 
| 
       1559 
1583 
     | 
    
         
             
            			previousY,
         
     | 
| 
       1560 
1584 
     | 
    
         
             
            			previousIntermediate,
         
     | 
| 
       1561 
     | 
    
         
            -
            			 
     | 
| 
      
 1585 
     | 
    
         
            +
            			range,
         
     | 
| 
       1562 
1586 
     | 
    
         
             
            			threshold = options.threshold,
         
     | 
| 
      
 1587 
     | 
    
         
            +
            			stacking = options.stacking,
         
     | 
| 
       1563 
1588 
     | 
    
         
             
            			tooltipY;
         
     | 
| 
       1564 
1589 
     | 
    
         | 
| 
       1565 
1590 
     | 
    
         
             
            		// run column series translate
         
     | 
| 
         @@ -1571,35 +1596,38 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1571 
1596 
     | 
    
         
             
            		for (i = 0, len = points.length; i < len; i++) {
         
     | 
| 
       1572 
1597 
     | 
    
         
             
            			// cache current point object
         
     | 
| 
       1573 
1598 
     | 
    
         
             
            			point = points[i];
         
     | 
| 
      
 1599 
     | 
    
         
            +
            			yValue = this.processedYData[i];
         
     | 
| 
       1574 
1600 
     | 
    
         
             
            			shapeArgs = point.shapeArgs;
         
     | 
| 
       1575 
1601 
     | 
    
         | 
| 
       1576 
1602 
     | 
    
         
             
            			// get current stack
         
     | 
| 
       1577 
     | 
    
         
            -
            			stack = series. 
     | 
| 
       1578 
     | 
    
         
            -
            			 
     | 
| 
      
 1603 
     | 
    
         
            +
            			stack = stacking && yAxis.stacks[(series.negStacks && yValue < threshold ? '-' : '') + series.stackKey];
         
     | 
| 
      
 1604 
     | 
    
         
            +
            			range = stack ? 
         
     | 
| 
      
 1605 
     | 
    
         
            +
            				stack[point.x].points[series.index + ',' + i] :
         
     | 
| 
      
 1606 
     | 
    
         
            +
            				[0, yValue];
         
     | 
| 
       1579 
1607 
     | 
    
         | 
| 
       1580 
1608 
     | 
    
         
             
            			// override point value for sums
         
     | 
| 
       1581 
     | 
    
         
            -
            			if ( 
     | 
| 
       1582 
     | 
    
         
            -
            				point.y =  
     | 
| 
      
 1609 
     | 
    
         
            +
            			if (point.isSum || point.isIntermediateSum) { // #3710 Update point does not propagate to sum
         
     | 
| 
      
 1610 
     | 
    
         
            +
            				point.y = yValue;
         
     | 
| 
       1583 
1611 
     | 
    
         
             
            			}
         
     | 
| 
       1584 
1612 
     | 
    
         | 
| 
       1585 
1613 
     | 
    
         
             
            			// up points
         
     | 
| 
       1586 
     | 
    
         
            -
            			y = mathMax(previousY, previousY + point.y) +  
     | 
| 
      
 1614 
     | 
    
         
            +
            			y = mathMax(previousY, previousY + point.y) + range[0];
         
     | 
| 
       1587 
1615 
     | 
    
         
             
            			shapeArgs.y = yAxis.translate(y, 0, 1);
         
     | 
| 
       1588 
1616 
     | 
    
         | 
| 
       1589 
1617 
     | 
    
         | 
| 
       1590 
1618 
     | 
    
         
             
            			// sum points
         
     | 
| 
       1591 
1619 
     | 
    
         
             
            			if (point.isSum) {
         
     | 
| 
       1592 
     | 
    
         
            -
            				shapeArgs.y = yAxis.translate( 
     | 
| 
       1593 
     | 
    
         
            -
            				shapeArgs.height = yAxis.translate( 
     | 
| 
      
 1620 
     | 
    
         
            +
            				shapeArgs.y = yAxis.translate(range[1], 0, 1);
         
     | 
| 
      
 1621 
     | 
    
         
            +
            				shapeArgs.height = yAxis.translate(range[0], 0, 1) - shapeArgs.y;
         
     | 
| 
       1594 
1622 
     | 
    
         | 
| 
       1595 
1623 
     | 
    
         
             
            			} else if (point.isIntermediateSum) {
         
     | 
| 
       1596 
     | 
    
         
            -
            				shapeArgs.y = yAxis.translate( 
     | 
| 
      
 1624 
     | 
    
         
            +
            				shapeArgs.y = yAxis.translate(range[1], 0, 1);
         
     | 
| 
       1597 
1625 
     | 
    
         
             
            				shapeArgs.height = yAxis.translate(previousIntermediate, 0, 1) - shapeArgs.y;
         
     | 
| 
       1598 
     | 
    
         
            -
            				previousIntermediate =  
     | 
| 
      
 1626 
     | 
    
         
            +
            				previousIntermediate = range[1];
         
     | 
| 
       1599 
1627 
     | 
    
         | 
| 
       1600 
1628 
     | 
    
         
             
            			// if it's not the sum point, update previous stack end position
         
     | 
| 
       1601 
1629 
     | 
    
         
             
            			} else {
         
     | 
| 
       1602 
     | 
    
         
            -
            				previousY +=  
     | 
| 
      
 1630 
     | 
    
         
            +
            				previousY += yValue;
         
     | 
| 
       1603 
1631 
     | 
    
         
             
            			}
         
     | 
| 
       1604 
1632 
     | 
    
         | 
| 
       1605 
1633 
     | 
    
         
             
            			// negative points
         
     | 
| 
         @@ -1630,7 +1658,7 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1630 
1658 
     | 
    
         
             
            		var series = this,
         
     | 
| 
       1631 
1659 
     | 
    
         
             
            			options = series.options,
         
     | 
| 
       1632 
1660 
     | 
    
         
             
            			yData = series.yData,
         
     | 
| 
       1633 
     | 
    
         
            -
            			points = series. 
     | 
| 
      
 1661 
     | 
    
         
            +
            			points = series.options.data, // #3710 Update point does not propagate to sum
         
     | 
| 
       1634 
1662 
     | 
    
         
             
            			point,
         
     | 
| 
       1635 
1663 
     | 
    
         
             
            			dataLength = yData.length,
         
     | 
| 
       1636 
1664 
     | 
    
         
             
            			threshold = options.threshold || 0,
         
     | 
| 
         @@ -1697,9 +1725,16 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1697 
1725 
     | 
    
         
             
            		seriesDownPointAttr.select[upColorProp] = stateOptions.select.upColor || upColor;
         
     | 
| 
       1698 
1726 
     | 
    
         | 
| 
       1699 
1727 
     | 
    
         
             
            		each(series.points, function (point) {
         
     | 
| 
       1700 
     | 
    
         
            -
            			if ( 
     | 
| 
       1701 
     | 
    
         
            -
            				 
     | 
| 
       1702 
     | 
    
         
            -
            				point. 
     | 
| 
      
 1728 
     | 
    
         
            +
            			if (!point.options.color) {
         
     | 
| 
      
 1729 
     | 
    
         
            +
            				// Up color
         
     | 
| 
      
 1730 
     | 
    
         
            +
            				if (point.y > 0) {
         
     | 
| 
      
 1731 
     | 
    
         
            +
            					point.pointAttr = seriesDownPointAttr;
         
     | 
| 
      
 1732 
     | 
    
         
            +
            					point.color = upColor;
         
     | 
| 
      
 1733 
     | 
    
         
            +
             
     | 
| 
      
 1734 
     | 
    
         
            +
            				// Down color (#3710, update to negative)
         
     | 
| 
      
 1735 
     | 
    
         
            +
            				} else {
         
     | 
| 
      
 1736 
     | 
    
         
            +
            					point.pointAttr = series.pointAttr;
         
     | 
| 
      
 1737 
     | 
    
         
            +
            				}
         
     | 
| 
       1703 
1738 
     | 
    
         
             
            			}
         
     | 
| 
       1704 
1739 
     | 
    
         
             
            		});
         
     | 
| 
       1705 
1740 
     | 
    
         
             
            	},
         
     | 
| 
         @@ -1748,27 +1783,34 @@ seriesTypes.waterfall = extendClass(seriesTypes.column, { 
     | 
|
| 
       1748 
1783 
     | 
    
         
             
            	 */
         
     | 
| 
       1749 
1784 
     | 
    
         
             
            	getExtremes: noop,
         
     | 
| 
       1750 
1785 
     | 
    
         | 
| 
       1751 
     | 
    
         
            -
            	/**
         
     | 
| 
       1752 
     | 
    
         
            -
            	 * Return stack for given index
         
     | 
| 
       1753 
     | 
    
         
            -
            	 */
         
     | 
| 
       1754 
     | 
    
         
            -
            	getStack: function (i) {
         
     | 
| 
       1755 
     | 
    
         
            -
            		var axis = this.yAxis,
         
     | 
| 
       1756 
     | 
    
         
            -
            			stacks = axis.stacks,
         
     | 
| 
       1757 
     | 
    
         
            -
            			key = this.stackKey;
         
     | 
| 
       1758 
     | 
    
         
            -
             
     | 
| 
       1759 
     | 
    
         
            -
            		if (this.processedYData[i] < this.options.threshold) {
         
     | 
| 
       1760 
     | 
    
         
            -
            			key = '-' + key;
         
     | 
| 
       1761 
     | 
    
         
            -
            		}
         
     | 
| 
       1762 
     | 
    
         
            -
             
     | 
| 
       1763 
     | 
    
         
            -
            		return stacks[key][i];
         
     | 
| 
       1764 
     | 
    
         
            -
            	},
         
     | 
| 
       1765 
     | 
    
         
            -
             
     | 
| 
       1766 
1786 
     | 
    
         
             
            	drawGraph: Series.prototype.drawGraph
         
     | 
| 
       1767 
1787 
     | 
    
         
             
            });
         
     | 
| 
       1768 
1788 
     | 
    
         | 
| 
       1769 
1789 
     | 
    
         
             
            /* ****************************************************************************
         
     | 
| 
       1770 
1790 
     | 
    
         
             
             * End Waterfall series code                                                  *
         
     | 
| 
       1771 
1791 
     | 
    
         
             
             *****************************************************************************/
         
     | 
| 
      
 1792 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1793 
     | 
    
         
            +
             * Set the default options for polygon
         
     | 
| 
      
 1794 
     | 
    
         
            +
             */
         
     | 
| 
      
 1795 
     | 
    
         
            +
            defaultPlotOptions.polygon = merge(defaultPlotOptions.scatter, {
         
     | 
| 
      
 1796 
     | 
    
         
            +
            	marker: {
         
     | 
| 
      
 1797 
     | 
    
         
            +
            		enabled: false
         
     | 
| 
      
 1798 
     | 
    
         
            +
            	}
         
     | 
| 
      
 1799 
     | 
    
         
            +
            });
         
     | 
| 
      
 1800 
     | 
    
         
            +
             
     | 
| 
      
 1801 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1802 
     | 
    
         
            +
             * The polygon series class
         
     | 
| 
      
 1803 
     | 
    
         
            +
             */
         
     | 
| 
      
 1804 
     | 
    
         
            +
            seriesTypes.polygon = extendClass(seriesTypes.scatter, {
         
     | 
| 
      
 1805 
     | 
    
         
            +
            	type: 'polygon',
         
     | 
| 
      
 1806 
     | 
    
         
            +
            	fillGraph: true,
         
     | 
| 
      
 1807 
     | 
    
         
            +
            	// Close all segments
         
     | 
| 
      
 1808 
     | 
    
         
            +
            	getSegmentPath: function (segment) {
         
     | 
| 
      
 1809 
     | 
    
         
            +
            		return Series.prototype.getSegmentPath.call(this, segment).concat('z');
         
     | 
| 
      
 1810 
     | 
    
         
            +
            	},
         
     | 
| 
      
 1811 
     | 
    
         
            +
            	drawGraph: Series.prototype.drawGraph,
         
     | 
| 
      
 1812 
     | 
    
         
            +
            	drawLegendSymbol: Highcharts.LegendSymbolMixin.drawRectangle
         
     | 
| 
      
 1813 
     | 
    
         
            +
            });
         
     | 
| 
       1772 
1814 
     | 
    
         
             
            /* ****************************************************************************
         
     | 
| 
       1773 
1815 
     | 
    
         
             
             * Start Bubble series code											          *
         
     | 
| 
       1774 
1816 
     | 
    
         
             
             *****************************************************************************/
         
     | 
| 
         @@ -1780,10 +1822,6 @@ defaultPlotOptions.bubble = merge(defaultPlotOptions.scatter, { 
     | 
|
| 
       1780 
1822 
     | 
    
         
             
            			return this.point.z;
         
     | 
| 
       1781 
1823 
     | 
    
         
             
            		},
         
     | 
| 
       1782 
1824 
     | 
    
         
             
            		inside: true,
         
     | 
| 
       1783 
     | 
    
         
            -
            		style: {
         
     | 
| 
       1784 
     | 
    
         
            -
            			color: 'white',
         
     | 
| 
       1785 
     | 
    
         
            -
            			textShadow: '0px 0px 3px black'
         
     | 
| 
       1786 
     | 
    
         
            -
            		},
         
     | 
| 
       1787 
1825 
     | 
    
         
             
            		verticalAlign: 'middle'
         
     | 
| 
       1788 
1826 
     | 
    
         
             
            	},
         
     | 
| 
       1789 
1827 
     | 
    
         
             
            	// displayNegative: true,
         
     | 
| 
         @@ -1807,13 +1845,15 @@ defaultPlotOptions.bubble = merge(defaultPlotOptions.scatter, { 
     | 
|
| 
       1807 
1845 
     | 
    
         
             
            		pointFormat: '({point.x}, {point.y}), Size: {point.z}'
         
     | 
| 
       1808 
1846 
     | 
    
         
             
            	},
         
     | 
| 
       1809 
1847 
     | 
    
         
             
            	turboThreshold: 0,
         
     | 
| 
       1810 
     | 
    
         
            -
            	zThreshold: 0
         
     | 
| 
      
 1848 
     | 
    
         
            +
            	zThreshold: 0,
         
     | 
| 
      
 1849 
     | 
    
         
            +
            	zoneAxis: 'z'
         
     | 
| 
       1811 
1850 
     | 
    
         
             
            });
         
     | 
| 
       1812 
1851 
     | 
    
         | 
| 
       1813 
1852 
     | 
    
         
             
            var BubblePoint = extendClass(Point, {
         
     | 
| 
       1814 
1853 
     | 
    
         
             
            	haloPath: function () {
         
     | 
| 
       1815 
1854 
     | 
    
         
             
            		return Point.prototype.haloPath.call(this, this.shapeArgs.r + this.series.options.states.hover.halo.size);
         
     | 
| 
       1816 
     | 
    
         
            -
            	}
         
     | 
| 
      
 1855 
     | 
    
         
            +
            	},
         
     | 
| 
      
 1856 
     | 
    
         
            +
            	ttBelow: false
         
     | 
| 
       1817 
1857 
     | 
    
         
             
            });
         
     | 
| 
       1818 
1858 
     | 
    
         | 
| 
       1819 
1859 
     | 
    
         
             
            // 2 - Create the series object
         
     | 
| 
         @@ -1824,6 +1864,7 @@ seriesTypes.bubble = extendClass(seriesTypes.scatter, { 
     | 
|
| 
       1824 
1864 
     | 
    
         
             
            	parallelArrays: ['x', 'y', 'z'],
         
     | 
| 
       1825 
1865 
     | 
    
         
             
            	trackerGroups: ['group', 'dataLabelsGroup'],
         
     | 
| 
       1826 
1866 
     | 
    
         
             
            	bubblePadding: true,
         
     | 
| 
      
 1867 
     | 
    
         
            +
            	zoneAxis: 'z',
         
     | 
| 
       1827 
1868 
     | 
    
         | 
| 
       1828 
1869 
     | 
    
         
             
            	/**
         
     | 
| 
       1829 
1870 
     | 
    
         
             
            	 * Mapping between SVG attributes and the corresponding options
         
     | 
| 
         @@ -1936,9 +1977,6 @@ seriesTypes.bubble = extendClass(seriesTypes.scatter, { 
     | 
|
| 
       1936 
1977 
     | 
    
         
             
            		while (i--) {
         
     | 
| 
       1937 
1978 
     | 
    
         
             
            			point = data[i];
         
     | 
| 
       1938 
1979 
     | 
    
         
             
            			radius = radii ? radii[i] : 0; // #1737
         
     | 
| 
       1939 
     | 
    
         
            -
             
     | 
| 
       1940 
     | 
    
         
            -
            			// Flag for negativeColor to be applied in Series.js
         
     | 
| 
       1941 
     | 
    
         
            -
            			point.negative = point.z < (this.options.zThreshold || 0);
         
     | 
| 
       1942 
1980 
     | 
    
         | 
| 
       1943 
1981 
     | 
    
         
             
            			if (radius >= this.minPxSize / 2) {
         
     | 
| 
       1944 
1982 
     | 
    
         
             
            				// Shape arguments
         
     | 
| 
         @@ -1981,9 +2019,11 @@ seriesTypes.bubble = extendClass(seriesTypes.scatter, { 
     | 
|
| 
       1981 
2019 
     | 
    
         
             
            		item.legendSymbol.isMarker = true;	
         
     | 
| 
       1982 
2020 
     | 
    
         | 
| 
       1983 
2021 
     | 
    
         
             
            	},
         
     | 
| 
       1984 
     | 
    
         
            -
             
     | 
| 
      
 2022 
     | 
    
         
            +
            		
         
     | 
| 
       1985 
2023 
     | 
    
         
             
            	drawPoints: seriesTypes.column.prototype.drawPoints,
         
     | 
| 
       1986 
     | 
    
         
            -
            	alignDataLabel: seriesTypes.column.prototype.alignDataLabel
         
     | 
| 
      
 2024 
     | 
    
         
            +
            	alignDataLabel: seriesTypes.column.prototype.alignDataLabel,
         
     | 
| 
      
 2025 
     | 
    
         
            +
            	buildKDTree: noop,
         
     | 
| 
      
 2026 
     | 
    
         
            +
            	applyZones: noop
         
     | 
| 
       1987 
2027 
     | 
    
         
             
            });
         
     | 
| 
       1988 
2028 
     | 
    
         | 
| 
       1989 
2029 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -2008,78 +2048,76 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2008 
2048 
     | 
    
         
             
            		activeSeries = [];
         
     | 
| 
       2009 
2049 
     | 
    
         | 
| 
       2010 
2050 
     | 
    
         
             
            	// Handle padding on the second pass, or on redraw
         
     | 
| 
       2011 
     | 
    
         
            -
            	 
     | 
| 
       2012 
     | 
    
         
            -
            		each(this.series, function (series) {
         
     | 
| 
      
 2051 
     | 
    
         
            +
            	each(this.series, function (series) {
         
     | 
| 
       2013 
2052 
     | 
    
         | 
| 
       2014 
     | 
    
         
            -
             
     | 
| 
       2015 
     | 
    
         
            -
             
     | 
| 
      
 2053 
     | 
    
         
            +
            		var seriesOptions = series.options,
         
     | 
| 
      
 2054 
     | 
    
         
            +
            			zData;
         
     | 
| 
       2016 
2055 
     | 
    
         | 
| 
       2017 
     | 
    
         
            -
             
     | 
| 
      
 2056 
     | 
    
         
            +
            		if (series.bubblePadding && (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
         
     | 
| 
       2018 
2057 
     | 
    
         | 
| 
       2019 
     | 
    
         
            -
             
     | 
| 
       2020 
     | 
    
         
            -
             
     | 
| 
      
 2058 
     | 
    
         
            +
            			// Correction for #1673
         
     | 
| 
      
 2059 
     | 
    
         
            +
            			axis.allowZoomOutside = true;
         
     | 
| 
       2021 
2060 
     | 
    
         | 
| 
       2022 
     | 
    
         
            -
             
     | 
| 
       2023 
     | 
    
         
            -
             
     | 
| 
      
 2061 
     | 
    
         
            +
            			// Cache it
         
     | 
| 
      
 2062 
     | 
    
         
            +
            			activeSeries.push(series);
         
     | 
| 
       2024 
2063 
     | 
    
         | 
| 
       2025 
     | 
    
         
            -
             
     | 
| 
       2026 
     | 
    
         
            -
             
     | 
| 
       2027 
     | 
    
         
            -
             
     | 
| 
       2028 
     | 
    
         
            -
             
     | 
| 
       2029 
     | 
    
         
            -
             
     | 
| 
       2030 
     | 
    
         
            -
             
     | 
| 
       2031 
     | 
    
         
            -
            						
         
     | 
| 
       2032 
     | 
    
         
            -
            						length = pInt(length);
         
     | 
| 
       2033 
     | 
    
         
            -
            						extremes[prop] = isPercent ?
         
     | 
| 
       2034 
     | 
    
         
            -
            							smallestSize * length / 100 :
         
     | 
| 
       2035 
     | 
    
         
            -
            							length;
         
     | 
| 
       2036 
     | 
    
         
            -
            						
         
     | 
| 
       2037 
     | 
    
         
            -
            					});
         
     | 
| 
       2038 
     | 
    
         
            -
            					series.minPxSize = extremes.minSize;
         
     | 
| 
      
 2064 
     | 
    
         
            +
            			if (isXAxis) { // because X axis is evaluated first
         
     | 
| 
      
 2065 
     | 
    
         
            +
            			
         
     | 
| 
      
 2066 
     | 
    
         
            +
            				// For each series, translate the size extremes to pixel values
         
     | 
| 
      
 2067 
     | 
    
         
            +
            				each(['minSize', 'maxSize'], function (prop) {
         
     | 
| 
      
 2068 
     | 
    
         
            +
            					var length = seriesOptions[prop],
         
     | 
| 
      
 2069 
     | 
    
         
            +
            						isPercent = /%$/.test(length);
         
     | 
| 
       2039 
2070 
     | 
    
         | 
| 
       2040 
     | 
    
         
            -
            					 
     | 
| 
       2041 
     | 
    
         
            -
            					 
     | 
| 
       2042 
     | 
    
         
            -
             
     | 
| 
       2043 
     | 
    
         
            -
            						 
     | 
| 
       2044 
     | 
    
         
            -
             
     | 
| 
       2045 
     | 
    
         
            -
             
     | 
| 
       2046 
     | 
    
         
            -
             
     | 
| 
       2047 
     | 
    
         
            -
             
     | 
| 
       2048 
     | 
    
         
            -
             
     | 
| 
       2049 
     | 
    
         
            -
             
     | 
| 
       2050 
     | 
    
         
            -
             
     | 
| 
       2051 
     | 
    
         
            -
            					 
     | 
| 
      
 2071 
     | 
    
         
            +
            					length = pInt(length);
         
     | 
| 
      
 2072 
     | 
    
         
            +
            					extremes[prop] = isPercent ?
         
     | 
| 
      
 2073 
     | 
    
         
            +
            						smallestSize * length / 100 :
         
     | 
| 
      
 2074 
     | 
    
         
            +
            						length;
         
     | 
| 
      
 2075 
     | 
    
         
            +
            					
         
     | 
| 
      
 2076 
     | 
    
         
            +
            				});
         
     | 
| 
      
 2077 
     | 
    
         
            +
            				series.minPxSize = extremes.minSize;
         
     | 
| 
      
 2078 
     | 
    
         
            +
            				
         
     | 
| 
      
 2079 
     | 
    
         
            +
            				// Find the min and max Z
         
     | 
| 
      
 2080 
     | 
    
         
            +
            				zData = series.zData;
         
     | 
| 
      
 2081 
     | 
    
         
            +
            				if (zData.length) { // #1735
         
     | 
| 
      
 2082 
     | 
    
         
            +
            					zMin = pick(seriesOptions.zMin, math.min(
         
     | 
| 
      
 2083 
     | 
    
         
            +
            						zMin,
         
     | 
| 
      
 2084 
     | 
    
         
            +
            						math.max(
         
     | 
| 
      
 2085 
     | 
    
         
            +
            							arrayMin(zData), 
         
     | 
| 
      
 2086 
     | 
    
         
            +
            							seriesOptions.displayNegative === false ? seriesOptions.zThreshold : -Number.MAX_VALUE
         
     | 
| 
      
 2087 
     | 
    
         
            +
            						)
         
     | 
| 
      
 2088 
     | 
    
         
            +
            					));
         
     | 
| 
      
 2089 
     | 
    
         
            +
            					zMax = pick(seriesOptions.zMax, math.max(zMax, arrayMax(zData)));
         
     | 
| 
       2052 
2090 
     | 
    
         
             
            				}
         
     | 
| 
       2053 
2091 
     | 
    
         
             
            			}
         
     | 
| 
       2054 
     | 
    
         
            -
            		} 
     | 
| 
      
 2092 
     | 
    
         
            +
            		}
         
     | 
| 
      
 2093 
     | 
    
         
            +
            	});
         
     | 
| 
       2055 
2094 
     | 
    
         | 
| 
       2056 
     | 
    
         
            -
             
     | 
| 
      
 2095 
     | 
    
         
            +
            	each(activeSeries, function (series) {
         
     | 
| 
       2057 
2096 
     | 
    
         | 
| 
       2058 
     | 
    
         
            -
             
     | 
| 
       2059 
     | 
    
         
            -
             
     | 
| 
       2060 
     | 
    
         
            -
             
     | 
| 
      
 2097 
     | 
    
         
            +
            		var data = series[dataKey],
         
     | 
| 
      
 2098 
     | 
    
         
            +
            			i = data.length,
         
     | 
| 
      
 2099 
     | 
    
         
            +
            			radius;
         
     | 
| 
       2061 
2100 
     | 
    
         | 
| 
       2062 
     | 
    
         
            -
             
     | 
| 
       2063 
     | 
    
         
            -
             
     | 
| 
       2064 
     | 
    
         
            -
             
     | 
| 
       2065 
     | 
    
         
            -
             
     | 
| 
       2066 
     | 
    
         
            -
             
     | 
| 
       2067 
     | 
    
         
            -
             
     | 
| 
       2068 
     | 
    
         
            -
             
     | 
| 
       2069 
     | 
    
         
            -
             
     | 
| 
       2070 
     | 
    
         
            -
             
     | 
| 
       2071 
     | 
    
         
            -
             
     | 
| 
       2072 
     | 
    
         
            -
            					}
         
     | 
| 
      
 2101 
     | 
    
         
            +
            		if (isXAxis) {
         
     | 
| 
      
 2102 
     | 
    
         
            +
            			series.getRadii(zMin, zMax, extremes.minSize, extremes.maxSize);
         
     | 
| 
      
 2103 
     | 
    
         
            +
            		}
         
     | 
| 
      
 2104 
     | 
    
         
            +
            		
         
     | 
| 
      
 2105 
     | 
    
         
            +
            		if (range > 0) {
         
     | 
| 
      
 2106 
     | 
    
         
            +
            			while (i--) {
         
     | 
| 
      
 2107 
     | 
    
         
            +
            				if (typeof data[i] === 'number') {
         
     | 
| 
      
 2108 
     | 
    
         
            +
            					radius = series.radii[i];
         
     | 
| 
      
 2109 
     | 
    
         
            +
            					pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
         
     | 
| 
      
 2110 
     | 
    
         
            +
            					pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
         
     | 
| 
       2073 
2111 
     | 
    
         
             
            				}
         
     | 
| 
       2074 
2112 
     | 
    
         
             
            			}
         
     | 
| 
       2075 
     | 
    
         
            -
            		});
         
     | 
| 
       2076 
     | 
    
         
            -
            		
         
     | 
| 
       2077 
     | 
    
         
            -
            		if (activeSeries.length && range > 0 && pick(this.options.min, this.userMin) === UNDEFINED && pick(this.options.max, this.userMax) === UNDEFINED) {
         
     | 
| 
       2078 
     | 
    
         
            -
            			pxMax -= axisLength;
         
     | 
| 
       2079 
     | 
    
         
            -
            			transA *= (axisLength + pxMin - pxMax) / axisLength;
         
     | 
| 
       2080 
     | 
    
         
            -
            			this.min += pxMin / transA;
         
     | 
| 
       2081 
     | 
    
         
            -
            			this.max += pxMax / transA;
         
     | 
| 
       2082 
2113 
     | 
    
         
             
            		}
         
     | 
| 
      
 2114 
     | 
    
         
            +
            	});
         
     | 
| 
      
 2115 
     | 
    
         
            +
            	
         
     | 
| 
      
 2116 
     | 
    
         
            +
            	if (activeSeries.length && range > 0 && pick(this.options.min, this.userMin) === UNDEFINED && pick(this.options.max, this.userMax) === UNDEFINED) {
         
     | 
| 
      
 2117 
     | 
    
         
            +
            		pxMax -= axisLength;
         
     | 
| 
      
 2118 
     | 
    
         
            +
            		transA *= (axisLength + pxMin - pxMax) / axisLength;
         
     | 
| 
      
 2119 
     | 
    
         
            +
            		this.min += pxMin / transA;
         
     | 
| 
      
 2120 
     | 
    
         
            +
            		this.max += pxMax / transA;
         
     | 
| 
       2083 
2121 
     | 
    
         
             
            	}
         
     | 
| 
       2084 
2122 
     | 
    
         
             
            };
         
     | 
| 
       2085 
2123 
     | 
    
         | 
| 
         @@ -2099,6 +2137,36 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2099 
2137 
     | 
    
         
             
            		pointerProto = Pointer.prototype,
         
     | 
| 
       2100 
2138 
     | 
    
         
             
            		colProto;
         
     | 
| 
       2101 
2139 
     | 
    
         | 
| 
      
 2140 
     | 
    
         
            +
            	seriesProto.searchPolarPoint = function (e) {
         
     | 
| 
      
 2141 
     | 
    
         
            +
            		var series = this,
         
     | 
| 
      
 2142 
     | 
    
         
            +
            			chart = series.chart,
         
     | 
| 
      
 2143 
     | 
    
         
            +
            			xAxis = series.xAxis,
         
     | 
| 
      
 2144 
     | 
    
         
            +
            			center = xAxis.pane.center,
         
     | 
| 
      
 2145 
     | 
    
         
            +
            			plotX = e.chartX - center[0] - chart.plotLeft,
         
     | 
| 
      
 2146 
     | 
    
         
            +
            			plotY = e.chartY - center[1] - chart.plotTop;
         
     | 
| 
      
 2147 
     | 
    
         
            +
             
     | 
| 
      
 2148 
     | 
    
         
            +
            		this.kdAxisArray = ['clientX'];
         
     | 
| 
      
 2149 
     | 
    
         
            +
            		e = {
         
     | 
| 
      
 2150 
     | 
    
         
            +
            			clientX: 180 + (Math.atan2(plotX, plotY) * (-180 / Math.PI))
         
     | 
| 
      
 2151 
     | 
    
         
            +
            		};
         
     | 
| 
      
 2152 
     | 
    
         
            +
            		return this.searchKDTree(e);
         
     | 
| 
      
 2153 
     | 
    
         
            +
             
     | 
| 
      
 2154 
     | 
    
         
            +
            	};
         
     | 
| 
      
 2155 
     | 
    
         
            +
            	
         
     | 
| 
      
 2156 
     | 
    
         
            +
            	wrap(seriesProto, 'buildKDTree', function (proceed) {
         
     | 
| 
      
 2157 
     | 
    
         
            +
            		if (this.chart.polar) {
         
     | 
| 
      
 2158 
     | 
    
         
            +
            			this.kdAxisArray = ['clientX'];
         
     | 
| 
      
 2159 
     | 
    
         
            +
            		}
         
     | 
| 
      
 2160 
     | 
    
         
            +
            		proceed.apply(this);
         
     | 
| 
      
 2161 
     | 
    
         
            +
            	});
         
     | 
| 
      
 2162 
     | 
    
         
            +
            	
         
     | 
| 
      
 2163 
     | 
    
         
            +
            	wrap(seriesProto, 'searchPoint', function (proceed, e) {
         
     | 
| 
      
 2164 
     | 
    
         
            +
            		if (this.chart.polar) {
         
     | 
| 
      
 2165 
     | 
    
         
            +
            			return this.searchPolarPoint(e);
         
     | 
| 
      
 2166 
     | 
    
         
            +
            		} else {
         
     | 
| 
      
 2167 
     | 
    
         
            +
            			return proceed.call(this, e);
         
     | 
| 
      
 2168 
     | 
    
         
            +
            		}
         
     | 
| 
      
 2169 
     | 
    
         
            +
            	});
         
     | 
| 
       2102 
2170 
     | 
    
         
             
            	/**
         
     | 
| 
       2103 
2171 
     | 
    
         
             
            	 * Translate a point's plotX and plotY from the internal angle and radius measures to 
         
     | 
| 
       2104 
2172 
     | 
    
         
             
            	 * true plotX, plotY coordinates
         
     | 
| 
         @@ -2128,25 +2196,6 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2128 
2196 
     | 
    
         
             
            		point.plotY = point.polarPlotY = xy.y - chart.plotTop;
         
     | 
| 
       2129 
2197 
     | 
    
         
             
            	};
         
     | 
| 
       2130 
2198 
     | 
    
         | 
| 
       2131 
     | 
    
         
            -
            	/** 
         
     | 
| 
       2132 
     | 
    
         
            -
            	 * Order the tooltip points to get the mouse capture ranges correct. #1915. 
         
     | 
| 
       2133 
     | 
    
         
            -
            	 */
         
     | 
| 
       2134 
     | 
    
         
            -
            	seriesProto.orderTooltipPoints = function (points) {
         
     | 
| 
       2135 
     | 
    
         
            -
            		if (this.chart.polar) {
         
     | 
| 
       2136 
     | 
    
         
            -
            			points.sort(function (a, b) {
         
     | 
| 
       2137 
     | 
    
         
            -
            				return a.clientX - b.clientX;
         
     | 
| 
       2138 
     | 
    
         
            -
            			});
         
     | 
| 
       2139 
     | 
    
         
            -
             
     | 
| 
       2140 
     | 
    
         
            -
            			// Wrap mouse tracking around to capture movement on the segment to the left
         
     | 
| 
       2141 
     | 
    
         
            -
            			// of the north point (#1469, #2093).
         
     | 
| 
       2142 
     | 
    
         
            -
            			if (points[0]) {
         
     | 
| 
       2143 
     | 
    
         
            -
            				points[0].wrappedClientX = points[0].clientX + 360;
         
     | 
| 
       2144 
     | 
    
         
            -
            				points.push(points[0]);
         
     | 
| 
       2145 
     | 
    
         
            -
            			}
         
     | 
| 
       2146 
     | 
    
         
            -
            		}
         
     | 
| 
       2147 
     | 
    
         
            -
            	};
         
     | 
| 
       2148 
     | 
    
         
            -
             
     | 
| 
       2149 
     | 
    
         
            -
             
     | 
| 
       2150 
2199 
     | 
    
         
             
            	/**
         
     | 
| 
       2151 
2200 
     | 
    
         
             
            	 * Add some special init logic to areas and areasplines
         
     | 
| 
       2152 
2201 
     | 
    
         
             
            	 */
         
     | 
| 
         @@ -2173,6 +2222,7 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2173 
2222 
     | 
    
         
             
            		}
         
     | 
| 
       2174 
2223 
     | 
    
         
             
            	}
         
     | 
| 
       2175 
2224 
     | 
    
         | 
| 
      
 2225 
     | 
    
         
            +
             
         
     | 
| 
       2176 
2226 
     | 
    
         
             
            	if (seriesTypes.area) {		
         
     | 
| 
       2177 
2227 
     | 
    
         
             
            		wrap(seriesTypes.area.prototype, 'init', initArea);	
         
     | 
| 
       2178 
2228 
     | 
    
         
             
            	}
         
     | 
| 
         @@ -2392,21 +2442,6 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2392 
2442 
     | 
    
         
             
            	// Define the animate method for regular series
         
     | 
| 
       2393 
2443 
     | 
    
         
             
            	wrap(seriesProto, 'animate', polarAnimate);
         
     | 
| 
       2394 
2444 
     | 
    
         | 
| 
       2395 
     | 
    
         
            -
            	/**
         
     | 
| 
       2396 
     | 
    
         
            -
            	 * Throw in a couple of properties to let setTooltipPoints know we're indexing the points
         
     | 
| 
       2397 
     | 
    
         
            -
            	 * in degrees (0-360), not plot pixel width.
         
     | 
| 
       2398 
     | 
    
         
            -
            	 */
         
     | 
| 
       2399 
     | 
    
         
            -
            	wrap(seriesProto, 'setTooltipPoints', function (proceed, renew) {
         
     | 
| 
       2400 
     | 
    
         
            -
            		
         
     | 
| 
       2401 
     | 
    
         
            -
            		if (this.chart.polar) {
         
     | 
| 
       2402 
     | 
    
         
            -
            			extend(this.xAxis, {
         
     | 
| 
       2403 
     | 
    
         
            -
            				tooltipLen: 360 // degrees are the resolution unit of the tooltipPoints array
         
     | 
| 
       2404 
     | 
    
         
            -
            			});	
         
     | 
| 
       2405 
     | 
    
         
            -
            		}
         
     | 
| 
       2406 
     | 
    
         
            -
            		// Run uber method
         
     | 
| 
       2407 
     | 
    
         
            -
            		return proceed.call(this, renew);
         
     | 
| 
       2408 
     | 
    
         
            -
            	});
         
     | 
| 
       2409 
     | 
    
         
            -
             
     | 
| 
       2410 
2445 
     | 
    
         | 
| 
       2411 
2446 
     | 
    
         
             
            	if (seriesTypes.column) {
         
     | 
| 
       2412 
2447 
     | 
    
         | 
| 
         @@ -2507,33 +2542,6 @@ Axis.prototype.beforePadding = function () { 
     | 
|
| 
       2507 
2542 
     | 
    
         
             
            		});		
         
     | 
| 
       2508 
2543 
     | 
    
         
             
            	}
         
     | 
| 
       2509 
2544 
     | 
    
         | 
| 
       2510 
     | 
    
         
            -
             
     | 
| 
       2511 
     | 
    
         
            -
            	/**
         
     | 
| 
       2512 
     | 
    
         
            -
            	 * Extend the mouse tracker to return the tooltip position index in terms of
         
     | 
| 
       2513 
     | 
    
         
            -
            	 * degrees rather than pixels
         
     | 
| 
       2514 
     | 
    
         
            -
            	 */
         
     | 
| 
       2515 
     | 
    
         
            -
            	wrap(pointerProto, 'getIndex', function (proceed, e) {
         
     | 
| 
       2516 
     | 
    
         
            -
            		var ret,
         
     | 
| 
       2517 
     | 
    
         
            -
            			chart = this.chart,
         
     | 
| 
       2518 
     | 
    
         
            -
            			center,
         
     | 
| 
       2519 
     | 
    
         
            -
            			x,
         
     | 
| 
       2520 
     | 
    
         
            -
            			y;
         
     | 
| 
       2521 
     | 
    
         
            -
            	
         
     | 
| 
       2522 
     | 
    
         
            -
            		if (chart.polar) {
         
     | 
| 
       2523 
     | 
    
         
            -
            			center = chart.xAxis[0].center;
         
     | 
| 
       2524 
     | 
    
         
            -
            			x = e.chartX - center[0] - chart.plotLeft;
         
     | 
| 
       2525 
     | 
    
         
            -
            			y = e.chartY - center[1] - chart.plotTop;
         
     | 
| 
       2526 
     | 
    
         
            -
            		
         
     | 
| 
       2527 
     | 
    
         
            -
            			ret = 180 - Math.round(Math.atan2(x, y) / Math.PI * 180);
         
     | 
| 
       2528 
     | 
    
         
            -
            	
         
     | 
| 
       2529 
     | 
    
         
            -
            		} else {
         
     | 
| 
       2530 
     | 
    
         
            -
            	
         
     | 
| 
       2531 
     | 
    
         
            -
            			// Run uber method
         
     | 
| 
       2532 
     | 
    
         
            -
            			ret = proceed.call(this, e);
         
     | 
| 
       2533 
     | 
    
         
            -
            		}
         
     | 
| 
       2534 
     | 
    
         
            -
            		return ret;
         
     | 
| 
       2535 
     | 
    
         
            -
            	});
         
     | 
| 
       2536 
     | 
    
         
            -
             
     | 
| 
       2537 
2545 
     | 
    
         
             
            	/**
         
     | 
| 
       2538 
2546 
     | 
    
         
             
            	 * Extend getCoordinates to prepare for polar axis values
         
     | 
| 
       2539 
2547 
     | 
    
         
             
            	 */
         
     |