Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Error in updateCheckboxHeaderState while filtering in grouped ListGrid

    Hi,

    I'm hitting some hard to reproduce "TypeError: records is undefined" error when I filter data in grouped ListGrid. Sometimes it fires every time, sometimes I can do twenty tests and get no error - looks like some race condition when restoring selection in filtered results.

    DataSource:
    Code:
        ds = isc.DataSource.create
          ID: "test#{@objectCategory}DS"
          clientOnly: true
          fields: [
            {name: "groupingKey", hidden: true, primaryKey: true},
            {name: "objectCategory", hidden: true},
            {name: "objectSubCategory", hidden: true},
            {name: "objectSubCategoryName", hidden: true},
            {name: "field", hidden: true, primaryKey: true},
            {name: "param", title: "Parameter", canEdit: false},
            {name: "exported", type: "boolean", canEdit: true}
          ]
    ListGrid properties:
    Code:
          selectionType: "simple",
          selectionAppearance: "checkbox",
          canSelectAll: true,
          canSelectGroups: true,
          showFilterEditor: true,
          filterOnKeypress: true,
          initialCriteria: {objectCategory: "Cells2g"},
          autoFetchData: true,
          dataSource: ds // clientOnly datasource
    which results in selection by checkbox, with possibility to check entire result set and entire groups. Now, when I have some selection, and enter a filter in filterEditor, SmartClient sometimes throws an error from updateCheckboxHeaderState: TypeError: records is undefined. This doesn't happen when filterOnKeypress is disabled, or when initialCriteria matches all data from my dataSource.

    I added some logging, and filtering causes multiple calls to updateCheckboxHeaderState, some of which sometimes fail.
    1. Caught on Chrome and Firefox, same stack:
    Code:
    *13:14:49.411:TMR2:WARN:Log:TypeError: records is undefined
    Stack from error.stack:
        updateCheckboxHeaderState(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Grids.js:60896:48
        updateRowSelection(<no args: exited>) on [GridBody ID:exportParamsGridCells2g_body] @ ISC_Grids.js:20277:20
        _rowSelectionChanged(<no args: exited>) on [GridBody ID:exportParamsGridCells2g_body] @ ISC_Grids.js:16681:10
        _setSelectedObservation(<no args: exited>) on [GridBody ID:exportParamsGridCells2g_body] @ ISC_Grids.js:16649:14
        <anonymous>(<no args: exited>) on [GridBody ID:exportParamsGridCells2g_body] @ ISC_Grids.js:16601:18
        observation(<no args: exited>) on [Selection ID:exportParamsGridCells2g_selection] @ ISC_Core.js:7495:28
        setSelected(<no args: exited>) on [Selection ID:exportParamsGridCells2g_selection] @ ISC_Grids.js:7053:26
        observation(<no args: exited>) on [Selection ID:exportParamsGridCells2g_selection] @ ISC_Core.js:7468:68
        selectList(<no args: exited>) on [Selection ID:exportParamsGridCells2g_selection] @ ISC_Grids.js:7252:27
        setSelectedState(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Grids.js:36148:28
        setData(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Grids.js:31965:14
        filterWithCriteria(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Core.js:80478:10
        _filter(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Core.js:80446:10
        invokeSuper(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Core.js:6567:44
        Super(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Core.js:6385:21
        _filter(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Grids.js:52047:17
        filterData(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Core.js:79955:10
        handleFilterEditorSubmit(<no args: exited>) on [ListGrid ID:exportParamsGridCells2g] @ ISC_Grids.js:46894:10
        fireCallback(callback=>Obj, argNames=>null, args=>null, target=>[RecordEditor ID:exportParamsGridCells2g_filterEditor], catchErrors=>undef) on [Class Class] @ ISC_Core.js:6812:36
        _fireActionsOnPause() on [Class Class] @ ISC_Core.js:6943:26
        fireCallback(<no args: recursion>)  on [Class Timer] @ ISC_Core.js:6812:36
        _fireTimeout(ID=>"_timeout458", tmrID=>465, delayedTmrID=>undef) on [Class Timer] @ ISC_Core.js:33354:10
        <anonymous>() @ ISC_Core.js:33276:19
    
    Call stack gathered from within updateCheckboxHeaderState:
        ListGrid.updateCheckboxHeaderState()
        GridBody.updateRowSelection(rowNum=>0)
        GridRenderer._rowSelectionChanged(record=>Obj, state=>true, cascadeSyncOnly=>false)
        GridRenderer._setSelectedObservation(selection=>[Selection ID:exportParamsGridCells2g_selection])
        anonymous(item=>Obj, newState=>true, cascadingDirection=>"up", recalculate=>undef)
        setSelectedObservation(Obj, true, "up")
        Selection.setSelected(item=>Obj, newState=>true, cascadingDirection=>undef, recalculate=>undef)
        ** recursed on setSelectedObservation
    2. Caught on Firefox
    Code:
    *13:21:52.117:TMR7:WARN:Log:TypeError: records is undefined
    Stack from error.stack:
        .updateCheckboxHeaderState() @ isomorphic/system/modules-debug/ISC_Grids.js?isc_version=v10.1p_2016-04-11.js:60896:25
        .fireCallback() @ isomorphic/system/modules-debug/ISC_Core.js?isc_version=v10.1p_2016-04-11.js:6809:25
        ._fireActionsOnPause() @ isomorphic/system/modules-debug/ISC_Core.js?isc_version=v10.1p_2016-04-11.js:6943:21
        .fireCallback() @ isomorphic/system/modules-debug/ISC_Core.js?isc_version=v10.1p_2016-04-11.js:6809:25
        ._fireTimeout() @ isomorphic/system/modules-debug/ISC_Core.js?isc_version=v10.1p_2016-04-11.js:33354:5
        .setTimeout/tmrID<() @ isomorphic/system/modules-debug/ISC_Core.js?isc_version=v10.1p_2016-04-11.js:33276:9
    
    Call stack gathered from within updateCheckboxHeaderState:
        ListGrid.updateCheckboxHeaderState()
        [c]Class.fireCallback(callback=>"updateCheckboxHeaderState", argNames=>null, args=>null, target=>[ListGrid ID:exportParamsGridCells2g], catchErrors=>undef)
        [c]Class._fireActionsOnPause()
        ** recursed on [c]Class.fireCallback
    Tested in: Chrome 49, Firefox 45.
    Last edited by Crack; 21 Apr 2016, 03:37. Reason: Changeg first stacktrace to one from Chrome, contains more useful data

    #2
    Is your data grouped when this happens?

    Comment


      #3
      We've made a change to address this issue. Please try the next nightly build, dated April 22.

      Regards
      Isomorphic Software

      Comment

      Working...
      X