Skip to content

Commit 50ef34d

Browse files
committed
Review update 1
1 parent f97714f commit 50ef34d

File tree

2 files changed

+78
-3
lines changed

2 files changed

+78
-3
lines changed

src/core/core.controller.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,13 +396,17 @@ helpers.extend(Chart.prototype, /** @lends Chart */ {
396396
},
397397

398398
/**
399+
* Updates the given metaset with the given dataset index. Ensures it's stored at that index
400+
* in the _metasets array by swapping with the metaset at that index if necessary.
401+
* @param {Object} meta - the dataset metadata
402+
* @param {number} index - the dataset index
399403
* @private
400404
*/
401405
_updateMetasetIndex: function(meta, index) {
402406
const metasets = this._metasets;
403-
const old = meta.index;
404-
if (old !== index) {
405-
metasets[old] = metasets[index];
407+
const oldIndex = meta.index;
408+
if (oldIndex !== index) {
409+
metasets[oldIndex] = metasets[index];
406410
metasets[index] = meta;
407411
meta.index = index;
408412
}

test/specs/core.controller.tests.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1325,4 +1325,75 @@ describe('Chart', function() {
13251325
);
13261326
});
13271327
});
1328+
1329+
describe('metasets', function() {
1330+
beforeEach(function() {
1331+
this.chart = acquireChart({
1332+
type: 'line',
1333+
data: {
1334+
datasets: [
1335+
{label: '1', order: 2},
1336+
{label: '2', order: 1},
1337+
{label: '3', order: 4},
1338+
{label: '4', order: 3},
1339+
]
1340+
}
1341+
});
1342+
});
1343+
afterEach(function() {
1344+
const metasets = this.chart._metasets;
1345+
expect(metasets.length).toEqual(this.chart.data.datasets.length);
1346+
for (let i = 0; i < metasets.length; i++) {
1347+
expect(metasets[i].index).toEqual(i);
1348+
expect(metasets[i]._dataset).toEqual(this.chart.data.datasets[i]);
1349+
}
1350+
});
1351+
it('should build metasets array in order', function() {
1352+
const metasets = this.chart._metasets;
1353+
expect(metasets[0].order).toEqual(2);
1354+
expect(metasets[1].order).toEqual(1);
1355+
expect(metasets[2].order).toEqual(4);
1356+
expect(metasets[3].order).toEqual(3);
1357+
});
1358+
it('should build sorted metasets array in correct order', function() {
1359+
const metasets = this.chart._sortedMetasets;
1360+
expect(metasets[0].order).toEqual(1);
1361+
expect(metasets[1].order).toEqual(2);
1362+
expect(metasets[2].order).toEqual(3);
1363+
expect(metasets[3].order).toEqual(4);
1364+
});
1365+
it('should be moved when datasets are removed from begining', function() {
1366+
this.chart.data.datasets.splice(0, 2);
1367+
this.chart.update();
1368+
const metasets = this.chart._metasets;
1369+
expect(metasets[0].order).toEqual(4);
1370+
expect(metasets[1].order).toEqual(3);
1371+
});
1372+
it('should be moved when datasets are removed from middle', function() {
1373+
this.chart.data.datasets.splice(1, 2);
1374+
this.chart.update();
1375+
const metasets = this.chart._metasets;
1376+
expect(metasets[0].order).toEqual(2);
1377+
expect(metasets[1].order).toEqual(3);
1378+
});
1379+
it('should be moved when datasets are inserted', function() {
1380+
this.chart.data.datasets.splice(1, 0, {label: '1.5', order: 5});
1381+
this.chart.update();
1382+
const metasets = this.chart._metasets;
1383+
expect(metasets[0].order).toEqual(2);
1384+
expect(metasets[1].order).toEqual(5);
1385+
expect(metasets[2].order).toEqual(1);
1386+
expect(metasets[3].order).toEqual(4);
1387+
expect(metasets[4].order).toEqual(3);
1388+
});
1389+
it('should be replaced when dataset is replaced', function() {
1390+
this.chart.data.datasets.splice(1, 1, {label: '1.5', order: 5});
1391+
this.chart.update();
1392+
const metasets = this.chart._metasets;
1393+
expect(metasets[0].order).toEqual(2);
1394+
expect(metasets[1].order).toEqual(5);
1395+
expect(metasets[2].order).toEqual(4);
1396+
expect(metasets[3].order).toEqual(3);
1397+
});
1398+
});
13281399
});

0 commit comments

Comments
 (0)