Skip to content

Commit

Permalink
Autoskip cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
benmccann committed Feb 4, 2019
1 parent 945d91a commit 37d976c
Showing 1 changed file with 28 additions and 24 deletions.
52 changes: 28 additions & 24 deletions src/core/core.scale.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
Expand All @@ -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
*/
Expand Down

0 comments on commit 37d976c

Please sign in to comment.