Skip to content

Commit 4d48ee8

Browse files
committed
refactor(pivot-grid): apply comments + minor fix to aggregation change logic
1 parent 1c00edc commit 4d48ee8

File tree

5 files changed

+35
-48
lines changed

5 files changed

+35
-48
lines changed

projects/igniteui-angular/src/lib/grids/common/grid.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,8 @@ export interface PivotGridType extends GridType {
13381338
excelStyleFilterMinHeight: string;
13391339
valueChipTemplate: TemplateRef<any>;
13401340
rowDimensionHeaderTemplate: TemplateRef<IgxColumnTemplateContext>;
1341+
/** @hidden @internal */
1342+
currencyColumnSet: Set<string>
13411343
}
13421344

13431345
export interface GridSVGIcon {

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ import { IgxInputGroupComponent } from "../../input-group/input-group.component"
4848
import { fadeIn, fadeOut } from 'igniteui-angular/animations';
4949
import { Size } from '../common/enums';
5050
import { GridColumnDataType } from '../../data-operations/data-util';
51-
import { IgxPivotGridStateService } from './pivot-grid-state.service';
5251

5352
interface IDataSelectorPanel {
5453
name: string;
@@ -276,7 +275,7 @@ export class IgxPivotDataSelectorComponent {
276275
return this._grid?.pivotConfiguration.values || [];
277276
}
278277

279-
constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef, private pivotStateService: IgxPivotGridStateService) { }
278+
constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) { }
280279

281280
/**
282281
* @hidden @internal
@@ -551,6 +550,7 @@ export class IgxPivotDataSelectorComponent {
551550

552551
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
553552
const isSingleValue = this.grid.values.length === 1;
553+
let shouldRemoveFromSet: boolean = false;
554554

555555
columns.forEach(column => {
556556
const isRelevantColumn = column.field?.includes(valueMember);
@@ -559,21 +559,25 @@ export class IgxPivotDataSelectorComponent {
559559
if (isSingleValue) {
560560
if (isCountAggregator && isCurrencyColumn) {
561561
column.dataType = GridColumnDataType.Number;
562-
this.pivotStateService.addCurrencyColumn(valueMember);
563-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
562+
this.grid.currencyColumnSet.add(valueMember);
563+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
564564
column.dataType = GridColumnDataType.Currency;
565565
}
566566
} else if (isRelevantColumn) {
567567
if (isCountAggregator && isCurrencyColumn) {
568568
column.dataType = GridColumnDataType.Number;
569-
this.pivotStateService.addCurrencyColumn(valueMember);
570-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
569+
this.grid.currencyColumnSet.add(valueMember);
570+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
571571
column.dataType = GridColumnDataType.Currency;
572-
this.pivotStateService.removeCurrencyColumn(valueMember);
572+
shouldRemoveFromSet = true;
573573
}
574574
}
575575
});
576576

577+
if (shouldRemoveFromSet) {
578+
this.grid.currencyColumnSet.delete(valueMember);
579+
}
580+
577581
this.grid.pipeTrigger++;
578582
this.grid.cdr.markForCheck();
579583
}

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid-state.service.ts

Lines changed: 0 additions & 22 deletions
This file was deleted.

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import { IgxGridBaseDirective } from '../grid-base.directive';
3737
import { IgxFilteringService } from '../filtering/grid-filtering.service';
3838
import { IgxGridSelectionService } from '../selection/selection.service';
3939
import { IgxForOfSyncService, IgxForOfScrollSyncService } from '../../directives/for-of/for_of.sync.service';
40-
import { ColumnType, GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, IgxColumnTemplateContext, RowType } from '../common/grid.interface';
40+
import { ColumnType, GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, IgxColumnTemplateContext, PivotGridType, RowType } from '../common/grid.interface';
4141
import { IgxGridCRUDService } from '../common/crud.service';
4242
import { IgxGridSummaryService } from '../summaries/grid-summary.service';
4343
import { DEFAULT_PIVOT_KEYS, IDimensionsChange, IgxPivotGridValueTemplateContext, IPivotConfiguration, IPivotConfigurationChangedEventArgs, IPivotDimension, IPivotValue, IValuesChange, PivotDimensionType, IPivotUISettings, PivotRowLayoutType, PivotSummaryPosition } from './pivot-grid.interface';
@@ -103,7 +103,6 @@ import { IgxTextHighlightService } from '../../directives/text-highlight/text-hi
103103
import { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';
104104
import { IgxPivotDateDimension } from './pivot-grid-dimensions';
105105
import { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';
106-
import { IgxPivotGridStateService } from './pivot-grid-state.service';
107106

108107
let NEXT_ID = 0;
109108
const MINIMUM_COLUMN_WIDTH = 200;
@@ -199,7 +198,7 @@ const MINIMUM_COLUMN_WIDTH_SUPER_COMPACT = 104;
199198
schemas: [CUSTOM_ELEMENTS_SCHEMA]
200199
})
201200
export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,
202-
GridType, AfterViewInit, OnChanges {
201+
PivotGridType, AfterViewInit, OnChanges {
203202

204203
/**
205204
* Emitted when the dimension collection is changed via the grid chip area.
@@ -1031,7 +1030,6 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
10311030
summaryService: IgxGridSummaryService,
10321031
@Inject(LOCALE_ID) localeId: string,
10331032
platform: PlatformUtil,
1034-
private pivotStateService: IgxPivotGridStateService,
10351033
@Optional() @Inject(IgxGridTransaction) _diTransactions?: TransactionService<Transaction, State>
10361034
) {
10371035
super(
@@ -2288,6 +2286,8 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
22882286
return hierarchy;
22892287
}
22902288

2289+
/** @hidden @internal */
2290+
public currencyColumnSet: Set<string> = new Set();
22912291
protected generateColumnHierarchy(fields: Map<string, any>, data, parent = null): IgxColumnComponent[] {
22922292
let columns = [];
22932293
if (fields.size === 0) {
@@ -2296,7 +2296,7 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
22962296
let columnDataType = value.dataType || this.resolveDataTypes(data.length ? data[0][value.member] : null);
22972297

22982298
if (value.aggregate?.key?.toLowerCase() === 'count' && columnDataType === GridColumnDataType.Currency) {
2299-
this.pivotStateService.addCurrencyColumn(value.member);
2299+
this.currencyColumnSet.add(value.member);
23002300
columnDataType = GridColumnDataType.Number;
23012301
}
23022302

@@ -2322,10 +2322,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
23222322
this.values.forEach((aggregatorValue) => {
23232323
if (col.dataType === GridColumnDataType.Currency && aggregatorValue.aggregate?.key?.toLowerCase() === 'count') {
23242324
col.dataType = GridColumnDataType.Number;
2325-
this.pivotStateService.addCurrencyColumn(aggregatorValue.member);
2326-
} else if (this.pivotStateService.isCurrencyColumn(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
2325+
this.currencyColumnSet.add(aggregatorValue.member);
2326+
} else if (this.currencyColumnSet.has(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
23272327
col.dataType = GridColumnDataType.Currency;
2328-
this.pivotStateService.removeCurrencyColumn(aggregatorValue.member);
2328+
this.currencyColumnSet.delete(aggregatorValue.member);
23292329
}
23302330
})
23312331

@@ -2338,10 +2338,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
23382338
if (child.field.includes(aggregatorValue.member)) {
23392339
if (child.dataType === GridColumnDataType.Currency && aggregatorValue.aggregate?.key?.toLowerCase() === 'count') {
23402340
child.dataType = GridColumnDataType.Number;
2341-
this.pivotStateService.addCurrencyColumn(aggregatorValue.member);
2342-
} else if (this.pivotStateService.isCurrencyColumn(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
2341+
this.currencyColumnSet.add(aggregatorValue.member);
2342+
} else if (this.currencyColumnSet.has(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
23432343
child.dataType = GridColumnDataType.Currency;
2344-
this.pivotStateService.removeCurrencyColumn(aggregatorValue.member);
2344+
this.currencyColumnSet.delete(aggregatorValue.member);
23452345
}
23462346
}
23472347
})

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ import { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';
3939
import { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';
4040
import { IgxPivotRowDimensionHeaderGroupComponent } from './pivot-row-dimension-header-group.component';
4141
import { GridColumnDataType } from '../../data-operations/data-util';
42-
import { IgxPivotGridStateService } from './pivot-grid-state.service';
4342

4443
/**
4544
*
@@ -139,8 +138,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
139138
@Inject(IGX_GRID_BASE) public override grid: PivotGridType,
140139
ref: ElementRef<HTMLElement>,
141140
cdr: ChangeDetectorRef,
142-
protected renderer: Renderer2,
143-
private pivotStateService: IgxPivotGridStateService
141+
protected renderer: Renderer2
144142
) {
145143
super(ref, cdr);
146144
}
@@ -418,6 +416,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
418416

419417
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
420418
const isSingleValue = this.grid.values.length === 1;
419+
let shouldRemoveFromSet: boolean = false;
421420

422421
columns.forEach(column => {
423422
const isRelevantColumn = column.field?.includes(valueMember);
@@ -426,21 +425,25 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
426425
if (isSingleValue) {
427426
if (isCountAggregator && isCurrencyColumn) {
428427
column.dataType = GridColumnDataType.Number;
429-
this.pivotStateService.addCurrencyColumn(valueMember);
430-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
428+
this.grid.currencyColumnSet.add(valueMember);
429+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
431430
column.dataType = GridColumnDataType.Currency;
432431
}
433432
} else if (isRelevantColumn) {
434433
if (isCountAggregator && isCurrencyColumn) {
435434
column.dataType = GridColumnDataType.Number;
436-
this.pivotStateService.addCurrencyColumn(valueMember);
437-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
435+
this.grid.currencyColumnSet.add(valueMember);
436+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
438437
column.dataType = GridColumnDataType.Currency;
439-
this.pivotStateService.removeCurrencyColumn(valueMember);
438+
shouldRemoveFromSet = true;
440439
}
441440
}
442441
});
443442

443+
if (shouldRemoveFromSet) {
444+
this.grid.currencyColumnSet.delete(valueMember);
445+
}
446+
444447
this.grid.pipeTrigger++;
445448
}
446449
}

0 commit comments

Comments
 (0)