Uploaded image for project: 'CMS'
  1. CMS
  2. CMS-6001

ExtJS issue in SelectionModel leads to an error when using boxselect widget

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • 3.9
    • None
    • None
    • None

      How to reproduce

      • Go on a content edition with boxselect
      • Select one or more contents in combo box
      • Clic on create content button

      The following error occurred

      TypeError: Impossible d’obtenir la propriété « internalId » d’une référence null ou non définie
      TypeError: Impossible d’obtenir la propriété « internalId » d’une référence null ou non définie
      at getSelectionId (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:100166:9)
      at remove (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:24307:9)
      at onStoreRefresh (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:100399:17)
      at fire (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:10218:17)
      at continueFireEvent (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:11625:25)
      at fireEventArgs (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:11603:17)
      at prototype.fireEventArgs (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:43280:13)
      at fireEvent (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:11589:13)
      at loadRecords (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:76196:9)
      at onProxyLoad (http://ametys-recette.onisep.fr/ideo2/plugins/extjs4/resources/js/ext-all-debug.js:75902:13)
      

      Seems to be an issue in ExtJS. In #onStoreRefresh function of Ext.selection.Model, in "for" loop, records can be deleted while iterating on store records.

      onStoreRefresh: function(){
              var me = this,
                  selected = me.selected,
                  items, length, i, rec, storeRec;
                  
              if (me.store.buffered) {
                  return;
              }
                  
              items = selected.items;
              length = items.length;
               
              me.lastSelected = me.getStoreRecord(me.lastSelected);
              
              for (i = 0; i < length; ++i) {
                  rec = items[i];
                  storeRec = me.getStoreRecord(rec);
                  if (storeRec) {
                      if (rec.hasId()) {
                          
                          
                          me.selected.replace(storeRec);
                      }
                  } else {
                      
                      me.selected.remove(rec);
                  }
              }   
          }
      

            Unassigned Unassigned
            laurence Laurence Aumeunier
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: