Forum Discussion

Cobra77's avatar
Cobra77
Post Patron
8 years ago
Solved

Power BI Embedded Filter(s) Problem when you manage 1 filter on several on same zone

Hi

 

we use this code :

the code :


  if (accessToken && reportId && embedURL) {
    var embedConfiguration = {
        type: 'report',
        accessToken: accessToken,
        id: reportId,
        embedUrl: embedURL,
        settings: {
            filterPaneEnabled: false
       
}
    };

    window.powerbi.embed(document.getElementById('reportContainer'), embedConfiguration);

    if (projectName) {
        var Promise = require('es6-promise').Promise;
        var report = window.powerbi.get(document.getElementById('reportContainer'));

        report.on('loaded', function() {
            const filter = {
                $schema: "http://powerbi.com/product/schema#basic",
                target: {
                    table: "011 - Projets",
                    column: "01 - Projet"
               
},
                operator: "In",
                values: [projectName]
            };

            report.setFilters([filter]);

        });
    }
}

 

But if we have several filters on page report , the others filters disappear

 

We reactive panel to see in embedded : 

 

in power bi .com we have 5 others filters : 

 

 

 

 

An idea ?

 

Thanks

Best reagards

  • Hi Cobra77,

     

    The setFilters() will clear the old filters by default. I would suggest you try the workaround below. Get the old filters first and set the new filters as old filters plus new filters.

    // Build the filter you want to use. For more information, See Constructing
    // Filters in https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters.
    const filter = {
        $schema: "http://powerbi.com/product/schema#basic",
        target: {
            table: "DimProduct",
            column: "ClassID"
        },
        operator: "In",
        values: ["1"]
    };
    
    // Get a reference to the embedded report HTML element
    var embedContainer = $('#embedContainer')[0];
    
    // Get a reference to the embedded report.
    report = powerbi.get(embedContainer);
    
    // Get old filters first.
    report.getFilters()
        .then(function (old_filters) {
            report.setFilters(old_filters.concat([filter]))
                .catch(function (errors) {
                    Log.log(errors);
                });
        })
        .catch(function (errors) {
        });

    Best Regards,

    Dale

1 Reply

  • v-jiascu-msft's avatar
    v-jiascu-msft
    Microsoft Employee

    Hi Cobra77,

     

    The setFilters() will clear the old filters by default. I would suggest you try the workaround below. Get the old filters first and set the new filters as old filters plus new filters.

    // Build the filter you want to use. For more information, See Constructing
    // Filters in https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters.
    const filter = {
        $schema: "http://powerbi.com/product/schema#basic",
        target: {
            table: "DimProduct",
            column: "ClassID"
        },
        operator: "In",
        values: ["1"]
    };
    
    // Get a reference to the embedded report HTML element
    var embedContainer = $('#embedContainer')[0];
    
    // Get a reference to the embedded report.
    report = powerbi.get(embedContainer);
    
    // Get old filters first.
    report.getFilters()
        .then(function (old_filters) {
            report.setFilters(old_filters.concat([filter]))
                .catch(function (errors) {
                    Log.log(errors);
                });
        })
        .catch(function (errors) {
        });

    Best Regards,

    Dale