Qlik Community

Qlik Sense Integration, Extensions, & APIs

Discussion board where members can learn more about Integration, Extensions and API’s for Qlik Sense.

rbartley
Contributor III

API reading and applying selection issue and looping

Hello all,

I am having a couple of issues at the moment with using the APIs to read and make selections.  The scenario is as follows:  I have a  mashup featuring a number of dimensions and a chart.  Because some of the dimensions are mutually exclusive, I have created an unlinked dimension so that the values in the filter panel will not be affected by the selection of the other dimensions.  This works fine in that all the values I would expect to see in the filter list are displayed.  However, I then want to apply the values selected in the unlinked dimension filter to the dimension in the chart and this is where things go wring in that:

1) The code seems to keep looping even though I apply the filter outside of the $.each loop and use a "return true" to escape the loop.

2) The selection only works if I select one value or if I hard code the selections rather than using value.qSelected (I tried formatting the string to be the same as the hard-coded values but it still doesn't seem to work, so I'm obviously doing something wrong).

This is what I am doing:

1) Set up mouseup  event on the div containing the filter Qlik filter panel (I have also tried with the click event) which calls function

$('#filterPigAndCereals').mouseup(function (obj){

  var strCerealsFilter;

  strCerealsFilter = filterCerealCategory(qlik,app);

  });

2) Create a function to read the selection object to find out which fields and values have been selected and if they refer to the field I am interested in then filter the dimension in the chart.

function filterCerealCategory(qlik,app)

{

  var intSelectedCerealsValues=0;

  var objSelectionsList = app.getList("SelectionObject", function(reply){

  $.each(reply.qSelectionObject.qSelections, function(key, value) {

  var field = value.qField;  //The field name

  var numSelected=0;

  intSelectedCerealsValues=0;

  if(field=="Cereals Category Price Unlinked")

  {

  numSelected= value.qSelectedCount;  //Number of selections in field

  selections = value.qSelected;

  //console.log('selections=',selections);

  } 

  if(field=="Cereals Category Price Unlinked" &&  numSelected>0)

  {

  intSelectedCerealsValues++;

  return true;

  }

  }); //end each qSelections

  if(intSelectedCerealsValues > 0)

  {

  console.log('selections=',selections);

  app.field("Cereals Category (Price)").selectValues([selections]);

  qlik.resize();

  return true;

  }

 

}

Any help would be much appreciated.

Thanks in advance.

Regards,

Richard

Tags (1)
1 Reply
rbartley
Contributor III

Re: API reading and applying selection issue and looping

I assume that the reason for the looping is due to the onclick event of the underlying filter being triggered and not returning to my function.