function clearStacks(meta, items) {
items = items || meta._parsed;
- items.forEach((parsed) => {
- if (parsed._stacks[meta.vScale.id] === undefined || parsed._stacks[meta.vScale.id][meta.index] === undefined) {
+ for (const parsed of items) {
+ const stacks = parsed._stacks;
+ if (!stacks || stacks[meta.vScale.id] === undefined || stacks[meta.vScale.id][meta.index] === undefined) {
return;
}
- delete parsed._stacks[meta.vScale.id][meta.index];
- });
+ delete stacks[meta.vScale.id][meta.index];
+ }
}
const isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';
if (me._data) {
// This case happens when the user replaced the data array instance.
unlistenArrayEvents(me._data, me);
+ clearStacks(me._cachedMeta);
}
if (data && Object.isExtensible(data)) {
listenArrayEvents(data, me);
--- /dev/null
+var barChartData = {
+ labels: ['January', 'February', 'March'],
+ datasets: [
+ {
+ label: 'Dataset 1',
+ backgroundColor: 'red',
+ data: [5, 5, 5]
+ },
+ {
+ label: 'Dataset 2',
+ backgroundColor: 'blue',
+ data: [5, 5, 5]
+ },
+ {
+ label: 'Dataset 3',
+ backgroundColor: 'green',
+ data: [5, 5, 5]
+ }
+ ]
+};
+
+module.exports = {
+ description: 'https://github.com/chartjs/Chart.js/issues/8614',
+ config: {
+ type: 'bar',
+ data: barChartData,
+ options: {
+ scales: {
+ x: {
+ display: false,
+ stacked: true
+ },
+ y: {
+ display: false,
+ stacked: true
+ }
+ }
+ }
+ },
+ options: {
+ run(chart) {
+ chart.data.datasets[1].data = [
+ {x: 'January', y: 5},
+ // Februay missing
+ {x: 'March', y: 5}
+ ];
+ chart.update();
+ }
+ }
+};