Thank you for reporting this bug. We will make it our priority to review this report.
  1. #1
    Sencha Premium Member
    Join Date
    May 2012
    Location
    Davenport, IA
    Posts
    32
    Vote Rating
    1
    wmcnamara is on a distinguished road

      0  

    Default Ext 4.2 Bugs: Ext.grid.feature.Grouping

    Ext 4.2 Bugs: Ext.grid.feature.Grouping


    We've run into several issues with the grouping feature with in 4.2
    • When Binding a new store to a grid via bindstore, The group expand/collapse methods do not work (this includes the default click events).
    • if you collapse a grouping higher in the grid, and select a record lower in the grid, the events return the wrong record. (the index seems to exclude the collapsed records).
    • When editing a boolian column, when a grouping above said record is collapsed, we recieve an "TypeError: Cannot call method 'isVisible' of null" on line 104425 of ext-all-debug.js
      • likely relaited to wrong record being pass'd per the second issue above.
    Ext JS 4.2.0.663
    Chrome 25.0.1364.172
    Win 7 pro SP1 x64

  2. #2
    Sencha - Ext JS Dev Team Animal's Avatar
    Join Date
    Mar 2007
    Location
    Notts/Redwood City
    Posts
    30,499
    Vote Rating
    47
    Animal has a spectacular aura about Animal has a spectacular aura about

      0  

    Default


    Do you really have to bind a completely new store to an existing grid? It seems a bit extreme to tear everything down.

    The index passed is the index of the record in your store.

    The number of the row in the table that it happens to be at is surely not very meaningful?

  3. #3
    Sencha Premium Member
    Join Date
    May 2012
    Location
    Davenport, IA
    Posts
    32
    Vote Rating
    1
    wmcnamara is on a distinguished road

      0  

    Default


    In the context, yes binding the store was helpful. We've reworked it to populate the current store. None the less it shouldn't break the grouping...

    And the index was an artifact as in sure it's the correct index if you disregard the collapsed groups. it's still returning the wrong record. We're selecting a record and it's not the one being returned. Ill have to glance at a the code again it's one of my teams members code who's having the issue. It was working fine in 4.1.1

  4. #4
    Sencha User
    Join Date
    Jan 2012
    Posts
    8
    Vote Rating
    0
    alphimax is on a distinguished road

      0  

    Default


    I see bigger issues with the Grouping feature and Grid in Ext 4.2.0.
    I have a grid with grouping feature and raw editing plugin.

    1) When updating a column that is selected as the grouping column , the record that got updated gets pushed into removed records! There is no remove event fired. Upon next sync/save of the store the updated record is removed!

    2) Another problematic case is when i insert a record into say position 0 [store.insert(0,record)], but there is already another record with the same column value as the newly inserted one which is not close to position 0, there is an attempt to group the records by the grouping feature upon the insert. That causes a recursive loop.
    Firefox freezes, Chrome spits the next:

    Uncaught RangeError: Maximum call stack size exceeded
    Ext.dom.Query.Ext.core.DomQuery.Ext.DomQuery.DQ.filter
    Ext.dom.Query.Ext.core.DomQuery.Ext.DomQuery.DQ.is
    Ext.define.is
    Ext.define.getNode
    Ext.define.indexOf
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    ...
    Last edited by alphimax; 20 Mar 2013 at 9:21 PM. Reason: formating

  5. #5
    Sencha User Sharkanana's Avatar
    Join Date
    Nov 2011
    Location
    Charlotte, NC
    Posts
    39
    Vote Rating
    0
    Sharkanana is on a distinguished road

      0  

    Default


    Grouping does seem to be really buggy with 4.2.

    I'm trying to delete all the records in a group, and the method store.remove is removing various other records.

  6. #6
    Sencha User
    Join Date
    Mar 2007
    Posts
    464
    Vote Rating
    1
    JorisA is on a distinguished road

      0  

    Default


    I think I also found a bug regarding grouping:

    In Ext.data.Store:
    Code:
    data : Ext.util.MixedCollection/Ext.data.Store.PageMap
    When this Store is not buffered, the data property is a MixedCollection which holds this store's local cache of records.
    but then
    Code:
        getGroups: function(requestGroupString) {
            var records = this.data.items,
                length = records.length,
                groups = [],
                ....
    PageMap doesn't have the property items.

    When trying store.getGroups() this results in "TypeError: Cannot call method 'length' of undefined"

    Same issue with grid.addSorted and some other functions.

    Fix (that at least fixes all my instances of the problem):
    PHP Code:
    Ext.override(Ext.data.Store, {
            
        
    constructGroups: function(){
            var 
    me this,
                
    data = [],
                
    len,
                
    groups me.groups,
                
    groupValueigrouprec;
                
            
    //// Start Fix       
            
    if (this.buffered) {
                
    this.data.each(function(keyrecs) {
                    
    data Ext.Array.merge(datarecs);
                });
            } else {
                
    data this.data.items;
            }
            
            
    len data.length;
            
    //// End Fix
                
            
    groups.clear();
                            
            for (
    0len; ++i) {
                
    rec data[i];
                
    groupValue me.getGroupString(rec);
                
    group groups.get(groupValue);
                if (!
    group) {
                    
    group = new Ext.data.Group({
                        
    keygroupValue,
                        
    storeme
                    
    });
                    
    groups.add(groupValuegroup);
                }
                
    group.add(rec);
            }
        },    
        
        
    getGroups: function(requestGroupString) {
            var 
    records = [],
                
    length,
                
    groups = [],
                
    pointers = {},
                
    record,
                
    groupStr,
                
    group,
                
    i;
            
            
    //// Start Fix       
            
    if (this.buffered) {
                
    this.data.each(function(keyrecs) {
                    
    records Ext.Array.merge(recordsrecs);
                });
            } else {
                
    records this.data.items;
            }
            
            
    length records.length;
            
    //// End Fix
            
            
    for (0lengthi++) {
                
    record records[i];
                
    groupStr this.getGroupString(record);
                
    group pointers[groupStr];

                if (
    group === undefined) {
                    
    group = {
                        
    namegroupStr,
                        
    children: []
                    };

                    
    groups.push(group);
                    
    pointers[groupStr] = group;
                }

                
    group.children.push(record);
            }

            
    this.tempLog("getGroups " requestGroupString " " +groups);
            
            return 
    requestGroupString pointers[requestGroupString] : groups;
        },    
           
        
    filter: function(filtersvalue) {
            
    this.callParent(arguments);
        },   
            
        
    updateGroupsOnAdd: function(records) {
            
    this.callParent(arguments);
        },
        
        
    updateGroupsOnRemove: function(records) {
            
    this.callParent(arguments);
        },
        
        
    updateGroupsOnUpdate: function(recordmodifiedFieldNames){    
            
    //// Start Fix 
            
    this.constructGroups();
            
    //// End Fix

            
    this.callParent(arguments);
        },
        
        
    dummy0
    }); 
    Last edited by JorisA; 21 Mar 2013 at 5:37 PM. Reason: changed workaround code

  7. #7
    Ext JS Premium Member Bobrovnik's Avatar
    Join Date
    Jul 2009
    Posts
    74
    Vote Rating
    0
    Bobrovnik is on a distinguished road

      0  

    Default


    After migrating to ExtJS 4.2

    In my application every grid with Grouping has the same problem. If grid has Checkbox selection model, after selecting few rows firefox stop working and Chrome gives the same stack.

    Is there any way to fix this problem? If not when to expect new version of ExtJS 4.2 version?

    Quote Originally Posted by alphimax View Post
    I see bigger issues with the Grouping feature and Grid in Ext 4.2.0.
    I have a grid with grouping feature and raw editing plugin.

    1) When updating a column that is selected as the grouping column , the record that got updated gets pushed into removed records! There is no remove event fired. Upon next sync/save of the store the updated record is removed!

    2) Another problematic case is when i insert a record into say position 0 [store.insert(0,record)], but there is already another record with the same column value as the newly inserted one which is not close to position 0, there is an attempt to group the records by the grouping feature upon the insert. That causes a recursive loop.
    Firefox freezes, Chrome spits the next:

    Uncaught RangeError: Maximum call stack size exceeded
    Ext.dom.Query.Ext.core.DomQuery.Ext.DomQuery.DQ.filter
    Ext.dom.Query.Ext.core.DomQuery.Ext.DomQuery.DQ.is
    Ext.define.is
    Ext.define.getNode
    Ext.define.indexOf
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    Ext.define.onLastFocusChanged
    Ext.define.setLastFocused
    Ext.define.focusRow
    Ext.define.onRowFocus
    ...
    Stanislav Golovenko.

    My extentions:
    Slider Button
    Desktop Icon Manager

  8. #8
    Sencha User
    Join Date
    Aug 2011
    Posts
    2
    Vote Rating
    1
    behestee is on a distinguished road

      0  

    Default


    Grouping in 4.2 is really buggy. So, I used store.clearGrouping() to clear before any action which got those errors and then apply the grouping again. It works for my case.
    here is my code for inserting data in the related store:
    Code:
                        store.clearGrouping();
                        store.insert(0, data);
                        store.group('tray_id', 'ASC');
    I also faced problem on sorting when a grouping has been added applied. So used an event groupChange for the related store and disabled the sorting feature and enabled when grouping was disabled.
    Code:
               groupchange: function(store, groupers) {
                    var sortable = !store.isGrouped(),
                    headers = store.headerCt.getVisibleGridColumns(),
                    i, len = headers.length;
                    
                    headers.forEach (function(header){
                        header.sortable = sortable;
                    }); 
                },
    This is not the real solution, but can be a solution until ExtJS-4.2 fix-up the bug.

  9. #9
    Sencha User
    Join Date
    Aug 2011
    Posts
    2
    Vote Rating
    1
    behestee is on a distinguished road

      1  

    Default


    I got this rid off by adding selModel properties as preventing focus for single selection model. See the code below:
    Code:
                selModel: {
                    preventFocus:true,
                    mode : "SINGLE"
                },

  10. #10
    Sencha User
    Join Date
    Sep 2010
    Location
    Germany
    Posts
    53
    Vote Rating
    2
    HTK is on a distinguished road

      0  

    Default


    preventFocus property fixed the same problem for me, too. I also experienced the endless loop with the focus events and functions.

Turkiyenin en sevilen filmlerinin yer aldigi xnxx internet sitemiz olan ve porn sex tarzi bir site olan mobil porno izle sitemiz gercekten dillere destan bir durumda herkesin sevdigi bir site olarak tarihe gececege benziyor. Sitenin en belirgin ozelliklerinden birisi de Turkiyede gercekten kaliteli ve muntazam, duzenli porno izle siteleri olmamasidir. Bu yuzden iste. Ayrica en net goruntu kalitesine sahip adresinde yayinlanmaktadir. Mesela diğer sitelerimizden bahsedecek olursak, en iyi hd porno video arşivine sahip bir siteyiz. "The Best anal porn videos and slut anus, big asses movies set..." hd porno faketaxi