neo
neo copied to clipboard
Table.view onStoreRecordchange: refactor to call createViewData for the specific record
What kind of change does this PR introduce? (check at least one)
-
[x] Refactor
-
[ x] Other, please describe:
The
onStoreRecordChangecolspan 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.