Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aby bylo možné vizuál certifikovat, musí obsahovat události vykreslování. Tyto události umožňují naslouchacím procesům (především export do PDF a exportu do PowerPointu) zjistit, kdy se vizuál vykresluje a kdy je připravený k exportu.
Důležité
Každý vizuál, který exportuje data (například do powerpointového nebo .pdf souboru), musí obsahovat události vykreslování, aby se zajistilo, že export nezačne před dokončením vykreslování vizuálu.
Rozhraní API událostí vykreslování se skládá ze tří metod volání během vykreslování:
renderingStarted: Voláním této metody označte, že vykreslování začalo. Vždy volejte tuto metodu jako první řádek vaší metody aktualizace, protože to je místo, kde proces vykreslování začíná.renderingFinished: Voláním této metody při úspěšném vykreslení upozorněte naslouchací procesy, že je obrázek vizuálu připravený k exportu. Toto volání by mělo být posledním řádkem kódu, který se spustí při aktualizaci vizuálu. Obvykle je to ale ne vždy poslední řádek metody aktualizace.renderingFailed: Volání této metody, pokud dojde k problému během vykreslování, chcete-li upozornit naslouchací procesy, že vykreslování se nedokončilo. Můžete předat volitelný řetězec, který poskytne důvod selhání.
Poznámka:
Vykreslování událostí je požadavkem na certifikaci vizuálů. Bez nich nebude váš vizuál schválen Partnerským centrem pro publikování. Další informace najdete v požadavcích na certifikaci.
Jak používat rozhraní API pro vykreslování událostí
Chcete-li volat metody vykreslování, nejprve importujte IVisualEventService typ.
visual.tsDo souboru přidejte následující import:import IVisualEventService = powerbi.extensibility.IVisualEventService;IVisualDo třídy přidejte soukromé pole:private events: IVisualEventService;constructorV metoděIVisualtřídy inicializuje pole:this.events = options.host.eventService;
Nyní můžete volat this.events.renderingStarted(options);, this.events.renderingFinished(options);a this.events.renderingFailed(options); tam, kde je to vhodné v metodě aktualizace .
Vykreslování životního cyklu událostí
V každém update() cyklu postupujte podle těchto pravidel:
- Volání
renderingStartedpři zahájení vykreslování - Volání přesně jedné metody dokončení pro daný cyklus:
-
renderingFinishedpři úspěšném vykreslování nebo -
renderingFailedpři selhání vykreslování.
-
- V případě asynchronního vykreslování je volání
renderingFinisheddokončeno až po dokončení vykreslování.
Důležité
Nenechte metodu update() ukončit bez signalizace dokončení. Po volání renderingStartedmusíte vždy volat buď renderingFinished nebo renderingFailed.
Vzory implementace kódu
Synchronní aktualizace se zpracováním chyb
public update(options: VisualUpdateOptions): void {
this.host.eventService.renderingStarted(options);
try {
this.renderView(options); // visual rendering logic
this.host.eventService.renderingFinished(options);
} catch (error) {
this.host.eventService.renderingFailed(options, String(error));
throw error;
}
}
Asynchronní aktualizace se zpracováním chyb
public async update(options: VisualUpdateOptions): Promise<void> {
this.host.eventService.renderingStarted(options);
try {
await this.renderAsync(options); // visual rendering logic
this.host.eventService.renderingFinished(options);
} catch (error) {
this.host.eventService.renderingFailed(options, String(error));
throw error;
}
}
Řetězec příslibů s využitím .then().catch()
public update(options: VisualUpdateOptions): void {
this.host.eventService.renderingStarted(options);
this.renderAsync(options) // visual rendering logic
.then(() => {
this.host.eventService.renderingFinished(options);
})
.catch((error) => {
this.host.eventService.renderingFailed(options, String(error));
throw error;
});
}