sure, here is the script. We have 5 filters, each pointing to a different data source. the top level filter is enabled, the other 4 are locked, but these should be automatically set based on the values selected in the top filter.
dashboard.on('filterschanged', function(se, ev)
{
if (ev != null && ev.items.length > 0 && ev.items[0].jaql.table == "AT Structure") -- this is the top level / enabled filter
{
--are all items selected?
if (ev.items[0].jaql.filter.members == null)
{
se.filters.$$items[1].levels[1].filter.all = true;
se.filters.$$items[1].levels[1].filter.explicit = false;
se.filters.$$items[2].levels[1].filter.all = true;
se.filters.$$items[2].levels[1].filter.explicit = false;
se.filters.$$items[3].jaql.filter.all = true;
se.filters.$$items[3].jaql.filter.explicit = false;
se.filters.$$items[4].levels[1].filter.explicit = false;
se.filters.$$items[4].levels[1].filter.all = true;
se.$dashboard.refresh();
}
else
{
--Set the "child" filters applicable to the Manager(s) selected in filter 1
let managers = [];
for (let i = 0; i < ev.items[0].jaql.filter.members.length; i++)
{
if (ev.items[0].jaql.filter.members[i] == 'Dean Thomas')
{
managers.push('Portfolio 1');
}
if (ev.items[0].jaql.filter.members[i] == 'Matt Davis')
{
managers.push('Portfolio 2');
}
if (ev.items[0].jaql.filter.members[i] == 'Rachael Hawkins')
{
managers.push('Portfolio 3');
}
if (ev.items[0].jaql.filter.members[i] == 'Rebecca Dunning')
{
managers.push('Portfolio 4');
}
}
se.filters.$$items[1].levels[1].filter.all = false;
se.filters.$$items[2].levels[1].filter.all = false;
se.filters.$$items[3].jaql.filter.all = false;
se.filters.$$items[4].levels[1].filter.all = false;
se.filters.$$items[1].levels[1].filter.explicit = true;
se.filters.$$items[2].levels[1].filter.explicit = true;
se.filters.$$items[3].jaql.filter.explicit = true;
se.filters.$$items[4].levels[1].filter.explicit = true;
se.filters.$$items[1].levels[1].filter.members = managers;
se.filters.$$items[2].levels[1].filter.members = managers;
se.filters.$$items[3].jaql.filter.members = managers;
se.filters.$$items[4].levels[1].filter.members = managers;
se.$dashboard.refresh();
}
}