Skip to content

Commit b61f9cb

Browse files
committed
feat(IgxSummaries): allow operate method to access all grid data #5769
1 parent da557ed commit b61f9cb

2 files changed

Lines changed: 17 additions & 14 deletions

File tree

projects/igniteui-angular/src/lib/grids/summaries/grid-summary.service.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,8 @@ export class IgxGridSummaryService {
107107
if (!this.hasSummarizedColumns || !data) {return rowSummaries; }
108108
this.grid.columnList.filter(col => col.hasSummary).forEach((column) => {
109109
if (!rowSummaries.get(column.field)) {
110-
const columnValues = data.map(record => record[column.field]);
111110
rowSummaries.set(column.field,
112-
column.summaries.operate(columnValues));
111+
column.summaries.operate(data, column.field));
113112
}
114113
});
115114
return rowSummaries;

projects/igniteui-angular/src/lib/grids/summaries/grid-summary.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,17 @@ export class IgxSummaryOperand {
5959
* ```
6060
* @memberof IgxSummaryOperand
6161
*/
62-
public operate(data: any[] = []): IgxSummaryResult[] {
62+
public operate(data: any[] = [], fieldName: string): IgxSummaryResult[] {
6363
return [{
6464
key: 'count',
6565
label: 'Count',
66-
summaryResult: IgxSummaryOperand.count(data)
66+
summaryResult: IgxSummaryOperand.count(this.getColumnData(data, fieldName))
6767
}];
6868
}
69+
70+
protected getColumnData(data, field): any[] {
71+
return data.map(rec => rec[field]);
72+
}
6973
}
7074

7175
// @dynamic
@@ -148,27 +152,27 @@ export class IgxNumberSummaryOperand extends IgxSummaryOperand {
148152
* ```
149153
* @memberof IgxNumberSummaryOperand
150154
*/
151-
public operate(data: any[] = []): IgxSummaryResult[] {
152-
const result = super.operate(data);
155+
public operate(data: any[] = [], fieldName?: string): IgxSummaryResult[] {
156+
const result = super.operate(data, fieldName);
153157
result.push({
154158
key: 'min',
155159
label: 'Min',
156-
summaryResult: IgxNumberSummaryOperand.min(data)
160+
summaryResult: IgxNumberSummaryOperand.min(super.getColumnData(data, fieldName))
157161
});
158162
result.push({
159163
key: 'max',
160164
label: 'Max',
161-
summaryResult: IgxNumberSummaryOperand.max(data)
165+
summaryResult: IgxNumberSummaryOperand.max(super.getColumnData(data, fieldName))
162166
});
163167
result.push({
164168
key: 'sum',
165169
label: 'Sum',
166-
summaryResult: IgxNumberSummaryOperand.sum(data)
170+
summaryResult: IgxNumberSummaryOperand.sum(super.getColumnData(data, fieldName))
167171
});
168172
result.push({
169173
key: 'average',
170174
label: 'Avg',
171-
summaryResult: IgxNumberSummaryOperand.average(data)
175+
summaryResult: IgxNumberSummaryOperand.average(super.getColumnData(data, fieldName))
172176
});
173177
return result;
174178
}
@@ -229,17 +233,17 @@ export class IgxDateSummaryOperand extends IgxSummaryOperand {
229233
* ```
230234
* @memberof IgxDateSummaryOperand
231235
*/
232-
public operate(data: any[] = []): IgxSummaryResult[] {
233-
const result = super.operate(data);
236+
public operate(data: any[] = [], fieldName?: string): IgxSummaryResult[] {
237+
const result = super.operate(data, fieldName);
234238
result.push({
235239
key: 'earliest',
236240
label: 'Earliest',
237-
summaryResult: IgxDateSummaryOperand.earliest(data)
241+
summaryResult: IgxDateSummaryOperand.earliest(super.getColumnData(data, fieldName))
238242
});
239243
result.push({
240244
key: 'latest',
241245
label: 'Latest',
242-
summaryResult: IgxDateSummaryOperand.latest(data)
246+
summaryResult: IgxDateSummaryOperand.latest(super.getColumnData(data, fieldName))
243247
});
244248
return result;
245249
}

0 commit comments

Comments
 (0)