From 87bd5785ff483b02ef06e88e501b8bffaae60fcb Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sun, 20 Jun 2021 01:31:33 +0300 Subject: [PATCH] Legend: fix layout padding handling (#9290) --- src/core/core.layouts.js | 2 +- src/plugins/plugin.legend.js | 17 ++++---- .../padding/2cols-with-padding.js | 35 ++++++++++++++++ .../padding/2cols-with-padding.png | Bin 0 -> 20213 bytes .../plugin.legend/padding/add-column.js | 39 ++++++++++++++++++ .../plugin.legend/padding/add-column.png | Bin 0 -> 21243 bytes 6 files changed, 82 insertions(+), 11 deletions(-) create mode 100644 test/fixtures/plugin.legend/padding/2cols-with-padding.js create mode 100644 test/fixtures/plugin.legend/padding/2cols-with-padding.png create mode 100644 test/fixtures/plugin.legend/padding/add-column.js create mode 100644 test/fixtures/plugin.legend/padding/add-column.png diff --git a/src/core/core.layouts.js b/src/core/core.layouts.js index e0069fe2e..7206db0d9 100644 --- a/src/core/core.layouts.js +++ b/src/core/core.layouts.js @@ -200,7 +200,7 @@ function placeBoxes(boxes, chartArea, params) { box.left = x; box.right = x + box.width; box.top = box.fullSize ? userPadding.top : chartArea.top; - box.bottom = box.fullSize ? params.outerHeight - userPadding.right : chartArea.top + chartArea.h; + box.bottom = box.fullSize ? params.outerHeight - userPadding.bottom : chartArea.top + chartArea.h; box.height = box.bottom - box.top; x = box.right; } diff --git a/src/plugins/plugin.legend.js b/src/plugins/plugin.legend.js index 206f1add9..03f7fe4f2 100644 --- a/src/plugins/plugin.legend.js +++ b/src/plugins/plugin.legend.js @@ -88,11 +88,11 @@ export class Legend extends Element { if (me.isHorizontal()) { me.width = me.maxWidth; - me.left = 0; + me.left = me._margins.left; me.right = me.width; } else { me.height = me.maxHeight; - me.top = 0; + me.top = me._margins.top; me.bottom = me.height; } } @@ -199,29 +199,26 @@ export class Legend extends Element { let currentColHeight = 0; let left = 0; - let top = 0; let col = 0; me.legendItems.forEach((legendItem, i) => { const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; // If too tall, go to new column - if (i > 0 && currentColHeight + fontSize + 2 * padding > heightLimit) { + if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) { totalWidth += currentColWidth + padding; columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size left += currentColWidth + padding; col++; - top = 0; currentColWidth = currentColHeight = 0; } + // Store the hitbox width and height here. Final position will be updated in `draw` + hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight}; + // Get max width currentColWidth = Math.max(currentColWidth, itemWidth); - currentColHeight += fontSize + padding; - - // Store the hitbox width and height here. Final position will be updated in `draw` - hitboxes[i] = {left, top, col, width: itemWidth, height: itemHeight}; - top += itemHeight + padding; + currentColHeight += itemHeight + padding; }); totalWidth += currentColWidth; diff --git a/test/fixtures/plugin.legend/padding/2cols-with-padding.js b/test/fixtures/plugin.legend/padding/2cols-with-padding.js new file mode 100644 index 000000000..604ade6b7 --- /dev/null +++ b/test/fixtures/plugin.legend/padding/2cols-with-padding.js @@ -0,0 +1,35 @@ +module.exports = { + description: 'https://github.com/chartjs/Chart.js/issues/9278', + config: { + type: 'pie', + data: { + labels: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'], + datasets: [{ + data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], + backgroundColor: 'red' + }] + }, + options: { + plugins: { + legend: { + position: 'left' + } + }, + layout: { + padding: { + top: 50, + left: 30, + right: 30, + bottom: 50 + } + } + } + }, + options: { + spriteText: true, + canvas: { + width: 400, + height: 300 + }, + } +}; diff --git a/test/fixtures/plugin.legend/padding/2cols-with-padding.png b/test/fixtures/plugin.legend/padding/2cols-with-padding.png new file mode 100644 index 0000000000000000000000000000000000000000..8871ccddc6b2c45fb64b4809b51c95858ddbd08a GIT binary patch literal 20213 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 literal 0 Hc-jL100001 diff --git a/test/fixtures/plugin.legend/padding/add-column.js b/test/fixtures/plugin.legend/padding/add-column.js new file mode 100644 index 000000000..7a1e6d5e5 --- /dev/null +++ b/test/fixtures/plugin.legend/padding/add-column.js @@ -0,0 +1,39 @@ +module.exports = { + description: 'https://github.com/chartjs/Chart.js/issues/9278', + config: { + type: 'pie', + data: { + labels: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], + datasets: [{ + data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + backgroundColor: 'red' + }] + }, + options: { + plugins: { + legend: { + position: 'left' + } + }, + layout: { + padding: { + top: 55, + left: 30, + right: 30 + } + } + } + }, + options: { + spriteText: true, + canvas: { + width: 400, + height: 300 + }, + run(chart) { + chart.data.labels.push('k'); + chart.data.datasets[0].data.push(11); + chart.update(); + } + } +}; diff --git a/test/fixtures/plugin.legend/padding/add-column.png b/test/fixtures/plugin.legend/padding/add-column.png new file mode 100644 index 0000000000000000000000000000000000000000..187dcda8c1621cae312f0f0d9aba3a7a2afd7f3b GIT binary patch literal 21243 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 WsT@DbJ01cU*EK^k1N>#o