Follow-up sub-task for #9511.
The current "value banding" implementation in collection.Base relies on splice() and doSort() triggers to recalculate the valueBandsMap.
Neo.data.TreeStore overrides several core methods (doSort, expandAll, collapseAll, clearFilters) where it manually rebuilds the flattened Projection Layer (_items) without using splice().
Goal:
Ensure calcValueBands() is invoked whenever the TreeStore Projection Layer is modified in bulk.
Context for implementation:
src/data/TreeStore.mjs overrides doSort and must call me.calcValueBands() before firing the sort event.
- Bulk visibility changes (
expandAll, collapseAll, clearFilters) in TreeStore bypass splice() and must explicitly trigger calcValueBands().
- Standard
expand() and collapse() operations in TreeStore delegate to super.splice(), which correctly triggers the partial recalculation (startIndex) inherited from collection.Base.
Testing:
- A new unit test should be created to verify that expanding/collapsing nodes in a TreeGrid correctly updates the alternating banding colors of the flattened projection view.
Follow-up sub-task for #9511. The current "value banding" implementation in
collection.Baserelies onsplice()anddoSort()triggers to recalculate thevalueBandsMap.Neo.data.TreeStoreoverrides several core methods (doSort,expandAll,collapseAll,clearFilters) where it manually rebuilds the flattened Projection Layer (_items) without usingsplice().Goal: Ensure
calcValueBands()is invoked whenever theTreeStoreProjection Layer is modified in bulk.Context for implementation:
src/data/TreeStore.mjsoverridesdoSortand must callme.calcValueBands()before firing thesortevent.expandAll,collapseAll,clearFilters) inTreeStorebypasssplice()and must explicitly triggercalcValueBands().expand()andcollapse()operations inTreeStoredelegate tosuper.splice(), which correctly triggers the partial recalculation (startIndex) inherited fromcollection.Base.Testing: