Aracılığıyla paylaş


Power BI görsellerinde "işleme" olayları

Bir görselin sertifikalanması için işleme olaylarını içermesi gerekir. Bu olaylar dinleyicilerin (öncelikli olarak PDF'ye aktar ve PowerPoint'e aktar) görselin ne zaman işlendiğini ve dışarı aktarma için hazır olduğunu bilmesini sağlar.

Önemli

Verileri dışarı aktaran tüm görseller (örneğin, bir PowerPoint veya .pdf dosyası) dışarı aktarma işleminin görsel işleme tamamlanmadan başlamadığından emin olmak için işleme olayları içermelidir.

İşleme olayları API'si, işleme sırasında çağrılması gereken üç yöntemden oluşur:

  • renderingStarted: Power BI görsel kodu, işleme işleminin renderingStarted başlatıldığını belirtmek için yöntemini çağırır. bu yöntem, işleme işleminin başladığı yer olduğundan her zaman güncelleştirme yönteminin ilk satırı olmalıdır.

  • renderingFinished: İşleme başarıyla tamamlandığında, Power BI görsel kodu dinleyicilere görselin renderingFinished görüntüsünün dışarı aktarma için hazır olduğunu bildirmek için yöntemini çağırır. Bu yöntem, görsel güncelleştirildiğinde yürütülen son kod satırı olmalıdır. Genellikle güncelleştirme yönteminin son satırıdır ancak her zaman değildir.

  • renderingFailed: İşleme işlemi sırasında bir sorun oluşursa Power BI görseli başarıyla işlenmez. Dinleyicilere işleme işleminin tamamlanmadığını bildirmek için Power BI görsel kodunun yöntemini çağırması renderingFailed gerekir. Bu yöntem, hatanın nedenini sağlamak için isteğe bağlı bir dize de sağlar.

Not

İşleme olayları , görsellerin sertifikasyonu için bir gereksinimdir. Bunlar olmadan görseliniz İş Ortağı Merkezi tarafından yayımlanmak üzere onaylanmayacaktır. Daha fazla bilgi için bkz . sertifika gereksinimleri.

İşleme olayları API'sini kullanma

İşleme yöntemlerini çağırmak için önce bunları IVisualEventService'ten içeri aktarmanız gerekir.

  1. Dosyanıza visual.ts şu satırı ekleyin:

    import IVisualEventService = powerbi.extensibility.IVisualEventService;
    
  2. sınıfına IVisual şu satırı ekleyin:

    private events: IVisualEventService;
    
  3. constructor sınıfının yönteminde IVisual

    this.events = options.host.eventService;
    

Artık, güncelleştirme yönteminizde uygun yerlerde , this.events.renderingFinished(options);ve this.events.renderingFailed(options); yöntemlerini this.events.renderingStarted(options);çağırabilirsiniz.

Örnek 1: Animasyonsuz görsel

İşleme olayları API'sini kullanan basit bir görsel örneği aşağıda verilmiştır.

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

Örnek 2: Animasyonlu görsel

Görselde işleme için animasyonlar veya zaman uyumsuz işlevler varsa, renderingFinished yöntem, güncelleştirme yönteminin son satırı olmasa bile animasyondan sonra veya zaman uyumsuz işlevin içinde çağrılmalıdır.

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