Udalosti vykresľovania vo vizuáloch služby Power BI
Ak chcete získať certifikáciu vizuálu, musí obsahovať udalosti vykresľovania. Tieto udalosti umožňujú prijímačom (predovšetkým exportovať do súboru PDF a exportovať do PowerPointu) vedieť, kedy sa vykreslený vizuál vykreslí a kedy je pripravený na export.
Dôležité
Každý vizuál, ktorý exportuje údaje (napríklad do PowerPointu alebo .pdf súboru), musí obsahovať udalosti vykresľovania, aby sa zabezpečilo, že export sa nezačína pred dokončením vykresľovania vizuálu.
Rozhranie API udalostí vykresľovania pozostáva z troch metód, ktoré by sa mali vyvolať počas vykresľovania:
renderingStarted
: Kód vizuálu služby Power BI zavolá metódurenderingStarted
, ktorá označuje, že proces vykresľovania sa spustil. Táto metóda by mala byť vždy prvým riadkom metódy update, pretože to je miesto, kde začína proces vykresľovania.renderingFinished
: Keď sa vykresľovanie úspešne dokončí, kód vizuálu služby Power BI zavolá metódurenderingFinished
, ktorá oznamuje prijímačom, že obrázok vizuálu je pripravený na export. Táto metóda by mala byť posledným riadkom kódu, ktorý sa vykoná pri aktualizácii vizuálu. Zvyčajne je to ale nie vždy posledný riadok metódy update.renderingFailed
: Ak sa počas procesu vykresľovania vyskytne problém, vizuál služby Power BI sa úspešne nevykreslí. S cieľom oznámiť prijímačom, že proces vykresľovania sa nedokončil, by mal kód vizuálu služby Power BI vyvolať metódurenderingFailed
. Táto metóda tiež poskytuje voliteľný reťazec na zdôvodnenie zlyhania.
Poznámka
Udalosti vykresľovania sú požiadavkou pre certifikáciu vizuálov. Bez nich bude váš vizuál schválený Centrom pre partnerov na publikovanie. Ďalšie informácie nájdete v téme Požiadavky certifikácie.
Používanie rozhrania API udalostí vykresľovania
Ak chcete volať metódy vykresľovania, musíte ich najprv importovať z IVisualEventService.
V súbore zahrňte
visual.ts
riadok:import IVisualEventService = powerbi.extensibility.IVisualEventService;
IVisual
V triede zahrnuje riadok:private events: IVisualEventService;
V metóde
constructor
IVisual
triedythis.events = options.host.eventService;
Teraz môžete volať metódy this.events.renderingStarted(options);
, a this.events.renderingFailed(options);
tam, this.events.renderingFinished(options);
kde je to vhodné, v metóde update.
Príklad 1: Vizuál bez animácií
Tu je príklad jednoduchého vizuálu, ktorý používa rozhranie API udalostí vykreslenia.
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);
}
Príklad 2: Vizuál s animáciami
Ak má vizuál animácie alebo asynchrónne funkcie na vykresľovanie, renderingFinished
metóda by sa mala vyvolať za animáciou alebo vo vnútri asynchrónnej funkcie, aj keď to nie je posledný riadok metódy 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);
});
}