Skip to content

Commit 6cd017b

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

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;
@@ -252,7 +251,7 @@ export class IgxPivotDataSelectorComponent {
252251
return this._grid?.pivotConfiguration.values || [];
253252
}
254253

255-
constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef, private pivotStateService: IgxPivotGridStateService) { }
254+
constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) { }
256255

257256
/**
258257
* @hidden @internal
@@ -527,6 +526,7 @@ export class IgxPivotDataSelectorComponent {
527526

528527
const isCountAggregator = this.value.aggregate.key.toLowerCase() === 'count';
529528
const isSingleValue = this.grid.values.length === 1;
529+
let shouldRemoveFromSet: boolean = false;
530530

531531
columns.forEach(column => {
532532
const isRelevantColumn = column.field?.includes(valueMember);
@@ -535,21 +535,25 @@ export class IgxPivotDataSelectorComponent {
535535
if (isSingleValue) {
536536
if (isCountAggregator && isCurrencyColumn) {
537537
column.dataType = GridColumnDataType.Number;
538-
this.pivotStateService.addCurrencyColumn(valueMember);
539-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
538+
this.grid.currencyColumnSet.add(valueMember);
539+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
540540
column.dataType = GridColumnDataType.Currency;
541541
}
542542
} else if (isRelevantColumn) {
543543
if (isCountAggregator && isCurrencyColumn) {
544544
column.dataType = GridColumnDataType.Number;
545-
this.pivotStateService.addCurrencyColumn(valueMember);
546-
} else if (this.pivotStateService.isCurrencyColumn(valueMember)) {
545+
this.grid.currencyColumnSet.add(valueMember);
546+
} else if (this.grid.currencyColumnSet.has(valueMember)) {
547547
column.dataType = GridColumnDataType.Currency;
548-
this.pivotStateService.removeCurrencyColumn(valueMember);
548+
shouldRemoveFromSet = true;
549549
}
550550
}
551551
});
552552

553+
if (shouldRemoveFromSet) {
554+
this.grid.currencyColumnSet.delete(valueMember);
555+
}
556+
553557
this.grid.pipeTrigger++;
554558
this.grid.cdr.markForCheck();
555559
}

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
@@ -36,7 +36,7 @@ import { IgxGridBaseDirective } from '../grid-base.directive';
3636
import { IgxFilteringService } from '../filtering/grid-filtering.service';
3737
import { IgxGridSelectionService } from '../selection/selection.service';
3838
import { IgxForOfSyncService, IgxForOfScrollSyncService } from '../../directives/for-of/for_of.sync.service';
39-
import { ColumnType, GridType, IGX_GRID_BASE, IgxColumnTemplateContext, RowType } from '../common/grid.interface';
39+
import { ColumnType, GridType, IGX_GRID_BASE, IgxColumnTemplateContext, PivotGridType, RowType } from '../common/grid.interface';
4040
import { IgxGridCRUDService } from '../common/crud.service';
4141
import { IgxGridSummaryService } from '../summaries/grid-summary.service';
4242
import { DEFAULT_PIVOT_KEYS, IDimensionsChange, IgxPivotGridValueTemplateContext, IPivotConfiguration, IPivotConfigurationChangedEventArgs, IPivotDimension, IPivotValue, IValuesChange, PivotDimensionType, IPivotUISettings, PivotRowLayoutType, PivotSummaryPosition } from './pivot-grid.interface';
@@ -102,7 +102,6 @@ import { IgxTextHighlightService } from '../../directives/text-highlight/text-hi
102102
import { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';
103103
import { IgxPivotDateDimension } from './pivot-grid-dimensions';
104104
import { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';
105-
import { IgxPivotGridStateService } from './pivot-grid-state.service';
106105

107106
let NEXT_ID = 0;
108107
const MINIMUM_COLUMN_WIDTH = 200;
@@ -197,7 +196,7 @@ const MINIMUM_COLUMN_WIDTH_SUPER_COMPACT = 104;
197196
schemas: [CUSTOM_ELEMENTS_SCHEMA]
198197
})
199198
export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,
200-
GridType, AfterViewInit, OnChanges {
199+
PivotGridType, AfterViewInit, OnChanges {
201200

202201
/**
203202
* Emitted when the dimension collection is changed via the grid chip area.
@@ -1029,7 +1028,6 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
10291028
summaryService: IgxGridSummaryService,
10301029
@Inject(LOCALE_ID) localeId: string,
10311030
platform: PlatformUtil,
1032-
private pivotStateService: IgxPivotGridStateService,
10331031
@Optional() @Inject(IgxGridTransaction) _diTransactions?: TransactionService<Transaction, State>
10341032
) {
10351033
super(
@@ -2277,6 +2275,8 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
22772275
return hierarchy;
22782276
}
22792277

2278+
/** @hidden @internal */
2279+
public currencyColumnSet: Set<string> = new Set();
22802280
protected generateColumnHierarchy(fields: Map<string, any>, data, parent = null): IgxColumnComponent[] {
22812281
let columns = [];
22822282
if (fields.size === 0) {
@@ -2285,7 +2285,7 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
22852285
let columnDataType = value.dataType || this.resolveDataTypes(data.length ? data[0][value.member] : null);
22862286

22872287
if (value.aggregate?.key?.toLowerCase() === 'count' && columnDataType === GridColumnDataType.Currency) {
2288-
this.pivotStateService.addCurrencyColumn(value.member);
2288+
this.currencyColumnSet.add(value.member);
22892289
columnDataType = GridColumnDataType.Number;
22902290
}
22912291

@@ -2311,10 +2311,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
23112311
this.values.forEach((aggregatorValue) => {
23122312
if (col.dataType === GridColumnDataType.Currency && aggregatorValue.aggregate?.key?.toLowerCase() === 'count') {
23132313
col.dataType = GridColumnDataType.Number;
2314-
this.pivotStateService.addCurrencyColumn(aggregatorValue.member);
2315-
} else if (this.pivotStateService.isCurrencyColumn(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
2314+
this.currencyColumnSet.add(aggregatorValue.member);
2315+
} else if (this.currencyColumnSet.has(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
23162316
col.dataType = GridColumnDataType.Currency;
2317-
this.pivotStateService.removeCurrencyColumn(aggregatorValue.member);
2317+
this.currencyColumnSet.delete(aggregatorValue.member);
23182318
}
23192319
})
23202320

@@ -2327,10 +2327,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
23272327
if (child.field.includes(aggregatorValue.member)) {
23282328
if (child.dataType === GridColumnDataType.Currency && aggregatorValue.aggregate?.key?.toLowerCase() === 'count') {
23292329
child.dataType = GridColumnDataType.Number;
2330-
this.pivotStateService.addCurrencyColumn(aggregatorValue.member);
2331-
} else if (this.pivotStateService.isCurrencyColumn(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
2330+
this.currencyColumnSet.add(aggregatorValue.member);
2331+
} else if (this.currencyColumnSet.has(aggregatorValue.member) && aggregatorValue.aggregate?.key?.toLowerCase() !== 'count') {
23322332
child.dataType = GridColumnDataType.Currency;
2333-
this.pivotStateService.removeCurrencyColumn(aggregatorValue.member);
2333+
this.currencyColumnSet.delete(aggregatorValue.member);
23342334
}
23352335
}
23362336
})

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
*
@@ -140,8 +139,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
140139
@Inject(IGX_GRID_BASE) public override grid: PivotGridType,
141140
ref: ElementRef<HTMLElement>,
142141
cdr: ChangeDetectorRef,
143-
protected renderer: Renderer2,
144-
private pivotStateService: IgxPivotGridStateService
142+
protected renderer: Renderer2
145143
) {
146144
super(ref, cdr);
147145
}
@@ -419,6 +417,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem
419417

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

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

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

0 commit comments

Comments
 (0)