1-
21import { cloneValue } from '../../core/utils' ;
32import { IPivotDimension , IPivotKeys , IPivotValue , PivotDimensionType } from './pivot-grid.interface' ;
43
@@ -23,7 +22,7 @@ export class PivotUtil {
2322 }
2423
2524 public static extractValueFromDimension ( dim : IPivotDimension , recData : any ) {
26- return typeof dim . member === 'string' ? recData [ dim . member ] : dim . member . call ( null , recData ) ;
25+ return dim . memberFunction ? dim . memberFunction . call ( null , recData ) : recData [ dim . memberName ] ;
2726 }
2827
2928 public static getDimensionDepth ( dim ) {
@@ -36,20 +35,20 @@ export class PivotUtil {
3635 }
3736
3837 public static getDimensionLevel ( dim , rec , pivotKeys ) {
39- let level = rec [ dim . fieldName + '_' + pivotKeys . level ] ;
38+ let level = rec [ dim . memberName + '_' + pivotKeys . level ] ;
4039 while ( dim . childLevels && dim . childLevels . length > 0 && level === undefined ) {
4140 dim = dim . childLevels [ 0 ] ;
42- level = rec [ dim . fieldName + '_' + pivotKeys . level ] ;
41+ level = rec [ dim . memberName + '_' + pivotKeys . level ] ;
4342 }
44- return { level, fieldName : dim . fieldName , dimension : dim } ;
43+ return { level, dimension : dim } ;
4544 }
4645
4746 public static flattenHierarchy ( records , config , dim , expansionStates , pivotKeys , lvl , prevDims , currDimLvl ) {
4847 const data = records ;
4948 const defaultExpandState = true ;
5049 for ( let i = 0 ; i < data . length ; i ++ ) {
5150 const rec = data [ i ] ;
52- const field = dim . fieldName ;
51+ const field = dim . memberName ;
5352 if ( ! field ) {
5453 continue ;
5554 }
@@ -68,7 +67,7 @@ export class PivotUtil {
6867 expansionStates , pivotKeys , lvl - 1 , prevDims , currDimLvl + 1 ) ;
6968 } else {
7069 dimData . forEach ( d => {
71- d [ dim . childLevels [ 0 ] . fieldName + '_' + pivotKeys . level ] = currDimLvl + 1 ;
70+ d [ dim . childLevels [ 0 ] . memberName + '_' + pivotKeys . level ] = currDimLvl + 1 ;
7271 } ) ;
7372 }
7473 }
@@ -79,10 +78,10 @@ export class PivotUtil {
7978 let shouldConcat = true ;
8079 const prevDim = prevDims ? prevDims [ prevDims . length - 1 ] : null ;
8180 if ( prevDim ) {
82- let prevDimName = prevDim . fieldName ;
81+ let prevDimName = prevDim . memberName ;
8382 prevDimRecs = rec [ prevDimName + '_' + pivotKeys . records ] ;
8483 if ( ! prevDimRecs ) {
85- prevDimName = prevDim . childLevels [ 0 ] . fieldName ;
84+ prevDimName = prevDim . childLevels [ 0 ] . memberName ;
8685 prevDimRecs = rec [ prevDimName + '_' + pivotKeys . records ] ;
8786 }
8887 prevDimLevel = rec [ prevDimName + '_' + pivotKeys . level ] ;
@@ -91,11 +90,11 @@ export class PivotUtil {
9190 dimData . forEach ( d => {
9291 if ( prevDims && prevDims . length > 0 ) {
9392 if ( ! shouldConcat ) {
94- d [ dim . fieldName + '_' + pivotKeys . level ] = currDimLvl ;
93+ d [ dim . memberName + '_' + pivotKeys . level ] = currDimLvl ;
9594 }
9695 prevDims . forEach ( prev => {
9796 const dimInfo = PivotUtil . getDimensionLevel ( prev , rec , pivotKeys ) ;
98- d [ dimInfo . fieldName + '_' + pivotKeys . level ] = dimInfo . level ;
97+ d [ dimInfo . dimension . memberName + '_' + pivotKeys . level ] = dimInfo . level ;
9998 } ) ;
10099 }
101100 } ) ;
@@ -213,36 +212,36 @@ export class PivotUtil {
213212 // process combined groups
214213 while ( prevRowDims . length > 0 ) {
215214 const prevRowDim = prevRowDims . shift ( ) ;
216- const prevRowField = prevRowDim . fieldName ;
215+ const prevRowField = prevRowDim . memberName ;
217216 const sameDimLvl = PivotUtil . getDimensionDepth ( prevRowDim ) === PivotUtil . getDimensionDepth ( row ) ;
218217 for ( const sibling of siblingData ) {
219218 const childCollection = sibling [ prevRowField + '_' + pivotKeys . records ] || [ ] ;
220219 for ( const child of childCollection ) {
221220 if ( sameDimLvl ) {
222- child [ row . fieldName ] = sibling [ row . fieldName ] ;
221+ child [ row . memberName ] = sibling [ row . memberName ] ;
223222 }
224223 if ( ! child [ pivotKeys . records ] ) {
225224 continue ;
226225 }
227- child [ row . fieldName + '_' + pivotKeys . records ] = [ ] ;
226+ child [ row . memberName + '_' + pivotKeys . records ] = [ ] ;
228227 const keys = Object . assign ( { } , pivotKeys ) as any ;
229- keys [ row . fieldName ] = row . fieldName ;
228+ keys [ row . memberName ] = row . memberName ;
230229 const hierarchyFields2 = PivotUtil
231230 . getFieldsHierarchy ( child [ pivotKeys . records ] , [ row ] , PivotDimensionType . Row , pivotKeys ) ;
232231 const siblingData2 = PivotUtil
233232 . processHierarchy ( hierarchyFields2 , child ?? [ ] , keys , 0 ) ;
234233 if ( sameDimLvl ) {
235234 // add children to current level if dimensions have same depth
236235 for ( const sib of siblingData2 ) {
237- if ( sib [ row . fieldName + '_' + pivotKeys . records ] ) {
238- child [ row . fieldName + '_' + pivotKeys . records ] =
239- child [ row . fieldName + '_' + pivotKeys . records ] . concat ( sib [ row . fieldName + '_' + pivotKeys . records ] ) ;
240- child [ row . fieldName ] = sib [ row . fieldName ] ;
236+ if ( sib [ row . memberName + '_' + pivotKeys . records ] ) {
237+ child [ row . memberName + '_' + pivotKeys . records ] =
238+ child [ row . memberName + '_' + pivotKeys . records ] . concat ( sib [ row . memberName + '_' + pivotKeys . records ] ) ;
239+ child [ row . memberName ] = sib [ row . memberName ] ;
241240 }
242241 }
243242 } else {
244243 // otherwise overwrite direct child collection
245- child [ row . fieldName + '_' + pivotKeys . records ] = siblingData2 ;
244+ child [ row . memberName + '_' + pivotKeys . records ] = siblingData2 ;
246245 }
247246 PivotUtil . processSiblingProperties ( child , siblingData2 , keys ) ;
248247 if ( prevRowDims . length > 0 ) {
@@ -256,7 +255,7 @@ export class PivotUtil {
256255 public static processHierarchy ( hierarchies , rec , pivotKeys , level = 0 , rootData = false ) {
257256 const flatData = [ ] ;
258257 hierarchies . forEach ( ( h , key ) => {
259- const field = this . resolveFieldName ( h . dimension , rec ) ;
258+ const field = h . dimension . memberName ;
260259 let obj = { } ;
261260 obj [ field ] = key ;
262261 if ( h [ pivotKeys . records ] ) {
@@ -319,7 +318,7 @@ export class PivotUtil {
319318 return total ;
320319 }
321320
322- public static flattenColumnHierarchy ( hierarchies , values , pivotKeys ) {
321+ public static flattenColumnHierarchy ( hierarchies : any , values : IPivotValue [ ] , pivotKeys : IPivotKeys ) {
323322 const flatData = [ ] ;
324323 hierarchies . forEach ( ( h , key ) => {
325324 const obj = { } ;
@@ -350,23 +349,6 @@ export class PivotUtil {
350349 return flatData ;
351350 }
352351
353- public static resolveFieldName ( dimension , record ) {
354- if ( typeof dimension . member === 'string' ) {
355- dimension . fieldName = dimension . member ;
356- return dimension . member ;
357- } else {
358- const fieldName = ( dimension && dimension . fieldName ) ?? this . generateFieldValue ( record ) ;
359- dimension . fieldName = fieldName ;
360- return fieldName ;
361- }
362- }
363-
364- private static generateFieldValue ( rec ) {
365- let i = 0 ;
366- while ( Object . keys ( rec ) . indexOf ( 'field' + ++ i ) !== - 1 ) { }
367- return 'field' + i ;
368- }
369-
370352 private static collectAggregations ( children , pivotKeys ) {
371353 const result = [ ] ;
372354 children . forEach ( value => result . push ( value [ pivotKeys . aggregations ] ) ) ;
0 commit comments