From 04eaa25cc3b7eb7dc0e61b83563b0a82c5bbc822 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sun, 4 Apr 2021 09:26:21 +0300 Subject: [PATCH] Fix: tick spacing when min=0 | niceMin or max=0 --- src/scales/scale.linearbase.js | 8 +++---- test/fixtures/scale.linear/issue-8806.js | 26 ++++++++++++++++++++++ test/fixtures/scale.linear/issue-8806.png | Bin 0 -> 4820 bytes 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/scale.linear/issue-8806.js create mode 100644 test/fixtures/scale.linear/issue-8806.png diff --git a/src/scales/scale.linearbase.js b/src/scales/scale.linearbase.js index a215c7571c6..3a671d269cd 100644 --- a/src/scales/scale.linearbase.js +++ b/src/scales/scale.linearbase.js @@ -98,12 +98,12 @@ function generateTicks(generationOptions, dataRange) { let j = 0; if (minDefined) { ticks.push({value: min}); - // If the niceMin is smaller than min, skip it - if (niceMin < min) { + // If the niceMin is smaller or equal to min, skip it + if (niceMin <= min) { j++; } // If the next nice tick is close to min, skip that too - if (almostWhole(Math.round((niceMin + j * spacing) * factor) / factor / min, spacing / 1000)) { + if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, spacing / 10)) { j++; } } @@ -114,7 +114,7 @@ function generateTicks(generationOptions, dataRange) { if (maxDefined) { // If the previous tick is close to max, replace it with max, else add max - if (almostWhole(ticks[ticks.length - 1].value / max, spacing / 1000)) { + if (almostEquals(ticks[ticks.length - 1].value, max, spacing / 10)) { ticks[ticks.length - 1].value = max; } else { ticks.push({value: max}); diff --git a/test/fixtures/scale.linear/issue-8806.js b/test/fixtures/scale.linear/issue-8806.js new file mode 100644 index 00000000000..ec53498fc32 --- /dev/null +++ b/test/fixtures/scale.linear/issue-8806.js @@ -0,0 +1,26 @@ +module.exports = { + description: 'https://github.com/chartjs/Chart.js/issues/8806', + config: { + type: 'bar', + data: { + labels: ['0', '1', '2', '3', '4', '5', '6'], + datasets: [{ + label: '# of Votes', + data: [32, 46, 28, 21, 20, 13, 27] + }] + }, + options: { + scales: { + x: {display: false}, + y: {ticks: {maxTicksLimit: 4}, min: 0} + } + } + }, + options: { + spriteText: true, + canvas: { + width: 256, + height: 256 + } + } +}; diff --git a/test/fixtures/scale.linear/issue-8806.png b/test/fixtures/scale.linear/issue-8806.png new file mode 100644 index 0000000000000000000000000000000000000000..9db9d332422f34e34c3208bf50b5ebc584b96525 GIT binary patch literal 4820 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 G#D4$^E6l+F literal 0 HcmV?d00001