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şlemininrenderingStarted
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örselinrenderingFinished
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.
Dosyanıza
visual.ts
şu satırı ekleyin:import IVisualEventService = powerbi.extensibility.IVisualEventService;
sınıfına
IVisual
şu satırı ekleyin:private events: IVisualEventService;
constructor
sınıfının yöntemindeIVisual
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);
});
}