From: Tiago Melo Date: Thu, 30 Apr 2020 16:39:48 +0000 (+0000) Subject: mgr/dashboard: Fix error when filtering table without data X-Git-Tag: v17.0.0~2467^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=873028a359866f10fd5ef95284758bfe2d43e37b;p=ceph.git mgr/dashboard: Fix error when filtering table without data Fixes: https://tracker.ceph.com/issues/45351 Signed-off-by: Tiago Melo --- diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.spec.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.spec.ts index 7484b227409e4..a3ac199a4ba16 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.spec.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.spec.ts @@ -424,6 +424,13 @@ describe('TableComponent', () => { component.onClearSearch(); expect(component.rows.length).toBe(10); }); + + it('should work with undefined data', () => { + component.data = undefined; + component.search = '3'; + component.updateFilter(); + expect(component.rows).toBeUndefined(); + }); }); describe('after ngInit', () => { diff --git a/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts b/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts index 7d9fb28a70801..83e4050970d19 100644 --- a/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts +++ b/src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.ts @@ -732,7 +732,7 @@ export class TableComponent implements AfterContentChecked, OnInit, OnChanges, O updateFilter() { let rows = this.columnFilters.length !== 0 ? this.doColumnFiltering() : this.data; - if (this.search.length > 0) { + if (this.search.length > 0 && rows) { const columns = this.columns.filter((c) => c.cellTransformation !== CellTemplate.sparkline); // update the rows rows = this.subSearch(rows, TableComponent.prepareSearch(this.search), columns);