CE-781 add sortOrder attribute to apps, for sorting them...

This commit is contained in:
2024-01-10 19:51:44 -06:00
parent 615ff6fce5
commit 5147a022fa
2 changed files with 46 additions and 4 deletions

View File

@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.actions.metadata;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -150,14 +151,21 @@ public class MetaDataAction
} }
metaDataOutput.setWidgets(widgets); metaDataOutput.setWidgets(widgets);
///////////////////////////////////////////////////////
// sort apps - by sortOrder (integer), then by label //
///////////////////////////////////////////////////////
List<QAppMetaData> sortedApps = metaDataInput.getInstance().getApps().values().stream()
.sorted(Comparator.comparing((QAppMetaData a) -> a.getSortOrder())
.thenComparing((QAppMetaData a) -> a.getLabel()))
.toList();
/////////////////////////////////// ///////////////////////////////////
// map apps to frontend metadata // // map apps to frontend metadata //
/////////////////////////////////// ///////////////////////////////////
Map<String, QFrontendAppMetaData> apps = new LinkedHashMap<>(); Map<String, QFrontendAppMetaData> apps = new LinkedHashMap<>();
for(Map.Entry<String, QAppMetaData> entry : metaDataInput.getInstance().getApps().entrySet()) for(QAppMetaData app : sortedApps)
{ {
String appName = entry.getKey(); String appName = app.getName();
QAppMetaData app = entry.getValue();
PermissionCheckResult permissionResult = PermissionsHelper.getPermissionCheckResult(metaDataInput, app); PermissionCheckResult permissionResult = PermissionsHelper.getPermissionCheckResult(metaDataInput, app);
if(permissionResult.equals(PermissionCheckResult.DENY_HIDE)) if(permissionResult.equals(PermissionCheckResult.DENY_HIDE))
@ -191,7 +199,7 @@ public class MetaDataAction
// organize app tree nodes by their hierarchy // // organize app tree nodes by their hierarchy //
//////////////////////////////////////////////// ////////////////////////////////////////////////
List<AppTreeNode> appTree = new ArrayList<>(); List<AppTreeNode> appTree = new ArrayList<>();
for(QAppMetaData appMetaData : metaDataInput.getInstance().getApps().values()) for(QAppMetaData appMetaData : sortedApps)
{ {
if(appMetaData.getParentAppName() == null) if(appMetaData.getParentAppName() == null)
{ {

View File

@ -43,6 +43,8 @@ public class QAppMetaData implements QAppChildMetaData, MetaDataWithPermissionRu
private String name; private String name;
private String label; private String label;
private Integer sortOrder = 500;
private QPermissionRules permissionRules; private QPermissionRules permissionRules;
private List<QAppChildMetaData> children; private List<QAppChildMetaData> children;
@ -426,4 +428,36 @@ public class QAppMetaData implements QAppChildMetaData, MetaDataWithPermissionRu
{ {
qInstance.addApp(this); qInstance.addApp(this);
} }
/*******************************************************************************
** Getter for sortOrder
*******************************************************************************/
public Integer getSortOrder()
{
return (this.sortOrder);
}
/*******************************************************************************
** Setter for sortOrder
*******************************************************************************/
public void setSortOrder(Integer sortOrder)
{
this.sortOrder = sortOrder;
}
/*******************************************************************************
** Fluent setter for sortOrder
*******************************************************************************/
public QAppMetaData withSortOrder(Integer sortOrder)
{
this.sortOrder = sortOrder;
return (this);
}
} }