Hello Ernest,

Happy new year to you !

Currently "title-area-style" attribute on field element cannot be set dynamically in XML through a groovy snippet or a simple expression. You can compare its implementation with the "disabled" attribute in ModelFormFieldBuilder, which involves a FlexibleStringExpander :

https://github.com/apache/ofbiz-framework/blob/d17d06fd7c654621446320a98b45b3ebb859c648/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java#L108

vs

https://github.com/apache/ofbiz-framework/blob/d17d06fd7c654621446320a98b45b3ebb859c648/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java#L119

IMHO it would be a great improvement to switch widget-style, widget-area-style, tooltip-style, title-style and title-area-style (from a front-end developer perspective at least :), this kind of conditionnal HTML rendering should be a given), but we may have to consider a potential performance impact.

"red-when" has a specific behavior : it checks a condition on the thruDate field value (the field would be red if now < entity.thruDate, or the other way around).

You can check https://github.com/apache/ofbiz-framework/pull/548 for an implementation example.

Le 18/01/2024 à 09:47, Ernest Hocking a écrit :
Happy New Year everyone

a question:  "is it possible to conditionally colour a field in a form"

Based on the grid ComparativeCashFlowBalanceTotals in
ReportFinancialSummaryForms.xml

I tried the following groovy

<field name="balance1" title="Period1" title-area-style="${groovy: if
(balance < 0 ) red ?: green }" widget-area-style="green"
widget-style="tabletextright"><display type="currency"
currency="${currencyUomId}"/></field>

but get the error:

The value of attribute "title-area-style" associated with an element type
"field" must not contain the '<' character.org.xml.sax.SAXParseException;

I tried using alternatives such as

if (Maths.signum(balance1).equals(-1) )

etc but had no success to date.  Is there a number equivalent of "red-when"
that is available for date fields.

Any suggestions on how this could be implemented would be appreciated

I suspect I've overlooked something very obvious

thanks and kind regards

Ernest

Reply via email to