[ADF-3131] fix selection order for DT/DL (#3433)

* fix selection order for DT/DL

* remove fit
This commit is contained in:
Denys Vuika 2018-06-05 13:38:45 +01:00 committed by Eugenio Romano
parent 465a2d090d
commit 35d2a0b683
2 changed files with 21 additions and 12 deletions

View File

@ -52,6 +52,24 @@ describe('DataTable', () => {
fixture.destroy();
});
it('should preserve the top-to-bottom selection order', () => {
dataTable.data = new ObjectDataTableAdapter(
[{ id: 1 }, { id: 2 }, { id: 3 }],
[ new ObjectDataColumn({ key: 'id' })]
);
const rows = dataTable.data.getRows();
dataTable.selectRow(rows[2], true);
dataTable.selectRow(rows[0], true);
dataTable.selectRow(rows[1], true);
const selection = dataTable.selection;
expect(selection[0].getValue('id')).toBe(1);
expect(selection[1].getValue('id')).toBe(2);
expect(selection[2].getValue('id')).toBe(3);
});
it('should update schema if columns change', fakeAsync(() => {
dataTable.columnList = new DataColumnListComponent();

View File

@ -422,7 +422,7 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
if (rows && rows.length > 0) {
rows.forEach(r => r.isSelected = false);
}
this.selection.splice(0);
this.selection = [];
}
this.isSelectAllChecked = false;
}
@ -613,17 +613,8 @@ export class DataTableComponent implements AfterContentInit, OnChanges, DoCheck,
selectRow(row: DataRow, value: boolean) {
if (row) {
row.isSelected = value;
const idx = this.selection.indexOf(row);
if (value) {
if (idx < 0) {
this.selection.push(row);
}
} else {
if (idx > -1) {
this.selection.splice(idx, 1);
}
}
const rows = this.data.getRows() || [];
this.selection = rows.filter(r => r.isSelected);
}
}