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

Val Blant edited comment on RF-4308 at 12/3/13 6:44 PM:
--------------------------------------------------------

I have an easy fix for this problem that seems to work pretty well. Just 
include this _orderedPickListFix.js_ in your app, and the pickLists should 
start behaving.

{code:javascript|title=orderedPickListFix.js|borderStyle=solid}
/**
 * This is an extension to the RichFaces PickList that preserves the original 
order of items in the source list
 * 
 * @author Val Blant
 */
if ( typeof window.RichFaces.ui.List != 'undefined' && 
!window.PickListExtension ) {
        
        window.PickListExtension = {};
        
        
        if ( typeof window.RichFaces.ui.PickList != 'undefined' ) {

                /**
                 * Overriding original constructor found in 
"org.richfaces/pickList.js" resource
                 */
                window.RichFaces.ui.PickList = function(oldPickListConstructor) 
{
                        return function(id, options) {
                                // Instantiate the original PickList
                                //
                                var pickList = new oldPickListConstructor(id, 
options);
                                
                                // Assign item indecies to each item in the 
source list to preserve original order
                                //
                                pickList.sourceList.items.each(function( index 
) {
                                        this.itemIndex = index;
                                });
                                
                                return pickList;
                        };
                }(window.RichFaces.ui.PickList);
                
        }
        
        
        
        /**
         * Original code taken from "org.richfaces/list.js" resource
         */
        (function($, rf, list) {

           /**
            * Insert items into a pick list according to their original order 
stored in 'itemIndex' attribute
            */
            list.prototype.addItems = function(items) {
               var parentContainer = this.scrollContainer;
               
               items.each(function() { 
                   if ( parentContainer.children().length <= this.itemIndex ) {
                        parentContainer.append(this);
                   }
                   else {
                        itemAtOurIndex = 
parentContainer.children()[this.itemIndex];
                        jQuery(this).insertBefore( itemAtOurIndex );
                   }
               });
            
               this.__updateItemsList();
               rf.Event.fire(this, "additems", items);                  
           };
        
     }(jQuery, window.RichFaces, window.RichFaces.ui.List));
}
{code} 
                
      was (Author: vace117):
    I have an easy fix for this problem that seems to work pretty well. Just 
include this _orderedPickListFix.js_ in your app, and the pickLists should 
start behaving.

{code:javascript|title=orderedPickListFix.js|borderStyle=solid}
/**
 * This is an extension to the RichFaces PickList that preserves the original 
order of items in the source list
 * 
 * @author Val Blant
 */
if ( typeof window.RichFaces.ui.List != 'undefined' && 
!window.PickListExtension ) {
        
        window.PickListExtension = {};
        
        
        if ( typeof window.RichFaces.ui.PickList != 'undefined' ) {

                /**
                 * Overriding original constructor found in 
"org.richfaces/pickList.js" resource
                 */
                window.RichFaces.ui.PickList = function(oldPickListConstructor) 
{
                        return function(id, options) {
                                // Instantiate the original PickList
                                //
                                var pickList = new oldPickListConstructor(id, 
options);
                                
                                // Assign item indecies to each item in the 
source list to preserve original order
                                //
                                pickList.sourceList.items.each(function( index 
) {
                                        this.itemIndex = index;
                                });
                                
                                return pickList;
                        };
                }(window.RichFaces.ui.PickList);
                
        }
        
        
        
        /**
         * Original code taken from "org.richfaces/list.js" resource
         */
        (function($, rf, list) {

           /**
            * Insert items into a pick list according to their original order 
stored in 'itemIndex' attribute
            */
            list.prototype.addItems = function(items) {
               var parentContainer = this.scrollContainer;
               
               items.each(function() { 
                   if ( parentContainer.children().length < this.itemIndex ) {
                        parentContainer.append(this);
                   }
                   else {
                        itemAtOurIndex = 
parentContainer.children()[this.itemIndex];
                        jQuery(this).insertBefore( itemAtOurIndex );
                   }
               });
            
               this.__updateItemsList();
               rf.Event.fire(this, "additems", items);                  
           };
        
     }(jQuery, window.RichFaces, window.RichFaces.ui.List));
}
{code} 
                  
> rich:pickList: keep sort order of source list after add/remove operations
> -------------------------------------------------------------------------
>
>                 Key: RF-4308
>                 URL: https://issues.jboss.org/browse/RF-4308
>             Project: RichFaces
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: component-selects
>    Affects Versions: 3.2.2, 4.3.4, 5.0.0.Alpha1
>            Reporter: Martin Höller
>              Labels: low_hanging_fruit, order, picklist, sort
>             Fix For: 5-Tracking
>
>
> When adding items from the source list to the target list and removing this 
> items again, the original order of the source list is not preserved. This 
> makes it hard to find items in a list that is longer than just a fest items. 
> A good example is the second example on the livedemo at 
> http://livedemo.exadel.com/richfaces-demo/richfaces/pickList.jsf. Add the 
> first state (Alabama) and remove it. It can now be found at the very end of 
> the otherwise alphabetical list of states. This can be rather unintuitive for 
> a user.
> My suggestion is either remember the original sort order of the source list, 
> or add some attribute that enables automatic sorting.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
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