Skip to content

Commit 4c5c837

Browse files
committed
refactor(pivot-grid): move count aggregator handling to a separate method
1 parent 6cd017b commit 4c5c837

File tree

2 files changed

+67
-59
lines changed

2 files changed

+67
-59
lines changed

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-data-selector.component.ts

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -518,47 +518,51 @@ export class IgxPivotDataSelectorComponent {
518518
* @internal
519519
*/
520520
public onAggregationChange(event: ISelectionEventArgs) {
521-
const valueMember = this.value.member;
522-
const columns = this.grid.columns;
523521

524522
if (!this.isSelected(event.newSelection.value)) {
525523
this.value.aggregate = event.newSelection.value;
526524

527-
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
528-
const isSingleValue = this.grid.values.length === 1;
529-
let shouldRemoveFromSet: boolean = false;
530-
531-
columns.forEach(column => {
532-
const isRelevantColumn = column.field?.includes(valueMember);
533-
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
534-
535-
if (isSingleValue) {
536-
if (isCountAggregator && isCurrencyColumn) {
537-
column.dataType = GridColumnDataType.Number;
538-
this.grid.currencyColumnSet.add(valueMember);
539-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
540-
column.dataType = GridColumnDataType.Currency;
541-
}
542-
} else if (isRelevantColumn) {
543-
if (isCountAggregator && isCurrencyColumn) {
544-
column.dataType = GridColumnDataType.Number;
545-
this.grid.currencyColumnSet.add(valueMember);
546-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
547-
column.dataType = GridColumnDataType.Currency;
548-
shouldRemoveFromSet = true;
549-
}
550-
}
551-
});
552-
553-
if (shouldRemoveFromSet) {
554-
this.grid.currencyColumnSet.delete(valueMember);
555-
}
525+
this.handleCountAggregator();
556526

557527
this.grid.pipeTrigger++;
558528
this.grid.cdr.markForCheck();
559529
}
560530
}
561531

532+
private handleCountAggregator() {
533+
const valueMember = this.value.member;
534+
const columns = this.grid.columns;
535+
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
536+
const isSingleValue = this.grid.values.length === 1;
537+
let shouldRemoveFromSet: boolean = false;
538+
539+
columns.forEach(column => {
540+
const isRelevantColumn = column.field?.includes(valueMember);
541+
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
542+
543+
if (isSingleValue) {
544+
if (isCountAggregator && isCurrencyColumn) {
545+
column.dataType = GridColumnDataType.Number;
546+
this.grid.currencyColumnSet.add(valueMember);
547+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
548+
column.dataType = GridColumnDataType.Currency;
549+
}
550+
} else if (isRelevantColumn) {
551+
if (isCountAggregator && isCurrencyColumn) {
552+
column.dataType = GridColumnDataType.Number;
553+
this.grid.currencyColumnSet.add(valueMember);
554+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
555+
column.dataType = GridColumnDataType.Currency;
556+
shouldRemoveFromSet = true;
557+
}
558+
}
559+
});
560+
561+
if (shouldRemoveFromSet) {
562+
this.grid.currencyColumnSet.delete(valueMember);
563+
}
564+
}
565+
562566
/**
563567
* @hidden
564568
* @internal

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -409,43 +409,47 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
409409
* @internal
410410
*/
411411
public onAggregationChange(event: ISelectionEventArgs) {
412-
const valueMember = this.value.member;
413-
const columns = this.grid.columns;
414412

415413
if (!this.isSelected(event.newSelection.value)) {
416414
this.value.aggregate = event.newSelection.value;
417415

418-
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
419-
const isSingleValue = this.grid.values.length === 1;
420-
let shouldRemoveFromSet: boolean = false;
416+
this.handleCountAggregator();
421417

422-
columns.forEach(column => {
423-
const isRelevantColumn = column.field?.includes(valueMember);
424-
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
418+
this.grid.pipeTrigger++;
419+
}
420+
}
425421

426-
if (isSingleValue) {
427-
if (isCountAggregator && isCurrencyColumn) {
428-
column.dataType = GridColumnDataType.Number;
429-
this.grid.currencyColumnSet.add(valueMember);
430-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
431-
column.dataType = GridColumnDataType.Currency;
432-
}
433-
} else if (isRelevantColumn) {
434-
if (isCountAggregator && isCurrencyColumn) {
435-
column.dataType = GridColumnDataType.Number;
436-
this.grid.currencyColumnSet.add(valueMember);
437-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
438-
column.dataType = GridColumnDataType.Currency;
439-
shouldRemoveFromSet = true;
440-
}
422+
private handleCountAggregator() {
423+
const valueMember = this.value.member;
424+
const columns = this.grid.columns;
425+
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
426+
const isSingleValue = this.grid.values.length === 1;
427+
let shouldRemoveFromSet: boolean = false;
428+
429+
columns.forEach(column => {
430+
const isRelevantColumn = column.field?.includes(valueMember);
431+
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
432+
433+
if (isSingleValue) {
434+
if (isCountAggregator && isCurrencyColumn) {
435+
column.dataType = GridColumnDataType.Number;
436+
this.grid.currencyColumnSet.add(valueMember);
437+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
438+
column.dataType = GridColumnDataType.Currency;
439+
}
440+
} else if (isRelevantColumn) {
441+
if (isCountAggregator && isCurrencyColumn) {
442+
column.dataType = GridColumnDataType.Number;
443+
this.grid.currencyColumnSet.add(valueMember);
444+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
445+
column.dataType = GridColumnDataType.Currency;
446+
shouldRemoveFromSet = true;
441447
}
442-
});
443-
444-
if (shouldRemoveFromSet) {
445-
this.grid.currencyColumnSet.delete(valueMember);
446448
}
449+
});
447450

448-
this.grid.pipeTrigger++;
451+
if (shouldRemoveFromSet) {
452+
this.grid.currencyColumnSet.delete(valueMember);
449453
}
450454
}
451455

0 commit comments

Comments
 (0)