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;
}
}
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;
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();