Del via


«Gjengivelse»-hendelser i Power BI-visualobjekter

For å få et visualobjekt sertifisert, må det inkludere gjengivelseshendelser. Disse hendelsene lar lyttere (primært eksportere til PDF og eksportere til PowerPoint) vite når visualobjektet gjengis og når det er klart for eksport.

Viktig

Alle visualobjekter som eksporterer data (for eksempel til en PowerPoint- eller .pdf-fil ), må inneholde gjengivelseshendelser for å sikre at eksporten ikke begynner før visualobjektet er ferdig gjengitt.

API-en for gjengivelseshendelser består av tre metoder som skal kalles under gjengivelse:

  • renderingStarted: Visualobjektkoden for renderingStarted Power BI kaller metoden for å angi at gjengivelsesprosessen startet. Denne metoden bør alltid være den første linjen i oppdateringsmetoden, siden det er her gjengivelsesprosessen begynner.

  • renderingFinished: Når gjengivelsen er fullført, kaller renderingFinished visualobjektkoden for Power BI metoden for å varsle lytterne om at bildet av visualobjektet er klart for eksport. Denne metoden bør være den siste kodelinjen som kjøres når visualobjektet oppdateres. Det er vanligvis, men ikke alltid, den siste linjen i oppdateringsmetoden.

  • renderingFailed: Hvis det oppstår et problem under gjengivelsesprosessen, gjengis ikke Power BI-visualobjektet. Hvis du vil varsle lytterne om at gjengivelsesprosessen ikke ble fullført, bør visualobjektkoden for Power BI kalle renderingFailed metoden. Denne metoden gir også en valgfri streng for å angi en årsak til feilen.

Merk

Gjengivelseshendelser er et krav for sertifisering av visualobjekter. Uten dem blir ikke visualobjektet godkjent av partnersenteret for publisering. Hvis du vil ha mer informasjon, kan du se sertifiseringskrav.

Slik bruker du API-en for gjengivelseshendelser

Hvis du vil kalle opp gjengivelsesmetodene , må du først importere dem fra IVisualEventService.

  1. Inkluder visual.ts linjen i filen:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. In the IVisual class include the line:

    private events: IVisualEventService;
    
  3. constructor I klassens metode IVisual

    this.events = options.host.eventService;
    

Nå kan du kalle metodene this.events.renderingStarted(options);, this.events.renderingFinished(options);og this.events.renderingFailed(options); der det er aktuelt i oppdateringsmetoden .

Eksempel 1: Visualobjekt uten animasjoner

Her er et eksempel på et enkelt visualobjekt som bruker API-en for gjengivelseshendelser .

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

Eksempel 2: Visualobjekt med animasjoner

Hvis visualobjektet har animasjoner eller asynkrone funksjoner for gjengivelse, renderingFinished bør metoden kalles etter animasjonen eller i den asynkrone funksjonen, selv om det ikke er den siste linjen i oppdateringsmetoden.

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