@@ -213,10 +213,10 @@ export class CubeEvaluator extends CubeSymbols {
213
213
return [ ] ;
214
214
}
215
215
216
- private prepareHierarchies ( cube : any , errorReporter : ErrorReporter ) {
216
+ private prepareHierarchies ( cube : any , errorReporter : ErrorReporter ) : void {
217
217
const uniqueHierarchyNames = new Set ( ) ;
218
218
if ( Array . isArray ( cube . hierarchies ) ) {
219
- cube . hierarchies = cube . hierarchies . map ( hierarchy => {
219
+ cube . evaluatedHierarchies = cube . hierarchies . map ( hierarchy => {
220
220
if ( uniqueHierarchyNames . has ( hierarchy . name ) ) {
221
221
errorReporter . error ( `Duplicate hierarchy name '${ hierarchy . name } ' in cube '${ cube . name } '` ) ;
222
222
}
@@ -239,7 +239,8 @@ export class CubeEvaluator extends CubeSymbols {
239
239
const includedHierarchyNames = cube . includedMembers . filter ( it => it . type === 'hierarchies' ) . map ( it => it . memberPath . split ( '.' ) [ 1 ] ) ;
240
240
241
241
for ( const cubeName of includedCubeNames ) {
242
- const { hierarchies } = this . evaluatedCubes [ cubeName ] || { } ;
242
+ // As views come after cubes in the list, we can safely assume that cube is already evaluated
243
+ const { evaluatedHierarchies : hierarchies } = this . evaluatedCubes [ cubeName ] || { } ;
243
244
244
245
if ( Array . isArray ( hierarchies ) && hierarchies . length ) {
245
246
const filteredHierarchies = hierarchies
@@ -264,11 +265,11 @@ export class CubeEvaluator extends CubeSymbols {
264
265
} )
265
266
. filter ( it => it . levels . length ) ;
266
267
267
- cube . hierarchies = [ ...( cube . hierarchies || [ ] ) , ...filteredHierarchies ] ;
268
+ cube . evaluatedHierarchies = [ ...( cube . evaluatedHierarchies || [ ] ) , ...filteredHierarchies ] ;
268
269
}
269
270
}
270
271
271
- cube . hierarchies = ( cube . hierarchies || [ ] ) . map ( ( hierarchy ) => ( {
272
+ cube . evaluatedHierarchies = ( cube . evaluatedHierarchies || [ ] ) . map ( ( hierarchy ) => ( {
272
273
...hierarchy ,
273
274
levels : hierarchy . levels . map ( ( level ) => {
274
275
const member = cube . includedMembers . find ( m => m . memberPath === level ) ;
@@ -281,8 +282,6 @@ export class CubeEvaluator extends CubeSymbols {
281
282
} ) . filter ( Boolean )
282
283
} ) ) ;
283
284
}
284
-
285
- return [ ] ;
286
285
}
287
286
288
287
private evaluateMultiStageReferences ( cubeName : string , obj : { [ key : string ] : MeasureDefinition } ) {
0 commit comments