/* *
|
*
|
* (c) 2010-2019 Torstein Honsi
|
*
|
* License: www.highcharts.com/license
|
*
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
*
|
* */
|
'use strict';
|
|
var _Globals = require('../parts/Globals.js');
|
|
var _Globals2 = _interopRequireDefault(_Globals);
|
|
var _Utilities = require('../parts/Utilities.js');
|
|
var _Utilities2 = _interopRequireDefault(_Utilities);
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
var isNumber = _Utilities2.default.isNumber;
|
/**
|
* @private
|
* @interface Highcharts.RadianAngles
|
*/ /**
|
* @name Highcharts.RadianAngles#end
|
* @type {number}
|
*/ /**
|
* @name Highcharts.RadianAngles#start
|
* @type {number}
|
*/
|
|
var deg2rad = _Globals2.default.deg2rad,
|
pick = _Globals2.default.pick,
|
relativeLength = _Globals2.default.relativeLength;
|
/* eslint-disable valid-jsdoc */
|
/**
|
* @private
|
* @mixin Highcharts.CenteredSeriesMixin
|
*/
|
_Globals2.default.CenteredSeriesMixin = {
|
/**
|
* Get the center of the pie based on the size and center options relative
|
* to the plot area. Borrowed by the polar and gauge series types.
|
*
|
* @private
|
* @function Highcharts.CenteredSeriesMixin.getCenter
|
*
|
* @return {Array<number>}
|
*/
|
getCenter: function getCenter() {
|
var options = this.options,
|
chart = this.chart,
|
slicingRoom = 2 * (options.slicedOffset || 0),
|
handleSlicingRoom,
|
plotWidth = chart.plotWidth - 2 * slicingRoom,
|
plotHeight = chart.plotHeight - 2 * slicingRoom,
|
centerOption = options.center,
|
positions = [pick(centerOption[0], '50%'), pick(centerOption[1], '50%'), options.size || '100%', options.innerSize || 0],
|
smallestSize = Math.min(plotWidth, plotHeight),
|
i,
|
value;
|
for (i = 0; i < 4; ++i) {
|
value = positions[i];
|
handleSlicingRoom = i < 2 || i === 2 && /%$/.test(value);
|
// i == 0: centerX, relative to width
|
// i == 1: centerY, relative to height
|
// i == 2: size, relative to smallestSize
|
// i == 3: innerSize, relative to size
|
positions[i] = relativeLength(value, [plotWidth, plotHeight, smallestSize, positions[2]][i]) + (handleSlicingRoom ? slicingRoom : 0);
|
}
|
// innerSize cannot be larger than size (#3632)
|
if (positions[3] > positions[2]) {
|
positions[3] = positions[2];
|
}
|
return positions;
|
},
|
/**
|
* getStartAndEndRadians - Calculates start and end angles in radians.
|
* Used in series types such as pie and sunburst.
|
*
|
* @private
|
* @function Highcharts.CenteredSeriesMixin.getStartAndEndRadians
|
*
|
* @param {number} [start]
|
* Start angle in degrees.
|
*
|
* @param {number} [end]
|
* Start angle in degrees.
|
*
|
* @return {Highcharts.RadianAngles}
|
* Returns an object containing start and end angles as radians.
|
*/
|
getStartAndEndRadians: function getStartAndEndRadians(start, end) {
|
var startAngle = isNumber(start) ? start : 0,
|
// must be a number
|
endAngle = isNumber(end) && // must be a number
|
end > startAngle && // must be larger than the start angle
|
// difference must be less than 360 degrees
|
end - startAngle < 360 ? end : startAngle + 360,
|
correction = -90;
|
return {
|
start: deg2rad * (startAngle + correction),
|
end: deg2rad * (endAngle + correction)
|
};
|
}
|
};
|