From 9db36804406b406f5356b938f4969b5e027c6867 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sat, 12 Jun 2021 10:47:14 -0400 Subject: [PATCH] `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 --- src/core/core.scale.js | 18 +++++----- .../scale.time/skip-null-gridlines.js | 32 ++++++++++++++++++ .../scale.time/skip-null-gridlines.png | Bin 0 -> 19521 bytes .../scale.time/skip-undefined-gridlines.js | 32 ++++++++++++++++++ .../scale.time/skip-undefined-gridlines.png | Bin 0 -> 19521 bytes 5 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 test/fixtures/scale.time/skip-null-gridlines.js create mode 100644 test/fixtures/scale.time/skip-null-gridlines.png create mode 100644 test/fixtures/scale.time/skip-undefined-gridlines.js create mode 100644 test/fixtures/scale.time/skip-undefined-gridlines.png diff --git a/src/core/core.scale.js b/src/core/core.scale.js index 8850ad75902..a640d332a42 100644 --- a/src/core/core.scale.js +++ b/src/core/core.scale.js @@ -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(); } diff --git a/test/fixtures/scale.time/skip-null-gridlines.js b/test/fixtures/scale.time/skip-null-gridlines.js new file mode 100644 index 00000000000..f8ded031883 --- /dev/null +++ b/test/fixtures/scale.time/skip-null-gridlines.js @@ -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 + } +}; diff --git a/test/fixtures/scale.time/skip-null-gridlines.png b/test/fixtures/scale.time/skip-null-gridlines.png new file mode 100644 index 0000000000000000000000000000000000000000..d0609a8db5cab8d7c306405583eff6ab3b367278 GIT binary patch literal 19521 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 uzqXY+dFQ-0)b!=>+rR(M-32^bKx8FZ(Rcr index % 2 === 0 ? undefined : tick, + } + }, + y: { + display: false + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/scale.time/skip-undefined-gridlines.png b/test/fixtures/scale.time/skip-undefined-gridlines.png new file mode 100644 index 0000000000000000000000000000000000000000..d0609a8db5cab8d7c306405583eff6ab3b367278 GIT binary patch literal 19521 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 uzqXY+dFQ-0)b!=>+rR(M-32^bKx8FZ(Rcr