@@ -335,26 +335,40 @@ DataController.prototype.resetRawData = function () {
335
335
}
336
336
} ;
337
337
338
- var dim1raw = function ( a , c , arr , hor ) {
338
+ var getMaxLevel = function ( c ) {
339
+ var lev = 0 ;
340
+ for ( var i in c ) {
341
+ if ( c [ i ] . children && c [ i ] . children . length ) {
342
+ lev = Math . max ( lev , getMaxLevel ( c [ i ] . children ) ) ;
343
+ }
344
+ }
345
+ return lev + 1 ;
346
+ } ;
347
+
348
+ var dim1raw = function ( a , c , arr , hor , level , maxLevel ) {
349
+
350
+ var cnum , obj , sameGroup ;
339
351
340
352
if ( ! arr ) {
341
353
arr = [ ] ;
342
354
}
343
355
344
- var cnum , obj ;
345
-
346
356
for ( var i in c ) {
347
357
cnum = groupNum ;
358
+ if ( level < maxLevel && ! ( c [ i ] . children && c [ i ] . children . length ) ) { // maxLevel is not reached, but no child
359
+ c [ i ] . children = [ { } ] ;
360
+ sameGroup = true ; // let the child cells join parent cell
361
+ }
348
362
if ( c [ i ] . children && c [ i ] . children . length ) {
349
- groupNum ++ ;
363
+ if ( ! sameGroup ) groupNum ++ ; else sameGroup = false ;
350
364
obj = {
351
365
group : cnum ,
352
366
source : c [ i ] ,
353
367
isCaption : true ,
354
368
value : c [ i ] . caption || ""
355
369
} ;
356
370
applyHeaderStyle ( obj , hor ) ;
357
- dim1raw ( a , c [ i ] . children , arr . concat ( obj ) , hor ) ;
371
+ dim1raw ( a , c [ i ] . children , arr . concat ( obj ) , hor , level ? ++ level : level , maxLevel ) ;
358
372
} else {
359
373
obj = {
360
374
group : groupNum ,
@@ -421,8 +435,12 @@ DataController.prototype.resetRawData = function () {
421
435
return rawData ;
422
436
} ;
423
437
424
- if ( data . dimensions [ 0 ] . length ) dim0raw ( rd0 , data . dimensions [ 0 ] ) ;
425
- if ( data . dimensions [ 1 ] . length ) dim1raw ( rd1 , data . dimensions [ 1 ] ) ;
438
+ if ( data . dimensions [ 0 ] . length ) {
439
+ dim0raw ( rd0 , data . dimensions [ 0 ] ) ;
440
+ }
441
+ if ( data . dimensions [ 1 ] . length ) {
442
+ dim1raw ( rd1 , data . dimensions [ 1 ] , undefined , undefined , 1 , getMaxLevel ( data . dimensions [ 1 ] ) ) ;
443
+ }
426
444
if ( rd1 [ 0 ] ) dimCaption = ( rd1 [ 0 ] [ rd1 [ 0 ] . length - 1 ] || { source : { } } ) . source [ "dimension" ] ;
427
445
428
446
var xw = ( rd0 [ 0 ] || [ ] ) . length ,
0 commit comments