[ 
https://jira.jboss.org/jira/browse/RF-8269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Konstantin Mishin resolved RF-8269.
-----------------------------------

    Resolution: Partially Completed


> problems with sorting API (i.e. ExtendedDataModel + Modifiable) that goes 
> with the rich:*dataTable components
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: RF-8269
>                 URL: https://jira.jboss.org/jira/browse/RF-8269
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-tables
>    Affects Versions: 3.3.2.SR1
>            Reporter: Ian Springer
>            Assignee: Konstantin Mishin
>             Fix For: 4.0.0.ALPHA2
>
>         Attachments: PagedDataModel.java
>
>
> I recently tried to implement server-side sorting by implementing 
> ExtendedDataModel + Modifiable. I had several issues:
> 1) the name and usage of the Modifiable interface seem to assume that the 
> sorting will be done on the items from the currently loaded page of data 
> (i.e. "modifying" that in-memory list), but I think the more intuitive thing 
> to do, particularly for large data sets, is to sort the entire data set (e.g. 
> using ORDER BY if the data set is stored in a relational DB), and then return 
> the appropriate page from the sorted data set.
> 2) when I click on a sortable column header, modify() is called several 
> times. The first few times, the original/previous values of the SortField2s 
> are passed in, which serves no purpose. modify() should be called exactly 
> once per request, and the new sort fields and filter fields should be passed 
> in. Ideally, the same method would also support passing new page range 
> settings.
> 3) The order of the items in the List<SortField2> is not at all intuitive - 
> it appears to be as follows:
>   - The items in the list are ordered in reverse precedence (i.e. they are 
> ordered from the lowest priority fields to the highest priority fields, with 
> the following exception: 
>         If the last column clicked was already one of the sort fields (i.e. 
> the user has requested flipping that field from ASC->DESC or DESC-<ASC), the 
> corresponding SortField2 keeps its current position in the List, rather than 
> being moved to the end of the List, to signify it is now has the highest 
> precedence (as it should, for consistency sake)
> It would be much more intuitive if the List was ordered by precedence, with 
> the highest priority fields first in the list, which is the same way sort 
> fields are ordered in an ORDER BY clause. Also, as described above, when 
> toggling a column between ASC and DESC, that column's should also be bumped 
> up to the highest precedence. Filter fields should also be ordered with the 
> higher precedence filters first in the list, rather than last.
> If I were to revamp the paging/sorting/filtering API, I'd make it look 
> something like the following and stick it right in the ExtendedDataModel 
> interface:
> void reloadData(List<FilterField> filterFields, List<SortField2> sortFields, 
> Range range)
> This would allow the user of the API to load a new page of data with updated 
> filtering, sorting, and/or range in one swoop. The RF component impl would 
> only call this method if at least one of filterFields, sortFields, or range 
> had been changed by the GUI user since the last time reloadData() was called. 
> It would also call the method exactly once per request. This would save the 
> implementer of the interface from having to cache the previous values to 
> track if any of them had actually changed or if reloadData() had already been 
> called for the current request.
> I'm attaching the implementation of ExtendedDataModel + Modifiable that I did 
> to prototype using them for the Red Hat RHQ project. It shows the various 
> ugly hacks I had to do to make the API work. Based on the prototype, we have 
> decided to stick with custom components and facets we have been using, rather 
> than using the sorting support currently provided by rich:dataTable and 
> rich:extendedDataTable. I hope the issues I've described in this JIRA can be 
> addressed, so we can switch over to using pure RichFaces.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to