diff options
author | Teemu Suo-Anttila <tsuoanttila@users.noreply.github.com> | 2017-06-19 13:23:47 +0300 |
---|---|---|
committer | Teemu Suo-Anttila <tsuoanttila@users.noreply.github.com> | 2017-07-11 10:01:02 +0300 |
commit | f475b17951a4481557af4f59192af537e139f734 (patch) | |
tree | bddb42e5a6fff51c3fbaffa76e87ad5b7276cd99 /client | |
parent | 30115368df1a50c516d9fa059756cc8ac3d88886 (diff) | |
download | vaadin-framework-f475b17951a4481557af4f59192af537e139f734.tar.gz vaadin-framework-f475b17951a4481557af4f59192af537e139f734.zip |
Fix displaying Grid sort order set from server (#9530)
Fixes #8316
Diffstat (limited to 'client')
-rw-r--r-- | client/src/main/java/com/vaadin/client/connectors/grid/GridConnector.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/client/src/main/java/com/vaadin/client/connectors/grid/GridConnector.java b/client/src/main/java/com/vaadin/client/connectors/grid/GridConnector.java index 70024bfdba..936f292827 100644 --- a/client/src/main/java/com/vaadin/client/connectors/grid/GridConnector.java +++ b/client/src/main/java/com/vaadin/client/connectors/grid/GridConnector.java @@ -16,6 +16,7 @@ package com.vaadin.client.connectors.grid; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -398,6 +399,21 @@ public class GridConnector extends AbstractListingConnector } } + @OnStateChange({ "sortColumns", "sortDirs" }) + void updateSortOrder() { + List<SortOrder> sortOrder = new ArrayList<SortOrder>(); + + String[] sortColumns = getState().sortColumns; + SortDirection[] sortDirs = getState().sortDirs; + + for (int i = 0; i < sortColumns.length; i++) { + sortOrder + .add(new SortOrder(getColumn(sortColumns[i]), sortDirs[i])); + } + + getWidget().setSortOrder(sortOrder); + } + @Override public void setDataSource(DataSource<JsonObject> dataSource) { super.setDataSource(dataSource); @@ -466,9 +482,15 @@ public class GridConnector extends AbstractListingConnector sortDirections.add(so.getDirection()); } } - getRpcProxy(GridServerRpc.class).sort(columnIds.toArray(new String[0]), - sortDirections.toArray(new SortDirection[0]), - event.isUserOriginated()); + String[] colArray = columnIds.toArray(new String[0]); + SortDirection[] dirArray = sortDirections.toArray(new SortDirection[0]); + + if (!Arrays.equals(colArray, getState().sortColumns) + || !Arrays.equals(dirArray, getState().sortDirs)) { + // State has actually changed, send to server + getRpcProxy(GridServerRpc.class).sort(colArray, dirArray, + event.isUserOriginated()); + } } /* HasComponentsConnector */ |