Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby uzyskać certyfikat wizualizacji, musi zawierać zdarzenia renderowania. Te zdarzenia pozwalają odbiornikom (przede wszystkim eksportować do formatu PDF i eksportować do programu PowerPoint) wiedzieć, kiedy wizualizacja jest renderowana i kiedy jest gotowa do eksportu.
Ważne
Każda wizualizacja, która eksportuje dane (na przykład do pliku programu PowerPoint lub .pdf ), musi zawierać zdarzenia renderowania, aby upewnić się, że eksport nie rozpoczyna się przed zakończeniem renderowania wizualizacji.
Interfejs API zdarzeń renderowania składa się z trzech metod wywoływania podczas renderowania:
renderingStarted: Wywołaj tę metodę, aby wskazać, że rozpoczęto renderowanie. Zawsze należy wywołać tę metodę jako pierwszy wiersz metody aktualizacji, ponieważ rozpoczyna się proces renderowania.renderingFinished: Wywołaj tę metodę po pomyślnym zakończeniu renderowania, aby powiadomić odbiorniki, że obraz wizualizacji jest gotowy do eksportu. To wywołanie powinno być ostatnim wierszem kodu, który jest uruchamiany , gdy wizualizacja zostanie zaktualizowana. Zazwyczaj jest to, ale nie zawsze, ostatni wiersz metody update.renderingFailed: Wywołaj tę metodę, jeśli podczas renderowania wystąpi problem, aby powiadomić odbiorniki, że renderowanie nie zostało ukończone. Możesz przekazać opcjonalny ciąg, aby podać przyczynę błędu.
Uwaga
Zdarzenia renderowania są wymagane do certyfikacji wizualizacji. Bez nich wizualizacja nie zostanie zatwierdzona przez Centrum partnerskie do publikacji. Aby uzyskać więcej informacji, zobacz wymagania dotyczące certyfikacji.
Jak używać interfejsu API zdarzeń renderowania
Aby wywołać metody renderowania, najpierw zaimportuj IVisualEventService typ.
visual.tsW pliku dodaj następujący import:import IVisualEventService = powerbi.extensibility.IVisualEventService;IVisualW klasie dodaj pole prywatne:private events: IVisualEventService;W metodzie
constructorklasy zainicjujIVisualpole:this.events = options.host.eventService;
Teraz możesz wywołać metodę this.events.renderingStarted(options);, this.events.renderingFinished(options);i this.events.renderingFailed(options); , jeśli jest to odpowiednie w metodzie update .
Cykl życia zdarzenia renderowania
Postępuj zgodnie z tymi regułami w każdym update() cyklu:
- Wywołanie
renderingStartedpo rozpoczęciu renderowania. - Wywołaj dokładnie jedną metodę uzupełniania dla tego cyklu:
-
renderingFinishedpo pomyślnym zakończeniu renderowania lub -
renderingFailedw przypadku niepowodzenia renderowania.
-
- W przypadku renderowania asynchronicznego wywołaj metodę
renderingFinisheddopiero po zakończeniu renderowania.
Ważne
Nie pozwól update() , aby metoda zakończyła się bez sygnalizowania ukończenia. Po wywołaniu renderingStartedmetody należy zawsze wywołać metodę renderingFinished lub renderingFailed.
Wzorce implementacji kodu
Aktualizacja synchroniczna z obsługą błędów
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;
}
}
Aktualizacja asynchroniczna z obsługą błędów
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;
}
}
Łańcuch obietnic z .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;
});
}