diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index 2d7629a308e..e2b45bde3fd 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 f012c82b6fb..16c6cabd522 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 0f89b8676ed..8d8b4724e9f 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 00000000000..8452ed6c8d6 --- /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 00000000000..87da74832c7 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 4d75f1cb238..debb97ee7d1 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 5561b4f3b3d..9a7b49e9cd9 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 00000000000..e09f12cd6ab --- /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 00000000000..ecef74b4430 Binary files /dev/null and b/test/fixtures/controller.bar/minBarLength/vertical-stacked.png differ