Forum Discussion
Anonymous
7 years agoNot applicable
Apply Slicer on Report Load
I have an embed Bi report. I need to preset a filter on the report. I can get this working when I run the first piece of code AFTER the report has finished loading. I need this to be done before so that the filter is pre applied. I have tried following the instructions and appeding the slicers to my initial config using the second peice of code but it does not work.
setFilter1() {
this.biReport.getPages()
.then(function (pages) {
var firstPage = pages[1];
firstPage.getVisuals()
.then(function (visuals) {
let visual = visuals.filter(x => x.title === 'Current/Previous Month')[0];
if (visual) {
const basicFilter = {
$schema: 'http://powerbi.com/product/schema#basic',
target: {
table: 'WorkOrdersView',
column: 'Current/PreviousMonth'
},
operator: 'In',
values: ['Current Month'],
filterType: pbi.models.FilterType.Basic
};
visual.getSlicerState().then(slicer => {
slicer.filters = [];
visual.setSlicerState({
filters: [basicFilter]
}).then(s => {
this.myslicers = s;
}).catch(errors => {
console.log(errors);
});
});
}
});
});
} slicers = [
{
selector: {
$schema: 'http://powerbi.com/product/schema#visualSelector',
visualName: 'c21a3d6790798afcfb8c'
},
filters: [
{
$schema: 'http://powerbi.com/product/schema#basic',
target: {
table: 'WorkOrdersView',
column: 'Current/PreviousMonth'
},
operator: 'In',
values: ['Current Month']
}
]
}
];
embedConfig = {
type: 'report',
id: '',
slicers: [this.slicers],
embedUrl: '',
tokenType: pbi.models.TokenType.Embed,
accessToken: ''
};
No Replies