From db74d2f44ce6efdf1bf85cfbbd6b453d4dc8f8f2 Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sun, 30 May 2021 00:32:03 +0300 Subject: [PATCH] Linear: Respect bounds option in tick generation (#9181) * Linear: Respect bounds option in tick generation * Remove leftover _filterBetween --- src/scales/scale.linearbase.js | 12 ++++++-- .../controller.line/stacking/bounds-data.js | 29 ++++++++++++++++++ .../controller.line/stacking/bounds-data.png | Bin 0 -> 17328 bytes 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 test/fixtures/controller.line/stacking/bounds-data.js create mode 100644 test/fixtures/controller.line/stacking/bounds-data.png diff --git a/src/scales/scale.linearbase.js b/src/scales/scale.linearbase.js index ab2c4b91e..8bd3c7e1f 100644 --- a/src/scales/scale.linearbase.js +++ b/src/scales/scale.linearbase.js @@ -29,7 +29,7 @@ function generateTicks(generationOptions, dataRange) { // for details. const MIN_SPACING = 1e-14; - const {step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions; + const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions; const unit = step || 1; const maxSpaces = maxTicks - 1; const {min: rmin, max: rmax} = dataRange; @@ -58,8 +58,13 @@ function generateTicks(generationOptions, dataRange) { spacing = Math.ceil(spacing * factor) / factor; } - niceMin = Math.floor(rmin / spacing) * spacing; - niceMax = Math.ceil(rmax / spacing) * spacing; + if (bounds === 'ticks') { + niceMin = Math.floor(rmin / spacing) * spacing; + niceMax = Math.ceil(rmax / spacing) * spacing; + } else { + niceMin = rmin; + niceMax = rmax; + } if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) { // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it. @@ -241,6 +246,7 @@ export default class LinearScaleBase extends Scale { const numericGeneratorOptions = { maxTicks, + bounds: opts.bounds, min: opts.min, max: opts.max, precision: tickOpts.precision, diff --git a/test/fixtures/controller.line/stacking/bounds-data.js b/test/fixtures/controller.line/stacking/bounds-data.js new file mode 100644 index 000000000..413af181f --- /dev/null +++ b/test/fixtures/controller.line/stacking/bounds-data.js @@ -0,0 +1,29 @@ +module.exports = { + config: { + type: 'line', + data: { + labels: ['a', 'b'], + datasets: [{ + borderColor: 'red', + data: [50, 75], + }, { + borderColor: 'blue', + data: [25, 50], + }] + }, + options: { + scales: { + x: { + display: false + }, + y: { + stacked: true, + bounds: 'data' + } + } + } + }, + options: { + spriteText: true + } +}; diff --git a/test/fixtures/controller.line/stacking/bounds-data.png b/test/fixtures/controller.line/stacking/bounds-data.png new file mode 100644 index 0000000000000000000000000000000000000000..90ce6a30c282c7f2dbec6a7934fdc828ab3b3219 GIT binary patch literal 17328 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 V^3MIK27!Ofj#wHO8sh){e*o#Bn}+}Z literal 0 Hc-jL100001 -- 2.47.3