From c448753babf38b37775a159976daa54c602f7ce2 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Tue, 10 May 2016 14:57:09 -0700 Subject: [PATCH] [Table] Remove length check when updating visible rows While the number of visible rows may not have changed, their contents may have; returning early here results in #910. --- .../table/src/controllers/MCTTableController.js | 13 ++----------- .../test/controllers/MCTTableControllerSpec.js | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/platform/features/table/src/controllers/MCTTableController.js b/platform/features/table/src/controllers/MCTTableController.js index f7693159b7..0ccdfbe583 100644 --- a/platform/features/table/src/controllers/MCTTableController.js +++ b/platform/features/table/src/controllers/MCTTableController.js @@ -165,17 +165,8 @@ define( //No need to scroll if (this.$scope.displayRows.length < this.maxDisplayRows) { - //Check whether need to resynchronize visible with display - // rows (if data added) - if (this.$scope.visibleRows.length !== - this.$scope.displayRows.length){ - start = 0; - end = this.$scope.displayRows.length; - } else { - //Data is in sync, and no need to calculate scroll, - // so do nothing. - return; - } + start = 0; + end = this.$scope.displayRows.length; } else { //rows has exceeded display maximum, so may be necessary to // scroll diff --git a/platform/features/table/test/controllers/MCTTableControllerSpec.js b/platform/features/table/test/controllers/MCTTableControllerSpec.js index 3cea87e401..84cf154abf 100644 --- a/platform/features/table/test/controllers/MCTTableControllerSpec.js +++ b/platform/features/table/test/controllers/MCTTableControllerSpec.js @@ -61,13 +61,18 @@ define( ]); mockElement.find.andReturn(mockElement); mockElement.prop.andReturn(0); + mockElement[0] = { + scrollTop: 0, + scrollHeight: 500, + offsetHeight: 1000 + }; mockScope.displayHeaders = true; mockTimeout = jasmine.createSpy('$timeout'); mockTimeout.andReturn(promise(undefined)); controller = new MCTTableController(mockScope, mockTimeout, mockElement); - spyOn(controller, 'setVisibleRows'); + spyOn(controller, 'setVisibleRows').andCallThrough(); }); it('Reacts to changes to filters, headers, and rows', function() { @@ -178,6 +183,16 @@ define( expect(sortedRows[2].col2.text).toEqual('abc'); }); + // https://github.com/nasa/openmct/issues/910 + it('updates visible rows in scope', function () { + var oldRows; + mockScope.rows = testRows; + controller.setRows(testRows); + oldRows = mockScope.visibleRows; + mockScope.toggleSort('col2'); + expect(mockScope.visibleRows).not.toEqual(oldRows); + }); + it('correctly sorts rows of differing types', function () { mockScope.sortColumn = 'col2'; mockScope.sortDirection = 'desc';