/* exported wizardconfig SetMLevelConfiguration */
ZTObjects.MLevelDataProviderObjClass={
helper : {
usage :
'It was born first as a support to the Grid Pivot component, where there is the need to find the data only if required, to avoid heavy server-side data extraction.'
+ '
Queries are performed by grouping the data with any required calculations (... at the moment sum on the fields ...).'
+ '
By increasing the depth levels of the queries (... typically, drilldown ...), filters are added.'
,
description :
'Allows the definition of queries (1 or more) to be executed based on the level of the data to be extracted.'
+ '
The first query can be performed with multiple data levels (without filters) and client-side caching.'
+ '
At this point, the data will be retrieved directly on the client, until the pre-load limit level is exceeded.'
,
drawing :
{
src:'../portalstudio/images/component/multi-level-dataprovider-helper.png',
width:'350px'
}
},
newProperties:{
generic:[
],
functional:[
/*{name:'exec mode', propID:'auto_exec', type:'select[client autoexec :true,client ondemand:false]', extraClass: 'col-3'},
{name:'async query', propID:'async', type:'select[false,true]', extraClass: 'col-3'},*/
{name:'query', propID:'queries', type:'str', section:'datasources', defaultValue:''
,buttons:'wizard,plus,edit,up,down,del'
,actions: "wizardconfig(this),newMultipleProp({'props':props,tabName:tabName}),editMultipleProp({'props':props,tabName:tabName}),upMultipleProp({'props':props,tabName:tabName}),downMultipleProp({'props':props,tabName:tabName}),delMultipleProp({'props':props,tabName:tabName})"
,multiple:{'listview': true, 'type':'combo','id':'queries'}
,tooltip:"Specify query (vqr) name"
},
{name:'Row level limit', propID:'uptolevels', type:'int', section:'datasources', defaultValue:''
,multiple:{'type':'input','id':'queries'}
,tooltip:"Indicates to what level dimension on row this query is used"
},
{name:'Column level limit', propID:'uptolevels2', type:'int', section:'datasources', defaultValue:''
,multiple:{'type':'input','id':'queries'}
,tooltip:"Indicates to what level dimension on column this query is used"
},
{name:'param. source', propID:'parms_source', type:'str', section:'parameters', tooltip:'one or more parameter sources can be specified'},
{name:'parameters', propID:'parms', type:'parameters', section:'parameters', tooltip: 'Comma-separated list of parameters to be used as a filter for DataObject extraction.'},
{name:'rows fields', propID:'filterfields', type:'str', section:'row dimensions'
,tooltip:"Indicates the progressive and ordered grouping dimensions
if empty, inherits values from a compatible object, such as the GridPivot for example"
},
{name:'rows fields keys', propID:'filterfieldskeys', type:'str', section:'row dimensions'
,tooltip:"Indicates the progressive and ordered grouping dimensions
if empty, inherits values from a compatible object, such as the GridPivot for example"
},
{name:'Prefetched row fields on first query', propID:'cachelevel', type:'int', section:'row dimensions', defaultValue:''
,tooltip:"Indicates up to how many rows aggregated dimensions will be included on the the first query cached client-side"
},
{name:'columns fields', propID:'fields', type:'str', section:'column dimensions'
,tooltip:"Indicates the following fixed dimensions, after the progressive ones indicated
if empty, inherits values from a compatible object, such as the GridPivot for example"
},
{name:'columns keys fields', propID:'fieldskeys', type:'str', section:'column dimensions'
,tooltip:"Indicates the following fixed dimensions, after the progressive ones indicated
if empty, inherits values from a compatible object, such as the GridPivot for example"
},
{name:'Prefetched columns fields on first query', propID:'cachelevel2', type:'int', section:'column dimensions', defaultValue:''
,tooltip:"Indicates up to how many columns aggregated dimensions will be included on the the first query cached client-side"
},
{name:'measures', propID:'measures', type:'str', section:'measures'
,tooltip:"Indicates the calculated measures
if empty, inherits values from a compatible object, such as the GridPivot for example"
}
],
encrypt:[
{name:'Encrypted output fields ', propID:'encrypted_fields',
type:'str', tooltip:'List fo dimensions to encrypt separated by commas.', extraClass: 'col-3', section:'crypt value'
},
{name:'Encrypted fields seed ', propID:'encrypted_fields_pwd',
tooltip:'Optional seed for this encryption.
If empty it is random generated and no other portlet can decrypt this element.',
type:'str', extraClass: 'col-3', section:'crypt value' ,
validFunc:function(v){if(v.length>10){PSAlert.alert('Length must be max 10');return false}else{return true;}}
},
{name:'Encrypted params', propID:'decrypted_parms' , type:'str', tooltip:'List of encrypted parameters separated by commas.', extraClass: 'col-3', section:'crypt value'},
{name:'Encrypted params seed ', propID:'decrypted_parms_pwd', type:'str',
tooltip:'Optional seed for this decryption.
If empty it is random generated and only variables of this portlet can be decrypted.',
extraClass: 'col-3', section:'crypt value',
validFunc:function(v){if(v.length>10){PSAlert.alert('Length must be max 10');return false}else{return true;}}
}
]
},
names: ['../portalstudio/images/icon/bot_dataobj_multilevel_off.png','../portalstudio/images/icon/bot_dataobj_multilevel_off.png'],
notifications:function(obj){
obj.notifications=[];
if(Empty(obj.queries)){
obj.notifications.push({'message':'Select a query.','tab':'functional','prop':'queries'});
}
var i;
var ret;
if( !Empty(obj.filterfields) || !Empty(obj.fields) || !Empty(obj.measures) ) {
for(i = 0; i