Öğretici: Power BI daire kartı görseli geliştirme
Geliştirici olarak kendi Power BI görsellerinizi oluşturabilirsiniz. Bu görselleri kendiniz kullanabilir veya kuruluşunuzun ve üçüncü tarafların kullanımına sunabilirsiniz.
Bu öğreticide Power BI’da daire içinde biçimlendirilmiş bir ölçüyü görüntüleyen daire kartı adlı özel bir Power BI görselini geliştireceksiniz. Daire kartı görseli, dolgu rengini ve ana hat kalınlığını özelleştirme desteği sunar.
Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:
- Görseliniz için bir geliştirme projesi oluşturma.
- D3 görsel öğeleriyle görselinizi geliştirme.
- Görselinizi verileri işleyecek şekilde yapılandırma.
- Görseli boyut değişikliklerine uyum sağlanmış olacak şekilde yapılandırma.
- Görselin uyarlamalı renk ve kenarlık ayarlarını yapılandırma.
Not
Bu görselin tam kaynak kodu için bkz. daire kartı Power BI görseli.
Önkoşullar
Power BI görselinizi geliştirmeye başlamadan önce bu bölümde listelenen tüm koşulları karşıladığınızdan emin olun.
kullanıcı başına bir Power BI Pro veya Premium (ppu) hesabı. Bir aboneliğiniz yoksa ücretsiz deneme sürümüne kaydolun.
Visual Studio Code (VS Code). VS Code, JavaScript ve TypeScript uygulaması geliştirmek için ideal tümleşik geliştirme ortamıdır (IDE).
Windows PowerShell sürüm 4 veya üzeri (Windows için). Ya da Terminal (OSX için).
Power BI görseli geliştirmeye hazır bir ortam. Power BI görseli geliştirmek için ortamınızı ayarlama.
Bu öğreticide US Sales Analysis adlı rapor kullanılmıştır. bu raporu indirebilir ve Power BI hizmetine yükleyebilir ya da kendi raporunuzu kullanabilirsiniz. Power BI hizmeti ve dosya yükleme adımları hakkında daha fazla bilgiye ihtiyacınız varsa Power BI hizmetinde içerik oluşturmaya başlama öğreticisine bakın.
Geliştirme projesi oluşturma
Bu bölümde daire kartı görseli için bir proje oluşturacaksınız.
PowerShell'i açın ve projenizi oluşturmak istediğiniz klasöre gidin.
Aşağıdaki komutu girin:
pbiviz new CircleCardProje klasörüne gidin.
cd CircleCardDaire kartı görselini başlatın. Görseliniz artık çalışıyor ve bilgisayarınızda barındırılıyor.
pbiviz startÖnemli
Öğreticinin sonuna kadar PowerShell penceresini kapatabilirsiniz. Görselin çalışma süresini durdurmak için Ctrl+C tuşlarına basın ve toplu işi sonlandırmanız istenirse Y girin ve Enter tuşuna basın.
Görseli Power BI görüntüleme
Görseli Power BI test etmek için ABD Satış Analizi raporunu kullanacağız. Bu raporu indirip Power BI hizmetine yükleyebilirsiniz.
Görseli test etmek için kendi raporlarınızı da kullanabilirsiniz.
Not
Devam etmeden önce görsellerin geliştirici ayarlarını etkinleştirdiğinizi doğrulayın.
PowerBI.com adresinde oturum açıp US Sales Analysis adlı raporu açın.
Diğer seçenekler > Düzenle'yi seçin.

Power BI hizmeti arabiriminin alt tarafında bulunan Yeni sayfa düğmesine tıklayarak test için yeni bir sayfa oluşturun.

Görselleştirmeler bölmesinde Geliştirici Görseli'ni seçin.

Bu görsel, bilgisayarınızda çalışan özel görseli temsil eder. Yalnızca özel görsel hata ayıklama ayarı etkinleştirildiğinde kullanılabilir.
Rapor tuvaline bir görsel eklendiğini doğrulayın.

Bu öğe, güncelleştirme yönteminin çağrıldığı sayıyı gösteren basit bir görseldir. Görsel bu aşamada herhangi bir veri almaz.
Not
Görsel yerine bağlantı hatası iletisi görünüyorsa tarayıcınızda yeni bir sekme açın,
https://localhost:8080/assets/statusadresine gidin ve tarayıcınızın bu adresi kullanmasına yetki verin.
Yeni görsel seçili durumdayken Alanlar bölmesine gidin, Sales bölümünü genişletin ve Quantity değerini seçin.

Görselin nasıl yanıt verdiğini test etmek için yeniden boyutlandırın. Güncelleştirme sayısı değerinin görseli yeniden boyutlandırdığınızda arttığını göreceksiniz.

Görsel öğe ve metin ekleme
Bu bölümde görselinizi daireye dönüştürmeyi ve metin eklemeyi öğreneceksiniz.
Not
Bu öğreticide Power BI görselini geliştirmek için Visual Studio Code (VS Code) kullanılmıştır.
visuals.ts dosyasını değiştirme
Kod silerek ve ekleyerek visual.ts dosyasını oluşturun.
Projenizi VS Code (Dosya > Klasör Aç) ile açın.
Gezgin bölmesinde src klasörünü genişletip visual.ts dosyasını seçin.

Önemli
visual.ts dosyasının en üst bölümündeki açıklamaları inceleyin. Power BI görsel paketlerini kullanma izni, Massachusetts Institute of Technology (MIT) Lisansı koşulları kapsamında ücretsiz olarak sunulur. Anlaşmanın bir parçası olarak dosyanın en üstünde bulunan açıklamaları tutmanız gerekir.
visual.ts dosyasından aşağıdaki kod satırlarını kaldırın.
VisualSettings import:
import { VisualSettings } from "./settings";Dört sınıf düzeyi özel değişken bildirimi.
constructor içindeki tüm kod satırları.
update yönteminin içindeki tüm kod satırları.
parseSettings ve enumerateObjectInstances yöntemleri dahil olmak üzere update yönteminin altındaki tüm kod satırları.
import bölümünün sonuna aşağıdaki kod satırlarını ekleyin:
IVisualHost: Görsel ana bilgisayarıyla (Power BI) etkileşim kurmak için kullanılabilen özelliklerden ve hizmetlerden oluşan bir koleksiyondur.
import IVisualHost = powerbi.extensibility.IVisualHost;D3 kitaplığı
import * as d3 from "d3"; type Selection<T extends d3.BaseType> = d3.Selection<T, any,any, any>;Not
Ortamınızı ayarlarken bu kitaplığı yüklemediyseniz D3 JavaScript kitaplığını yükleyin.
Visual sınıfı bildiriminin altına aşağıdaki sınıf düzeyi özellikleri ekleyin. Yalnızca
privateile başlayan kod satırlarını eklemeniz gerekir.export class Visual implements IVisual { // ... private host: IVisualHost; private svg: Selection<SVGElement>; private container: Selection<SVGElement>; private circle: Selection<SVGElement>; private textValue: Selection<SVGElement>; private textLabel: Selection<SVGElement>; // ... }visual.ts dosyasını kaydedin.
Daire ve metin öğeleri ekleme
D3 Ölçeklenebilir Vektör Grafiği (SVG) ekleyin. Bu öğe, üç şekil oluşturma imkanı sunar: daire ve iki metin öğesi.
visual.ts dosyasını VS Code ile açın.
Oluşturucu bölümüne aşağıdaki kodu ekleyin.
this.svg = d3.select(options.element) .append('svg') .classed('circleCard', true); this.container = this.svg.append("g") .classed('container', true); this.circle = this.container.append("circle") .classed('circle', true); this.textValue = this.container.append("text") .classed("textValue", true); this.textLabel = this.container.append("text") .classed("textLabel", true);İpucu
Okunabilirliği artırmak için her bir kod parçacığını projenize kopyaladıktan sonra belgeyi biçimlendirmeniz önerilir. VS Code'da herhangi bir yere sağ tıklayıp Belgeyi Biçimlendir'i (Alt+Shift+F) seçin.
visual.ts dosyasını kaydedin.
Genişliği ve yüksekliği ayarlama
Görselin genişliğini ve yüksekliğini ayarladıktan sonra görsel öğelerin özniteliklerini ve stillerini başlatın.
visual.ts dosyasını VS Code ile açın.
Aşağıdaki kodu update yöntemine ekleyin.
let width: number = options.viewport.width; let height: number = options.viewport.height; this.svg.attr("width", width); this.svg.attr("height", height); let radius: number = Math.min(width, height) / 2.2; this.circle .style("fill", "white") .style("fill-opacity", 0.5) .style("stroke", "black") .style("stroke-width", 2) .attr("r", radius) .attr("cx", width / 2) .attr("cy", height / 2); let fontSizeValue: number = Math.min(width, height) / 5; this.textValue .text("Value") .attr("x", "50%") .attr("y", "50%") .attr("dy", "0.35em") .attr("text-anchor", "middle") .style("font-size", fontSizeValue + "px"); let fontSizeLabel: number = fontSizeValue / 4; this.textLabel .text("Label") .attr("x", "50%") .attr("y", height / 2) .attr("dy", fontSizeValue / 1.2) .attr("text-anchor", "middle") .style("font-size", fontSizeLabel + "px");visual.ts dosyasını kaydedin.
(İsteğe bağlı) visuals.ts dosyasındaki kodu gözden geçirme
visuals.ts dosyasındaki kodun aşağıdaki gibi göründüğünü doğrulayın:
/*
* Power BI Visual CLI
*
* Copyright (c) Microsoft Corporation
* All rights reserved.
* MIT License
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the ""Software""), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
"use strict";
import "core-js/stable";
import "./../style/visual.less";
import powerbi from "powerbi-visuals-api";
import VisualConstructorOptions = powerbi.extensibility.visual.VisualConstructorOptions;
import VisualUpdateOptions = powerbi.extensibility.visual.VisualUpdateOptions;
import IVisual = powerbi.extensibility.visual.IVisual;
import EnumerateVisualObjectInstancesOptions = powerbi.EnumerateVisualObjectInstancesOptions;
import VisualObjectInstance = powerbi.VisualObjectInstance;
import DataView = powerbi.DataView;
import VisualObjectInstanceEnumerationObject = powerbi.VisualObjectInstanceEnumerationObject;
import IVisualHost = powerbi.extensibility.IVisualHost;
import * as d3 from "d3";
type Selection<T extends d3.BaseType> = d3.Selection<T, any, any, any>;
export class Visual implements IVisual {
private host: IVisualHost;
private svg: Selection<SVGElement>;
private container: Selection<SVGElement>;
private circle: Selection<SVGElement>;
private textValue: Selection<SVGElement>;
private textLabel: Selection<SVGElement>;
constructor(options: VisualConstructorOptions) {
this.svg = d3.select(options.element)
.append('svg')
.classed('circleCard', true);
this.container = this.svg.append("g")
.classed('container', true);
this.circle = this.container.append("circle")
.classed('circle', true);
this.textValue = this.container.append("text")
.classed("textValue", true);
this.textLabel = this.container.append("text")
.classed("textLabel", true);
}
public update(options: VisualUpdateOptions) {
let width: number = options.viewport.width;
let height: number = options.viewport.height;
this.svg.attr("width", width);
this.svg.attr("height", height);
let radius: number = Math.min(width, height) / 2.2;
this.circle
.style("fill", "white")
.style("fill-opacity", 0.5)
.style("stroke", "black")
.style("stroke-width", 2)
.attr("r", radius)
.attr("cx", width / 2)
.attr("cy", height / 2);
let fontSizeValue: number = Math.min(width, height) / 5;
this.textValue
.text("Value")
.attr("x", "50%")
.attr("y", "50%")
.attr("dy", "0.35em")
.attr("text-anchor", "middle")
.style("font-size", fontSizeValue + "px");
let fontSizeLabel: number = fontSizeValue / 4;
this.textLabel
.text("Label")
.attr("x", "50%")
.attr("y", height / 2)
.attr("dy", fontSizeValue / 1.2)
.attr("text-anchor", "middle")
.style("font-size", fontSizeLabel + "px");
}
}
capabilities.json dosyasını değiştirme
capabilities.json dosyasındaki gereksiz kod satırlarını silin.
Projenizi VS Code (Dosya > Klasör Aç) ile açın.
capabilities.json dosyasını seçin.

Tüm nesne öğelerini kaldırın (satır 14-60).
capabilities.json dosyasını kaydedin.
Daire kartı görselini yeniden başlatma
Görselin çalışmasını durdurun ve yeniden başlatın.
Görseli çalıştıran PowerShell penceresinde Ctrl+C tuşlarına basın ve toplu işi sonlandırmanız istenirse Y girin ve Enter tuşuna basın.
PowerShell'de görseli başlatabilirsiniz.
pbiviz start
Görseli eklenen öğelerle birlikte test etme
Görselin yeni eklenen öğeleri görüntülediğini doğrulayın.
Power BI hizmetinde Power BI US Sales Analysis adlı raporu açın. Daire kartı görselini geliştirmek için farklı bir rapor kullanıyorsanız o rapora gidin.
Görselin daire olarak şekillendirilmiş olduğundan emin olun.

Not
Görselde herhangi bir şey görüntülenmiyorsa Alanlar bölmesinden Quantity alanını geliştirici görseline sürükleyin.
Görseli yeniden boyutlandırın.
Dairenin ve metnin, görselin boyutlarına uygun şekilde ölçeklendirildiğini göreceksiniz. Görseli yeniden boyutlandırdığınızda update yöntemi çağrılır ve sonuç olarak görsel öğeleri yeniden ölçeklendirilir.
Otomatik yeniden yüklemeyi etkinleştirme
Projede yapılan değişiklikler kaydedildiğinde görselin otomatik olarak yeniden yüklenmesini sağlamak için bu ayarı kullanın.
Power BI US Sales Analysis adlı rapora (veya daire kartı görselinizin bulunduğu projeye) gidin.
Daire kartı görselini seçin.
Kayan araç çubuğunda Otomatik yeniden yüklemeyi aç/kapat'ı seçin.

Görselin veri işlemesini sağlama
Bu bölümde veri rollerini ve veri görünümü eşlemelerini tanımlayacaksınız. Ayrıca görseli değiştirerek görüntülediği değerini adını göstermesini sağlayacaksınız.
capabilities.json dosyasını yapılandırma
capabilities.json dosyasını düzenleyerek veri rolünü ve veri görünümü eşlemelerini tanımlayın.
Veri rolünü tanımlama
dataRoles dizisini measure türünde tek bir veri rolüyle tanımlayın. Bu veri rolü measure olarak adlandırılır ve Ölçü olarak görüntülenir. Bir ölçü alanının veya özetlenmiş bir alanın geçirilmesini destekler.
capabilities.json dosyasını VS Code ile açın.
dataRoles dizisinin (satır 3-12) içindeki tüm içeriği kaldırın.
dataRoles dizisine aşağıdaki kodu ekleyin.
{ "displayName": "Measure", "name": "measure", "kind": "Measure" }capabilities.json dosyasını kaydedin.
Veri görünümü eşlemesini tanımlama
dataViewMappings dizisinde measure adlı bir alan tanımlayın. Bu alan veri rolüne geçirilebilir.
capabilities.json dosyasını VS Code ile açın.
dataViewMappings dizisindeki (satır 10-30) içeriğin tamamını kaldırın.
dataViewMappings dizisine aşağıdaki kodu ekleyin.
{ "conditions": [ { "measure": { "max": 1 } } ], "single": { "role": "measure" } }capabilities.json dosyasını kaydedin.
(İsteğe bağlı) capabilities.json dosyasında yapılan kod değişikliklerini gözden geçirme
Daire kartı görselinde measure alanının görüntülendiğini doğrulayın ve Veri Görünümünü Göster seçeneğini kullanarak yaptığınız değişiklikleri gözden geçirin.
Power BI hizmetinde Power BI US Sales Analysis adlı raporu açın. Daire kartı görselini geliştirmek için farklı bir rapor kullanıyorsanız o rapora gidin.
Daire kartı görselinin artık Ölçü adlı yeni bir alanla yapılandırılabileceğine dikkat edin. Alanlar bölmesindeki öğeleri sürükleyip Ölçü alanına bırakabilirsiniz.

Not
Görsel projesi henüz veri bağlama mantığını içermiyor.
Kayan araç çubuğunda Veri Görünümünü Göster'i seçin.

Üç noktayı seçerek ekranı genişletin ve single öğesini seçerek değeri görüntüleyin.

metadata ve ardından columns dizisini genişletip format ve displayName değerlerini gözden geçirin.

Görsele geri dönmek için görselin üzerindeki kayan araç çubuğunda Veri Görünümünü Göster’i seçin.
<a name="configure-the-visual-to-consume-data">Görseli veri kullanacak şekilde yapılandırma
visual.ts dosyasında değişiklik yaparak daire kartı görselinin verileri kullanabilmesini sağlayın.
visual.ts dosyasını VS Code ile açın.
Modülden arabirimini içeri aktaran dosyada aşağıdaki satırın
DataViewgöründüğünden eminpowerbiolun. Dosyada yoksa ekleyin.import DataView = powerbi.DataView;update yönteminde şunları yapın:
İlk deyim olarak aşağıdaki deyimi ekleyin. Bu deyim dataView nesnesini kolay erişim için bir değişkene atar ve değişkeni dataView nesnesine başvuracak şekilde düzenler.
let dataView: DataView = options.dataViews[0];.text("Value") değerini şu kod satırıyla değiştirin:
.text(<string>dataView.single.value).text("Label") değerini şu kod satırıyla değiştirin:
.text(dataView.metadata.columns[0].displayName)
visual.ts dosyasını kaydedin.
Power BI hizmetinde görseli gözden geçirin.
Görsel artık seçili veri alanı adını ve değerini görüntüler.
Çalışan bir görsel Power BI. Biçimlendirme seçeneklerini bu seçeneklere ekleyebilir veya hemen kullanım için olduğu gibi paket yapabilirsiniz.