From ac82928dd7b7b0ce3d0b402bf755d73ecdc61a0b Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 26 Sep 2022 08:37:05 -0500 Subject: [PATCH] Do possible-values before display values, so a rendered possible-value can be part of a record label --- .../core/actions/tables/QueryAction.java | 18 +++++++------- .../core/actions/values/QValueFormatter.java | 24 +++++++++++++++---- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/QueryAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/QueryAction.java index 55eb17c9..845a49b3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/QueryAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/QueryAction.java @@ -95,15 +95,6 @@ public class QueryAction records.replaceAll(t -> postQueryRecordCustomizer.get().apply(t)); } - if(queryInput.getShouldGenerateDisplayValues()) - { - if(qValueFormatter == null) - { - qValueFormatter = new QValueFormatter(); - } - qValueFormatter.setDisplayValuesInRecords(queryInput.getTable(), records); - } - if(queryInput.getShouldTranslatePossibleValues()) { if(qPossibleValueTranslator == null) @@ -112,5 +103,14 @@ public class QueryAction } qPossibleValueTranslator.translatePossibleValuesInRecords(queryInput.getTable(), records); } + + if(queryInput.getShouldGenerateDisplayValues()) + { + if(qValueFormatter == null) + { + qValueFormatter = new QValueFormatter(); + } + qValueFormatter.setDisplayValuesInRecords(queryInput.getTable(), records); + } } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java index 6f2574a5..5d5234d7 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/values/QValueFormatter.java @@ -164,7 +164,7 @@ public class QValueFormatter /////////////////////////////////////////////////////////////////////// try { - return formatStringWithFields(table.getRecordLabelFormat(), table.getRecordLabelFields(), record.getValues()); + return formatStringWithFields(table.getRecordLabelFormat(), table.getRecordLabelFields(), record.getDisplayValues(), record.getValues()); } catch(Exception e) { @@ -177,10 +177,21 @@ public class QValueFormatter /******************************************************************************* ** *******************************************************************************/ - public String formatStringWithFields(String formatString, List formatFields, Map valueMap) + public String formatStringWithFields(String formatString, List formatFields, Map displayValueMap, Map rawValueMap) { List values = formatFields.stream() - .map(valueMap::get) + .map(fieldName -> + { + /////////////////////////////////////////////////////////////////////////// + // if there's a display value set, then use it. Else, use the raw value // + /////////////////////////////////////////////////////////////////////////// + String displayValue = displayValueMap.get(fieldName); + if(displayValue != null) + { + return (displayValue); + } + return rawValueMap.get(fieldName); + }) .map(v -> v == null ? "" : v) .toList(); return (formatString.formatted(values.toArray())); @@ -243,8 +254,11 @@ public class QValueFormatter { for(QFieldMetaData field : table.getFields().values()) { - String formattedValue = formatValue(field, record.getValue(field.getName())); - record.setDisplayValue(field.getName(), formattedValue); + if(record.getDisplayValue(field.getName()) == null) + { + String formattedValue = formatValue(field, record.getValue(field.getName())); + record.setDisplayValue(field.getName(), formattedValue); + } } record.setRecordLabel(formatRecordLabel(table, record));