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