neo icon indicating copy to clipboard operation
neo copied to clipboard

Table.view onStoreRecordchange: refactor to call createViewData for the specific record

Open gplanansky opened this issue 1 year ago • 0 comments

What kind of change does this PR introduce? (check at least one)

  • [x] Refactor

  • [ x] Other, please describe:

    The onStoreRecordChange colspan implementation invokes createViewData to reprocess all items:

         //we should narrow it down to only update the current row
        me.createViewData(me.store.items)

The proposed change invokes createViewData to process only the single specified record. This works for any change that createViewData handles, not just colspan. For example it will work for annotation.selected processing, if that happens in createViewData.

Does this PR introduce a breaking change? (check one)

  • [x] No : I do not think so, , testing against Neo.examples, Neo.apps, and my own table codes.

What it does:

onStoreRecordChange is empty now, it just calls createViewData.

createViewData(inputData) now tests whether inputData is a data array (from store & collection), or, a single record from onStoreRecordChange. If it is a single record there is some bookkeeping with the index values to process the record as a record array of length 1.

It turns out that an initial loading of Store can trigger both the expected data array load event, and an equivalent series of recordChange events. To forestall that double processing, onStoreRecordChange is only enabled if isLoaded === true. When createViewData encounters a data/items array, it sets isLoaded to true.

gplanansky avatar Dec 19 '23 07:12 gplanansky