Skip to content

Commit 1357bcb

Browse files
authored
Merge pull request #7178 from IgniteUI/mkirova/fix-filter-summaries-rowpinning-integration
fix(igxGrid): Fix and test for issue with row pinning + filtering + s…
2 parents a55860e + 4c13389 commit 1357bcb

File tree

5 files changed

+28
-7
lines changed

5 files changed

+28
-7
lines changed

projects/igniteui-angular/src/lib/grids/api.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ export class GridBaseAPIService <T extends IgxGridBaseDirective & GridType> {
3434
public get_summary_data() {
3535
const grid = this.grid;
3636
let data = grid.filteredData;
37+
if (data && grid.hasPinnedRecords) {
38+
data = grid._filteredUnpinnedData;
39+
}
3740
if (!data) {
3841
if (grid.transactions.enabled) {
3942
data = DataUtil.mergeTransactions(

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ export class IgxGridRowPinningPipe implements PipeTransform {
238238
}
239239

240240
grid.unpinnedRecords = collection;
241+
241242
return collection.map((rec) => {
242243
return grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true} : rec;
243244
});

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2457,7 +2457,11 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
24572457
protected _filteredSortedPinnedData;
24582458
protected _filteredSortedUnpinnedData;
24592459
protected _filteredPinnedData;
2460-
protected _filteredUnpinnedData;
2460+
2461+
/**
2462+
* @hidden
2463+
*/
2464+
public _filteredUnpinnedData;
24612465

24622466
/**
24632467
* @hidden
@@ -2875,10 +2879,6 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
28752879
this.summaryService.summaryHeight = 0;
28762880
this.notifyChanges(true);
28772881
});
2878-
2879-
this.onRowPinning.subscribe(() => {
2880-
this.summaryService.clearSummaryCache();
2881-
});
28822882
}
28832883

28842884
/**

projects/igniteui-angular/src/lib/grids/grid/grid-row-pinning.spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,23 @@ describe('Row Pinning #grid', () => {
358358
expect(pinRowContainer[0].children[0].context.rowID).toBe(fix.componentInstance.data[4]);
359359
});
360360

361+
it('should calculate global summaries correctly when filtering is applied.', () => {
362+
grid.getColumnByName('ID').hasSummary = true;
363+
fix.detectChanges();
364+
grid.filter('ID', 'BERGS', IgxStringFilteringOperand.instance().condition('contains'), false);
365+
fix.detectChanges();
366+
367+
let summaryRow = GridSummaryFunctions.getRootSummaryRow(fix);
368+
GridSummaryFunctions.verifyColumnSummaries(summaryRow, 0, ['Count'], ['1']);
369+
370+
// pin row
371+
grid.getRowByIndex(0).pin();
372+
fix.detectChanges();
373+
374+
summaryRow = GridSummaryFunctions.getRootSummaryRow(fix);
375+
GridSummaryFunctions.verifyColumnSummaries(summaryRow, 0, ['Count'], ['1']);
376+
});
377+
361378
it('should remove pinned container and recalculate sizes when all pinned records are filtered out.', () => {
362379
grid.getRowByIndex(1).pin();
363380
fix.detectChanges();

src/app/grid-row-pinning/grid-row-pinning.sample.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
</igx-column>
4747
<igx-column *ngFor="let c of columns" [sortable]="true" [field]="c.field" [header]="c.field"
4848
[width]="c.width" [pinned]='c.pinned' [groupable]='c.groupable' [hidden]='c.hidden'
49-
[editable]='true'>
49+
[editable]='true' [hasSummary]='true'>
5050
</igx-column>
5151
</igx-grid>
5252
</div>
@@ -70,7 +70,7 @@
7070
<button (click)="hGrid.deleteRow(cell.cellID.rowID)">Delete</button>
7171
</ng-template>
7272
</igx-column>
73-
<igx-column *ngFor="let c of hColumns" [editable]="true" [sortable]="true" [field]="c.field" [header]="c.field" [width]="c.width" [pinned]='c.pinned' [groupable]='c.groupable' >
73+
<igx-column *ngFor="let c of hColumns" [hasSummary]='true' [editable]="true" [sortable]="true" [field]="c.field" [header]="c.field" [width]="c.width" [pinned]='c.pinned' [groupable]='c.groupable' >
7474
</igx-column>
7575
<igx-row-island [key]="'childData'" [autoGenerate]="true" [rowSelectable]='true' [allowFiltering]='true' >
7676
<igx-row-island [key]="'childData'" [autoGenerate]="true" [rowSelectable]='true' [allowFiltering]='true'></igx-row-island>

0 commit comments

Comments
 (0)