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 vykreslí vizuál a kedy je pripravený na export.

Dôležité

Každý vizuál, ktorý exportuje údaje (napríklad do PowerPointu alebo súboru .pdf ), 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ódu renderingStarted , 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ódu renderingFinished , 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ódu renderingFailed . 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.

  1. V súbore zahrňte visual.ts riadok:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. IVisual V triede zahrnuje riadok:

    private events: IVisualEventService;
    
  3. V metóde constructorIVisual triedy

    this.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);
            });
        }