Skip to content

Commit

Permalink
Remove autoSkip logic to always display last tick (#5891)
Browse files Browse the repository at this point in the history
This changes the behavior of `autoSkip` so that it does not force the
display of the last tick. If the last tick can be displayed with equal
spacing to the rest of the ticks, it will be. Otherwise, it is not.
  • Loading branch information
sgray authored and etimberg committed Dec 9, 2018
1 parent 40495ec commit 69fcba0
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 4 deletions.
6 changes: 2 additions & 4 deletions src/core/core.scale.js
Expand Up @@ -644,7 +644,7 @@ module.exports = Element.extend({
var cosRotation = Math.cos(labelRotationRadians);
var longestRotatedLabel = me.longestLabelWidth * cosRotation;
var result = [];
var i, tick, shouldSkip;
var i, tick;

// figure out the maximum number of gridlines to show
var maxTicks;
Expand All @@ -669,9 +669,7 @@ module.exports = Element.extend({
for (i = 0; i < tickCount; i++) {
tick = ticks[i];

// Since we always show the last tick,we need may need to hide the last shown one before
shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);
if (shouldSkip && i !== tickCount - 1) {
if (skipRatio > 1 && i % skipRatio > 0) {
// leave tick in place but make sure it's not displayed (#4635)
delete tick.label;
}
Expand Down
54 changes: 54 additions & 0 deletions test/specs/core.scale.tests.js
Expand Up @@ -20,6 +20,60 @@ describe('Core.scale', function() {
});
});

describe('displaying xAxis ticks with autoSkip=true', function() {
function getChart(data) {
return window.acquireChart({
type: 'line',
data: data,
options: {
scales: {
xAxes: [{
ticks: {
autoSkip: true
}
}]
}
}
});
}

function lastTick(chart) {
var xAxis = chart.scales['x-axis-0'];
var ticks = xAxis.getTicks();
return ticks[ticks.length - 1];
}

it('should display the last tick if it fits evenly with other ticks', function() {
var chart = getChart({
labels: [
'January 2018', 'February 2018', 'March 2018', 'April 2018',
'May 2018', 'June 2018', 'July 2018', 'August 2018',
'September 2018'
],
datasets: [{
data: [12, 19, 3, 5, 2, 3, 7, 8, 9]
}]
});

expect(lastTick(chart).label).toEqual('September 2018');
});

it('should not display the last tick if it does not fit evenly', function() {
var chart = getChart({
labels: [
'January 2018', 'February 2018', 'March 2018', 'April 2018',
'May 2018', 'June 2018', 'July 2018', 'August 2018',
'September 2018', 'October 2018', 'November 2018', 'December 2018'
],
datasets: [{
data: [12, 19, 3, 5, 2, 3, 7, 8, 9, 10, 11, 12]
}]
});

expect(lastTick(chart).label).toBeUndefined();
});
});

var gridLineTests = [{
labels: ['tick1', 'tick2', 'tick3', 'tick4', 'tick5'],
offsetGridLines: false,
Expand Down

0 comments on commit 69fcba0

Please sign in to comment.