Skip to content

Commit 5dad728

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Improve scroll and pipe performance.
1 parent babc2b6 commit 5dad728

3 files changed

Lines changed: 11 additions & 11 deletions

File tree

projects/igniteui-angular/src/lib/data-operations/merge-strategy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export class DefaultMergeStrategy implements IGridMergeStrategy {
7575
index++;
7676
continue;
7777
}
78-
const recToUpdateData = recData ?? { recordRef: grid.isGhostRecord(rec) ? rec.recordRef : rec, cellMergeMeta: new Map<string, IMergeByResult>(), ghostRecord: rec.ghostRecord };
78+
const recToUpdateData = recData ?? { recordRef: grid.isGhostRecord(rec) ? rec.recordRef : rec, cellMergeMeta: new Map<string, IMergeByResult>(), ghostRecord: rec.ghostRecord, index: index };
7979
recToUpdateData.cellMergeMeta.set(field, { rowSpan: 1, childRecords: [] });
8080
if (prev && comparer.call(this, prev.recordRef, recToUpdateData.recordRef, field, isDate, isTime) && prev.ghostRecord === recToUpdateData.ghostRecord) {
8181
const root = prev.cellMergeMeta.get(field)?.root ?? prev;

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8241,16 +8241,16 @@ export abstract class IgxGridBaseDirective implements GridType,
82418241
// recalc merged data
82428242
if (this.columnsToMerge.length > 0) {
82438243
const startIndex = this.verticalScrollContainer.state.startIndex;
8244-
const prevDataView = this.verticalScrollContainer.igxForOf?.slice(0, startIndex);
82458244
const data = [];
8246-
for (let index = 0; index < startIndex; index++) {
8247-
const rec = prevDataView[index];
8248-
if (rec.cellMergeMeta &&
8249-
// index + maxRowSpan is within view
8250-
startIndex < (index + Math.max(...rec.cellMergeMeta.values().toArray().map(x => x.rowSpan)))) {
8251-
const visibleIndex = this.isRowPinningToTop ? index + this.pinnedRecordsCount : index;
8252-
data.push({ record: rec, index: visibleIndex, dataIndex: index });
8253-
}
8245+
const rec = this.verticalScrollContainer.igxForOf[startIndex];
8246+
if (rec && rec.cellMergeMeta) {
8247+
this.columnsToMerge.forEach((col) => {
8248+
const root = rec.cellMergeMeta.get(col.field).root;
8249+
if (root) {
8250+
data.push({ record: root, index: root.index, dataIndex: root.index });
8251+
}
8252+
})
8253+
82548254
}
82558255
this._mergedDataInView = data;
82568256
this.notifyChanges();

projects/igniteui-angular/src/lib/grids/grid/grid.pipes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ export class IgxGridUnmergeActivePipe implements PipeTransform {
131131
}
132132
let result = cloneArray(collection) as any;
133133
uniqueRoots.forEach(x => {
134-
const index = result.indexOf(x);
134+
const index = x.index;
135135
const colKeys = [...x.cellMergeMeta.keys()];
136136
const cols = colsToMerge.filter(col => colKeys.indexOf(col.field) !== -1);
137137
let res = [];

0 commit comments

Comments
 (0)