@@ -39,7 +39,8 @@ export class CubeToMetaTransformer {
3939 * @protected
4040 */
4141 transform ( cube ) {
42- const cubeTitle = cube . title || this . titleize ( cube . name ) ;
42+ const cubeName = cube . name ;
43+ const cubeTitle = cube . title || this . titleize ( cubeName ) ;
4344
4445 const isCubeVisible = this . isVisible ( cube , true ) ;
4546
@@ -52,7 +53,7 @@ export class CubeToMetaTransformer {
5253 if ( member . type === 'folder' ) {
5354 return processFolder ( member , [ ...path , folder . name ] , flatMembers ) ;
5455 }
55- const memberName = `${ cube . name } .${ member . name } ` ;
56+ const memberName = `${ cubeName } .${ member . name } ` ;
5657 flatMembers . push ( memberName ) ;
5758
5859 return memberName ;
@@ -82,64 +83,75 @@ export class CubeToMetaTransformer {
8283
8384 return {
8485 config : {
85- name : cube . name ,
86+ name : cubeName ,
8687 type : cube . isView ? 'view' : 'cube' ,
8788 title : cubeTitle ,
8889 isVisible : isCubeVisible ,
8990 public : isCubeVisible ,
9091 description : cube . description ,
91- connectedComponent : this . joinGraph . connectedComponents ( ) [ cube . name ] ,
92+ connectedComponent : this . joinGraph . connectedComponents ( ) [ cubeName ] ,
9293 meta : cube . meta ,
93- measures : Object . entries ( cube . measures || { } ) . map ( ( nameToMetric ) => ( {
94- ...this . measureConfig ( cube . name , cubeTitle , nameToMetric ) ,
95- isVisible : isCubeVisible ? this . isVisible ( nameToMetric [ 1 ] , true ) : false ,
96- public : isCubeVisible ? this . isVisible ( nameToMetric [ 1 ] , true ) : false ,
97- } ) ) ,
98- dimensions : Object . entries ( cube . dimensions || { } ) . map ( ( nameToDimension ) => ( {
99- name : `${ cube . name } .${ nameToDimension [ 0 ] } ` ,
100- title : this . title ( cubeTitle , nameToDimension ) ,
101- type : this . dimensionDataType ( nameToDimension [ 1 ] . type ) ,
102- description : nameToDimension [ 1 ] . description ,
103- shortTitle : this . title ( cubeTitle , nameToDimension , true ) ,
104- suggestFilterValues :
105- nameToDimension [ 1 ] . suggestFilterValues == null
106- ? true
107- : nameToDimension [ 1 ] . suggestFilterValues ,
108- format : nameToDimension [ 1 ] . format ,
109- meta : nameToDimension [ 1 ] . meta ,
110- isVisible : isCubeVisible
111- ? this . isVisible ( nameToDimension [ 1 ] , ! nameToDimension [ 1 ] . primaryKey )
112- : false ,
113- public : isCubeVisible
114- ? this . isVisible ( nameToDimension [ 1 ] , ! nameToDimension [ 1 ] . primaryKey )
115- : false ,
116- primaryKey : ! ! nameToDimension [ 1 ] . primaryKey ,
117- aliasMember : nameToDimension [ 1 ] . aliasMember ,
118- granularities :
119- nameToDimension [ 1 ] . granularities
120- ? Object . entries ( nameToDimension [ 1 ] . granularities ) . map ( ( g ) => ( {
121- name : g [ 0 ] ,
122- title : this . title ( cubeTitle , g , true ) ,
123- interval : g [ 1 ] . interval ,
124- offset : g [ 1 ] . offset ,
125- origin : g [ 1 ] . origin ,
126- } ) )
127- : undefined ,
128- } ) ) ,
129- segments : Object . entries ( cube . segments || { } ) . map ( ( nameToSegment ) => ( {
130- name : `${ cube . name } .${ nameToSegment [ 0 ] } ` ,
131- title : this . title ( cubeTitle , nameToSegment ) ,
132- shortTitle : this . title ( cubeTitle , nameToSegment , true ) ,
133- description : nameToSegment [ 1 ] . description ,
134- meta : nameToSegment [ 1 ] . meta ,
135- isVisible : isCubeVisible ? this . isVisible ( nameToSegment [ 1 ] , true ) : false ,
136- public : isCubeVisible ? this . isVisible ( nameToSegment [ 1 ] , true ) : false ,
137- } ) ) ,
94+ measures : Object . entries ( cube . measures || { } ) . map ( ( nameToMetric ) => {
95+ const metricDef = nameToMetric [ 1 ] ;
96+ const measureVisibility = isCubeVisible ? this . isVisible ( metricDef , true ) : false ;
97+ return {
98+ ...this . measureConfig ( cubeName , cubeTitle , nameToMetric ) ,
99+ isVisible : measureVisibility ,
100+ public : measureVisibility ,
101+ } ;
102+ } ) ,
103+ dimensions : Object . entries ( cube . dimensions || { } ) . map ( ( nameToDimension ) => {
104+ const [ dimensionName , dimDef ] = nameToDimension ;
105+ const dimensionVisibility = isCubeVisible
106+ ? this . isVisible ( dimDef , ! dimDef . primaryKey )
107+ : false ;
108+ const granularitiesObj = dimDef . granularities ;
109+
110+ return {
111+ name : `${ cubeName } .${ dimensionName } ` ,
112+ title : this . title ( cubeTitle , nameToDimension ) ,
113+ type : this . dimensionDataType ( dimDef . type ) ,
114+ description : dimDef . description ,
115+ shortTitle : this . title ( cubeTitle , nameToDimension , true ) ,
116+ suggestFilterValues :
117+ dimDef . suggestFilterValues == null
118+ ? true
119+ : dimDef . suggestFilterValues ,
120+ format : dimDef . format ,
121+ meta : dimDef . meta ,
122+ isVisible : dimensionVisibility ,
123+ public : dimensionVisibility ,
124+ primaryKey : ! ! dimDef . primaryKey ,
125+ aliasMember : dimDef . aliasMember ,
126+ granularities :
127+ granularitiesObj
128+ ? Object . entries ( granularitiesObj ) . map ( ( [ gName , gDef ] ) => ( {
129+ name : gName ,
130+ title : this . title ( cubeTitle , [ gName , gDef ] , true ) ,
131+ interval : gDef . interval ,
132+ offset : gDef . offset ,
133+ origin : gDef . origin ,
134+ } ) )
135+ : undefined ,
136+ } ;
137+ } ) ,
138+ segments : Object . entries ( cube . segments || { } ) . map ( ( nameToSegment ) => {
139+ const [ segmentName , segmentDef ] = nameToSegment ;
140+ const segmentVisibility = isCubeVisible ? this . isVisible ( segmentDef , true ) : false ;
141+ return {
142+ name : `${ cubeName } .${ segmentName } ` ,
143+ title : this . title ( cubeTitle , nameToSegment ) ,
144+ shortTitle : this . title ( cubeTitle , nameToSegment , true ) ,
145+ description : segmentDef . description ,
146+ meta : segmentDef . meta ,
147+ isVisible : segmentVisibility ,
148+ public : segmentVisibility ,
149+ } ;
150+ } ) ,
138151 hierarchies : ( cube . evaluatedHierarchies || [ ] ) . map ( ( it ) => ( {
139152 ...it ,
140- aliasMember : it . aliasMember ,
141153 public : it . public ?? true ,
142- name : `${ cube . name } .${ it . name } ` ,
154+ name : `${ cubeName } .${ it . name } ` ,
143155 } ) ) ,
144156 folders : flatFolders ,
145157 nestedFolders,
@@ -192,39 +204,49 @@ export class CubeToMetaTransformer {
192204 }
193205
194206 measureConfig ( cubeName , cubeTitle , nameToMetric ) {
195- const name = `${ cubeName } .${ nameToMetric [ 0 ] } ` ;
207+ const [ metricName , metricDef ] = nameToMetric ;
208+ const name = `${ cubeName } .${ metricName } ` ;
209+
196210 // Support both old 'drillMemberReferences' and new 'drillMembers' keys
197- const drillMembers = nameToMetric [ 1 ] . drillMembers || nameToMetric [ 1 ] . drillMemberReferences ;
211+ const drillMembers = metricDef . drillMembers || metricDef . drillMemberReferences ;
198212
199213 const drillMembersArray = ( drillMembers && this . cubeEvaluator . evaluateReferences (
200214 cubeName , drillMembers , { originalSorting : true }
201215 ) ) || [ ] ;
202216
203- const type = CubeSymbols . toMemberDataType ( nameToMetric [ 1 ] . type ) ;
217+ const type = CubeSymbols . toMemberDataType ( metricDef . type ) ;
218+ const isCumulative = metricDef . cumulative || BaseMeasure . isCumulative ( metricDef ) ;
219+
220+ const drillMembersGrouped = { measures : [ ] , dimensions : [ ] } ;
221+ for ( const member of drillMembersArray ) {
222+ if ( this . cubeEvaluator . isMeasure ( member ) ) {
223+ drillMembersGrouped . measures . push ( member ) ;
224+ } else if ( this . cubeEvaluator . isDimension ( member ) ) {
225+ drillMembersGrouped . dimensions . push ( member ) ;
226+ }
227+ }
204228
205229 return {
206230 name,
207231 title : this . title ( cubeTitle , nameToMetric ) ,
208- description : nameToMetric [ 1 ] . description ,
232+ description : metricDef . description ,
209233 shortTitle : this . title ( cubeTitle , nameToMetric , true ) ,
210- format : nameToMetric [ 1 ] . format ,
211- cumulativeTotal : nameToMetric [ 1 ] . cumulative || BaseMeasure . isCumulative ( nameToMetric [ 1 ] ) ,
212- cumulative : nameToMetric [ 1 ] . cumulative || BaseMeasure . isCumulative ( nameToMetric [ 1 ] ) ,
234+ format : metricDef . format ,
235+ cumulativeTotal : isCumulative ,
236+ cumulative : isCumulative ,
213237 type,
214- aggType : nameToMetric [ 1 ] . aggType || nameToMetric [ 1 ] . type ,
238+ aggType : metricDef . aggType || metricDef . type ,
215239 drillMembers : drillMembersArray ,
216- drillMembersGrouped : {
217- measures : drillMembersArray . filter ( ( member ) => this . cubeEvaluator . isMeasure ( member ) ) ,
218- dimensions : drillMembersArray . filter ( ( member ) => this . cubeEvaluator . isDimension ( member ) ) ,
219- } ,
220- aliasMember : nameToMetric [ 1 ] . aliasMember ,
221- meta : nameToMetric [ 1 ] . meta
240+ drillMembersGrouped,
241+ aliasMember : metricDef . aliasMember ,
242+ meta : metricDef . meta
222243 } ;
223244 }
224245
225246 title ( cubeTitle , nameToDef , short ) {
226- // eslint-disable-next-line prefer-template
227- return `${ short ? '' : cubeTitle + ' ' } ${ nameToDef [ 1 ] . title || this . titleize ( nameToDef [ 0 ] ) } ` ;
247+ const prefix = short ? '' : `${ cubeTitle } ` ;
248+ const suffix = nameToDef [ 1 ] . title || this . titleize ( nameToDef [ 0 ] ) ;
249+ return `${ prefix } ${ suffix } ` ;
228250 }
229251
230252 titleize ( name ) {
0 commit comments