Événements de « rendu » dans les visuels Power BI
Pour obtenir un visuel certifié, il doit inclure des événements de rendu. Ces événements permettent aux écouteurs (principalement Exporter au format PDF et Exporter vers PowerPoint) de savoir quand le visuel est rendu et quand il est prêt à être exporté.
Important
Tout visuel qui exporte des données (par exemple, vers un fichier PowerPoint ou .pdf) doit contenir des événements de rendu pour que l’exportation ne commence pas avant la fin du rendu du visuel.
L’API des événements de rendu est constituée de trois méthodes qui doivent être appelées pendant le rendu :
renderingStarted
: le code du visuel Power BI appelle la méthoderenderingStarted
pour signaler que le processus de rendu a commencé. Cette méthode doit toujours être la première ligne de la méthode update, car c’est là que le processus de rendu commence.renderingFinished
: quand le rendu a réussi, le code du visuel Power BI appelle la méthoderenderingFinished
pour informer les écouteurs que l’image du visuel est prête à être exportée. Cette méthode doit être la dernière ligne de code exécutée quand le visuel est mis à jour. Il s’agit généralement de la dernière ligne de la méthode de mise à jour, mais pas toujours.renderingFailed
: si un problème se produit pendant le processus de rendu, le visuel Power BI ne s’affiche pas correctement. Pour signaler aux écouteurs que le processus de rendu n’a pas été terminé, le code du visuel Power BI doit appeler la méthoderenderingFailed
. Cette méthode fournit également une chaîne facultative pour fournir la raison de l’échec.
Notes
Les événements de rendu sont obligatoires pour la certification des visuels. Sans eux, votre visuel ne sera pas approuvé par l’Espace partenaires pour la publication. Pour plus d’informations, consultez les critères de certification.
Comment utiliser l’API des événements de rendu
Pour appeler les méthodes de rendu, vous devez d’abord les importer à partir d’IVisualEventService.
Dans votre fichier
visual.ts
, incluez la ligne suivante :import IVisualEventService = powerbi.extensibility.IVisualEventService;
Dans la classe
IVisual
, incluez la ligne suivante :private events: IVisualEventService;
Dans la méthode
constructor
de la classeIVisual
this.events = options.host.eventService;
Vous pouvez maintenant appeler les méthodes this.events.renderingStarted(options);
, this.events.renderingFinished(options);
et this.events.renderingFailed(options);
, le cas échéant, dans votre méthode update.
Exemple 1 : Visuel sans animations
Voici un exemple d’un visuel simple qui utilise l’API des événements de rendu.
export class Visual implements IVisual {
...
private events: IVisualEventService;
...
constructor(options: VisualConstructorOptions) {
...
this.events = options.host.eventService;
...
}
public update(options: VisualUpdateOptions) {
this.events.renderingStarted(options);
...
this.events.renderingFinished(options);
}
Exemple 2 : Visuel avec animations
Si le visuel comporte des animations ou des fonctions asynchrones pour le rendu, la méthode renderingFinished
doit être appelée après l’animation ou au sein de la fonction asynchrones, même s’il ne s’agit pas de la dernière ligne de la méthode update.
export class Visual implements IVisual {
...
private events: IVisualEventService;
private element: HTMLElement;
...
constructor(options: VisualConstructorOptions) {
...
this.events = options.host.eventService;
this.element = options.element;
...
}
public update(options: VisualUpdateOptions) {
this.events.renderingStarted(options);
...
// Learn more at https://github.com/d3/d3-transition/blob/master/README.md#transition_end
d3.select(this.element).transition().duration(100).style("opacity","0").end().then(() => {
// renderingFinished called after transition end
this.events.renderingFinished(options);
});
}