diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/AppTreeNode.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/AppTreeNode.java index b4ab8965..e322be68 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/AppTreeNode.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/AppTreeNode.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.List; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; @@ -45,7 +46,7 @@ public class AppTreeNode private String label; private List children; - private String iconName; + private QIcon icon; @@ -82,7 +83,7 @@ public class AppTreeNode if(appChildMetaData.getIcon() != null) { // todo - propagate icons from parents, if they aren't set here... - this.iconName = appChildMetaData.getIcon().getName(); + this.icon = appChildMetaData.getIcon(); } } @@ -138,7 +139,18 @@ public class AppTreeNode *******************************************************************************/ public String getIconName() { - return iconName; + return (icon == null ? null : icon.getName()); + } + + + + /******************************************************************************* + ** Getter for icon + ** + *******************************************************************************/ + public QIcon getIcon() + { + return icon; } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendAppMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendAppMetaData.java index ef73eac8..f549dabf 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendAppMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendAppMetaData.java @@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.kingsrook.qqq.backend.core.model.actions.metadata.MetaDataOutput; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppMetaData; import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppSection; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.layout.QSupplementalAppMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; @@ -45,7 +46,7 @@ public class QFrontendAppMetaData { private String name; private String label; - private String iconName; + private QIcon icon; private List widgets = new ArrayList<>(); private List children = new ArrayList<>(); @@ -56,6 +57,7 @@ public class QFrontendAppMetaData private Map supplementalAppMetaData; + /******************************************************************************* ** *******************************************************************************/ @@ -63,11 +65,7 @@ public class QFrontendAppMetaData { this.name = appMetaData.getName(); this.label = appMetaData.getLabel(); - - if(appMetaData.getIcon() != null) - { - this.iconName = appMetaData.getIcon().getName(); - } + this.icon = appMetaData.getIcon(); List filteredWidgets = CollectionUtils.nonNullList(appMetaData.getWidgets()).stream().filter(n -> metaDataOutput.getWidgets().containsKey(n)).toList(); if(CollectionUtils.nullSafeHasContents(filteredWidgets)) @@ -81,6 +79,10 @@ public class QFrontendAppMetaData List filteredTables = CollectionUtils.nonNullList(section.getTables()).stream().filter(n -> metaDataOutput.getTables().containsKey(n)).toList(); List filteredProcesses = CollectionUtils.nonNullList(section.getProcesses()).stream().filter(n -> metaDataOutput.getProcesses().containsKey(n)).toList(); List filteredReports = CollectionUtils.nonNullList(section.getReports()).stream().filter(n -> metaDataOutput.getReports().containsKey(n)).toList(); + + ////////////////////////////////////////////////////// + // only include the section if it has some contents // + ////////////////////////////////////////////////////// if(!filteredTables.isEmpty() || !filteredProcesses.isEmpty() || !filteredReports.isEmpty()) { QAppSection clonedSection = section.clone(); @@ -174,18 +176,7 @@ public class QFrontendAppMetaData *******************************************************************************/ public String getIconName() { - return iconName; - } - - - - /******************************************************************************* - ** Setter for iconName - ** - *******************************************************************************/ - public void setIconName(String iconName) - { - this.iconName = iconName; + return (icon == null ? null : icon.getName()); } @@ -235,4 +226,15 @@ public class QFrontendAppMetaData { return supplementalAppMetaData; } + + + + /******************************************************************************* + ** Getter for icon + ** + *******************************************************************************/ + public QIcon getIcon() + { + return icon; + } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendProcessMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendProcessMetaData.java index ee37a388..c435e0f4 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendProcessMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendProcessMetaData.java @@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.kingsrook.qqq.backend.core.actions.permissions.PermissionsHelper; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QStateMachineStep; @@ -48,7 +49,7 @@ public class QFrontendProcessMetaData private String tableName; private boolean isHidden; - private String iconName; + private QIcon icon; private List frontendSteps; private String stepFlow; @@ -98,10 +99,7 @@ public class QFrontendProcessMetaData } } - if(processMetaData.getIcon() != null) - { - this.iconName = processMetaData.getIcon().getName(); - } + this.icon = processMetaData.getIcon(); hasPermission = PermissionsHelper.hasProcessPermission(actionInput, name); } @@ -180,7 +178,7 @@ public class QFrontendProcessMetaData *******************************************************************************/ public String getIconName() { - return iconName; + return icon == null ? null : icon.getName(); } @@ -204,4 +202,15 @@ public class QFrontendProcessMetaData { return stepFlow; } + + + + /******************************************************************************* + ** Getter for icon + ** + *******************************************************************************/ + public QIcon getIcon() + { + return icon; + } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendTableMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendTableMetaData.java index d98ad463..87b43226 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendTableMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendTableMetaData.java @@ -40,6 +40,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.help.QHelpContent; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.sharing.ShareableTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.Capability; import com.kingsrook.qqq.backend.core.model.metadata.tables.ExposedJoin; @@ -61,7 +62,7 @@ public class QFrontendTableMetaData private String label; private boolean isHidden; private String primaryKeyField; - private String iconName; + private QIcon icon; private Map fields; private List sections; @@ -156,10 +157,7 @@ public class QFrontendTableMetaData } } - if(tableMetaData.getIcon() != null) - { - this.iconName = tableMetaData.getIcon().getName(); - } + this.icon = tableMetaData.getIcon(); setCapabilities(backendForTable, tableMetaData); @@ -275,7 +273,7 @@ public class QFrontendTableMetaData *******************************************************************************/ public String getIconName() { - return iconName; + return (icon == null ? null : icon.getName()); } @@ -397,4 +395,16 @@ public class QFrontendTableMetaData { return helpContents; } + + + + /******************************************************************************* + ** Getter for icon + ** + *******************************************************************************/ + public QIcon getIcon() + { + return icon; + } + } diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppMetaData.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppMetaData.java index 0dd4d914..a31855d7 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppMetaData.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppMetaData.java @@ -32,6 +32,7 @@ import com.kingsrook.qqq.middleware.javalin.schemabuilder.ToSchema; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIDescription; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIListItems; +import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapKnownEntries; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapValueType; @@ -91,10 +92,11 @@ public class AppMetaData implements ToSchema /*************************************************************************** ** ***************************************************************************/ - @OpenAPIDescription("Name of an icon for the app, from the material UI icon set") - public String getIconName() + @OpenAPIDescription("Icon to display for the app.") + @OpenAPIMapKnownEntries(value = Icon.class, useRef = true) + public Icon getIcon() { - return (this.wrapped.getIconName()); + return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon())); } diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppTreeNode.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppTreeNode.java index 85a63b4c..62d6c7ae 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppTreeNode.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/AppTreeNode.java @@ -28,6 +28,7 @@ import com.kingsrook.qqq.middleware.javalin.schemabuilder.ToSchema; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIDescription; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIListItems; +import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapKnownEntries; /*************************************************************************** @@ -60,6 +61,7 @@ public class AppTreeNode implements ToSchema } + /*************************************************************************** ** ***************************************************************************/ @@ -70,6 +72,7 @@ public class AppTreeNode implements ToSchema } + /*************************************************************************** ** ***************************************************************************/ @@ -91,6 +94,7 @@ public class AppTreeNode implements ToSchema } + /*************************************************************************** ** ***************************************************************************/ @@ -102,4 +106,15 @@ public class AppTreeNode implements ToSchema } + + /*************************************************************************** + ** + ***************************************************************************/ + @OpenAPIDescription("Icon to display for the item.") + @OpenAPIMapKnownEntries(value = Icon.class, useRef = true) + public Icon getIcon() + { + return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon())); + } + } diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/ProcessMetaDataLight.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/ProcessMetaDataLight.java index 6615b416..acd2a3c7 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/ProcessMetaDataLight.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/ProcessMetaDataLight.java @@ -26,6 +26,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.frontend.QFrontendProcessMe import com.kingsrook.qqq.middleware.javalin.schemabuilder.ToSchema; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIDescription; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; +import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapKnownEntries; /*************************************************************************** @@ -117,10 +118,11 @@ public class ProcessMetaDataLight implements ToSchema /*************************************************************************** ** ***************************************************************************/ - @OpenAPIDescription("Name of an icon for the process, from the material UI icon set") - public String getIconName() + @OpenAPIDescription("Icon to display for the process.") + @OpenAPIMapKnownEntries(value = Icon.class, useRef = true) + public Icon getIcon() { - return (this.wrapped.getIconName()); + return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon())); } diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/TableMetaDataLight.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/TableMetaDataLight.java index 4eb804cf..c9ea3a8a 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/TableMetaDataLight.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/specs/v1/responses/components/TableMetaDataLight.java @@ -31,6 +31,7 @@ import com.kingsrook.qqq.middleware.javalin.schemabuilder.ToSchema; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIDescription; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIListItems; +import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapKnownEntries; /*************************************************************************** @@ -100,10 +101,11 @@ public class TableMetaDataLight implements ToSchema /*************************************************************************** ** ***************************************************************************/ - @OpenAPIDescription("Name of an icon for the table, from the material UI icon set") - public String getIconName() + @OpenAPIDescription("Icon to display for the table") + @OpenAPIMapKnownEntries(value = Icon.class, useRef = true) + public Icon getIcon() { - return (this.wrapped.getIconName()); + return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon())); }