Skip to Content
Author's profile photo Andreas Löscher

Activate / Deactivate BEx Conditions via context menu

Hello,

i recently implemented a way for activating/deactivating bex conditions in design studio via context menu.

For realizing this, following steps are neccessary:

1) Create a popup “PU_CONDITIONS” in your design Studio application.

2) Create a checkboxgroup “CBG_CONDITIONS” and a button “BT_CLOSE” in PU_CONDITIONS.

3) Create a technical component “context menu” in your design studio application.

4) Within “context menu” insert a menu entry “i.e. conditions”.

5) Edit the script for the custom menu entry: – Insert the following script:

var  condition = DS_1.getMeasureFilters();

var str=””;

condition.forEach(function(element, index) {

//foreach condition which is implemented in DS_1 the name is added to CBG_CONDITIONS

     CBG_CONDITIONS.addItem(element, DS_1.getMeasureFilterName(element));

//if the condition is active, it will be added to variable “str” and separated by ‘,’

     if (DS_1.isMeasureFilterActive(element)) {  

          str=str+element.substring(0)+’,’;

     }

});

//the items in CBG_CONDITIONS which are found in variable “str” are set as selected

CBG_CONDITIONS.setSelectedValues(str.split(‘,’));

//PU_CONDITIONS is shown

PU_CONDITIONS.show();


With the script shown above, every condition which is defined in DS_1 underlying bex-query will be loaded and written down into CBG_CONDITIONS. By default every active bex-condition is selected in chexboxgroup “CBG_CONDITIONS”.


6) Insert the following script to the on click Event of BT_CLOSE:


PU_CONDITIONS.hide();

var  condition = DS_1.getMeasureFilters();

var selCond = CBG_CONDITIONS.getSelectedValues();

//remove all activated conditions

condition.forEach(function(element, index) {

     DS_1.setMeasureFilterActive(element, false);

});

//loop on all selected conditions

selCond.forEach(function(el_chboxes, index) {

//loop on all conditions of DS_1

     condition.forEach(function(el_datasource, index) {

//foreach via checkbox selected condition the corresponding condition of DS_1 will be activated

          if(el_datasource == el_chboxes){

               DS_1.setMeasureFilterActive(el_datasource, true);

          }

     });

});


With the script shown above all conditions of DS_1 will be deacitivated in the first step. After this, every condition of DS_1 which is selected per checkbox will be activated.



I hope the shown approach maybe useful.

Kind regards,

Andreas

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.