"Renderelés" események Power BI-vizualizációkban

A vizualizáció minősítéséhez renderelési eseményeket kell tartalmaznia. Ezek az események lehetővé teszik a figyelők számára (elsősorban a PDF-be való exportálást és a PowerPointba való exportálást) a vizualizáció renderelésének időpontjáról és az exportálásra való készenlétről.

Fontos

Az adatokat (például PowerPoint- vagy .pdf-fájlba ) exportáló vizualizációknak renderelési eseményeket kell tartalmazniuk, hogy az exportálás ne kezdődjön meg a vizualizáció renderelésének befejezése előtt.

A renderelési események API három metódusból áll, amelyeket a renderelés során kell meghívni:

  • renderingStarted: A Power BI-vizualizáció kódja meghívja a renderingStarted metódust, hogy jelezze, hogy a renderelési folyamat elindult. Ez a metódus mindig a frissítési módszer első sora, mivel itt kezdődik a renderelési folyamat.

  • renderingFinished: Ha a renderelés sikeresen befejeződött, a Power BI-vizualizáció kódja meghívja a renderingFinished metódust, hogy értesítse a figyelőket arról, hogy a vizualizáció képe készen áll az exportálásra. Ennek a metódusnak kell lennie a vizualizáció frissítésekkor végrehajtott kód utolsó sora. Ez általában, de nem mindig a frissítési módszer utolsó sora.

  • renderingFailed: Ha probléma merül fel a renderelési folyamat során, a Power BI-vizualizáció nem jelenik meg sikeresen. Ha értesíteni szeretné a figyelőket arról, hogy a renderelési folyamat nem fejeződött be, a Power BI-vizualizációs kódnak meg kell hívnia a metódust renderingFailed . Ez a metódus egy opcionális sztringet is biztosít a hiba okának megadásához.

Megjegyzés:

A renderelési események a vizualizációk minősítésének követelményét képezik. Nélkülük a vizualizációt a Partnerközpont nem hagyja jóvá közzétételre. További információkért tekintse meg a minősítési követelményeket.

A renderelési események API használata

A renderelési módszerek meghívásához először importálnia kell őket az IVisualEventService szolgáltatásból.

  1. visual.ts A fájlban adja meg a következő sort:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. Az osztályban IVisual szerepeljen a következő sor:

    private events: IVisualEventService;
    
  3. constructor Az osztály metódusában IVisual

    this.events = options.host.eventService;
    

Most már meghívhatja a metódusokatthis.events.renderingStarted(options);, this.events.renderingFinished(options);és this.events.renderingFailed(options); ahol szükséges, a frissítési metódusban.

1. példa: Vizualizáció animációk nélkül

Íme egy példa egy egyszerű vizualizációra, amely a renderelési események API-t használja.

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

2. példa: Vizualizáció animációkkal

Ha a vizualizáció animációkkal vagy aszinkron függvényekkel rendelkezik a rendereléshez, a renderingFinished metódust az animáció után vagy az aszinkron függvényen belül kell meghívni, még akkor is, ha nem ez a frissítési módszer utolsó sora.

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