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 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<AppTreeNode> 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;
}

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.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<String> widgets = new ArrayList<>();
private List<AppTreeNode> children = new ArrayList<>();
@ -56,6 +57,7 @@ public class QFrontendAppMetaData
private Map<String, QSupplementalAppMetaData> 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<String> 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<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> 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;
}
}

View File

@ -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<QFrontendStepMetaData> 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;
}
}

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.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<String, QFrontendFieldMetaData> fields;
private List<QFieldSection> 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;
}
}

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.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()));
}

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.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()));
}
}

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.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()));
}

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.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()));
}