@@ -3508,16 +3508,16 @@ export class BaseQuery {
35083508    } 
35093509  } 
35103510
3511-   static  findAndSubTreeForFilterGroup ( filter ,  groupMembers ,  newGroupFilter )  { 
3511+   static  findAndSubTreeForFilterGroup ( filter ,  groupMembers ,  newGroupFilter ,   aliases )  { 
35123512    if  ( ( filter . operator  ===  'and'  ||  filter . operator  ===  'or' )  &&  ! filter . values ?. length )  { 
35133513      return  null ; 
35143514    } 
35153515    const  filterMembers  =  BaseQuery . extractFilterMembers ( filter ) ; 
3516-     if  ( filterMembers  &&  Object . keys ( filterMembers ) . every ( m  =>  groupMembers . indexOf ( m )  !==  - 1 ) )  { 
3516+     if  ( filterMembers  &&  Object . keys ( filterMembers ) . every ( m  =>  ( groupMembers . indexOf ( m )  !==  - 1   ||   aliases . indexOf ( m )   !==   - 1 ) ) )  { 
35173517      return  filter ; 
35183518    } 
35193519    if  ( filter . operator  ===  'and' )  { 
3520-       const  result  =  filter . values . map ( f  =>  BaseQuery . findAndSubTreeForFilterGroup ( f ,  groupMembers ,  newGroupFilter ) ) . filter ( f  =>  ! ! f ) ; 
3520+       const  result  =  filter . values . map ( f  =>  BaseQuery . findAndSubTreeForFilterGroup ( f ,  groupMembers ,  newGroupFilter ,   aliases ) ) . filter ( f  =>  ! ! f ) ; 
35213521      if  ( ! result . length )  { 
35223522        return  null ; 
35233523      } 
@@ -3542,21 +3542,30 @@ export class BaseQuery {
35423542    ) ; 
35433543  } 
35443544
3545-   static  renderFilterParams ( filter ,  filterParamArgs ,  allocateParam ,  newGroupFilter )  { 
3545+   static  renderFilterParams ( filter ,  filterParamArgs ,  allocateParam ,  newGroupFilter ,   aliases )  { 
35463546    if  ( ! filter )  { 
35473547      return  '1 = 1' ; 
35483548    } 
35493549
35503550    if  ( filter . operator  ===  'and'  ||  filter . operator  ===  'or' )  { 
35513551      const  values  =  filter . values 
3552-         . map ( f  =>  BaseQuery . renderFilterParams ( f ,  filterParamArgs ,  allocateParam ,  newGroupFilter ) ) 
3552+         . map ( f  =>  BaseQuery . renderFilterParams ( f ,  filterParamArgs ,  allocateParam ,  newGroupFilter ,   aliases ) ) 
35533553        . map ( v  =>  ( {  filterToWhere : ( )  =>  v  } ) ) ; 
35543554
35553555      return  newGroupFilter ( {  operator : filter . operator ,  values } ) . filterToWhere ( ) ; 
35563556    } 
35573557
3558-     const  filterParams  =  filter  &&  filter . filterParams ( ) ; 
3559-     const  filterParamArg  =  filterParamArgs . filter ( p  =>  p . __member ( )  ===  filter . measure  ||  p . __member ( )  ===  filter . dimension ) [ 0 ] ; 
3558+     const  filterParams  =  filter . filterParams ( ) ; 
3559+     const  filterParamArg  =  filterParamArgs . filter ( p  =>  { 
3560+       const  member  =  p . __member ( ) ; 
3561+       return  member  ===  filter . measure  || 
3562+              member  ===  filter . dimension  || 
3563+             ( aliases [ member ]  &&  ( 
3564+               aliases [ member ]  ===  filter . measure  || 
3565+               aliases [ member ]  ===  filter . dimension 
3566+             ) ) ; 
3567+     } ) [ 0 ] ; 
3568+ 
35603569    if  ( ! filterParamArg )  { 
35613570      throw  new  Error ( `FILTER_PARAMS arg not found for ${ filter . measure  ||  filter . dimension }  ) ; 
35623571    } 
@@ -3589,15 +3598,21 @@ export class BaseQuery {
35893598        return  f . __member ( ) ; 
35903599      } ) ; 
35913600
3592-       const  filter  =  BaseQuery . findAndSubTreeForFilterGroup ( newGroupFilter ( {  operator : 'and' ,  values : allFilters  } ) ,  groupMembers ,  newGroupFilter ) ; 
3601+       const  aliases  =  allFilters . map ( v  =>  v . query . allBackAliasMembers ( ) ) . reduce ( ( a ,  b )  =>  ( {  ...a ,  ...b  } ) ,  { } ) ; 
3602+       const  filter  =  BaseQuery . findAndSubTreeForFilterGroup ( 
3603+         newGroupFilter ( {  operator : 'and' ,  values : allFilters  } ) , 
3604+         groupMembers , 
3605+         newGroupFilter , 
3606+         Object . values ( aliases ) 
3607+       ) ; 
35933608
3594-       return  `(${ BaseQuery . renderFilterParams ( filter ,  filterParamArgs ,  allocateParam ,  newGroupFilter ) }  ; 
3609+       return  `(${ BaseQuery . renderFilterParams ( filter ,  filterParamArgs ,  allocateParam ,  newGroupFilter ,   aliases ) }  ; 
35953610    } ; 
35963611  } 
35973612
35983613  static  filterProxyFromAllFilters ( allFilters ,  cubeEvaluator ,  allocateParam ,  newGroupFilter )  { 
35993614    return  new  Proxy ( { } ,  { 
3600-       get : ( target ,  name )  =>  { 
3615+       get : ( _target ,  name )  =>  { 
36013616        if  ( name  ===  '_objectWithResolvedProperties' )  { 
36023617          return  true ; 
36033618        } 
@@ -3614,12 +3629,15 @@ export class BaseQuery {
36143629                return  cubeEvaluator . pathFromArray ( [ cubeNameObj . cube ,  propertyName ] ) ; 
36153630              } , 
36163631              toString ( )  { 
3632+                 const  aliases  =  allFilters . map ( v  =>  ( v . query  ? v . query . allBackAliasMembers ( )  : { } ) ) . reduce ( ( a ,  b )  =>  ( {  ...a ,  ...b  } ) ,  { } ) ; 
36173633                const  filter  =  BaseQuery . findAndSubTreeForFilterGroup ( 
36183634                  newGroupFilter ( {  operator : 'and' ,  values : allFilters  } ) , 
36193635                  [ cubeEvaluator . pathFromArray ( [ cubeNameObj . cube ,  propertyName ] ) ] , 
3620-                   newGroupFilter 
3636+                   newGroupFilter , 
3637+                   Object . values ( aliases ) 
36213638                ) ; 
3622-                 return  `(${ BaseQuery . renderFilterParams ( filter ,  [ this ] ,  allocateParam ,  newGroupFilter ) }  ; 
3639+ 
3640+                 return  `(${ BaseQuery . renderFilterParams ( filter ,  [ this ] ,  allocateParam ,  newGroupFilter ,  aliases ) }  ; 
36233641              } 
36243642            } ) 
36253643          } ) 
0 commit comments