Hahmontamistapahtumat Power BI:n visualisoinneissa

Visualisoinnin sertifioinnin saamiseksi sen täytyy sisältää hahmontamistapahtumat. Näiden tapahtumien avulla kuuntelijat (ensisijaisesti vienti PDF-muotoon ja vienti PowerPointiin) tietävät, milloin visualisointi hahmonnetaan ja milloin se on valmis vientiin.

Tärkeä

Visualisoinnin, joka vie tietoja (esimerkiksi PowerPoint- tai .pdf-tiedostoon ), on sisällettävä hahmontamistapahtumat, jotta vienti ei ala ennen visualisoinnin hahmontamista.

Hahmontamistapahtumien ohjelmointirajapinta koostuu kolmesta menetelmästä, joita tulee kutsua hahmonnuksen aikana:

  • renderingStarted: Power BI:n visualisoinnin koodi kutsuu - renderingStarted menetelmää sen ilmaisemiseksi, että hahmontamisprosessi on alkanut. Tämän menetelmän tulee aina olla päivitysmenetelmän ensimmäinen rivi, koska siitä hahmontamisprosessi alkaa.

  • renderingFinished: Kun hahmontaminen on suoritettu onnistuneesti, Power BI:n visualisoinnin koodi kutsuu renderingFinished -menetelmää ilmoittaakseen kuuntelutoiminnoille, että visualisoinnin kuva on valmis vientiin. Tämän menetelmän tulee olla viimeinen koodirivi, joka on suoritettu visualisoinnin päivittyessä. Päivitysmenetelmän viimeinen rivi on yleensä, mutta ei aina.

  • renderingFailed: Jos hahmontamisprosessin aikana ilmenee ongelma, Power BI -visualisointia ei voi hahmontaa onnistuneesti. Jos haluat ilmoittaa kuuntelutoiminnoille, että hahmontamisprosessi ei ole valmis, Power BI:n visualisoinnin koodin tulee kutsua -menetelmää renderingFailed . Tämä menetelmä tarjoaa myös valinnaisen merkkijonon virheen syyn ilmoittamista varten.

Muistiinpano

Tapahtumien hahmontaminen on välttämätöntä visualisointien sertifioinnin kannalta. Ilman niitä kumppanikeskus ei hyväksy visualisointiasi julkaistavaksi. Lisätietoja on artikkelissa Sertifioinnin edellytykset.

Tapahtumien hahmontamisen ohjelmointirajapinnan käyttäminen

Jos haluat kutsua hahmontamismenetelmiä, sinun on tuotava ne ensin IVisualEventService-palvelusta.

  1. visual.ts Sisällytä tiedostoon rivi:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. Sisällytä IVisual luokkaan rivi:

    private events: IVisualEventService;
    
  3. constructor Luokan -menetelmässä IVisual

    this.events = options.host.eventService;
    

Voit nyt kutsua -menetelmiä this.events.renderingStarted(options);, this.events.renderingFinished(options);ja this.events.renderingFailed(options); tarvittaessa päivitysmenetelmässä.

Esimerkki 1: Visualisointi ilman animaatioita

Tässä on esimerkki yksinkertaisesta visualisoinnista, joka käyttää tapahtumien hahmontamisen ohjelmointirajapintaa.

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

Esimerkki 2: Animaatioita sisältävä visualisointi

Jos visualisoinnissa on animaatioita tai asynkronisia funktioita hahmontamista varten, renderingFinished -menetelmä tulee kutsua animaation jälkeen tai asynkronisen funktion sisällä, vaikka se ei olisi päivitysmenetelmänviimeinen rivi.

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