mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Simplify and cleanup the scale _autoskip method (#6043)
This commit is contained in:
parent
7c11c81d96
commit
c6c4db7906
@ -625,31 +625,16 @@ module.exports = Element.extend({
|
||||
* @private
|
||||
*/
|
||||
_autoSkip: function(ticks) {
|
||||
var skipRatio;
|
||||
var me = this;
|
||||
var isHorizontal = me.isHorizontal();
|
||||
var optionTicks = me.options.ticks.minor;
|
||||
var tickCount = ticks.length;
|
||||
|
||||
// Calculate space needed by label in axis direction.
|
||||
var rot = helpers.toRadians(me.labelRotation);
|
||||
var cos = Math.abs(Math.cos(rot));
|
||||
var sin = Math.abs(Math.sin(rot));
|
||||
|
||||
var padding = optionTicks.autoSkipPadding;
|
||||
var w = me.longestLabelWidth + padding || 0;
|
||||
|
||||
var tickFont = helpers.options._parseFont(optionTicks);
|
||||
var h = me._maxLabelLines * tickFont.lineHeight + padding;
|
||||
|
||||
// Calculate space needed for 1 tick in axis direction.
|
||||
var tickSize = isHorizontal
|
||||
? h * cos > w * sin ? w / cos : h / sin
|
||||
: h * sin < w * cos ? h / cos : w / sin;
|
||||
var skipRatio = false;
|
||||
var maxTicks = optionTicks.maxTicksLimit;
|
||||
|
||||
// Total space needed to display all ticks. First and last ticks are
|
||||
// drawn as their center at end of axis, so tickCount-1
|
||||
var ticksLength = tickSize * (tickCount - 1);
|
||||
var ticksLength = me._tickSize() * (tickCount - 1);
|
||||
|
||||
// Axis length
|
||||
var axisLength = isHorizontal
|
||||
@ -659,21 +644,13 @@ module.exports = Element.extend({
|
||||
var result = [];
|
||||
var i, tick;
|
||||
|
||||
// figure out the maximum number of gridlines to show
|
||||
var maxTicks;
|
||||
if (optionTicks.maxTicksLimit) {
|
||||
maxTicks = optionTicks.maxTicksLimit;
|
||||
}
|
||||
|
||||
skipRatio = false;
|
||||
|
||||
if (ticksLength > axisLength) {
|
||||
skipRatio = 1 + Math.floor(ticksLength / axisLength);
|
||||
}
|
||||
|
||||
// if they defined a max number of optionTicks,
|
||||
// increase skipRatio until that number is met
|
||||
if (maxTicks && tickCount > maxTicks) {
|
||||
if (tickCount > maxTicks) {
|
||||
skipRatio = Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks));
|
||||
}
|
||||
|
||||
@ -689,6 +666,31 @@ module.exports = Element.extend({
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_tickSize: function() {
|
||||
var me = this;
|
||||
var isHorizontal = me.isHorizontal();
|
||||
var optionTicks = me.options.ticks.minor;
|
||||
|
||||
// Calculate space needed by label in axis direction.
|
||||
var rot = helpers.toRadians(me.labelRotation);
|
||||
var cos = Math.abs(Math.cos(rot));
|
||||
var sin = Math.abs(Math.sin(rot));
|
||||
|
||||
var padding = optionTicks.autoSkipPadding;
|
||||
var w = me.longestLabelWidth + padding || 0;
|
||||
|
||||
var tickFont = helpers.options._parseFont(optionTicks);
|
||||
var h = me._maxLabelLines * tickFont.lineHeight + padding;
|
||||
|
||||
// Calculate space needed for 1 tick in axis direction.
|
||||
return isHorizontal
|
||||
? h * cos > w * sin ? w / cos : h / sin
|
||||
: h * sin < w * cos ? h / cos : w / sin;
|
||||
},
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user