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));