From 4340b889f9a56f0f5ac08ae54dc8a7782363ddba Mon Sep 17 00:00:00 2001 From: eschleb Date: Fri, 1 Mar 2024 09:56:17 +0100 Subject: [PATCH] Implement default sort option --- .../appbuilder/builder/BrowserAppBuilder.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java index 8406e54..1976f2d 100644 --- a/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java +++ b/src/main/java/com/namics/oss/magnolia/appbuilder/builder/BrowserAppBuilder.java @@ -11,6 +11,7 @@ import com.namics.oss.magnolia.appbuilder.contextmenu.ContentAppContextMenuDefinition; import com.namics.oss.magnolia.appbuilder.contextmenu.RootAppContextMenuDefinition; import com.namics.oss.magnolia.appbuilder.dropconstraint.NodeTypeConstraintAwareDropConstraintDefinition; +import com.vaadin.shared.data.sort.SortDirection; import info.magnolia.ui.actionbar.definition.ActionbarDefinition; import info.magnolia.ui.actionbar.definition.ActionbarSectionDefinition; import info.magnolia.ui.actionbar.definition.ConfiguredActionbarDefinition; @@ -37,6 +38,7 @@ public class BrowserAppBuilder { private DropConstraintDefinition dropConstraint; private List> columnDefinitions; private Map nodeTypeIcons; + private Map sortBy; private BiFunction>, List>> contentViewFactory; public BrowserAppBuilder contentViews(final BiFunction>, List>> contentViewFactory) { @@ -102,6 +104,18 @@ public BrowserAppBuilder nodeTypeIcons(final Map nodeType return this; } + public BrowserAppBuilder sortBy(final String propertyName, final SortDirection direction) { + return sortBy(Stream.concat( + Stream.ofNullable(sortBy).map(Map::entrySet).flatMap(Collection::stream), + Stream.of(Map.entry(propertyName, direction)) + ).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))); + } + + public BrowserAppBuilder sortBy(final Map sortBy) { + this.sortBy = sortBy; + return this; + } + public BrowserAppBuilder dropConstraint(final DropConstraintDefinition dropConstraint) { this.dropConstraint = dropConstraint; return this; @@ -195,6 +209,7 @@ private JcrDatasourceDefinition getJcrDatasource( jcrDatasourceDefinition.setWorkspace(workspace); jcrDatasourceDefinition.setRootPath("/"); jcrDatasourceDefinition.setAllowedNodeTypes(allowedNodeTypes); + jcrDatasourceDefinition.setSortBy(sortBy); return jcrDatasourceDefinition; }