Hi all ,
I am working on a use case wherein I require that country names are auto-suggested on typing the initial characters of the country. But my code is not behaving as expected and the suggested countries are not accurate. Please go through it. Any help is much appreciated.
The interface rule is as follows :
load( local!OrganisationPicker, local!CountryPicker, { a!pickerFieldCustom( label: "Country", labelPosition: "ABOVE", placeholder: "--Type to search for country--", maxSelections: 1, suggestFunction: rule!getCountryByFilter( country: _ ), selectedLabels: local!CountryPicker, value: local!CountryPicker, saveInto: { local!CountryPicker } ), a!textField( value: local!CountryPicker, readOnly: true, label: "CountryPicker" ) } )
The suggest function used here is
load( local!query: a!queryEntity( entity: cons!ABC, query: a!query( logicalExpression: a!queryLogicalExpression( operator: "AND", filters: { a!queryFilter( field: "domicileCountry", operator: "includes", value: ri!country, applyWhen: not( rule!APN_isBlank( ri!country ) ) ) } ), pagingInfo: a!pagingInfo( 1, 20 ) ), fetchTotalCount: true ), a!dataSubset( data: rule!APN_distinct( index( local!query.data, "domicileCountry", {} ) ), identifiers: local!query.data, totalCount: length( rule!APN_distinct( index( local!query.data, "domicileCountry", {} ) ) ) ) )
Thanks in advance,
Ishani Joshi
Discussion posts and replies are publicly visible
Just as a preliminary piece of advice: when posting long code such as this, please use the built-in functionality here on community, "Insert" -> "Insert Code", and then paste your code in the box you're provided. This preserves formatting and indentation, as well as allowing long code to scroll in its own little window, increasing overall visibility on the post. I believe you can also edit the original post and make this change if you feel like playing with it.
At first glance, I notice you're using the "includes" operator in your one Query Filter in the Suggest Function. This will cause the query to return any country containing the letter(s) typed by the user, i.e. if the first letter typed by the user is "a", it will at first query every country with an "a" in its name, whether or not it starts with "a" - so everything from "argentina" to "uganda" etc.
If your intent is that the user query matches the start of the country name, you should use the "starts with" operator instead.
Thanks for the suggestion. Have edited the post :)
Thank you for the help !
So just to confirm, were you able to get it to work? (If my answer solved your issue, it would help me and others if you click Verify above)