Skip to content

Commit b95fb18

Browse files
committed
fix #5711 restore original sort after group and ungroup
1 parent eec9067 commit b95fb18

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/features/grouping/js/grouping.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,9 @@
674674
var existingGrouping = service.getGrouping( grid );
675675
column.grouping.groupPriority = existingGrouping.grouping.length;
676676

677+
// save sort in order to restore it when column is ungrouped
678+
column.previousSort = angular.copy(column.sort);
679+
677680
// add sort if not present
678681
if ( !column.sort ){
679682
column.sort = { direction: uiGridConstants.ASC };
@@ -716,9 +719,15 @@
716719
delete column.treeAggregation;
717720
delete column.customTreeAggregationFinalizer;
718721

722+
if (column.previousSort) {
723+
column.sort = column.previousSort;
724+
delete column.previousSort;
725+
}
726+
719727
service.tidyPriorities( grid );
720728

721729
grid.api.grouping.raise.groupingChanged(column);
730+
grid.api.core.raise.sortChanged(grid, grid.getColumnSorting());
722731

723732
grid.queueGridRefresh();
724733
},

src/features/grouping/test/grouping.spec.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,30 @@ describe('ui.grid.grouping uiGridGroupingService', function () {
101101
});
102102

103103

104+
describe('groupColumn', function() {
105+
it('saves previous sort state', function() {
106+
grid.columns[1].sort = { priority: 42, direction: 'foo'};
107+
uiGridGroupingService.groupColumn(grid, grid.columns[1]);
108+
expect(grid.columns[1].previousSort.priority).toBe(42);
109+
expect(grid.columns[1].previousSort.direction).toBe('foo');
110+
});
111+
});
112+
113+
describe('ungroupColumn', function() {
114+
it('restores previuosly restored state if there is one', function() {
115+
grid.columns[1].previousSort = { direction: 'bar'};
116+
uiGridGroupingService.ungroupColumn(grid, grid.columns[1]);
117+
expect(grid.columns[1].sort.direction).toBe('bar');
118+
});
119+
120+
it('should remove previous sort prop from column object after column sort is restored', function() {
121+
grid.columns[1].previousSort = {direction: 'bar'};
122+
uiGridGroupingService.ungroupColumn(grid, grid.columns[1]);
123+
expect(grid.columns[1].previousSort).toBeUndefined();
124+
});
125+
});
126+
127+
104128
describe( 'groupRows', function() {
105129
beforeEach(function() {
106130
spyOn(gridClassFactory, 'rowTemplateAssigner').and.callFake( function() {});

0 commit comments

Comments
 (0)