This is an automated email from the ASF dual-hosted git repository.
nmalin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 01bb124585 Improved: Add display result format for auto-completion on
lookup (OFBIZ-13173) (#853)
01bb124585 is described below
commit 01bb12458577349e0bb72e8bd3ba86ca1ceb5a08
Author: Nicolas Malin <[email protected]>
AuthorDate: Wed Nov 13 09:14:21 2024 +0100
Improved: Add display result format for auto-completion on lookup
(OFBIZ-13173) (#853)
Currently, when you have a lookup with autoCompletion, the result contains
the fields to display or by default search fields.
The format is strict. This improvement add new field displayFieldFormat to
send a UEL schema that we want.
This commit introduce an example with LookupWorkEffort :
****
<set field="displayFieldFormat" value="\${workEffortName} -
\${groovy: description?.length() > 20 ? description.substring(0, 20) + '…':
description}"/>
****
We want display the workEffortName and the description limited to 20 chars.
To forward the UEL string, we need to use the escape char \ like this the
screen engine doesn't parse displayFieldFormat and let the ftl
AjaxAutocompleteOptions.ftl realized the translation.
---
applications/workeffort/widget/LookupScreens.xml | 1 +
themes/common-theme/template/includes/AjaxAutocompleteOptions.ftl | 8 +++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/applications/workeffort/widget/LookupScreens.xml
b/applications/workeffort/widget/LookupScreens.xml
index 5ada5237ac..69771ac578 100644
--- a/applications/workeffort/widget/LookupScreens.xml
+++ b/applications/workeffort/widget/LookupScreens.xml
@@ -34,6 +34,7 @@ under the License.
<set field="viewSize" from-field="parameters.VIEW_SIZE"
type="Integer" default-value="${viewSizeDefaultValue}"/>
<set field="entityName" value="WorkEffort"/>
<set field="searchFields" value="[workEffortId,
workEffortName, description]"/>
+ <set field="displayFieldFormat" value="\${workEffortName} -
\${groovy: description?.length() > 20 ? description.substring(0, 20) + '…':
description}"/>
</actions>
<widgets>
<decorator-screen name="LookupDecorator"
location="component://common/widget/CommonScreens.xml">
diff --git a/themes/common-theme/template/includes/AjaxAutocompleteOptions.ftl
b/themes/common-theme/template/includes/AjaxAutocompleteOptions.ftl
index be9aca22bc..3a0eed00f7 100644
--- a/themes/common-theme/template/includes/AjaxAutocompleteOptions.ftl
+++ b/themes/common-theme/template/includes/AjaxAutocompleteOptions.ftl
@@ -35,16 +35,22 @@ under the License.
<script type="text/javascript">
var autocomp = [
<#if autocompleteOptions?has_content>
+ <#if displayFieldFormat?has_content>
+ <#assign displayStringExpdander =
Static["org.apache.ofbiz.base.util.string.FlexibleStringExpander"].getInstance(displayFieldFormat)>
+ </#if>
<#list autocompleteOptions as autocompleteOption>
{
<#assign displayString = ""/>
<#assign returnField = ""/>
+ <#if displayStringExpdander?has_content>
+ <#assign displayString =
displayStringExpdander.expand(autocompleteOption.getAllFields())>
+ </#if>
<#list displayFieldsSet as key>
<#assign field = autocompleteOption.get(key)!>
<#if field?has_content>
<#if (key == context.returnField)>
<#assign returnField = field/>
- <#else>
+ <#elseif !displayStringExpdander?has_content>
<#assign displayString = displayString +
StringUtil.wrapString(field?string) + " ">
</#if>
</#if>