Skip to content

Commit 7ad7bc1

Browse files
committed
refactor(pivot-grid): move count aggregator handling to a separate method
1 parent 4d48ee8 commit 7ad7bc1

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
@@ -542,47 +542,51 @@ export class IgxPivotDataSelectorComponent {
542542
* @internal
543543
*/
544544
public onAggregationChange(event: ISelectionEventArgs) {
545-
const valueMember = this.value.member;
546-
const columns = this.grid.columns;
547545

548546
if (!this.isSelected(event.newSelection.value)) {
549547
this.value.aggregate = event.newSelection.value;
550548

551-
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
552-
const isSingleValue = this.grid.values.length === 1;
553-
let shouldRemoveFromSet: boolean = false;
554-
555-
columns.forEach(column => {
556-
const isRelevantColumn = column.field?.includes(valueMember);
557-
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
558-
559-
if (isSingleValue) {
560-
if (isCountAggregator && isCurrencyColumn) {
561-
column.dataType = GridColumnDataType.Number;
562-
this.grid.currencyColumnSet.add(valueMember);
563-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
564-
column.dataType = GridColumnDataType.Currency;
565-
}
566-
} else if (isRelevantColumn) {
567-
if (isCountAggregator && isCurrencyColumn) {
568-
column.dataType = GridColumnDataType.Number;
569-
this.grid.currencyColumnSet.add(valueMember);
570-
} else if (this.grid.currencyColumnSet.has(valueMember)) {
571-
column.dataType = GridColumnDataType.Currency;
572-
shouldRemoveFromSet = true;
573-
}
574-
}
575-
});
576-
577-
if (shouldRemoveFromSet) {
578-
this.grid.currencyColumnSet.delete(valueMember);
579-
}
549+
this.handleCountAggregator();
580550

581551
this.grid.pipeTrigger++;
582552
this.grid.cdr.markForCheck();
583553
}
584554
}
585555

556+
private handleCountAggregator() {
557+
const valueMember = this.value.member;
558+
const columns = this.grid.columns;
559+
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
560+
const isSingleValue = this.grid.values.length === 1;
561+
let shouldRemoveFromSet: boolean = false;
562+
563+
columns.forEach(column => {
564+
const isRelevantColumn = column.field?.includes(valueMember);
565+
const isCurrencyColumn = column.dataType === GridColumnDataType.Currency;
566+
567+
if (isSingleValue) {
568+
if (isCountAggregator && isCurrencyColumn) {
569+
column.dataType = GridColumnDataType.Number;
570+
this.grid.currencyColumnSet.add(valueMember);
571+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
572+
column.dataType = GridColumnDataType.Currency;
573+
}
574+
} else if (isRelevantColumn) {
575+
if (isCountAggregator && isCurrencyColumn) {
576+
column.dataType = GridColumnDataType.Number;
577+
this.grid.currencyColumnSet.add(valueMember);
578+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
579+
column.dataType = GridColumnDataType.Currency;
580+
shouldRemoveFromSet = true;
581+
}
582+
}
583+
});
584+
585+
if (shouldRemoveFromSet) {
586+
this.grid.currencyColumnSet.delete(valueMember);
587+
}
588+
}
589+
586590
/**
587591
* @hidden
588592
* @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
@@ -408,43 +408,47 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
408408
* @internal
409409
*/
410410
public onAggregationChange(event: ISelectionEventArgs) {
411-
const valueMember = this.value.member;
412-
const columns = this.grid.columns;
413411

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

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

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

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

447-
this.grid.pipeTrigger++;
450+
if (shouldRemoveFromSet) {
451+
this.grid.currencyColumnSet.delete(valueMember);
448452
}
449453
}
450454

0 commit comments

Comments
 (0)