diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/DynamicFormWidgetData.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/DynamicFormWidgetData.java index 24ecc4fa..d5856b35 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/DynamicFormWidgetData.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/dashboard/widgets/DynamicFormWidgetData.java @@ -23,6 +23,7 @@ package com.kingsrook.qqq.backend.core.model.dashboard.widgets; import java.util.List; +import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; @@ -33,6 +34,12 @@ public class DynamicFormWidgetData extends QWidgetData { private List fieldList; + ///////////////////////////////////////////////////////////////////// + // values for the fields - // + // use a QRecord, so we can do "richer" things, like DisplayValues // + ///////////////////////////////////////////////////////////////////// + private QRecord recordOfFieldValues; + ///////////////////////////////////////////////////// // if there are no fields, what message to display // ///////////////////////////////////////////////////// @@ -147,4 +154,35 @@ public class DynamicFormWidgetData extends QWidgetData return (this); } + + + /******************************************************************************* + ** Getter for recordOfFieldValues + *******************************************************************************/ + public QRecord getRecordOfFieldValues() + { + return (this.recordOfFieldValues); + } + + + + /******************************************************************************* + ** Setter for recordOfFieldValues + *******************************************************************************/ + public void setRecordOfFieldValues(QRecord recordOfFieldValues) + { + this.recordOfFieldValues = recordOfFieldValues; + } + + + + /******************************************************************************* + ** Fluent setter for recordOfFieldValues + *******************************************************************************/ + public DynamicFormWidgetData withRecordOfFieldValues(QRecord recordOfFieldValues) + { + this.recordOfFieldValues = recordOfFieldValues; + return (this); + } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/ReportValuesDynamicFormWidgetRenderer.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/ReportValuesDynamicFormWidgetRenderer.java index 179bb413..18c5237f 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/ReportValuesDynamicFormWidgetRenderer.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/savedreports/ReportValuesDynamicFormWidgetRenderer.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Map; import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.AbstractWidgetRenderer; import com.kingsrook.qqq.backend.core.actions.tables.GetAction; +import com.kingsrook.qqq.backend.core.actions.values.QPossibleValueTranslator; import com.kingsrook.qqq.backend.core.context.QContext; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.logging.QLogger; @@ -57,6 +58,7 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere { private static final QLogger LOG = QLogger.getLogger(ReportValuesDynamicFormWidgetRenderer.class); + private QPossibleValueTranslator qPossibleValueTranslator; /******************************************************************************* @@ -104,6 +106,8 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere return new RenderWidgetOutput(widgetData); } + QRecord recordOfFieldValues = new QRecord(); + if(StringUtils.hasContent(savedReport.getQueryFilterJson())) { QQueryFilter queryFilter = SavedReportToReportMetaDataAdapter.getQQueryFilter(savedReport.getQueryFilterJson()); @@ -144,7 +148,23 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere if(defaultValues.containsKey(fieldName)) { - fieldMetaData.setDefaultValue(defaultValues.get(fieldName)); + String value = defaultValues.get(fieldName); + + fieldMetaData.setDefaultValue(value); + recordOfFieldValues.setValue(fieldName, value); + + ////////////////////////////////////////////////////// + // look up display values for possible value fields // + ////////////////////////////////////////////////////// + if(StringUtils.hasContent(fieldMetaData.getPossibleValueSourceName())) + { + if(qPossibleValueTranslator == null) + { + qPossibleValueTranslator = new QPossibleValueTranslator(); + } + String displayValue = qPossibleValueTranslator.translatePossibleValue(fieldMetaData, value); + recordOfFieldValues.setDisplayValue(fieldName, displayValue); + } } fieldList.add(fieldMetaData); @@ -156,6 +176,7 @@ public class ReportValuesDynamicFormWidgetRenderer extends AbstractWidgetRendere /////////////////////////////////// DynamicFormWidgetData widgetData = new DynamicFormWidgetData(); widgetData.setFieldList(fieldList); + widgetData.setRecordOfFieldValues(recordOfFieldValues); widgetData.setMergedDynamicFormValuesIntoFieldName("inputValues"); if(CollectionUtils.nullSafeIsEmpty(fieldList))