From 8413d8e30e7ddf815a5b429378bcb9547bf3c695 Mon Sep 17 00:00:00 2001 From: Dana Greenberg Date: Wed, 6 Jul 2016 10:42:22 -0400 Subject: [PATCH] fix: prevent hidden columns triggering unnecessary re-order --- src/features/move-columns/js/column-movable.js | 7 ++++--- .../move-columns/test/column-movable.spec.js | 12 +++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/features/move-columns/js/column-movable.js b/src/features/move-columns/js/column-movable.js index 3047c1ecbc..0c29f39b14 100644 --- a/src/features/move-columns/js/column-movable.js +++ b/src/features/move-columns/js/column-movable.js @@ -175,13 +175,14 @@ } //check columns in between move-range to make sure they are visible columns - var i0 = Math.min(originalPosition, newPosition); - for (i0; i0 < Math.max(originalPosition, newPosition);i0++) { + var pos = (originalPosition < newPosition) ? originalPosition + 1 : originalPosition - 1; + var i0 = Math.min(pos, newPosition); + for (i0; i0 <= Math.max(pos, newPosition); i0++) { if (columns[i0].visible) { break; } } - if (i0 === Math.max(originalPosition, newPosition)) { + if (i0 > Math.max(pos, newPosition)) { //no visible column found, column did not visibly move return; } diff --git a/src/features/move-columns/test/column-movable.spec.js b/src/features/move-columns/test/column-movable.spec.js index 16ce11eca8..e13872cd0c 100644 --- a/src/features/move-columns/test/column-movable.spec.js +++ b/src/features/move-columns/test/column-movable.spec.js @@ -183,5 +183,15 @@ describe('ui.grid.moveColumns', function () { expect(scope.grid.columns[3].name).toBe('company'); expect(scope.grid.columns[4].name).toBe('phone'); }); - + + it('expect column move not to happen if moving across hidden columns', function() { + scope.gridOptions.columnDefs[1].visible = false; + scope.gridApi.colMovable.moveColumn(0, 3); + expect(scope.grid.columns[0].name).toBe('name'); + expect(scope.grid.columns[1].name).toBe('gender'); + expect(scope.grid.columns[2].name).toBe('age'); + expect(scope.grid.columns[3].name).toBe('company'); + expect(scope.grid.columns[4].name).toBe('phone'); + }); + });