Skip to content

Commit

Permalink
Fix animations when data is replaced (#9120)
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle committed May 18, 2021
1 parent a553d57 commit 749d1fc
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/core/core.datasetController.js
Expand Up @@ -332,16 +332,15 @@ export default class DatasetController {
if (_data) {
// This case happens when the user replaced the data array instance.
unlistenArrayEvents(_data, me);
// Discard old elements, parsed data and stacks
// Discard old parsed data and stacks
const meta = me._cachedMeta;
clearStacks(meta);
meta._parsed = [];
meta.data = [];
}
if (data && Object.isExtensible(data)) {
listenArrayEvents(data, me);
me._syncList = [];
}
me._syncList = [];
me._data = data;
}
}
Expand Down Expand Up @@ -933,7 +932,8 @@ export default class DatasetController {
me._insertElements(numMeta, numData - numMeta, resetNewElements);
} else if (numData < numMeta) {
me._removeElements(numData, numMeta - numData);
} else if (count) {
}
if (count) {
// TODO: It is not optimal to always parse the old data
// This is done because we are not detecting direct assignments:
// chart.data.datasets[0].data[5] = 10;
Expand Down
2 changes: 2 additions & 0 deletions test/specs/core.datasetController.tests.js
Expand Up @@ -392,12 +392,14 @@ describe('Chart.DatasetController', function() {

expect(meta.data.length).toBe(6);
expect(meta._parsed.map(p => p.y)).toEqual(data0);
const point0 = meta.data[0];

chart.data.datasets[0].data = data1;
chart.update();

expect(meta.data.length).toBe(3);
expect(meta._parsed.map(p => p.y)).toEqual(data1);
expect(meta.data[0]).toEqual(point0);

data1.push(9);
chart.update();
Expand Down

0 comments on commit 749d1fc

Please sign in to comment.