Skip to content

Commit 5621dff

Browse files
authored
Merge pull request #10393 from IgniteUI/dkamburov/child-level
chore(pivot): Change childLevels to childLevel
2 parents cc3279e + e802106 commit 5621dff

File tree

7 files changed

+91
-106
lines changed

7 files changed

+91
-106
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export interface IPivotConfiguration {
1717

1818
export interface IPivotDimension {
1919
// allow defining a hierarchy when multiple sub groups need to be extracted from single member.
20-
childLevels?: IPivotDimension[];
20+
childLevel?: IPivotDimension;
2121
// field name which to use to extract value or function that extract the value.
2222
member: string | ((data: any) => any);
2323
// Enables/Disables a particular dimension from pivot structure.

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

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,18 @@ describe('Pivot pipes', () => {
2323
columns: [{
2424
member: () => 'All',
2525
enabled: true,
26-
childLevels: [{
26+
childLevel: {
2727
member: 'Country',
28-
enabled: true,
29-
childLevels: []
30-
}]
28+
enabled: true
29+
}
3130
}],
3231
rows: [{
3332
member: () => 'All',
3433
enabled: true,
35-
childLevels: [
36-
{
37-
member: (d) => d.ProductCategory,
38-
enabled: true,
39-
childLevels: []
40-
}
41-
]
34+
childLevel: {
35+
member: (d) => d.ProductCategory,
36+
enabled: true
37+
}
4238
}],
4339
values: [
4440
{
@@ -67,8 +63,7 @@ describe('Pivot pipes', () => {
6763
const config = Object.assign({}, pivotConfigHierarchy);
6864
config.rows = [{
6965
member: 'ProductCategory',
70-
enabled: true,
71-
childLevels: []
66+
enabled: true
7267
}];
7368
const rowPipeResult = rowPipe.transform(data, config , expansionStates);
7469
expect(rowPipeResult).toEqual([
@@ -222,13 +217,11 @@ describe('Pivot pipes', () => {
222217
const config = Object.assign({}, pivotConfigHierarchy);
223218
config.rows = [{
224219
member: 'ProductCategory',
225-
enabled: true,
226-
childLevels: []
220+
enabled: true
227221
},
228222
{
229223
member: 'Date',
230-
enabled: true,
231-
childLevels: []
224+
enabled: true
232225
}];
233226
const rowPipeResult = rowPipe.transform(data, config, expansionStates);
234227
const rowStatePipeResult = rowStatePipe.transform(rowPipeResult, config, expansionStates);
@@ -299,20 +292,18 @@ describe('Pivot pipes', () => {
299292
config.rows = [{
300293
member: () => 'AllProd',
301294
enabled: true,
302-
childLevels: [{
303-
member: 'ProductCategory',
304-
enabled: true,
305-
childLevels: []
306-
}]
295+
childLevel: {
296+
member: 'ProductCategory',
297+
enabled: true
298+
}
307299
},
308300
{
309301
member: () => 'AllDate',
310302
enabled: true,
311-
childLevels: [{
312-
member: 'Date',
313-
enabled: true,
314-
childLevels: []
315-
}]
303+
childLevel: {
304+
member: 'Date',
305+
enabled: true
306+
}
316307
}];
317308
const rowPipeResult = rowPipe.transform(data, config, expansionStates);
318309
const rowStatePipeResult = rowStatePipe.transform(rowPipeResult, config, expansionStates);
@@ -339,13 +330,11 @@ describe('Pivot pipes', () => {
339330
const config = Object.assign({}, pivotConfigHierarchy);
340331
config.columns = [{
341332
member: 'Country',
342-
enabled: true,
343-
childLevels:[]
333+
enabled: true
344334
},
345335
{
346336
member: 'Date',
347-
enabled: true,
348-
childLevels: []
337+
enabled: true
349338
}];
350339
const rowPipeResult = rowPipe.transform(data, config, new Map<any, boolean>());
351340
const rowStatePipeResult = rowStatePipe.transform(rowPipeResult, pivotConfigHierarchy, new Map<any, boolean>());
@@ -365,18 +354,15 @@ describe('Pivot pipes', () => {
365354
const config = Object.assign({}, pivotConfigHierarchy);
366355
config.columns = [{
367356
member: 'Country',
368-
enabled: true,
369-
childLevels:[]
357+
enabled: true
370358
},
371359
{
372360
member: 'SellerName',
373-
enabled: true,
374-
childLevels:[]
361+
enabled: true
375362
},
376363
{
377364
member: 'Date',
378-
enabled: true,
379-
childLevels: []
365+
enabled: true
380366
}];
381367
const rowPipeResult = rowPipe.transform(data, config, new Map<any, boolean>());
382368
const rowStateResult = rowStatePipe.transform(rowPipeResult, config, new Map<any, boolean>());

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -94,21 +94,17 @@ export class IgxPivotGridTestBaseComponent {
9494
this.pivotConfigHierarchy = {
9595
columns: [{
9696
member: 'Country',
97-
enabled: true,
98-
childLevels: []
97+
enabled: true
9998
},
10099
],
101100
rows: [{
102101
member: () => 'All',
103102
enabled: true,
104-
childLevels: [
105-
{
106-
fieldName: 'ProductCategory',
107-
member: (data) => data.ProductCategory,
108-
enabled: true,
109-
childLevels: []
110-
}
111-
]
103+
childLevel: {
104+
fieldName: 'ProductCategory',
105+
member: (data) => data.ProductCategory,
106+
enabled: true
107+
}
112108
}],
113109
values: [
114110
{

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export class IgxPivotRowComponent extends IgxRowDirective<IgxPivotGridComponent>
126126
ref.instance.header = header;
127127
ref.instance.width = MINIMUM_COLUMN_WIDTH + 'px';
128128
(ref as any).instance._vIndex = this.grid.columns.length + index + this.index * this.grid.pivotConfiguration.rows.length;
129-
if (dim.childLevels && dim.childLevels.length > 0 && lvl >= PivotUtil.getTotalLvl(this.rowData)) {
129+
if (dim.childLevel && lvl >= PivotUtil.getTotalLvl(this.rowData)) {
130130
ref.instance.headerTemplate = this.headerTemplate;
131131
} else if (lvl < PivotUtil.getTotalLvl(this.rowData)) {
132132
ref.instance.headerTemplate = this.headerTemplateGray;

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

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
import { cloneValue } from '../../core/utils';
3-
import { IPivotDimension, IPivotKeys, IPivotValue, PivotDimensionType } from './pivot-grid.interface';
3+
import { IPivotConfiguration, IPivotDimension, IPivotKeys, IPivotValue, PivotDimensionType } from './pivot-grid.interface';
44

55
export class PivotUtil {
66
public static getFieldsHierarchy(data: any[], dimensions: IPivotDimension[],
@@ -26,25 +26,32 @@ export class PivotUtil {
2626
return typeof dim.member === 'string' ? recData[dim.member] : dim.member.call(null, recData);
2727
}
2828

29-
public static getDimensionDepth(dim) {
29+
public static getDimensionDepth(dim: IPivotDimension): number {
3030
let lvl = 0;
31-
while(dim.childLevels && dim.childLevels.length > 0) {
31+
while(dim.childLevel) {
3232
lvl++;
33-
dim = dim.childLevels[0];
33+
dim = dim.childLevel;
3434
}
3535
return lvl;
3636
}
3737

38-
public static getDimensionLevel(dim, rec, pivotKeys) {
38+
public static getDimensionLevel(dim: IPivotDimension, rec: any, pivotKeys: IPivotKeys) {
3939
let level = rec[dim.fieldName + '_' + pivotKeys.level];
40-
while(dim.childLevels && dim.childLevels.length > 0 && level === undefined) {
41-
dim = dim.childLevels[0];
40+
while(dim.childLevel && level === undefined) {
41+
dim = dim.childLevel;
4242
level = rec[dim.fieldName + '_' + pivotKeys.level];
4343
}
4444
return { level, fieldName: dim.fieldName, dimension: dim };
4545
}
4646

47-
public static flattenHierarchy(records, config, dim, expansionStates, pivotKeys, lvl, prevDims, currDimLvl) {
47+
public static flattenHierarchy(records: any[],
48+
config: IPivotConfiguration,
49+
dim: IPivotDimension,
50+
expansionStates: any,
51+
pivotKeys: IPivotKeys,
52+
lvl: number,
53+
prevDims: IPivotDimension[],
54+
currDimLvl: number) {
4855
const data = records;
4956
const defaultExpandState = true;
5057
for (let i = 0; i < data.length; i++) {
@@ -62,13 +69,13 @@ export class PivotUtil {
6269
rec[field + '_' + pivotKeys.records].length > 0 &&
6370
isExpanded && lvl > 0) {
6471
let dimData = rec[field + '_' + pivotKeys.records];
65-
if (dim.childLevels && dim.childLevels.length > 0 ) {
72+
if (dim.childLevel) {
6673
if (PivotUtil.getDimensionDepth(dim) > 1) {
67-
dimData = this.flattenHierarchy(dimData, config, dim.childLevels[0],
74+
dimData = this.flattenHierarchy(dimData, config, dim.childLevel,
6875
expansionStates, pivotKeys, lvl - 1, prevDims, currDimLvl + 1);
6976
} else {
7077
dimData.forEach(d => {
71-
d[dim.childLevels[0].fieldName + '_' + pivotKeys.level] = currDimLvl + 1;
78+
d[dim.childLevel.fieldName + '_' + pivotKeys.level] = currDimLvl + 1;
7279
});
7380
}
7481
}
@@ -82,7 +89,7 @@ export class PivotUtil {
8289
let prevDimName = prevDim.fieldName;
8390
prevDimRecs = rec[prevDimName + '_' + pivotKeys.records];
8491
if(!prevDimRecs) {
85-
prevDimName = prevDim.childLevels[0].fieldName;
92+
prevDimName = prevDim.childLevel.fieldName;
8693
prevDimRecs = rec[prevDimName + '_' + pivotKeys.records];
8794
}
8895
prevDimLevel = rec[prevDimName + '_' + pivotKeys.level];
@@ -122,8 +129,8 @@ export class PivotUtil {
122129
objValue['value'] = value;
123130
objValue['dimension'] = col;
124131
values.push(objValue);
125-
if (col.childLevels != null && col.childLevels.length > 0) {
126-
const childValues = this.extractValuesForRow(col.childLevels, recData, pivotKeys);
132+
if (col.childLevel) {
133+
const childValues = this.extractValuesForRow([col.childLevel], recData, pivotKeys);
127134
values[i].children = childValues;
128135
}
129136
if (recData.level && recData.level > 0) {
@@ -164,9 +171,9 @@ export class PivotUtil {
164171
const newArr = arr.reduce((acc, item) => {
165172
item.level = lvl;
166173
acc.push(item);
167-
if (Array.isArray(item.childLevels) && item.childLevels.length > 0) {
174+
if (item.childLevel) {
168175
item.expandable = true;
169-
acc = acc.concat(this.flatten(item.childLevels, lvl + 1));
176+
acc = acc.concat(this.flatten([item.childLevel], lvl + 1));
170177
}
171178
return acc;
172179
}, []);

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ export class PivotGridNoopSampleComponent {
3434

3535
{
3636
member: 'Country',
37-
enabled: true,
38-
childLevels: []
37+
enabled: true
3938
}
4039
]
4140
,
@@ -44,12 +43,11 @@ export class PivotGridNoopSampleComponent {
4443
fieldName: 'All',
4544
member: () => 'AllProd',
4645
enabled: true,
47-
childLevels: [{
46+
childLevel: {
4847
fieldName: 'ProductCategory',
4948
member: 'ProductCategory',
50-
enabled: true,
51-
childLevels: []
52-
}]
49+
enabled: true
50+
}
5351
}
5452
],
5553
values: [

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

Lines changed: 33 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -23,41 +23,39 @@ export class PivotGridSampleComponent {
2323

2424
public pivotConfigHierarchy: IPivotConfiguration = {
2525
columns: [
26-
{
27-
member: 'Country',
28-
enabled: true,
29-
childLevels: []
30-
}
31-
],
32-
rows: [
33-
{
34-
member: () => 'AllProd',
35-
enabled: true,
36-
childLevels: [{
37-
member: 'ProductCategory',
38-
enabled: true,
39-
childLevels: []
40-
}]
41-
},
42-
{
43-
member: () => 'AllDate',
44-
enabled: true,
45-
childLevels: [{
46-
member: 'Date',
47-
enabled: true,
48-
childLevels: []
49-
}]
50-
},
51-
{
52-
member: () => 'AllSel',
53-
enabled: true,
54-
childLevels: [{
55-
member: 'SellerName',
56-
enabled: true,
57-
childLevels: []
58-
}]
59-
}
60-
],
26+
27+
{
28+
member: 'Country',
29+
enabled: true
30+
}
31+
]
32+
,
33+
rows: [
34+
{
35+
member: () => 'AllProd',
36+
enabled: true,
37+
childLevel: {
38+
member: 'ProductCategory',
39+
enabled: true
40+
}
41+
},
42+
{
43+
member: () => 'AllDate',
44+
enabled: true,
45+
childLevel: {
46+
member: 'Date',
47+
enabled: true
48+
}
49+
},
50+
{
51+
member: () => 'AllSel',
52+
enabled: true,
53+
childLevel: {
54+
member: 'SellerName',
55+
enabled: true
56+
}
57+
}
58+
],
6159
values: [
6260
{
6361
member: 'UnitsSold',

0 commit comments

Comments
 (0)