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. |