Skip to content

Commit 1a4fbd9

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Cache columnsToMerge and use as pipe trigger.
1 parent 69b272c commit 1a4fbd9

File tree

5 files changed

+21
-16
lines changed

5 files changed

+21
-16
lines changed

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

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3358,7 +3358,8 @@ export abstract class IgxGridBaseDirective implements GridType,
33583358
private _defaultRowHeight = 50;
33593359
private _rowCount: number;
33603360
private _cellMergeMode: GridCellMergeMode = GridCellMergeMode.onSort;
3361-
private _prevVisibleColumns: IgxColumnComponent[] = [];
3361+
private _prevColsToMerge: IgxColumnComponent[] = [];
3362+
private _columnsToMerge: IgxColumnComponent[] = [];
33623363

33633364
/**
33643365
* @hidden @internal
@@ -3994,10 +3995,19 @@ export abstract class IgxGridBaseDirective implements GridType,
39943995
* @internal
39953996
*/
39963997
public get columnsToMerge() : ColumnType[] {
3997-
return this.visibleColumns.filter(
3998+
if (this._columnsToMerge.length) {
3999+
return this._columnsToMerge;
4000+
}
4001+
const cols = this.visibleColumns.filter(
39984002
x => x.merge && (this.cellMergeMode ==='always' ||
39994003
(this.cellMergeMode === 'onSort' && !!this.sortingExpressions.find( y => y.fieldName === x.field)))
40004004
);
4005+
if (areEqualArrays(cols, this._prevColsToMerge)) {
4006+
return this._prevColsToMerge;
4007+
}
4008+
this._columnsToMerge = cols;
4009+
this._prevColsToMerge = [...cols];
4010+
return this._columnsToMerge;
40014011
}
40024012

40034013
protected get mergedDataInView() {
@@ -4015,6 +4025,7 @@ export abstract class IgxGridBaseDirective implements GridType,
40154025
this._visibleColumns.length = 0;
40164026
this._pinnedVisible.length = 0;
40174027
this._unpinnedVisible.length = 0;
4028+
this._columnsToMerge.length = 0;
40184029
}
40194030

40204031
/**
@@ -4734,12 +4745,7 @@ export abstract class IgxGridBaseDirective implements GridType,
47344745
if (this._visibleColumns.length) {
47354746
return this._visibleColumns;
47364747
}
4737-
const newCollection = this._columns.filter(c => !c.hidden);
4738-
if (areEqualArrays(newCollection, this._prevVisibleColumns)) {
4739-
return this._prevVisibleColumns;
4740-
}
4741-
this._visibleColumns = newCollection;
4742-
this._prevVisibleColumns = [...this._visibleColumns];
4748+
this._visibleColumns = this._columns.filter(c => !c.hidden);
47434749
return this._visibleColumns;
47444750
}
47454751

projects/igniteui-angular/src/lib/grids/grid/grid.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
| gridRowPinning:id:true:pipeTrigger
6363
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
6464
| gridSort:sortingExpressions:groupingExpressions:sortStrategy:id:pipeTrigger:true
65-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData) {
65+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData) {
6666
@if (pinnedData.length > 0) {
6767
<div #pinContainer
6868
[ngClass]="{
@@ -89,7 +89,7 @@
8989
| gridDetails:hasDetails:expansionStates:pipeTrigger
9090
| gridAddRow:false:pipeTrigger
9191
| gridRowPinning:id:false:pipeTrigger
92-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
92+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
9393
let-rowIndex="index" [igxForScrollOrientation]="'vertical'" [igxForScrollContainer]="verticalScroll"
9494
[igxForContainerSize]="calcHeight"
9595
[igxForItemSize]="hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight"

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ export class IgxGridCellMergePipe implements PipeTransform {
8686

8787
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
8888

89-
public transform(collection: any, visibleColumns: ColumnType[], mergeMode: GridCellMergeMode, mergeStrategy: IGridMergeStrategy, sortExpr: ISortingExpression[], activeRowIndexes: number[], pinned: boolean, _pipeTrigger: number) {
90-
const colsToMerge = this.grid.columnsToMerge;
89+
public transform(collection: any, colsToMerge: ColumnType[], mergeMode: GridCellMergeMode, mergeStrategy: IGridMergeStrategy, sortExpr: ISortingExpression[], activeRowIndexes: number[], pinned: boolean, _pipeTrigger: number) {
9190
if (colsToMerge.length === 0) {
9291
return collection;
9392
}

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
| gridRowPinning:id:true:pipeTrigger
4646
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
4747
| gridSort:sortingExpressions:[]:sortStrategy:id:pipeTrigger:true
48-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData
48+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData
4949
) {
5050
@if (pinnedData.length > 0) {
5151
<div #pinContainer class="igx-grid__tr--pinned"
@@ -70,7 +70,7 @@
7070
| gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger
7171
| gridAddRow:false:pipeTrigger
7272
| gridRowPinning:id:false:pipeTrigger
73-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
73+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
7474
[igxForScrollOrientation]="'vertical'" [igxForScrollContainer]="verticalScroll"
7575
[igxForContainerSize]="calcHeight" [igxForItemSize]="renderedRowHeight" [igxForTrackBy]="trackChanges"
7676
#verticalScrollContainer (chunkPreload)="dataLoading($event)" (dataChanging)="dataRebinding($event)" (dataChanged)="dataRebound($event)">

projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
| gridRowPinning:id:true:pipeTrigger
4848
| treeGridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:pipeTrigger:filteringPipeTrigger:true
4949
| treeGridSorting:sortingExpressions:treeGroupArea?.expressions:sortStrategy:pipeTrigger:true
50-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData
50+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:true:pipeTrigger; as pinnedData
5151
) {
5252
@if (pinnedData.length > 0) {
5353
<div #pinContainer
@@ -76,7 +76,7 @@
7676
| treeGridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger
7777
| treeGridAddRow:false:pipeTrigger
7878
| gridRowPinning:id:false:pipeTrigger
79-
| gridCellMerge:visibleColumns:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
79+
| gridCellMerge:columnsToMerge:cellMergeMode:mergeStrategy:sortingExpressions:activeRowIndexes:false:pipeTrigger"
8080
let-rowIndex="index" [igxForScrollOrientation]="'vertical'" [igxForScrollContainer]='verticalScroll'
8181
[igxForContainerSize]='calcHeight' [igxForItemSize]="renderedRowHeight" #verticalScrollContainer
8282
(dataChanging)="dataRebinding($event)" (dataChanged)="dataRebound($event)">

0 commit comments

Comments
 (0)