Do possible-values before display values, so a rendered possible-value can be part of a record label

This commit is contained in:
2022-09-26 08:37:05 -05:00
parent d73e546c7b
commit ac82928dd7
2 changed files with 28 additions and 14 deletions

View File

@ -95,15 +95,6 @@ public class QueryAction
records.replaceAll(t -> postQueryRecordCustomizer.get().apply(t)); 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(queryInput.getShouldTranslatePossibleValues())
{ {
if(qPossibleValueTranslator == null) if(qPossibleValueTranslator == null)
@ -112,5 +103,14 @@ public class QueryAction
} }
qPossibleValueTranslator.translatePossibleValuesInRecords(queryInput.getTable(), records); qPossibleValueTranslator.translatePossibleValuesInRecords(queryInput.getTable(), records);
} }
if(queryInput.getShouldGenerateDisplayValues())
{
if(qValueFormatter == null)
{
qValueFormatter = new QValueFormatter();
}
qValueFormatter.setDisplayValuesInRecords(queryInput.getTable(), records);
}
} }
} }

View File

@ -164,7 +164,7 @@ public class QValueFormatter
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
try try
{ {
return formatStringWithFields(table.getRecordLabelFormat(), table.getRecordLabelFields(), record.getValues()); return formatStringWithFields(table.getRecordLabelFormat(), table.getRecordLabelFields(), record.getDisplayValues(), record.getValues());
} }
catch(Exception e) catch(Exception e)
{ {
@ -177,10 +177,21 @@ public class QValueFormatter
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public String formatStringWithFields(String formatString, List<String> formatFields, Map<String, Serializable> valueMap) public String formatStringWithFields(String formatString, List<String> formatFields, Map<String, String> displayValueMap, Map<String, Serializable> rawValueMap)
{ {
List<Serializable> values = formatFields.stream() List<Serializable> 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) .map(v -> v == null ? "" : v)
.toList(); .toList();
return (formatString.formatted(values.toArray())); return (formatString.formatted(values.toArray()));
@ -242,10 +253,13 @@ public class QValueFormatter
for(QRecord record : records) for(QRecord record : records)
{ {
for(QFieldMetaData field : table.getFields().values()) for(QFieldMetaData field : table.getFields().values())
{
if(record.getDisplayValue(field.getName()) == null)
{ {
String formattedValue = formatValue(field, record.getValue(field.getName())); String formattedValue = formatValue(field, record.getValue(field.getName()));
record.setDisplayValue(field.getName(), formattedValue); record.setDisplayValue(field.getName(), formattedValue);
} }
}
record.setRecordLabel(formatRecordLabel(table, record)); record.setRecordLabel(formatRecordLabel(table, record));
} }