Skip to content

Commit

Permalink
fix: consider the value of MultiSortPriority when sorting by column i…
Browse files Browse the repository at this point in the history
…n GridTester (#1700)

Fixes #1695
  • Loading branch information
mvysny authored Nov 15, 2023
1 parent fdc7f4d commit ca484b0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -241,4 +241,23 @@ void sortByColumn_multisort_gridIsSorted() {
List.of(grid_.getRow(0), grid_.getRow(1), grid_.getRow(2)));

}

@Test
void sortByColumn_multisort_append_gridIsSorted() {
view.grid.setMultiSort(true, Grid.MultiSortPriority.APPEND);
view.first.setFirstName("G");
view.first.setAge(20);
view.second.setFirstName("G");
view.second.setAge(25);
view.third.setFirstName("A");
view.third.setAge(25);
view.grid.setMultiSort(true);

grid_.sortByColumn(0);
grid_.sortByColumn(1);
Assertions.assertIterableEquals(
List.of(view.third, view.first, view.second),
List.of(grid_.getRow(0), grid_.getRow(1), grid_.getRow(2)));

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -538,6 +538,13 @@ public void sortByColumn(String property, SortDirection direction) {
}
}

private Grid.MultiSortPriority getMultiSortPriority() {
return "append".equals(
getComponent().getElement().getAttribute("multi-sort-priority"))
? Grid.MultiSortPriority.APPEND
: Grid.MultiSortPriority.PREPEND;
}

private void doSort(SortDirection currentDirection, Grid.Column<Y> col) {
List<GridSortOrder<Y>> sortOrders = new ArrayList<>(
getComponent().getSortOrder());
Expand All @@ -546,10 +553,14 @@ private void doSort(SortDirection currentDirection, Grid.Column<Y> col) {
} else {
sortOrders.clear();
}
final Grid.MultiSortPriority multiSortPriority = getMultiSortPriority();
final int insertIndex = multiSortPriority == Grid.MultiSortPriority.PREPEND
? 0
: sortOrders.size();
if (currentDirection == null) {
sortOrders.add(0, GridSortOrder.asc(col).build().get(0));
sortOrders.add(insertIndex, GridSortOrder.asc(col).build().get(0));
} else if (currentDirection == SortDirection.ASCENDING) {
sortOrders.add(0, GridSortOrder.desc(col).build().get(0));
sortOrders.add(insertIndex, GridSortOrder.desc(col).build().get(0));
}
getComponent().sort(sortOrders);
}
Expand Down

0 comments on commit ca484b0

Please sign in to comment.