@@ -12,6 +12,7 @@ var LightPivotTable = function (configuration) {
1212
1313 this . _dataSourcesStack = [ ] ;
1414
15+ this . DRILL_LEVEL = - 1 ;
1516 this . CONFIG = configuration ;
1617
1718 this . mdxParser = new MDXParser ( ) ;
@@ -84,6 +85,7 @@ LightPivotTable.prototype.pushDataSource = function (config) {
8485
8586 var newDataSource ;
8687
88+ this . DRILL_LEVEL ++ ;
8789 this . _dataSourcesStack . push ( newDataSource = new DataSource ( config ) ) ;
8890 this . dataSource = newDataSource ;
8991
@@ -95,6 +97,7 @@ LightPivotTable.prototype.popDataSource = function () {
9597
9698 if ( this . _dataSourcesStack . length < 2 ) return ;
9799
100+ this . DRILL_LEVEL -- ;
98101 this . _dataSourcesStack . pop ( ) ;
99102 this . dataController . popData ( ) ;
100103
@@ -125,9 +128,13 @@ LightPivotTable.prototype.tryDrillDown = function (filter) {
125128 // clone dataSource config object
126129 for ( var i in _ . CONFIG . dataSource ) { ds [ i ] = _ . CONFIG . dataSource [ i ] ; }
127130
128- if ( this . CONFIG . DrillDownExpression && this . _dataSourcesStack . length < 2 ) {
131+ if ( this . CONFIG . DrillDownExpression && ! ( this . CONFIG . DrillDownExpression instanceof Array ) ) {
132+ this . CONFIG . DrillDownExpression = [ this . CONFIG . DrillDownExpression ] ;
133+ }
134+
135+ if ( ( this . CONFIG . DrillDownExpression || [ ] ) [ this . DRILL_LEVEL ] ) {
129136 ds . basicMDX = this . mdxParser . drillDown (
130- this . dataSource . BASIC_MDX , filter , this . CONFIG . DrillDownExpression
137+ this . dataSource . BASIC_MDX , filter , this . CONFIG . DrillDownExpression [ this . DRILL_LEVEL ]
131138 ) || this . dataSource . BASIC_MDX ;
132139 } else {
133140 ds . basicMDX = this . mdxParser . drillDown ( this . dataSource . BASIC_MDX , filter ) || this . dataSource . BASIC_MDX ;
0 commit comments