Bagikan melalui


Menambahkan keterangan alat ke visual Power BI Anda

Keterangan alat adalah cara yang elegan untuk memberikan informasi dan detail yang lebih kontekstual ke titik data pada visual. API keterangan alat Power BI dapat menangani interaksi berikut:

  • Tampilkan tipsalat.
  • Sembunyikan tipsalat.
  • Memindahkan tipsalat.

Keterangan alat dapat menampilkan elemen tekstual dengan judul, nilai dalam warna tertentu, dan opasitas pada serangkaian koordinat tertentu. Data ini disediakan untuk API, dan host Power BI merendernya dengan cara yang sama seperti merender keterangan alat untuk visual asli.

Anda dapat mengubah gaya keterangan alat atau menambahkan tindakan pengeboran dengan mengaktifkan fitur keterangan alat modern.

Gambar berikut ini memperlihatkan tipsalat dalam contoh bagan batang:

Cuplikan layar yang memperlihatkan tipsalat bagan batang sampel.

Gambar tipsalat di atas menggambarkan kategori dan nilai bilah tunggal. Anda dapat memperluas tipsalat untuk menampilkan beberapa nilai.

Mengelola keterangan alat

Anda dapat mengelola keterangan alat di visual Anda melalui antarmuka ITooltipService. ITooltipService memberi tahu host bahwa tipsalat perlu ditampilkan, dihapus, atau dipindahkan.

    interface ITooltipService {
        enabled(): boolean;
        show(options: TooltipShowOptions): void;
        move(options: TooltipMoveOptions): void;
        hide(options: TooltipHideOptions): void;
    }

Visual Anda harus mendeteksi peristiwa mouse dalam visual dan memanggil show()delegasi , , move()dan hide() , sesuai kebutuhan, dengan konten yang sesuai yang diisi dalam objek Tooltip options . TooltipShowOptions dan TooltipHideOptions pada gilirannya menentukan apa yang harus ditampilkan dan cara berulah dalam peristiwa ini.

Memanggil metode ini melibatkan peristiwa pengguna seperti gerakan mouse dan peristiwa sentuh, jadi ada baiknya untuk membuat pendengar untuk peristiwa ini, yang pada gilirannya akan memanggil anggota TooltipService. Contoh berikut digabungkan dalam kelas yang disebut TooltipServiceWrapper.

Kelas TooltipServiceWrapper

Ide dasar di balik kelas ini adalah untuk menahan instance TooltipService, mendengarkan aktivitas mouse D3 pada elemen yang relevan, lalu membuat panggilan ke elemen show() dan hide() bila diperlukan.

Kelas menyimpan dan mengelola status dan logika yang relevan untuk peristiwa ini, yang sebagian besar diarahkan untuk berinteraksi dengan kode D3 yang mendasarinya. Antarmuka dan konversi D3 berada di luar cakupan artikel ini.

Contoh kode dalam artikel ini didasarkan pada visual SampleBarChart. Anda dapat memeriksa kode sumber di barChart.ts.

Buat TooltipServiceWrapper

Konstruktor bagan batang sekarang memiliki anggota TooltipServiceWrapper, yang dibuat di konstruktor dengan instans host tooltipService.

        private tooltipServiceWrapper: ITooltipServiceWrapper;

        this.tooltipServiceWrapper = createTooltipServiceWrapper(this.host.tooltipService, options.element);

Kelas TooltipServiceWrapper ini memegang instans tooltipService, juga sebagai elemen D3 akar dari parameter visual dan sentuhan.

    class TooltipServiceWrapper implements ITooltipServiceWrapper {
        private handleTouchTimeoutId: number;
        private visualHostTooltipService: ITooltipService;
        private rootElement: Element;
        private handleTouchDelay: number;

        constructor(tooltipService: ITooltipService, rootElement: Element, handleTouchDelay: number) {
            this.visualHostTooltipService = tooltipService;
            this.handleTouchDelay = handleTouchDelay;
            this.rootElement = rootElement;
        }
        .
        .
        .
    }

Titik masuk tunggal untuk kelas ini untuk mendaftarkan pendengar peristiwa adalah metode addTooltip.

Metode addTooltip

        public addTooltip<T>(
            selection: d3.Selection<Element>,
            getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[],
            getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId,
            reloadTooltipDataOnMouseMove?: boolean): void {

            if (!selection || !this.visualHostTooltipService.enabled()) {
                return;
            }
        ...
        ...
        }
  • selection: d3.Selection<Element>: Elemen d3 yang menangani keterangan alat.
  • getTooltipInfoDelegate: (args: TooltipEventArgs<T>) => VisualTooltipDataItem[]: Delegasi untuk mengisi konten tooltip (apa yang akan ditampilkan) per konteks.
  • getDataPointIdentity: (args: TooltipEventArgs<T>) => ISelectionId: Delegasi untuk mengambil ID titik data (tidak digunakan dalam contoh ini).
  • reloadTooltipDataOnMouseMove? boolean: Boolean yang menunjukkan apakah akan menyegarkan data tipsalat selama peristiwa MouseMove (tidak digunakan dalam sampel ini).

Seperti yang Anda lihat, addTooltip keluar tanpa tindakan jika tooltipService dinonaktifkan atau tidak ada pilihan nyata.

Memanggil metode tampilkan untuk menampilkan tipsalat

Metode addTooltip berikutnya mendengarkan peristiwa D3 mouseover, seperti yang ditunjukkan dalam kode berikut:

        ...
        ...
        selection.on("mouseover.tooltip", () => {
            // Ignore mouseover while handling touch events
            if (!this.canDisplayTooltip(d3.event))
                return;

            let tooltipEventArgs = this.makeTooltipEventArgs<T>(rootNode, true, false);
            if (!tooltipEventArgs)
                return;

            let tooltipInfo = getTooltipInfoDelegate(tooltipEventArgs);
            if (tooltipInfo == null)
                return;

            let selectionId = getDataPointIdentity(tooltipEventArgs);

            this.visualHostTooltipService.show({
                coordinates: tooltipEventArgs.coordinates,
                isTouchEvent: false,
                dataItems: tooltipInfo,
                identities: selectionId ? [selectionId] : [],
            });
        });
  • makeTooltipEventArgs: Mengekstrak konteks dari elemen yang dipilih D3 ke dalam tooltipEventArgs. Ini juga menghitung koordinat.
  • getTooltipInfoDelegate: Kemudian membangun konten tipsalat dari tooltipEventArgs. Ini adalah panggilan balik ke kelas BarChart, karena itu adalah logika visual. Ini adalah konten teks aktual untuk ditampilkan di tipsalat.
  • getDataPointIdentity: Tidak digunakan dalam sampel ini.
  • this.visualHostTooltipService.show: Panggilan untuk menampilkan keterangan alat.

Penanganan tambahan dapat ditemukan dalam sampel untuk peristiwa mouseout dan mousemove.

Untuk informasi selengkapnya, lihat repositori visual SampleBarChart.

Mengisi konten tipsalat dengan metode getTooltipData

Kelas BarChart ditambahkan dengan anggota getTooltipData, yang hanya mengekstrak category, value, dan color titik data ke dalam elemen VisualTooltipDataItem[].

        private static getTooltipData(value: any): VisualTooltipDataItem[] {
            return [{
                displayName: value.category,
                value: value.value.toString(),
                color: value.color,
                header: 'ToolTip Title'
            }];
        }

Dalam implementasi sebelumnya, anggota header adalah konstan, tetapi Anda dapat menggunakannya untuk implementasi yang lebih kompleks, yang memerlukan nilai dinamis. Anda dapat mengisi VisualTooltipDataItem[] dengan lebih dari satu elemen, yang menambahkan beberapa baris ke tipsalat. Ini dapat berguna dalam visual seperti bagan batang bertumpuk di mana tipsalat mungkin menampilkan data dari lebih dari satu titik data.

Memanggil metode addTooltip

Langkah terakhir adalah memanggil metode addTooltip ketika data aktual mungkin berubah. Panggilan ini terjadi dalam metode BarChart.update(). Panggilan dilakukan untuk memantau pemilihan semua elemen "bar", hanya BarChart.getTooltipData()meneruskan , seperti yang disebutkan sebelumnya.

        this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
            (tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
            (tooltipEvent: TooltipEventArgs<number>) => null);

Menambahkan dukungan keterangan alat ke halaman laporan

Untuk menambahkan dukungan tipsalat halaman laporan (kemampuan untuk memodifikasi tipsalat di panel format halaman laporan), tambahkan tooltips objek dalam file capabilities.json .

Contohnya:

{
    "tooltips": {
        "supportedTypes": {
            "default": true,
            "canvas": true
        },
        "roles": [
            "tooltips"
        ]
    }
}

Anda kemudian dapat menentukan keterangan alat dari panel Pemformatan halaman laporan.

  • supportedTypes: Konfigurasi tipsalat yang didukung oleh visual dan tercermin di bidang dengan baik.
    • default: Menentukan apakah keterangan alat "otomatis" yang mengikat melalui bidang data didukung.
    • canvas: Menentukan apakah keterangan alat halaman laporan didukung.
  • roles: (Opsional) Setelah ditentukan, ini menginstruksikan peran data apa yang terikat dengan opsi tipsalat yang dipilih di bidang dengan baik.

Cuplikan layar yang memperlihatkan dialog tipsalat halaman Laporan.

Untuk informasi selengkapnya, lihat Panduan penggunaan keterangan alat halaman laporan.

Untuk menampilkan tipsalat halaman laporan, setelah host Power BI memanggil ITooltipService.Show(options: TooltipShowOptions) atau ITooltipService.Move(options: TooltipMoveOptions), host tersebut menggunakan selectionId (identities properti dari argumen options sebelumnya). Untuk diambil oleh tipsalat, SelectionId harus mewakili data yang dipilih (kategori, seri, dan sebagainya) item yang Anda arahkan.

Contoh pengiriman selectionId ke panggilan tampilan tipsalat diperlihatkan dalam kode berikut:

    this.tooltipServiceWrapper.addTooltip(this.barContainer.selectAll('.bar'),
        (tooltipEvent: TooltipEventArgs<number>) => BarChart.getTooltipData(tooltipEvent.data),
        (tooltipEvent: TooltipEventArgs<number>) => tooltipEvent.data.selectionID);

Menambahkan dukungan keterangan alat modern ke halaman laporan

Dari API versi 3.8.3 Anda juga dapat membuat keterangan alat visual modern. Keterangan alat visual modern menambahkan tindakan penelusuran titik data ke keterangan alat Anda, dan memperbarui gaya agar sesuai dengan tema laporan Anda. Untuk mengetahui versi mana yang Anda gunakan, periksa apiVersion di file pbiviz.json .

Cuplikan layar yang memperlihatkan tipsalat modern.

Untuk mengelola dukungan tipsalat modern halaman laporan, tambahkan supportEnhancedTooltips properti ke tooltips objek dalam file capabilities.json .

Contohnya:

{
    "tooltips": {
        ... ,
        "supportEnhancedTooltips": true
    }
}

Lihat contoh fitur tipsalat modern yang digunakan dalam kode SampleBarChart .

Catatan

Menambahkan fitur ini ke file capabilities.json memberi pengguna kemungkinan mengaktifkan fitur ini untuk laporan. Perlu diingat bahwa pengguna masih harus mengaktifkan fitur tipsalat modern di pengaturan laporan.