Search in sources :

Example 1 with GridSortOrderBuilder

use of com.vaadin.flow.component.grid.GridSortOrderBuilder in project flow-components by vaadin.

the class TreeGridPreloadPage method setParameter.

@Override
public void setParameter(BeforeEvent event, @OptionalParameter String parameter) {
    Location location = event.getLocation();
    QueryParameters queryParameters = location.getQueryParameters();
    // query parameter: pageSize
    List<String> pageSize = queryParameters.getParameters().get("pageSize");
    if (pageSize != null) {
        grid.setPageSize(Integer.parseInt(pageSize.get(0)));
    }
    // query parameter: nodesPerLevel
    List<String> nodesPerLevel = queryParameters.getParameters().get("nodesPerLevel");
    // query parameter: depth
    List<String> depth = queryParameters.getParameters().get("depth");
    int dpNodesPerLevel = nodesPerLevel == null ? 3 : Integer.parseInt(nodesPerLevel.get(0));
    int dpDepth = depth == null ? 4 : Integer.parseInt(depth.get(0));
    setDataProvider(dpNodesPerLevel, dpDepth);
    // query parameter: expandedRootIndexes
    List<String> expandedRootIndexes = queryParameters.getParameters().get("expandedRootIndexes");
    if (expandedRootIndexes != null) {
        List<HierarchicalTestBean> expandedRootItems = Arrays.stream(expandedRootIndexes.get(0).split(",")).map(Integer::parseInt).map(expandedRootIndex -> new HierarchicalTestBean(null, 0, expandedRootIndex)).collect(java.util.stream.Collectors.toList());
        grid.expandRecursively(expandedRootItems, Integer.MAX_VALUE);
    }
    // query parameter: sortDirection
    List<String> sortDirection = queryParameters.getParameters().get("sortDirection");
    if (sortDirection != null) {
        SortDirection direction = SortDirection.valueOf(sortDirection.get(0).toUpperCase());
        GridSortOrderBuilder<HierarchicalTestBean> sorting = new GridSortOrderBuilder<HierarchicalTestBean>();
        Column<HierarchicalTestBean> column = grid.getColumns().get(0);
        if (direction == SortDirection.ASCENDING) {
            grid.sort(sorting.thenAsc(column).build());
        } else {
            grid.sort(sorting.thenDesc(column).build());
        }
    }
}
Also used : HierarchicalTestBean(com.vaadin.flow.data.bean.HierarchicalTestBean) Arrays(java.util.Arrays) SortDirection(com.vaadin.flow.data.provider.SortDirection) HasUrlParameter(com.vaadin.flow.router.HasUrlParameter) TextArea(com.vaadin.flow.component.textfield.TextArea) LitRenderer(com.vaadin.flow.data.renderer.LitRenderer) HorizontalLayout(com.vaadin.flow.component.orderedlayout.HorizontalLayout) VerticalLayout(com.vaadin.flow.component.orderedlayout.VerticalLayout) VaadinRequest(com.vaadin.flow.server.VaadinRequest) GridSortOrderBuilder(com.vaadin.flow.component.grid.GridSortOrderBuilder) BeforeEvent(com.vaadin.flow.router.BeforeEvent) HierarchicalQuery(com.vaadin.flow.data.provider.hierarchy.HierarchicalQuery) TreeGrid(com.vaadin.flow.component.treegrid.TreeGrid) Route(com.vaadin.flow.router.Route) OptionalParameter(com.vaadin.flow.router.OptionalParameter) List(java.util.List) Button(com.vaadin.flow.component.button.Button) Column(com.vaadin.flow.component.grid.Grid.Column) Stream(java.util.stream.Stream) VaadinService(com.vaadin.flow.server.VaadinService) Location(com.vaadin.flow.router.Location) HierarchicalTestBean(com.vaadin.flow.data.bean.HierarchicalTestBean) TextField(com.vaadin.flow.component.textfield.TextField) QueryParameters(com.vaadin.flow.router.QueryParameters) QueryParameters(com.vaadin.flow.router.QueryParameters) GridSortOrderBuilder(com.vaadin.flow.component.grid.GridSortOrderBuilder) SortDirection(com.vaadin.flow.data.provider.SortDirection) Location(com.vaadin.flow.router.Location)

Example 2 with GridSortOrderBuilder

use of com.vaadin.flow.component.grid.GridSortOrderBuilder in project flow-components by vaadin.

the class SortingPage method createGrid.

private Grid<Person> createGrid(String gridId, String sortBtnId) {
    Grid<Person> grid = new Grid<>();
    grid.setMultiSort(true);
    grid.setId(gridId);
    grid.setItems(new Person("B", 20), new Person("A", 30));
    Column<Person> nameColumn = grid.addColumn(Person::getFirstName).setHeader(new Span("Name"));
    Column<Person> ageColumn = grid.addColumn(Person::getAge).setHeader("Age");
    // Needed to check that sorter is rendered in component header after
    // adding new header row
    grid.appendHeaderRow();
    List<GridSortOrder<Person>> sortByName = new GridSortOrderBuilder<Person>().thenAsc(nameColumn).build();
    grid.sort(sortByName);
    NativeButton button = new NativeButton(sortBtnId.equals("sort-hidden-by-age") ? "Sort hidden by age" : "Sort by age", e -> {
        List<GridSortOrder<Person>> sortByAge = new GridSortOrderBuilder<Person>().thenAsc(ageColumn).build();
        grid.sort(sortByAge);
    });
    button.setId(sortBtnId);
    NativeButton reOrder = new NativeButton("Re-order", e -> {
        grid.setColumnOrder(ageColumn, nameColumn);
    });
    reOrder.setId("reorder-button");
    NativeButton changeHeaderText = new NativeButton("Change header text", e -> {
        ageColumn.setHeader("Age (updated)");
    });
    changeHeaderText.setId("change-header-text");
    NativeButton changeHeaderTextComponent = new NativeButton("Change header text component", e -> {
        ageColumn.setHeader(new Span("Age (updated)"));
    });
    changeHeaderTextComponent.setId("change-header-text-component");
    NativeButton clearButton = new NativeButton("Clear items", e -> grid.setItems(new ArrayList<Person>()));
    clearButton.setId("clear-items");
    add(button, reOrder, changeHeaderText, changeHeaderTextComponent, clearButton);
    return grid;
}
Also used : NativeButton(com.vaadin.flow.component.html.NativeButton) GridSortOrder(com.vaadin.flow.component.grid.GridSortOrder) Grid(com.vaadin.flow.component.grid.Grid) ArrayList(java.util.ArrayList) Person(com.vaadin.flow.data.bean.Person) Span(com.vaadin.flow.component.html.Span) GridSortOrderBuilder(com.vaadin.flow.component.grid.GridSortOrderBuilder)

Aggregations

GridSortOrderBuilder (com.vaadin.flow.component.grid.GridSortOrderBuilder)2 Button (com.vaadin.flow.component.button.Button)1 Grid (com.vaadin.flow.component.grid.Grid)1 Column (com.vaadin.flow.component.grid.Grid.Column)1 GridSortOrder (com.vaadin.flow.component.grid.GridSortOrder)1 NativeButton (com.vaadin.flow.component.html.NativeButton)1 Span (com.vaadin.flow.component.html.Span)1 HorizontalLayout (com.vaadin.flow.component.orderedlayout.HorizontalLayout)1 VerticalLayout (com.vaadin.flow.component.orderedlayout.VerticalLayout)1 TextArea (com.vaadin.flow.component.textfield.TextArea)1 TextField (com.vaadin.flow.component.textfield.TextField)1 TreeGrid (com.vaadin.flow.component.treegrid.TreeGrid)1 HierarchicalTestBean (com.vaadin.flow.data.bean.HierarchicalTestBean)1 Person (com.vaadin.flow.data.bean.Person)1 SortDirection (com.vaadin.flow.data.provider.SortDirection)1 HierarchicalQuery (com.vaadin.flow.data.provider.hierarchy.HierarchicalQuery)1 LitRenderer (com.vaadin.flow.data.renderer.LitRenderer)1 BeforeEvent (com.vaadin.flow.router.BeforeEvent)1 HasUrlParameter (com.vaadin.flow.router.HasUrlParameter)1 Location (com.vaadin.flow.router.Location)1