You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Jonathon -- Improov <jo...@improov.com> on 2007/06/20 06:50:37 UTC

Service performFindList cannot work with Widget Forms for pagination?

Is anybody using service performFindList?

That service returns the actual list size (in context as "listSize"), and a possibly smaller list 
(FastList). The problem is that when this list gets to the ModelForm.java (method 
getListLimits()), the context value "listSize" is totally ignored, and the list size is gotten 
from the partial list returned by performFindList. Obviously, this is wrong, since the actual list 
size IS NOT the size of the partial list!

If I am allowed to fix the problem right here, in ModelForm.java, the following questions are moot.

I have another question, about service performFind.

In Minilang, how do I take the EntityIterator returned by that service, calculate some additional 
values, and slap on those values into the list elements to be displayed in the UI listings output 
as an additional column? For eg, I may have a simple logic like "if product name is profane, 
display a big label VULGAR, else display a small label Mild". I'd want a product listing that has 
the additional column called "Vulgarity alert".

OR...

Can I get the Widget Form renderer to look at 2 lists with the same sizes, and simply combine 
them, like "row 1 of list A with row 1 of list B, and row 2 with row 2..."?

If I can somehow massage the EntityIterator from service performFind, I won't have to use 
performFindList.

Or should I just go for freemarker macros in such cases?

Thanks.

Jonathon

Re: Service performFindList cannot work with Widget Forms for pagination?

Posted by Jonathon -- Improov <jo...@improov.com>.
Hi Jacopo,

It works, thanks!

 > If I'm not wrong, some time ago a new attribute has been added (to the
 > <form> element?) to specify a non default field (or value) containing
 > the actual list size... I think you should find it in the xsd file.

It's attribute "override-list-size" for the <form> element. Just pump in the value of "listSize" 
returned by the service "performFindList".

 > I think you can use the <row-actions> section in your form widget
 > definition; it is similar to the <actions> section but the actions
 > in the former are run for each and every row in the list.

<row-actions> work. Very clean.

Jonathon

Jacopo Cappellato wrote:
> Hi Jonathon,
> 
> Jonathon -- Improov wrote:
>> Is anybody using service performFindList?
>>
>> That service returns the actual list size (in context as "listSize"), 
>> and a possibly smaller list (FastList). The problem is that when this 
>> list gets to the ModelForm.java (method getListLimits()), the context 
>> value "listSize" is totally ignored, and the list size is gotten from 
>> the partial list returned by performFindList. Obviously, this is 
>> wrong, since the actual list size IS NOT the size of the partial list!
>>
> 
> If I'm not wrong, some time ago a new attribute has been added (to the 
> <form> element?) to specify a non default field (or value) containing 
> the actual list size... I think you should find it in the xsd file.
> 
>> If I am allowed to fix the problem right here, in ModelForm.java, the 
>> following questions are moot.
>>
>> I have another question, about service performFind.
>>
>> In Minilang, how do I take the EntityIterator returned by that 
>> service, calculate some additional values, and slap on those values 
>> into the list elements to be displayed in the UI listings output as an 
>> additional column? For eg, I may have a simple logic like "if product 
>> name is profane, display a big label VULGAR, else display a small 
>> label Mild". I'd want a product listing that has the additional column 
>> called "Vulgarity alert".
>>
> 
> I think you can use the <row-actions> section in your form widget 
> definition; it is similar to the <actions> section but the actions in 
> the former are run for each and every row in the list.
> 
> Jacopo
> 
>> OR...
>>
>> Can I get the Widget Form renderer to look at 2 lists with the same 
>> sizes, and simply combine them, like "row 1 of list A with row 1 of 
>> list B, and row 2 with row 2..."?
>>
>> If I can somehow massage the EntityIterator from service performFind, 
>> I won't have to use performFindList.
>>
>> Or should I just go for freemarker macros in such cases?
>>
>> Thanks.
>>
>> Jonathon
> 
> 


Re: Service performFindList cannot work with Widget Forms for pagination?

Posted by Jacopo Cappellato <ti...@sastau.it>.
Hi Jonathon,

Jonathon -- Improov wrote:
> Is anybody using service performFindList?
> 
> That service returns the actual list size (in context as "listSize"), 
> and a possibly smaller list (FastList). The problem is that when this 
> list gets to the ModelForm.java (method getListLimits()), the context 
> value "listSize" is totally ignored, and the list size is gotten from 
> the partial list returned by performFindList. Obviously, this is wrong, 
> since the actual list size IS NOT the size of the partial list!
> 

If I'm not wrong, some time ago a new attribute has been added (to the 
<form> element?) to specify a non default field (or value) containing 
the actual list size... I think you should find it in the xsd file.

> If I am allowed to fix the problem right here, in ModelForm.java, the 
> following questions are moot.
> 
> I have another question, about service performFind.
> 
> In Minilang, how do I take the EntityIterator returned by that service, 
> calculate some additional values, and slap on those values into the list 
> elements to be displayed in the UI listings output as an additional 
> column? For eg, I may have a simple logic like "if product name is 
> profane, display a big label VULGAR, else display a small label Mild". 
> I'd want a product listing that has the additional column called 
> "Vulgarity alert".
> 

I think you can use the <row-actions> section in your form widget 
definition; it is similar to the <actions> section but the actions in 
the former are run for each and every row in the list.

Jacopo

> OR...
> 
> Can I get the Widget Form renderer to look at 2 lists with the same 
> sizes, and simply combine them, like "row 1 of list A with row 1 of list 
> B, and row 2 with row 2..."?
> 
> If I can somehow massage the EntityIterator from service performFind, I 
> won't have to use performFindList.
> 
> Or should I just go for freemarker macros in such cases?
> 
> Thanks.
> 
> Jonathon