mirror of
https://github.com/chartjs/Chart.js.git
synced 2026-02-20 01:31:20 +01:00
Fix: applyStack() returned the sum of all values for hidden dataset indices, which resulted in wrong show animations (#11938)
This commit is contained in:
@@ -76,9 +76,11 @@ function applyStack(stack, value, dsIndex, options = {}) {
|
||||
return;
|
||||
}
|
||||
|
||||
let found = false;
|
||||
for (i = 0, ilen = keys.length; i < ilen; ++i) {
|
||||
datasetIndex = +keys[i];
|
||||
if (datasetIndex === dsIndex) {
|
||||
found = true;
|
||||
if (options.all) {
|
||||
continue;
|
||||
}
|
||||
@@ -89,6 +91,11 @@ function applyStack(stack, value, dsIndex, options = {}) {
|
||||
value += otherValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found && !options.all) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
@@ -1613,6 +1613,49 @@ describe('Chart.controllers.bar', function() {
|
||||
expect(data[0].y).toBeCloseToPixel(512);
|
||||
});
|
||||
|
||||
it('should hide bar dataset beneath the chart for correct animations', function() {
|
||||
var chart = window.acquireChart({
|
||||
type: 'bar',
|
||||
data: {
|
||||
datasets: [{
|
||||
data: [1, 2, 3, 4]
|
||||
}, {
|
||||
data: [1, 2, 3, 4]
|
||||
}],
|
||||
labels: ['A', 'B', 'C', 'D']
|
||||
},
|
||||
options: {
|
||||
plugins: {
|
||||
legend: false,
|
||||
title: false
|
||||
},
|
||||
scales: {
|
||||
x: {
|
||||
type: 'category',
|
||||
display: false,
|
||||
stacked: true,
|
||||
},
|
||||
y: {
|
||||
type: 'linear',
|
||||
display: false,
|
||||
stacked: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var data = chart.getDatasetMeta(0).data;
|
||||
expect(data[0].base).toBeCloseToPixel(512);
|
||||
expect(data[0].y).toBeCloseToPixel(448);
|
||||
|
||||
chart.setDatasetVisibility(0, false);
|
||||
chart.update();
|
||||
|
||||
data = chart.getDatasetMeta(0).data;
|
||||
expect(data[0].base).toBeCloseToPixel(640);
|
||||
expect(data[0].y).toBeCloseToPixel(512);
|
||||
});
|
||||
|
||||
describe('Float bar', function() {
|
||||
it('Should return correct values from getMinMax', function() {
|
||||
var chart = window.acquireChart({
|
||||
|
||||
Reference in New Issue
Block a user