From fe8ed402b10126dc48697de81286e36ae13eecdf Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Sun, 3 Feb 2019 20:44:02 -0800 Subject: [PATCH] Autoskip cleanup --- src/core/core.scale.js | 54 +++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/core/core.scale.js b/src/core/core.scale.js index ff73d98115f..feaa1e541fb 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -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 @@ -660,12 +645,6 @@ module.exports = Element.extend({ 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); @@ -673,7 +652,7 @@ module.exports = Element.extend({ // 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 +668,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 */