Wait! Looks like we don't have enough information to add this to bug database. Please follow this template bug format.
  1. #1
    Ext JS Premium Member westy's Avatar
    Join Date
    Feb 2009
    Location
    Bath, UK
    Posts
    905
    Vote Rating
    40
    westy is a jewel in the rough westy is a jewel in the rough westy is a jewel in the rough

      0  

    Default [4.0.0] Bug in AbstractView.updateIndexes

    [4.0.0] Bug in AbstractView.updateIndexes


    Hi,

    Believe I've found an issue in updateIndexes.
    It's seems to be getting called when calling removeAll on a tree node, during a load (when clearOnLoad is true).

    Anyway, code:
    PHP Code:
        updateIndexes : function(startIndexendIndex) {
            var 
    ns this.all.elements,
                
    records this.store.getRange();
            
    startIndex startIndex || 0;
            
    endIndex endIndex || ((endIndex === 0) ? : (ns.length 1));
            for(var 
    startIndex<= endIndexi++){
                
    ns[i].viewIndex i;
                
    ns[i].viewRecordId records[i].internalId;
                if (!
    ns[i].boundView) {
                    
    ns[i].boundView this.id;
                }
            }
        }, 
    The issue is that sometimes records[i] is outside of the bounds of the collection.
    Not entirely sure why, or what this method is meant to be doing, but it could probably be a bit more defensive I think.

    Cheers,
    Westy

  2. #2
    Ext JS Premium Member stevil's Avatar
    Join Date
    Nov 2007
    Location
    Denver, CO
    Posts
    1,045
    Vote Rating
    9
    stevil will become famous soon enough

      0  

    Default


    I've seen this once before, and I can't remember how I got around it - but if ns (this.all.elements) has length 0, and both startIndex and endIndex are 0, that would happen...

  3. #3
    Ext JS Premium Member westy's Avatar
    Join Date
    Feb 2009
    Location
    Bath, UK
    Posts
    905
    Vote Rating
    40
    westy is a jewel in the rough westy is a jewel in the rough westy is a jewel in the rough

      0  

    Default


    I'm generally seeing it on the last child node... have kind of worked around it for now, but it's leaves the UI in a mess.

    Basically overridden my tree view's updateIndexes, and put a try..catch around callParent; meaning I get nodes staying in the tree, but at least I can keep testing, which is sufficient for my current focus.

    Cheers

  4. #4
    Ext JS Premium Member westy's Avatar
    Join Date
    Feb 2009
    Location
    Bath, UK
    Posts
    905
    Vote Rating
    40
    westy is a jewel in the rough westy is a jewel in the rough westy is a jewel in the rough

      0  

    Default


    My override for the moment:
    PHP Code:
        updateIndexes : function(startIndexendIndex) {
            var 
    ns this.all.elements,
                
    records this.store.getRange();
            
    startIndex startIndex || 0;
            
    endIndex endIndex || ((endIndex === 0) ? : (ns.length 1));
            for(var 
    startIndex<= endIndexi++){
                
    ns[i].viewIndex i;
                
    ns[i].viewRecordId records.length >= records[i].internalId undefined;
                if (!
    ns[i].boundView) {
                    
    ns[i].boundView this.id;
                }
            }
        }, 
    But I suspect there's some underlying problem causing this.store.getRange to not return a set that matches this.all.elements length.

    Cheers,
    Westy

  5. #5
    Ext JS Premium Member stevil's Avatar
    Join Date
    Nov 2007
    Location
    Denver, CO
    Posts
    1,045
    Vote Rating
    9
    stevil will become famous soon enough

      0  

    Default


    There are definitely some things that are in need of null and range checking...

    stevil

  6. #6
    Ext JS Premium Member
    Join Date
    Nov 2010
    Location
    Rudolstadt, Germany
    Posts
    52
    Vote Rating
    0
    astuteq is on a distinguished road

      0  

    Default


    Hello,
    I have also an issue with AbstractView.updateIndexes / reloading a TreeStore.

    I discovered a problem when reloading a TreeStore quick successive order.
    Here is my store configuration:

    PHP Code:
    Ext.define('Rekuma.store.Reseller.Tree', {
        
    extend'Ext.data.TreeStore',
        
    model'Rekuma.model.TreeNode',
        
    autoLoadtrue,
        
    clearOnLoadtrue,
        
    proxy:  {
                    
    type'ajax',
                    
    url 'menu/reseller',
                    
    actionMethods: {
                        
    read   'POST'
                    
    },
                    
    extraParams: {
                        
    category'reseller'
                    
    }
                }
            }
        ); 
    This is what I do in my controller:
    PHP Code:
    Ext.define('Rekuma.controller.Navigation', {
        
    extend'Ext.app.Controller',
        
    views: [
            
    'navigation.PrimaryTreePanel'
        
    ],
        
    stores: [
            
    'Reseller.Tree'
        
    ],
        
    init: function() {

            
    this.control({
                
    'viewport > panel > primarytreepanel': {
                    
    selectionchangethis.selectionChanged
                
    },
                
    'viewport > panel > primarytreepanel > toolbar > button': {
                    
    clickthis.refresh
                
    }
            });
        },
        
    selectionChanged: function (viewselections){
        },
        
    refresh: function() {
            
    this.getResellerTreeStore().load();
        }
    }); 
    Everything works fine as long as I press the refresh button slowly.
    If I load the store in a quick, successive order, I get the message:
    Code:
    TypeError: Result of expression 'records[i]' [undefined] is not an object. AbstractView.js:492
    Also, I see TreeNodes twice.
    I get the same behavior on every click, if I set clearOnLoad: false

    Stefan

  7. #7
    Ext JS Premium Member westy's Avatar
    Join Date
    Feb 2009
    Location
    Bath, UK
    Posts
    905
    Vote Rating
    40
    westy is a jewel in the rough westy is a jewel in the rough westy is a jewel in the rough

      1  

    Default


    Quote Originally Posted by westy View Post
    My override for the moment:
    PHP Code:
        updateIndexes : function(startIndexendIndex) {
            var 
    ns this.all.elements,
                
    records this.store.getRange();
            
    startIndex startIndex || 0;
            
    endIndex endIndex || ((endIndex === 0) ? : (ns.length 1));
            for(var 
    startIndex<= endIndexi++){
                
    ns[i].viewIndex i;
                
    ns[i].viewRecordId records.length >= records[i].internalId undefined;
                if (!
    ns[i].boundView) {
                    
    ns[i].boundView this.id;
                }
            }
        }, 
    But I suspect there's some underlying problem causing this.store.getRange to not return a set that matches this.all.elements length.

    Cheers,
    Westy
    Whoops, bug in this.

    Fixed:
    PHP Code:
        updateIndexes : function(startIndexendIndex) {
            var 
    ns this.all.elements,
                
    records this.store.getRange();
            
    startIndex startIndex || 0;
            
    endIndex endIndex || ((endIndex === 0) ? : (ns.length 1));
            for(var 
    startIndex<= endIndexi++){
                
    ns[i].viewIndex i;
                
    ns[i].viewRecordId = ((records.length i) && records[i]) ? records[i].internalId undefined;
                if (!
    ns[i].boundView) {
                    
    ns[i].boundView this.id;
                }
            }
        }, 

  8. #8
    Sencha User
    Join Date
    Mar 2010
    Posts
    41
    Vote Rating
    0
    karnak is on a distinguished road

      0  

    Default


    I am still getting this error in 4.0.2. Your fix seems to work great (as I am no longer getting errors in my console window). Are the Sencha team aware of this?

  9. #9
    Ext JS Premium Member stevil's Avatar
    Join Date
    Nov 2007
    Location
    Denver, CO
    Posts
    1,045
    Vote Rating
    9
    stevil will become famous soon enough

      0  

    Default


    Quote Originally Posted by karnak View Post
    I am still getting this error in 4.0.2. Your fix seems to work great (as I am no longer getting errors in my console window). Are the Sencha team aware of this?
    That's a good question. I've been assured that this is the correct forum for bug reports, and that Sencha WILL get to all of them, despite the current backlog. I take them at their word. It's a big backlog, though!

    stevil

  10. #10
    Ext JS Premium Member westy's Avatar
    Join Date
    Feb 2009
    Location
    Bath, UK
    Posts
    905
    Vote Rating
    40
    westy is a jewel in the rough westy is a jewel in the rough westy is a jewel in the rough

      0  

    Default


    Well, I did post this what seems like ages ago now!

    I've started posting a few issues in the premium forums since stands a better chance of getting spotted. Shame really, since the bugs and help forums used to see a lot more activity from the devs, especially during the developer previews.

    I get the impression Ext 4 is 'done' now though, so would stick with overriding things yourself if I were you

    Cheers,
    Westy
    Product Architect
    Altus Ltd.