/* 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