Skip to content

Commit ef82131

Browse files
authored
Merge pull request #11799 from IgniteUI/mdragnev/fix-11738
fix(pivot): Set correct data type when creating custom IgxPivotDateDi…
2 parents fa8c887 + 85db842 commit ef82131

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

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

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { IGridResourceStrings } from '../../core/i18n/grid-resources';
22
import { CurrentResourceStrings } from '../../core/i18n/resources';
3+
import { GridColumnDataType } from '../../data-operations/data-util';
34
import { IPivotDimension } from './pivot-grid.interface';
45
import { PivotUtil } from './pivot-util';
56

@@ -46,6 +47,11 @@ export interface IPivotDateDimensionOptions {
4647
export class IgxPivotDateDimension implements IPivotDimension {
4748
/** Enables/Disables a particular dimension from pivot structure. */
4849
public enabled = true;
50+
51+
/**
52+
* Gets/Sets data type
53+
*/
54+
public dataType?: GridColumnDataType;
4955

5056
/** Default options used for initialization. */
5157
public defaultOptions = {
@@ -94,6 +100,9 @@ export class IgxPivotDateDimension implements IPivotDimension {
94100
return;
95101
}
96102

103+
this.dataType = GridColumnDataType.Date;
104+
inBaseDimension.dataType = GridColumnDataType.Date;
105+
97106
const baseDimension = options.fullDate ? inBaseDimension : null;
98107
const monthDimensionDef: IPivotDimension = {
99108
memberName: 'Months',
@@ -117,7 +126,7 @@ export class IgxPivotDateDimension implements IPivotDimension {
117126
};
118127
const quarterDimension = options.quarters ? quarterDimensionDef : monthDimension;
119128

120-
const yearsDimensionDef = {
129+
const yearsDimensionDef: IPivotDimension = {
121130
memberName: 'Years',
122131
memberFunction: (rec) => {
123132
const recordValue = PivotUtil.extractValueFromDimension(inBaseDimension, rec);

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

+46-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
22
import { By } from '@angular/platform-browser';
33
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
4-
import { FilteringExpressionsTree, FilteringLogic, IgxPivotGridComponent, IgxPivotRowDimensionHeaderGroupComponent, IgxStringFilteringOperand } from 'igniteui-angular';
4+
import { FilteringExpressionsTree, FilteringLogic, GridColumnDataType, IgxPivotGridComponent, IgxPivotRowDimensionHeaderGroupComponent, IgxStringFilteringOperand } from 'igniteui-angular';
55
import { IgxChipComponent } from '../../chips/chip.component';
66
import { IgxChipsAreaComponent } from '../../chips/chips-area.component';
77
import { DefaultPivotSortingStrategy } from '../../data-operations/pivot-sort-strategy';
@@ -1130,6 +1130,51 @@ describe('IgxPivotGrid #pivotGrid', () => {
11301130
expect(pivotGrid.dimensionsSortingExpressions).toEqual(expectedExpressions);
11311131
});
11321132

1133+
it('should apply correct sorting for IgxPivotDateDimension', () => {
1134+
const pivotGrid = fixture.componentInstance.pivotGrid;
1135+
1136+
pivotGrid.pivotConfiguration.columns = [
1137+
new IgxPivotDateDimension(
1138+
{
1139+
memberName: 'Date',
1140+
memberFunction: (data) => {
1141+
return data['Date'];
1142+
},
1143+
enabled: true,
1144+
dataType: GridColumnDataType.Date
1145+
},
1146+
{
1147+
total: false,
1148+
years: false,
1149+
quarters: false,
1150+
months: false,
1151+
fullDate: true
1152+
}
1153+
)
1154+
];
1155+
pivotGrid.notifyDimensionChange(true);
1156+
fixture.detectChanges();
1157+
1158+
const headerRow = fixture.nativeElement.querySelector('igx-pivot-header-row');
1159+
const colChip = headerRow.querySelector('igx-chip[id="Date"]');
1160+
1161+
//sort asc
1162+
colChip.click();
1163+
fixture.detectChanges();
1164+
1165+
let colHeaders = pivotGrid.columns.filter(x => x.level === 0).map(x => x.header);
1166+
let expected = ['01/05/2019', '01/06/2020', '02/19/2020', '05/12/2020', '01/01/2021', '04/07/2021', '12/08/2021']
1167+
expect(colHeaders).toEqual(expected);
1168+
1169+
// sort desc
1170+
colChip.click();
1171+
fixture.detectChanges();
1172+
1173+
colHeaders = pivotGrid.columns.filter(x => x.level === 0).map(x => x.header);
1174+
expected = ['12/08/2021', '04/07/2021', '01/01/2021', '05/12/2020', '02/19/2020', '01/06/2020', '01/05/2019'];
1175+
expect(colHeaders).toEqual(expected);
1176+
});
1177+
11331178
it('should sort on column for single row dimension.', () => {
11341179
const pivotGrid = fixture.componentInstance.pivotGrid;
11351180
let headerCell = GridFunctions.getColumnHeader('USA-UnitsSold', fixture);

0 commit comments

Comments
 (0)