@@ -12,6 +12,7 @@ var LightPivotTable = function (configuration) {
12
12
13
13
this . _dataSourcesStack = [ ] ;
14
14
15
+ this . DRILL_LEVEL = - 1 ;
15
16
this . CONFIG = configuration ;
16
17
17
18
this . mdxParser = new MDXParser ( ) ;
@@ -84,6 +85,7 @@ LightPivotTable.prototype.pushDataSource = function (config) {
84
85
85
86
var newDataSource ;
86
87
88
+ this . DRILL_LEVEL ++ ;
87
89
this . _dataSourcesStack . push ( newDataSource = new DataSource ( config ) ) ;
88
90
this . dataSource = newDataSource ;
89
91
@@ -95,6 +97,7 @@ LightPivotTable.prototype.popDataSource = function () {
95
97
96
98
if ( this . _dataSourcesStack . length < 2 ) return ;
97
99
100
+ this . DRILL_LEVEL -- ;
98
101
this . _dataSourcesStack . pop ( ) ;
99
102
this . dataController . popData ( ) ;
100
103
@@ -125,9 +128,13 @@ LightPivotTable.prototype.tryDrillDown = function (filter) {
125
128
// clone dataSource config object
126
129
for ( var i in _ . CONFIG . dataSource ) { ds [ i ] = _ . CONFIG . dataSource [ i ] ; }
127
130
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 ] ) {
129
136
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 ]
131
138
) || this . dataSource . BASIC_MDX ;
132
139
} else {
133
140
ds . basicMDX = this . mdxParser . drillDown ( this . dataSource . BASIC_MDX , filter ) || this . dataSource . BASIC_MDX ;
0 commit comments