@@ -22,7 +22,7 @@ export class PivotUtil {
22
22
const hierarchy = new Map < string , any > ( ) ;
23
23
for ( const rec of data ) {
24
24
const vals = dimensionType === PivotDimensionType . Column ?
25
- this . extractValuesForColumn ( dimensions , rec ) :
25
+ this . extractValuesForColumn ( dimensions , rec , pivotKeys ) :
26
26
this . extractValuesForRow ( dimensions , rec , pivotKeys ) ;
27
27
for ( const [ key , val ] of vals ) { // this should go in depth also vals.children
28
28
if ( hierarchy . get ( val . value ) != null ) {
@@ -66,10 +66,10 @@ export class PivotUtil {
66
66
}
67
67
68
68
public static getDimensionLevel ( dim : IPivotDimension , rec : any , pivotKeys : IPivotKeys ) {
69
- let level = rec [ dim . memberName + '_' + pivotKeys . level ] ;
69
+ let level = rec [ dim . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] ;
70
70
while ( dim . childLevel && level === undefined ) {
71
71
dim = dim . childLevel ;
72
- level = rec [ dim . memberName + '_' + pivotKeys . level ] ;
72
+ level = rec [ dim . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] ;
73
73
}
74
74
return { level, dimension : dim } ;
75
75
}
@@ -90,49 +90,49 @@ export class PivotUtil {
90
90
if ( ! field ) {
91
91
continue ;
92
92
}
93
- rec [ field + '_' + pivotKeys . level ] = currDimLvl ;
93
+ rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . level ] = currDimLvl ;
94
94
const expansionRowKey = PivotUtil . getRecordKey ( rec , dim , prevDims , pivotKeys ) ;
95
95
const isExpanded = expansionStates . get ( expansionRowKey ) === undefined ?
96
96
defaultExpandState :
97
97
expansionStates . get ( expansionRowKey ) ;
98
- if ( rec [ field + '_' + pivotKeys . records ] &&
99
- rec [ field + '_' + pivotKeys . records ] . length > 0 &&
98
+ if ( rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] &&
99
+ rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] . length > 0 &&
100
100
isExpanded && lvl > 0 ) {
101
- let dimData = rec [ field + '_' + pivotKeys . records ] ;
101
+ let dimData = rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] ;
102
102
if ( dim . childLevel ) {
103
103
if ( PivotUtil . getDimensionDepth ( dim ) > 1 ) {
104
104
dimData = this . flattenHierarchy ( dimData , config , dim . childLevel ,
105
105
expansionStates , defaultExpandState , pivotKeys , lvl - 1 , prevDims , currDimLvl + 1 ) ;
106
106
} else {
107
107
dimData . forEach ( d => {
108
- d [ dim . childLevel . memberName + '_' + pivotKeys . level ] = currDimLvl + 1 ;
108
+ d [ dim . childLevel . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] = currDimLvl + 1 ;
109
109
} ) ;
110
110
}
111
111
}
112
112
113
113
let prevDimRecs = [ ] ;
114
- const dimLevel = rec [ field + '_' + pivotKeys . level ] ;
114
+ const dimLevel = rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . level ] ;
115
115
let prevDimLevel ;
116
116
let shouldConcat = true ;
117
117
const prevDim = prevDims ? prevDims [ prevDims . length - 1 ] : null ;
118
118
if ( prevDim ) {
119
119
let prevDimName = prevDim . memberName ;
120
- prevDimRecs = rec [ prevDimName + '_' + pivotKeys . records ] ;
120
+ prevDimRecs = rec [ prevDimName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] ;
121
121
if ( ! prevDimRecs ) {
122
122
prevDimName = prevDim . childLevel . memberName ;
123
- prevDimRecs = rec [ prevDimName + '_' + pivotKeys . records ] ;
123
+ prevDimRecs = rec [ prevDimName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] ;
124
124
}
125
- prevDimLevel = rec [ prevDimName + '_' + pivotKeys . level ] ;
125
+ prevDimLevel = rec [ prevDimName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] ;
126
126
shouldConcat = ! ! rec [ field ] && ( prevDimLevel === undefined || prevDimLevel >= dimLevel ) ;
127
127
}
128
128
dimData . forEach ( d => {
129
129
if ( prevDims && prevDims . length > 0 ) {
130
130
if ( ! shouldConcat ) {
131
- d [ dim . memberName + '_' + pivotKeys . level ] = currDimLvl ;
131
+ d [ dim . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] = currDimLvl ;
132
132
}
133
133
prevDims . forEach ( prev => {
134
134
const dimInfo = PivotUtil . getDimensionLevel ( prev , rec , pivotKeys ) ;
135
- d [ dimInfo . dimension . memberName + '_' + pivotKeys . level ] = dimInfo . level ;
135
+ d [ dimInfo . dimension . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] = dimInfo . level ;
136
136
} ) ;
137
137
}
138
138
} ) ;
@@ -153,9 +153,9 @@ export class PivotUtil {
153
153
leafDim = leafDim . childLevel ;
154
154
currLvl ++ ;
155
155
}
156
- rec [ leafDim . memberName + '_' + pivotKeys . level ] = currLvl ;
156
+ rec [ leafDim . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . level ] = currLvl ;
157
157
if ( leafDim . memberName !== field ) {
158
- delete rec [ field + '_' + pivotKeys . level ] ;
158
+ delete rec [ field + pivotKeys . rowDimensionSeparator + pivotKeys . level ] ;
159
159
}
160
160
}
161
161
}
@@ -184,14 +184,14 @@ export class PivotUtil {
184
184
return values ;
185
185
}
186
186
187
- public static extractValuesForColumn ( dims : IPivotDimension [ ] , recData : any , path = [ ] ) {
187
+ public static extractValuesForColumn ( dims : IPivotDimension [ ] , recData : any , pivotKeys : IPivotKeys , path = [ ] ) {
188
188
const vals = new Map < string , any > ( ) ;
189
189
let lvlCollection = vals ;
190
190
const flattenedDims = this . flatten ( dims ) ;
191
191
for ( const col of flattenedDims ) {
192
192
const value = this . extractValueFromDimension ( col , recData ) ;
193
193
path . push ( value ) ;
194
- const newValue = path . join ( '-' ) ;
194
+ const newValue = path . join ( pivotKeys . columnDimensionSeparator ) ;
195
195
const newObj = { value : newValue , expandable : col . expandable , children : null , dimension : col } ;
196
196
if ( ! newObj . children ) {
197
197
newObj . children = new Map < string , any > ( ) ;
@@ -258,12 +258,12 @@ export class PivotUtil {
258
258
const prevRowDim = prevRowDimsIter . pop ( ) ;
259
259
const prevRowField = prevRowDim . memberName ;
260
260
for ( const sibling of siblingData ) {
261
- const childCollection = sibling [ prevRowField + '_' + pivotKeys . records ] || [ ] ;
261
+ const childCollection = sibling [ prevRowField + pivotKeys . rowDimensionSeparator + pivotKeys . records ] || [ ] ;
262
262
for ( const child of childCollection ) {
263
263
if ( ! child [ pivotKeys . records ] ) {
264
264
continue ;
265
265
}
266
- child [ row . memberName + '_' + pivotKeys . records ] = [ ] ;
266
+ child [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] = [ ] ;
267
267
const keys = Object . assign ( { } , pivotKeys ) as any ;
268
268
keys [ row . memberName ] = row . memberName ;
269
269
const hierarchyFields2 = PivotUtil
@@ -274,16 +274,16 @@ export class PivotUtil {
274
274
child [ row . memberName ] = sibling [ row . memberName ] ;
275
275
// add children to current level if dimensions have same depth
276
276
for ( const sib of siblingData2 ) {
277
- if ( sib [ row . memberName + '_' + pivotKeys . records ] ) {
278
- child [ row . memberName + '_' + pivotKeys . records ] =
279
- child [ row . memberName + '_' + pivotKeys . records ]
280
- . concat ( sib [ row . memberName + '_' + pivotKeys . records ] ) ;
277
+ if ( sib [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] ) {
278
+ child [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] =
279
+ child [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ]
280
+ . concat ( sib [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] ) ;
281
281
child [ row . memberName ] = sib [ row . memberName ] ;
282
282
}
283
283
}
284
284
} else {
285
285
// otherwise overwrite direct child collection
286
- child [ row . memberName + '_' + pivotKeys . records ] = siblingData2 ;
286
+ child [ row . memberName + pivotKeys . rowDimensionSeparator + pivotKeys . records ] = siblingData2 ;
287
287
}
288
288
PivotUtil . processSiblingProperties ( child , siblingData2 , keys ) ;
289
289
}
@@ -307,7 +307,7 @@ export class PivotUtil {
307
307
if ( h [ pivotKeys . records ] ) {
308
308
obj [ pivotKeys . records ] = this . getDirectLeafs ( h [ pivotKeys . records ] , pivotKeys ) ;
309
309
}
310
- obj [ field + '_' + pivotKeys . records ] = h [ pivotKeys . records ] ;
310
+ obj [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] = h [ pivotKeys . records ] ;
311
311
obj = { ...obj , ...h [ pivotKeys . aggregations ] } ;
312
312
obj [ pivotKeys . level ] = level ;
313
313
flatData . push ( obj ) ;
@@ -321,9 +321,9 @@ export class PivotUtil {
321
321
}
322
322
}
323
323
obj [ pivotKeys . records ] = this . getDirectLeafs ( nestedData , pivotKeys ) ;
324
- obj [ field + '_' + pivotKeys . records ] = nestedData ;
324
+ obj [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] = nestedData ;
325
325
if ( ! rootData ) {
326
- PivotUtil . processSiblingProperties ( rec , obj [ field + '_' + pivotKeys . records ] , pivotKeys ) ;
326
+ PivotUtil . processSiblingProperties ( rec , obj [ field + pivotKeys . rowDimensionSeparator + pivotKeys . records ] , pivotKeys ) ;
327
327
}
328
328
}
329
329
} ) ;
@@ -353,13 +353,15 @@ export class PivotUtil {
353
353
parentFields . push ( rec [ prev . memberName ] || rec [ dimData . dimension . memberName ] ) ;
354
354
}
355
355
parentFields . push ( value ) ;
356
- return parentFields . join ( '_' ) ;
356
+ return parentFields . join ( pivotKeys . rowDimensionSeparator ) ;
357
357
}
358
358
359
359
public static getTotalLvl ( rec , pivotKeys : IPivotKeys ) {
360
360
let total = 0 ;
361
361
Object . keys ( rec ) . forEach ( key => {
362
- if ( key . indexOf ( '_' + pivotKeys . level ) !== - 1 && key . indexOf ( pivotKeys . level + '_' ) === - 1 && key . indexOf ( pivotKeys . records ) === - 1 ) {
362
+ if ( key . indexOf ( pivotKeys . rowDimensionSeparator + pivotKeys . level ) !== - 1 &&
363
+ key . indexOf ( pivotKeys . level + pivotKeys . rowDimensionSeparator ) === - 1 &&
364
+ key . indexOf ( pivotKeys . records ) === - 1 ) {
363
365
total += rec [ key ] || 0 ;
364
366
}
365
367
} ) ;
@@ -374,7 +376,7 @@ export class PivotUtil {
374
376
for ( const value of values ) {
375
377
if ( h [ pivotKeys . aggregations ] ) {
376
378
if ( multipleValues ) {
377
- obj [ key + '-' + value . member ] = h [ pivotKeys . aggregations ] [ value . member ] ;
379
+ obj [ key + pivotKeys . columnDimensionSeparator + value . member ] = h [ pivotKeys . aggregations ] [ value . member ] ;
378
380
} else {
379
381
obj [ key ] = h [ pivotKeys . aggregations ] [ value . member ] ;
380
382
}
0 commit comments