From: Evert Timberg Date: Sun, 13 Feb 2022 20:27:46 +0000 (-0500) Subject: minimum bar length setting keeps bar base in view (#10157) X-Git-Tag: v3.8.0~37 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=edd764fcb5d2c60dc3396a520cb748aa82fe8c35;p=thirdparty%2FChart.js.git minimum bar length setting keeps bar base in view (#10157) --- diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index 2d7629a30..e2b45bde3 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -543,6 +543,11 @@ export default class BarController extends DatasetController { if (value === actualBase) { base -= size / 2; } + const startPixel = vScale.getPixelForDecimal(0); + const endPixel = vScale.getPixelForDecimal(1); + const min = Math.min(startPixel, endPixel); + const max = Math.max(startPixel, endPixel); + base = Math.max(Math.min(base, max), min); head = base + size; } diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-neg.png b/test/fixtures/controller.bar/minBarLength/horizontal-neg.png index f012c82b6..16c6cabd5 100644 Binary files a/test/fixtures/controller.bar/minBarLength/horizontal-neg.png and b/test/fixtures/controller.bar/minBarLength/horizontal-neg.png differ diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-pos.png b/test/fixtures/controller.bar/minBarLength/horizontal-pos.png index 0f89b8676..8d8b4724e 100644 Binary files a/test/fixtures/controller.bar/minBarLength/horizontal-pos.png and b/test/fixtures/controller.bar/minBarLength/horizontal-pos.png differ diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-stacked.js b/test/fixtures/controller.bar/minBarLength/horizontal-stacked.js new file mode 100644 index 000000000..8452ed6c8 --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/horizontal-stacked.js @@ -0,0 +1,43 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2, 3, 4], + datasets: [{ + data: [0, 0.01, 30], + backgroundColor: '#00ff00', + borderColor: '#000', + borderWidth: 4, + minBarLength: 20, + xAxisID: 'x2', + }] + }, + options: { + indexAxis: 'y', + scales: { + x: { + stack: 'demo', + ticks: { + display: false + } + }, + x2: { + type: 'linear', + position: 'bottom', + stack: 'demo', + stackWeight: 1, + ticks: { + display: false + } + }, + y: {display: false}, + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/horizontal-stacked.png b/test/fixtures/controller.bar/minBarLength/horizontal-stacked.png new file mode 100644 index 000000000..87da74832 Binary files /dev/null and b/test/fixtures/controller.bar/minBarLength/horizontal-stacked.png differ diff --git a/test/fixtures/controller.bar/minBarLength/vertical-neg.png b/test/fixtures/controller.bar/minBarLength/vertical-neg.png index 4d75f1cb2..debb97ee7 100644 Binary files a/test/fixtures/controller.bar/minBarLength/vertical-neg.png and b/test/fixtures/controller.bar/minBarLength/vertical-neg.png differ diff --git a/test/fixtures/controller.bar/minBarLength/vertical-pos.png b/test/fixtures/controller.bar/minBarLength/vertical-pos.png index 5561b4f3b..9a7b49e9c 100644 Binary files a/test/fixtures/controller.bar/minBarLength/vertical-pos.png and b/test/fixtures/controller.bar/minBarLength/vertical-pos.png differ diff --git a/test/fixtures/controller.bar/minBarLength/vertical-stacked.js b/test/fixtures/controller.bar/minBarLength/vertical-stacked.js new file mode 100644 index 000000000..e09f12cd6 --- /dev/null +++ b/test/fixtures/controller.bar/minBarLength/vertical-stacked.js @@ -0,0 +1,42 @@ +module.exports = { + config: { + type: 'bar', + data: { + labels: [0, 1, 2, 3, 4], + datasets: [{ + data: [0, 0.01, 30], + backgroundColor: '#00ff00', + borderColor: '#000', + borderWidth: 4, + minBarLength: 20, + yAxisID: 'y2', + }] + }, + options: { + scales: { + x: {display: false}, + y: { + stack: 'demo', + ticks: { + display: false + } + }, + y2: { + type: 'linear', + position: 'left', + stack: 'demo', + stackWeight: 1, + ticks: { + display: false + } + } + } + } + }, + options: { + canvas: { + height: 512, + width: 512 + } + } +}; diff --git a/test/fixtures/controller.bar/minBarLength/vertical-stacked.png b/test/fixtures/controller.bar/minBarLength/vertical-stacked.png new file mode 100644 index 000000000..ecef74b44 Binary files /dev/null and b/test/fixtures/controller.bar/minBarLength/vertical-stacked.png differ