From d7d60ce11a7206aee247279f32ac3fdda398c174 Mon Sep 17 00:00:00 2001 From: ddincheva Date: Thu, 10 Oct 2019 16:46:19 +0300 Subject: [PATCH] feat(IgxSummaries): add all grid data and curr colField as optional params #5754 --- .../grids/summaries/grid-summary.service.ts | 3 +- .../src/lib/grids/summaries/grid-summary.ts | 34 ++++++++----------- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.service.ts b/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.service.ts index 80738b02cf5..4b0eaa1db4f 100644 --- a/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.service.ts +++ b/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.service.ts @@ -105,10 +105,11 @@ export class IgxGridSummaryService { this.summaryCacheMap.set(rowID, rowSummaries); } if (!this.hasSummarizedColumns || !data) {return rowSummaries; } + const allData = data; this.grid.columnList.filter(col => col.hasSummary).forEach((column) => { if (!rowSummaries.get(column.field)) { rowSummaries.set(column.field, - column.summaries.operate(data, column.field)); + column.summaries.operate(data.map(r => r[column.field]), allData, column.field)); } }); return rowSummaries; diff --git a/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.ts b/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.ts index c170b2d63ab..9f4df5bee87 100644 --- a/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.ts +++ b/projects/igniteui-angular/src/lib/grids/summaries/grid-summary.ts @@ -45,7 +45,7 @@ export class IgxSummaryOperand { * constructor() { * super(); * } - * public operate(data: any[], fieldName: string): IgxSummaryResult[] { + * public operate(data: any[], allData: any[], fieldName: string): IgxSummaryResult[] { * const result = []; * result.push({ * key: "test", @@ -59,17 +59,13 @@ export class IgxSummaryOperand { * ``` * @memberof IgxSummaryOperand */ - public operate(data: any[] = [], fieldName: string): IgxSummaryResult[] { + public operate(data: any[] = [], allData: any[] = [], fieldName?: string): IgxSummaryResult[] { return [{ key: 'count', label: 'Count', - summaryResult: IgxSummaryOperand.count(this.getColumnData(data, fieldName)) + summaryResult: IgxSummaryOperand.count(data) }]; } - - protected getColumnData(data, field): any[] { - return data.map(rec => rec[field]); - } } // @dynamic @@ -133,7 +129,7 @@ export class IgxNumberSummaryOperand extends IgxSummaryOperand { * constructor() { * super(); * } - * public operate(data: any[], fieldName: string): IgxSummaryResult[] { + * public operate(data: any[], allData: any[], fieldName: string): IgxSummaryResult[] { * const result = []; * result.push({ * key: "avg", @@ -152,27 +148,27 @@ export class IgxNumberSummaryOperand extends IgxSummaryOperand { * ``` * @memberof IgxNumberSummaryOperand */ - public operate(data: any[] = [], fieldName: string): IgxSummaryResult[] { - const result = super.operate(data, fieldName); + public operate(data: any[] = [], allData: any[] = [], fieldName?: string): IgxSummaryResult[] { + const result = super.operate(data, allData, fieldName); result.push({ key: 'min', label: 'Min', - summaryResult: IgxNumberSummaryOperand.min(super.getColumnData(data, fieldName)) + summaryResult: IgxNumberSummaryOperand.min(data) }); result.push({ key: 'max', label: 'Max', - summaryResult: IgxNumberSummaryOperand.max(super.getColumnData(data, fieldName)) + summaryResult: IgxNumberSummaryOperand.max(data) }); result.push({ key: 'sum', label: 'Sum', - summaryResult: IgxNumberSummaryOperand.sum(super.getColumnData(data, fieldName)) + summaryResult: IgxNumberSummaryOperand.sum(data) }); result.push({ key: 'average', label: 'Avg', - summaryResult: IgxNumberSummaryOperand.average(super.getColumnData(data, fieldName)) + summaryResult: IgxNumberSummaryOperand.average(data) }); return result; } @@ -219,7 +215,7 @@ export class IgxDateSummaryOperand extends IgxSummaryOperand { * constructor() { * super(); * } - * public operate(data: any[], fieldName: string): IgxSummaryResult[] { + * public operate(data: any[], allData: any[], fieldName: string): IgxSummaryResult[] { * const result = []; * result.push({ * key: "latest", @@ -233,17 +229,17 @@ export class IgxDateSummaryOperand extends IgxSummaryOperand { * ``` * @memberof IgxDateSummaryOperand */ - public operate(data: any[] = [], fieldName: string): IgxSummaryResult[] { - const result = super.operate(data, fieldName); + public operate(data: any[] = [], allData: any[] = [], fieldName?: string): IgxSummaryResult[] { + const result = super.operate(data, allData, fieldName); result.push({ key: 'earliest', label: 'Earliest', - summaryResult: IgxDateSummaryOperand.earliest(super.getColumnData(data, fieldName)) + summaryResult: IgxDateSummaryOperand.earliest(data) }); result.push({ key: 'latest', label: 'Latest', - summaryResult: IgxDateSummaryOperand.latest(super.getColumnData(data, fieldName)) + summaryResult: IgxDateSummaryOperand.latest(data) }); return result; }