Skip to content

Commit

Permalink
Fix stacked box dimension calculation with weights (#9394)
Browse files Browse the repository at this point in the history
* Fix stacked box dimension calculation with weights

* Fix typo in filename
  • Loading branch information
kurkle committed Jul 12, 2021
1 parent 47d4b04 commit 31be610
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/core/core.layouts.js
Expand Up @@ -223,9 +223,9 @@ function placeBoxes(boxes, chartArea, params, stacks) {
for (const layout of boxes) {
const box = layout.box;
const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};
const weight = (stack.weight * layout.stackWeight) || 1;
const weight = (layout.stackWeight / stack.weight) || 1;
if (layout.horizontal) {
const width = chartArea.w / weight;
const width = chartArea.w * weight;
const height = stack.size || box.height;
if (defined(stack.start)) {
y = stack.start;
Expand All @@ -239,7 +239,7 @@ function placeBoxes(boxes, chartArea, params, stacks) {
stack.placed += width;
y = box.bottom;
} else {
const height = chartArea.h / weight;
const height = chartArea.h * weight;
const width = stack.size || box.width;
if (defined(stack.start)) {
x = stack.start;
Expand Down
112 changes: 112 additions & 0 deletions test/fixtures/core.layouts/stacked-boxes-with-weight.js
@@ -0,0 +1,112 @@
module.exports = {
config: {
type: 'line',
data: {
datasets: [
{data: [{x: 1, y: 1}, {x: 2, y: 2}, {x: 3, y: 3}], borderColor: 'red'},
{data: [{x: 1, y: 1}, {x: 2, y: 2}, {x: 3, y: 3}], yAxisID: 'y1', xAxisID: 'x1', borderColor: 'green'},
{data: [{x: 1, y: 1}, {x: 2, y: 2}, {x: 3, y: 3}], yAxisID: 'y2', xAxisID: 'x2', borderColor: 'blue'},
],
labels: ['tick1', 'tick2', 'tick3']
},
options: {
plugins: false,
scales: {
x: {
type: 'linear',
position: 'bottom',
stack: '1',
stackWeight: 2,
offset: true,
bounds: 'data',
grid: {
borderColor: 'red'
},
ticks: {
autoSkip: false,
maxRotation: 0,
count: 3
}
},
x1: {
type: 'linear',
position: 'bottom',
stack: '1',
stackWeight: 2,
offset: true,
bounds: 'data',
grid: {
borderColor: 'green'
},
ticks: {
autoSkip: false,
maxRotation: 0,
count: 3
}
},
x2: {
type: 'linear',
position: 'bottom',
stack: '1',
stackWeight: 6,
offset: true,
bounds: 'data',
grid: {
borderColor: 'blue'
},
ticks: {
autoSkip: false,
maxRotation: 0,
count: 3
}
},
y: {
type: 'linear',
position: 'left',
stack: '1',
stackWeight: 2,
offset: true,
grid: {
borderColor: 'red'
},
ticks: {
precision: 0
}
},
y1: {
type: 'linear',
position: 'left',
stack: '1',
offset: true,
stackWeight: 2,
grid: {
borderColor: 'green'
},
ticks: {
precision: 0
}
},
y2: {
type: 'linear',
position: 'left',
stack: '1',
stackWeight: 3,
offset: true,
grid: {
borderColor: 'blue'
},
ticks: {
precision: 0
}
}
}
}
},
options: {
spriteText: true,
canvas: {
height: 384,
width: 384
}
}
};
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 31be610

Please sign in to comment.