CE-1887 - Update to return full icon object, not just name

This commit is contained in:
2024-10-31 11:19:24 -05:00
parent f01301e993
commit 45439d7596
8 changed files with 96 additions and 42 deletions

View File

@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppChildMetaData; 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.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.processes.QProcessMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData; import com.kingsrook.qqq.backend.core.model.metadata.reporting.QReportMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
@ -45,7 +46,7 @@ public class AppTreeNode
private String label; private String label;
private List<AppTreeNode> children; private List<AppTreeNode> children;
private String iconName; private QIcon icon;
@ -82,7 +83,7 @@ public class AppTreeNode
if(appChildMetaData.getIcon() != null) if(appChildMetaData.getIcon() != null)
{ {
// todo - propagate icons from parents, if they aren't set here... // 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() public String getIconName()
{ {
return iconName; return (icon == null ? null : icon.getName());
}
/*******************************************************************************
** Getter for icon
**
*******************************************************************************/
public QIcon getIcon()
{
return icon;
} }

View File

@ -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.actions.metadata.MetaDataOutput;
import com.kingsrook.qqq.backend.core.model.metadata.layout.QAppMetaData; 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.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.model.metadata.layout.QSupplementalAppMetaData;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
@ -45,7 +46,7 @@ public class QFrontendAppMetaData
{ {
private String name; private String name;
private String label; private String label;
private String iconName; private QIcon icon;
private List<String> widgets = new ArrayList<>(); private List<String> widgets = new ArrayList<>();
private List<AppTreeNode> children = new ArrayList<>(); private List<AppTreeNode> children = new ArrayList<>();
@ -56,6 +57,7 @@ public class QFrontendAppMetaData
private Map<String, QSupplementalAppMetaData> supplementalAppMetaData; private Map<String, QSupplementalAppMetaData> supplementalAppMetaData;
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
@ -63,11 +65,7 @@ public class QFrontendAppMetaData
{ {
this.name = appMetaData.getName(); this.name = appMetaData.getName();
this.label = appMetaData.getLabel(); this.label = appMetaData.getLabel();
this.icon = appMetaData.getIcon();
if(appMetaData.getIcon() != null)
{
this.iconName = appMetaData.getIcon().getName();
}
List<String> filteredWidgets = CollectionUtils.nonNullList(appMetaData.getWidgets()).stream().filter(n -> metaDataOutput.getWidgets().containsKey(n)).toList(); List<String> filteredWidgets = CollectionUtils.nonNullList(appMetaData.getWidgets()).stream().filter(n -> metaDataOutput.getWidgets().containsKey(n)).toList();
if(CollectionUtils.nullSafeHasContents(filteredWidgets)) if(CollectionUtils.nullSafeHasContents(filteredWidgets))
@ -81,6 +79,10 @@ public class QFrontendAppMetaData
List<String> filteredTables = CollectionUtils.nonNullList(section.getTables()).stream().filter(n -> metaDataOutput.getTables().containsKey(n)).toList(); List<String> filteredTables = CollectionUtils.nonNullList(section.getTables()).stream().filter(n -> metaDataOutput.getTables().containsKey(n)).toList();
List<String> filteredProcesses = CollectionUtils.nonNullList(section.getProcesses()).stream().filter(n -> metaDataOutput.getProcesses().containsKey(n)).toList(); List<String> filteredProcesses = CollectionUtils.nonNullList(section.getProcesses()).stream().filter(n -> metaDataOutput.getProcesses().containsKey(n)).toList();
List<String> filteredReports = CollectionUtils.nonNullList(section.getReports()).stream().filter(n -> metaDataOutput.getReports().containsKey(n)).toList(); List<String> 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()) if(!filteredTables.isEmpty() || !filteredProcesses.isEmpty() || !filteredReports.isEmpty())
{ {
QAppSection clonedSection = section.clone(); QAppSection clonedSection = section.clone();
@ -174,18 +176,7 @@ public class QFrontendAppMetaData
*******************************************************************************/ *******************************************************************************/
public String getIconName() public String getIconName()
{ {
return iconName; return (icon == null ? null : icon.getName());
}
/*******************************************************************************
** Setter for iconName
**
*******************************************************************************/
public void setIconName(String iconName)
{
this.iconName = iconName;
} }
@ -235,4 +226,15 @@ public class QFrontendAppMetaData
{ {
return supplementalAppMetaData; return supplementalAppMetaData;
} }
/*******************************************************************************
** Getter for icon
**
*******************************************************************************/
public QIcon getIcon()
{
return icon;
}
} }

View File

@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.kingsrook.qqq.backend.core.actions.permissions.PermissionsHelper; 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.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.QFrontendStepMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QStateMachineStep; import com.kingsrook.qqq.backend.core.model.metadata.processes.QStateMachineStep;
@ -48,7 +49,7 @@ public class QFrontendProcessMetaData
private String tableName; private String tableName;
private boolean isHidden; private boolean isHidden;
private String iconName; private QIcon icon;
private List<QFrontendStepMetaData> frontendSteps; private List<QFrontendStepMetaData> frontendSteps;
private String stepFlow; private String stepFlow;
@ -98,10 +99,7 @@ public class QFrontendProcessMetaData
} }
} }
if(processMetaData.getIcon() != null) this.icon = processMetaData.getIcon();
{
this.iconName = processMetaData.getIcon().getName();
}
hasPermission = PermissionsHelper.hasProcessPermission(actionInput, name); hasPermission = PermissionsHelper.hasProcessPermission(actionInput, name);
} }
@ -180,7 +178,7 @@ public class QFrontendProcessMetaData
*******************************************************************************/ *******************************************************************************/
public String getIconName() public String getIconName()
{ {
return iconName; return icon == null ? null : icon.getName();
} }
@ -204,4 +202,15 @@ public class QFrontendProcessMetaData
{ {
return stepFlow; return stepFlow;
} }
/*******************************************************************************
** Getter for icon
**
*******************************************************************************/
public QIcon getIcon()
{
return icon;
}
} }

View File

@ -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.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; 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.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.sharing.ShareableTableMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.Capability; import com.kingsrook.qqq.backend.core.model.metadata.tables.Capability;
import com.kingsrook.qqq.backend.core.model.metadata.tables.ExposedJoin; import com.kingsrook.qqq.backend.core.model.metadata.tables.ExposedJoin;
@ -61,7 +62,7 @@ public class QFrontendTableMetaData
private String label; private String label;
private boolean isHidden; private boolean isHidden;
private String primaryKeyField; private String primaryKeyField;
private String iconName; private QIcon icon;
private Map<String, QFrontendFieldMetaData> fields; private Map<String, QFrontendFieldMetaData> fields;
private List<QFieldSection> sections; private List<QFieldSection> sections;
@ -156,10 +157,7 @@ public class QFrontendTableMetaData
} }
} }
if(tableMetaData.getIcon() != null) this.icon = tableMetaData.getIcon();
{
this.iconName = tableMetaData.getIcon().getName();
}
setCapabilities(backendForTable, tableMetaData); setCapabilities(backendForTable, tableMetaData);
@ -275,7 +273,7 @@ public class QFrontendTableMetaData
*******************************************************************************/ *******************************************************************************/
public String getIconName() public String getIconName()
{ {
return iconName; return (icon == null ? null : icon.getName());
} }
@ -397,4 +395,16 @@ public class QFrontendTableMetaData
{ {
return helpContents; return helpContents;
} }
/*******************************************************************************
** Getter for icon
**
*******************************************************************************/
public QIcon getIcon()
{
return icon;
}
} }

View File

@ -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.OpenAPIDescription;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; 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.OpenAPIListItems;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapKnownEntries;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIMapValueType; 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") @OpenAPIDescription("Icon to display for the app.")
public String getIconName() @OpenAPIMapKnownEntries(value = Icon.class, useRef = true)
public Icon getIcon()
{ {
return (this.wrapped.getIconName()); return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon()));
} }

View File

@ -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.OpenAPIDescription;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; 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.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()));
}
} }

View File

@ -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.ToSchema;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIDescription; 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.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") @OpenAPIDescription("Icon to display for the process.")
public String getIconName() @OpenAPIMapKnownEntries(value = Icon.class, useRef = true)
public Icon getIcon()
{ {
return (this.wrapped.getIconName()); return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon()));
} }

View File

@ -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.OpenAPIDescription;
import com.kingsrook.qqq.middleware.javalin.schemabuilder.annotations.OpenAPIExclude; 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.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") @OpenAPIDescription("Icon to display for the table")
public String getIconName() @OpenAPIMapKnownEntries(value = Icon.class, useRef = true)
public Icon getIcon()
{ {
return (this.wrapped.getIconName()); return (this.wrapped.getIcon() == null ? null : new Icon(this.wrapped.getIcon()));
} }