From a68b739147219dfb7f17badc1f1aa53e19b9a718 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 20 Oct 2023 12:20:52 -0500 Subject: [PATCH] CE-604 Add map of icons, tooltips, icon colors --- .../metadata/dashboard/QWidgetMetaData.java | 81 +++++++++++++++++++ .../dashboard/QWidgetMetaDataInterface.java | 10 +++ .../dashboard/QuickSightChartMetaData.java | 2 +- .../frontend/QFrontendWidgetMetaData.java | 32 +++++++- .../core/model/metadata/layout/QIcon.java | 33 ++++++++ 5 files changed, 156 insertions(+), 2 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaData.java index fc528db8..c9453798 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaData.java @@ -28,6 +28,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.permissions.QPermissionRules; @@ -40,6 +41,7 @@ public class QWidgetMetaData implements QWidgetMetaDataInterface protected String name; protected String icon; protected String label; + protected String tooltip; protected String type; protected String minHeight; protected String footerHTML; @@ -55,6 +57,8 @@ public class QWidgetMetaData implements QWidgetMetaDataInterface private boolean showReloadButton = true; private boolean showExportButton = true; + protected Map icons; + protected Map defaultValues = new LinkedHashMap<>(); @@ -594,4 +598,81 @@ public class QWidgetMetaData implements QWidgetMetaDataInterface return (this); } + + + /******************************************************************************* + ** Getter for icons + *******************************************************************************/ + public Map getIcons() + { + return (this.icons); + } + + + + /******************************************************************************* + ** Setter for icons + *******************************************************************************/ + public void setIcons(Map icons) + { + this.icons = icons; + } + + + + /******************************************************************************* + ** Fluent setter for icons + *******************************************************************************/ + public QWidgetMetaData withIcon(String role, QIcon icon) + { + if(this.icons == null) + { + this.icons = new LinkedHashMap<>(); + } + this.icons.put(role, icon); + return (this); + } + + + + /******************************************************************************* + ** Fluent setter for icons + *******************************************************************************/ + public QWidgetMetaData withIcons(Map icons) + { + this.icons = icons; + return (this); + } + + + + /******************************************************************************* + ** Getter for tooltip + *******************************************************************************/ + public String getTooltip() + { + return (this.tooltip); + } + + + + /******************************************************************************* + ** Setter for tooltip + *******************************************************************************/ + public void setTooltip(String tooltip) + { + this.tooltip = tooltip; + } + + + + /******************************************************************************* + ** Fluent setter for tooltip + *******************************************************************************/ + public QWidgetMetaData withTooltip(String tooltip) + { + this.tooltip = tooltip; + return (this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java index 0e4df559..1c3ad3db 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QWidgetMetaDataInterface.java @@ -216,5 +216,15 @@ public interface QWidgetMetaDataInterface extends MetaDataWithPermissionRules ** Fluent setter for dropdowns *******************************************************************************/ QWidgetMetaData withDropdown(WidgetDropdownData dropdown); + + + /******************************************************************************* + ** Getter for tooltip + *******************************************************************************/ + default String getTooltip() + { + return (null); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QuickSightChartMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QuickSightChartMetaData.java index a70c64d6..11845237 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QuickSightChartMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/dashboard/QuickSightChartMetaData.java @@ -32,7 +32,7 @@ import java.util.Map; ** AWS Quicksite specific meta data for frontend dashboard widget ** *******************************************************************************/ -public class QuickSightChartMetaData extends QWidgetMetaData implements QWidgetMetaDataInterface +public class QuickSightChartMetaData extends QWidgetMetaData { private String accessKey; private String secretKey; diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendWidgetMetaData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendWidgetMetaData.java index b33f4314..3d710251 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendWidgetMetaData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/frontend/QFrontendWidgetMetaData.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.model.metadata.frontend; import java.util.List; +import java.util.Map; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.kingsrook.qqq.backend.core.actions.permissions.PermissionsHelper; @@ -30,6 +31,7 @@ import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaData; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.QWidgetMetaDataInterface; import com.kingsrook.qqq.backend.core.model.metadata.dashboard.WidgetDropdownData; +import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; /******************************************************************************* @@ -42,6 +44,7 @@ public class QFrontendWidgetMetaData { private final String name; private final String label; + private final String tooltip; private final String type; private final String icon; private final Integer gridColumns; @@ -54,10 +57,13 @@ public class QFrontendWidgetMetaData private boolean showReloadButton = false; private boolean showExportButton = false; + protected Map icons; + private final boolean hasPermission; ////////////////////////////////////////////////////////////////////////////////// - // do not add setters. take values from the source-object in the constructor!! // + // DO add getters for all fields - this tells Jackson to include them in JSON. // + // do NOT add setters. take values from the source-object in the constructor!! // ////////////////////////////////////////////////////////////////////////////////// @@ -69,6 +75,7 @@ public class QFrontendWidgetMetaData { this.name = widgetMetaData.getName(); this.label = widgetMetaData.getLabel(); + this.tooltip = widgetMetaData.getTooltip(); this.type = widgetMetaData.getType(); this.icon = widgetMetaData.getIcon(); this.gridColumns = widgetMetaData.getGridColumns(); @@ -82,6 +89,7 @@ public class QFrontendWidgetMetaData { this.showExportButton = qWidgetMetaData.getShowExportButton(); this.showReloadButton = qWidgetMetaData.getShowReloadButton(); + this.icons = qWidgetMetaData.getIcons(); } hasPermission = PermissionsHelper.hasWidgetPermission(actionInput, name); @@ -229,4 +237,26 @@ public class QFrontendWidgetMetaData { return showExportButton; } + + + + /******************************************************************************* + ** Getter for icons + ** + *******************************************************************************/ + public Map getIcons() + { + return icons; + } + + + + /******************************************************************************* + ** Getter for tooltip + ** + *******************************************************************************/ + public String getTooltip() + { + return tooltip; + } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/layout/QIcon.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/layout/QIcon.java index cfc2aa40..72117679 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/layout/QIcon.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/metadata/layout/QIcon.java @@ -35,6 +35,7 @@ public class QIcon { private String name; private String path; + private String color; @@ -123,4 +124,36 @@ public class QIcon return (this); } + + + /******************************************************************************* + ** Getter for color + *******************************************************************************/ + public String getColor() + { + return (this.color); + } + + + + /******************************************************************************* + ** Setter for color + *******************************************************************************/ + public void setColor(String color) + { + this.color = color; + } + + + + /******************************************************************************* + ** Fluent setter for color + *******************************************************************************/ + public QIcon withColor(String color) + { + this.color = color; + return (this); + } + + }