Events
Power BI DataViz World Championships
14 Feb, 4 pm - 31 Mar, 4 pm
With 4 chances to enter, you could win a conference package and make it to the LIVE Grand Finale in Las Vegas
Learn moreThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
In order to get a visual certified, it must include rendering events. These events let listeners (primarily, export to PDF and export to PowerPoint) know when the visual is being rendered and when it's ready for export.
Important
Any visual that exports data (for example, to a PowerPoint or .pdf file) must contain rendering events to ensure that the export doesn't begin before the visual finished rendering.
The rendering events API consists of three methods that should be called during rendering:
renderingStarted
: The Power BI visual code calls the renderingStarted
method to indicate that the rendering process started. This method should always be the first line of the update method since that is where the rendering process begins.
renderingFinished
: When rendering is completed successfully, the Power BI visual code calls the renderingFinished
method to notify the listeners that the visual's image is ready for export. This method should be the last line of code executed when the visual updates. It's usually, but not always, the last line of the update method.
renderingFailed
: If a problem occurs during the rendering process, the Power BI visual doesn't render successfully. To notify the listeners that the rendering process wasn't completed, the Power BI visual code should call the renderingFailed
method. This method also provides an optional string to provide a reason for the failure.
Note
Rendering events are a requirement for visuals certification. Without them your visual won't be approved by the Partner Center for publication. For more information, see certification requirements.
To call the rendering methods, you have to first import them from the IVisualEventService.
In your visual.ts
file, include the line:
import IVisualEventService = powerbi.extensibility.IVisualEventService;
In the IVisual
class include the line:
private events: IVisualEventService;
In the constructor
method of the IVisual
class
this.events = options.host.eventService;
You can now call the methods
this.events.renderingStarted(options);
,
this.events.renderingFinished(options);
, and
this.events.renderingFailed(options);
where appropriate in your update method.
Here's an example of a simple visual that uses the render events API.
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);
}
If the visual has animations or asynchronous functions for rendering, the renderingFinished
method should be called after the animation or inside async function, even if it's not the last line of the update method.
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);
});
}
Events
Power BI DataViz World Championships
14 Feb, 4 pm - 31 Mar, 4 pm
With 4 chances to enter, you could win a conference package and make it to the LIVE Grand Finale in Las Vegas
Learn more