Skip to content

Commit f8420b7

Browse files
MKirovaMKirova
authored andcommitted
Ensure unsorted order of previous dimensions is retained. Ensure original collection is not poluted.
1 parent a81fa9c commit f8420b7

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import { DataUtil } from '../../data-operations/data-util';
44
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
55
import { IFilteringStrategy } from '../../data-operations/filtering-strategy';
66
import { IPivotConfiguration, IPivotDimension, IPivotKeys } from './pivot-grid.interface';
7-
import { DefaultPivotSortingStrategy, PivotColumnDimensionsStrategy, PivotRowDimensionsStrategy } from '../../data-operations/pivot-strategy';
7+
import { DefaultPivotSortingStrategy,
8+
PivotColumnDimensionsStrategy, PivotRowDimensionsStrategy } from '../../data-operations/pivot-strategy';
89
import { PivotUtil } from './pivot-util';
910
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
1011
import { IGridSortingStrategy } from '../../data-operations/sorting-strategy';
11-
import { ISortingExpression } from '../../data-operations/sorting-expression.interface';
12+
import { ISortingExpression, SortingDirection } from '../../data-operations/sorting-expression.interface';
1213
import { GridBaseAPIService, IgxGridBaseDirective } from '../hierarchical-grid/public_api';
1314
import { GridType } from '../common/grid.interface';
1415
/**
@@ -154,12 +155,18 @@ export class IgxPivotGridSortingPipe implements PipeTransform {
154155
fieldName: x.memberName,
155156
strategy: DefaultPivotSortingStrategy.instance()
156157
});
158+
} else {
159+
expressions.push({
160+
dir: SortingDirection.None,
161+
fieldName: x.memberName,
162+
strategy: DefaultPivotSortingStrategy.instance()
163+
});
157164
}
158165
});
159166
if (!expressions.length) {
160167
result = collection;
161168
} else {
162-
result = DataUtil.sort(cloneArray(collection), expressions, sorting, this.gridAPI.grid);
169+
result = DataUtil.sort(cloneArray(collection, true), expressions, sorting, this.gridAPI.grid);
163170
}
164171

165172
return result;

src/app/pivot-grid/pivot-grid.sample.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,14 @@ export class PivotGridSampleComponent {
3636
enabled: true
3737
},
3838
{
39-
memberName: 'AllDate',
40-
memberFunction: () => 'AllDate',
41-
enabled: true,
42-
childLevel: {
43-
memberName: 'Years',
44-
memberFunction: (rec) => {
45-
const recordValue = rec['Date'];
46-
return recordValue ? (new Date(recordValue)).getFullYear().toString() : rec['Years'];
47-
},
48-
enabled: true,
49-
childLevel: {
50-
memberName: 'Date',
51-
dataType: GridColumnDataType.Date,
52-
enabled: true
53-
}
54-
}
39+
memberName: 'SellerName',
40+
enabled: true
5541
},
42+
{
43+
memberName: 'Date',
44+
dataType: GridColumnDataType.Date,
45+
enabled: true
46+
}
5647
],
5748
values: [
5849
{
@@ -98,6 +89,10 @@ export class PivotGridSampleComponent {
9889
ProductCategory: 'Accessories', UnitPrice: 85.58, SellerName: 'David Haley',
9990
Country: 'UK', City: 'London', Date: '04/07/2012', UnitsSold: 293
10091
},
92+
{
93+
ProductCategory: 'Accessories', UnitPrice: 85.58, SellerName: 'David Haley',
94+
Country: 'UK', City: 'London', Date: '04/07/2011', UnitsSold: 293
95+
},
10196
{
10297
ProductCategory: 'Components', UnitPrice: 18.13, SellerName: 'John Smith',
10398
Country: 'Japan', City: 'Yokohama', Date: '12/08/2012', UnitsSold: 240

0 commit comments

Comments
 (0)