null or undefined should skip grid lines in the time scale (#9252)

* `null` or `undefined` should skip grid lines in the time scale

* Refactor implementation per code review
This commit is contained in:
Evert Timberg 2021-06-12 10:47:14 -04:00 committed by GitHub
parent 6a46cc39bb
commit 9db3680440
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 8 deletions

View File

@ -552,14 +552,6 @@ export default class Scale extends Element {
tick = ticks[i];
tick.label = call(tickOpts.callback, [tick.value, i, ticks], me);
}
// Ticks should be skipped when callback returns null or undef, so lets remove those.
for (i = 0; i < ilen; i++) {
if (isNullOrUndef(ticks[i].label)) {
ticks.splice(i, 1);
ilen--;
i--;
}
}
}
afterTickToLabelConversion() {
call(this.options.afterTickToLabelConversion, [this]);
@ -769,6 +761,16 @@ export default class Scale extends Element {
me.generateTickLabels(ticks);
// Ticks should be skipped when callback returns null or undef, so lets remove those.
let i, ilen;
for (i = 0, ilen = ticks.length; i < ilen; i++) {
if (isNullOrUndef(ticks[i].label)) {
ticks.splice(i, 1);
ilen--;
i--;
}
}
me.afterTickToLabelConversion();
}

View File

@ -0,0 +1,32 @@
module.exports = {
threshold: 0.01,
tolerance: 0.0025,
config: {
type: 'line',
data: {
labels: ['2017', '2018', '2019', '2020', '2025'],
datasets: [{data: [0, 1, 2, 3, 4], fill: false}]
},
options: {
scales: {
x: {
type: 'time',
time: {
parser: 'YYYY',
unit: 'year'
},
ticks: {
source: 'auto',
callback: (tick, index) => index % 2 === 0 ? null : tick,
}
},
y: {
display: false
}
}
}
},
options: {
spriteText: true
}
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,32 @@
module.exports = {
threshold: 0.01,
tolerance: 0.0025,
config: {
type: 'line',
data: {
labels: ['2017', '2018', '2019', '2020', '2025'],
datasets: [{data: [0, 1, 2, 3, 4], fill: false}]
},
options: {
scales: {
x: {
type: 'time',
time: {
parser: 'YYYY',
unit: 'year'
},
ticks: {
source: 'auto',
callback: (tick, index) => index % 2 === 0 ? undefined : tick,
}
},
y: {
display: false
}
}
}
},
options: {
spriteText: true
}
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB