[ 
https://jira.jboss.org/jira/browse/RF-6839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12521461#action_12521461
 ] 

C. Fed commented on RF-6839:
----------------------------

I needed to have the lists maintain their order on add/remove, so I ended up 
modifying ListShuttle.js in richfaces-ui-3.2.2.SR1jar.  This will make every 
listShuttle sort this way, which is fine in my case.  Ideally a 
maintainOrder="true" (or split into maintainSourceOrder and 
maintainTargetOrder) would be a nice attribute on listShuttle, but I didn't 
have time to put together an example.

Using the regex in there worked since each row had the initial order index as 
part of the ID, which I was able to strip out.  I'm not sure if that's a good 
way to get the index though, since that could change in a future release.


I added the following code to the bottom of the moveItem function:

                var regex = /^\w*(\d+):.*$/;
                for (var x = 0; x < targetComponent.shuttleTbody.rows.length - 
1; x++) {
                        for (var y = x + 1; y < 
targetComponent.shuttleTbody.rows.length; y++) {
                                var itemX = 
targetComponent.getSelectItemByNode(targetComponent.shuttleTbody.rows[x]);
                                var itemY = 
targetComponent.getSelectItemByNode(targetComponent.shuttleTbody.rows[y]);
                                var orderNumX = 
itemX.input.value.replace(regex, '$1');
                                var orderNumY = 
itemY.input.value.replace(regex, '$1');
                                if (orderNumX > orderNumY) {
                                        var parentItemNode = 
itemY._node.parentNode;
                                        var tmpNode = itemX._node.nextSibling;
                                        if (itemY._node != tmpNode) {
                                                // Nodes are more than a 
position apart.  Move each to the other's position
                                                
parentItemNode.insertBefore(itemX._node, itemY._node);
                                                
parentItemNode.insertBefore(itemY._node, tmpNode);
                                        } else {
                                                // nodes are next to each 
other.  just move 2nd in front of 1st
                                                
parentItemNode.insertBefore(itemY._node, itemX._node);
                                        }
                                }
                        }
                }


> sorting capabilities for ListShuttle component.
> -----------------------------------------------
>
>                 Key: RF-6839
>                 URL: https://jira.jboss.org/jira/browse/RF-6839
>             Project: RichFaces
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 3.3.1
>            Reporter: Ilya Shaikovsky
>            Assignee: Nick Belaevski
>             Fix For: Future
>
>
> client side capabilities while moving items should be done with the API we 
> will provide. But community asked about server side properties to make lists 
> sorted.

-- 
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