Bagikan melalui


Peristiwa "Me-render" dalam visual Power BI

Untuk mendapatkan sertifikasi visual, peristiwa render harus tercakup. Peristiwa ini memungkinkan pendengar (terutama, mengekspor ke PDF dan mengekspor ke PowerPoint) tahu kapan visual sedang dirender dan kapan siap untuk diekspor.

Penting

Setiap visual yang mengekspor data (misalnya, ke file PowerPoint atau .pdf ) harus berisi peristiwa penyajian untuk memastikan bahwa ekspor tidak dimulai sebelum penyajian visual selesai.

API peristiwa render terdiri dari tiga metode yang harus dipanggil selama pe-render-an:

  • renderingStarted: Kode visual Power BI memanggil renderingStarted metode untuk menunjukkan bahwa proses penyajian dimulai. Metode ini harus selalu menjadi baris pertama dari metode pembaruan karena di sanalah proses render dimulai.

  • renderingFinished: Saat render berhasil diselesaikan, kode visual Power BI memanggil renderingFinished metode untuk memberi tahu pendengar bahwa gambar visual siap untuk diekspor. Metode ini harus menjadi baris terakhir kode yang dijalankan saat visual diperbarui. Biasanya, tetapi tidak selalu, baris terakhir dari metode pembaruan.

  • renderingFailed: Jika masalah terjadi selama proses penyajian, visual Power BI tidak berhasil di-render. Untuk memberi tahu pendengar bahwa proses penyajian tidak selesai, kode visual Power BI harus memanggil renderingFailed metode . Metode ini juga menyediakan string opsional untuk memberikan alasan kegagalan.

Catatan

Me-render Peristiwa adalah persyaratan untuk sertifikasi visual. Tanpa me-render peristiwa, visual Anda tidak akan disetujui oleh Pusat Mitra untuk publikasi. Untuk informasi lebih lanjut, lihat Persyaratan sertifikasi.

Cara menggunakan API peristiwa render

Untuk memanggil metode render, Anda harus terlebih dahulu mengimpornya dari IVisualEventService.

  1. Di file visual.ts Anda, mencakup garis:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. Di kelas IVisual mencakup garis:

    private events: IVisualEventService;
    
  3. Di metode constructor kelas IVisual

    this.events = options.host.eventService;
    

Anda sekarang dapat memanggil metode this.events.renderingStarted(options);, this.events.renderingFinished(options);, dan this.events.renderingFailed(options); jika sesuai dalam metode pembaruan Anda.

Contoh 1: Visual tanpa animasi

Berikut adalah contoh visual sederhana yang menggunakan API peristiwa render.

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

Contoh 2: Visual dengan animasi

Jika visual memiliki animasi atau fungsi asinkron untuk penyajian, renderingFinished metode harus dipanggil setelah animasi atau di dalam fungsi asinkron, bahkan jika itu bukan baris terakhir dari metode pembaruan.

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