Partager via


Utiliser l’incorporation par phases

L’analytique incorporée Power BI powerbi.load et les API report.render peuvent améliorer l’expérience utilisateur final en offrant aux développeurs davantage de flexibilité pour l’incorporation de rapports par phase.

Normalement, vous chargez un rapport incorporé à l’aide de powerbi.embed:

let report = powerbi.embed(embedContainer, embedConfig);

Le rapport incorporé charge et affiche dans l’interface utilisateur. L’utilisateur final voit ensuite toutes les interactions avec le rapport rendu. Par exemple, si vous appliquez un état de segment, l’utilisateur final voit le segment prendre effet après le rendu du rapport.

Pour masquer ces interactions des utilisateurs finaux, les API powerbi.load et report.render décomposent le processus d’incorporation en phases. La fonction powerbi.load charge le rapport afin de pouvoir interagir avec les éléments avant que les utilisateurs finaux voient les résultats. La fonction report.render affiche ensuite le rapport.

Charger

La fonction powerbi.load charge le rapport, mais ne l’affiche pas, de sorte que les interactions peuvent se produire avant que l’utilisateur final voit les résultats. Par exemple, vous pouvez utiliser powerbi.load avec report.getPages, puis spécifier la page à afficher pour l’utilisateur final. Vous pouvez également utiliser page.getVisuals, puis décider quels visuels afficher ou masquer.

Comme powerbi.embed, la fonction powerbi.load nécessite un élément HTML et un objet IEmbedConfiguration.

Une fois la charge terminée, un événement loaded se déclenche.

let config = {
    ...
};

// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

report.on('loaded', function() {
    ...
});

Rendre

Si vous utilisez powerbi.load, vous devez ensuite appeler la fonction report.render sur la fonction de gestionnaire d’événements loaded, après avoir exécuté votre code. Utilisez report.render pour poursuivre le rendu du rapport et afficher le rapport incorporé.

Un événement rendered se déclenche lorsque le rapport termine le rendu.

report.on('loaded', function() {
    report.render();
});

report.on('rendered', () => {
    ...
});

Pour plus d’informations sur la gestion des événements, consultez Comment gérer les événements.

Exemple

L’exemple de code suivant charge un rapport, définit des filtres, puis restitue le rapport filtré.

// Build the config object.
let config = {
    type: 'report',
    tokenType: TokenType.Embed,
    accessToken: ...,
    embedUrl: ...,
    id: ...,
    ...
};
 
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

...
report.on('loaded', async () => {
    await report.setFilters(filters);
    report.render();
});

Considérations et limitations

L’incorporation par phases peut ralentir le rendu des rapports. Veillez donc à l’utiliser correctement et uniquement quand vous en avez besoin.

Vous pouvez appeler les API suivantes après avoir chargé le rapport et avant d’appeler report.render:

Méthode Action
BookmarksManager.getBookmarks, BookmarksManager.apply Obtenez et appliquez des signets. La capture de signets n’est pas prise en charge.
report.updateSettings Mettez à jour les paramètres du rapport.
Report.applyTheme Appliquez le thème du rapport.
Report.getFilters, Report.setFilters, Report.removeFilters Obtenir, définir et supprimer des filtres de rapport.
Report.getPages Obtenez les pages du rapport.
Page.setActive Définissez la page de rapport active.
Page.getFilters, Page.setFilters, Page.removeFilters Obtenir, définir et supprimer des filtres de page.
Page.getVisuals Obtenir des visuels de page.
Visual.getFilters , Visual.setFilters, Visual.removeFilters Obtenir, définir et supprimer des filtres visuels.
Visual.getSlicerState, Visual.setSlicerState Obtenir et définir l’état du segment visuel.