Menambahkan dukungan bookmark ke visual dalam laporan Power BI
Dengan Power BI bookmark laporan, Anda dapat mengambil dan menyimpan tampilan halaman laporan yang dikonfigurasi. Kemudian Anda dapat kembali ke tampilan tersimpan dengan cepat dan mudah kapan pun Anda inginkan. Bookmark menyimpan seluruh konfigurasi, termasuk pilihan dan filter.
Untuk informasi selengkapnya tentang bookmark, lihat Menggunakan bookmark untuk berbagi wawasan dan membangun cerita di Power BI.
Visual yang mendukung bookmark
Visual Power BI yang mendukung bookmark harus dapat menyimpan dan memberikan informasi yang benar saat diperlukan. Jika visual Anda berinteraksi dengan visual lain, memilih titik data, atau memfilter visual lain, Anda perlu menyimpan status bookmark di properti Status Filter visual.
Catatan
Membuat visual yang mendukung bookmark memerlukan:
- Visual API versi 1.11.0 atau yang lebih baru untuk visual non-filter yang menggunakan
SelectionManager
. - Visual API versi 2.6.0 atau yang lebih baru untuk visual filter.
- Untuk mengetahui versi mana yang Anda gunakan, periksa
apiVersion
di file pbiviz.json .
Bagaimana visual Power BI berinteraksi dengan Power BI dalam bookmark laporan
Katakanlah Anda ingin membuat beberapa bookmark di halaman laporan yang setiap bookmark memiliki titik data yang berbeda yang dipilih.
Pertama, pilih satu atau beberapa titik data di visual Anda. Visual tersebut meneruskan pilihan Anda ke host. Lalu pilih Tambahkan di panel Bookmark. Power BI menyimpan pilihan saat ini untuk marka buku baru.
Lakukan ini beberapa kali untuk membuat marka buku baru. Setelah membuat bookmark, Anda dapat beralih di antaranya.
Setiap kali Anda memilih bookmark, Power BI memulihkan filter atau status pilihan yang disimpan dan meneruskannya ke visual. Visual dalam laporan disorot atau difilter sesuai dengan status yang disimpan dalam marka buku. Untuk memulihkan status yang benar, visual Anda harus meneruskan status pilihan yang benar ke host (misalnya, warna titik data yang dirender).
Status pilihan baru (atau filter) dikomunikasikan melalui properti options.jsonFilters
dalam metode update
. jsonFilters
dapat berupa Advanced Filter
atau Tuple Filter
.
- Jika visual Anda berisi titik data yang dipilih, atur ulang pilihan ke bookmark yang dipilih dengan menggunakan fungsi panggilan balik,
registerOnSelectCallback
, diISelectionManager
. - Jika visual Anda menggunakan filter untuk memilih data, atur ulang nilai filter ke nilai terkait dari bookmark yang dipilih.
Visual dengan pilihan
Catatan
InteractivityService tidak digunakan lagi.
Jika visual Anda berinteraksi dengan visual lain menggunakan Pilihan, Anda dapat menambahkan dukungan bookmark dengan salah satu dari dua cara:
- Melalui InteractivityService untuk mengelola pilihan, gunakan
applySelectionFromFilter
. Ini adalah metode yang tidak digunakan lagi. - Melalui SelectionManager.
Gunakan InteractivityService untuk memulihkan pilihan marka buku - tidak digunakan lagi
Jika visual Anda menggunakan InteractivityService, Anda tidak memerlukan tindakan lain untuk mendukung bookmark dalam visual Anda.
Saat Anda memilih bookmark, utilitas menangani status pemilihan visual secara otomatis.
Menggunakan SelectionManager untuk memulihkan pilihan bookmark
Anda dapat menyimpan dan memanggil kembali pilihan marka buku menggunakan ISelectionManager.registerOnSelectCallback
metode sebagai berikut:
Saat Anda memilih bookmark, Power BI memanggil metode callback
visual dengan pilihan yang sesuai.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
//called when a selection was set by Power BI
});
);
Mari kita asumsikan Anda membuat titik data dalam metode visualTransform visual Anda.
datapoints
terlihat seperti ini:
visualDataPoints.push({
category: categorical.categories[0].values[i],
color: getCategoricalObjectValue<Fill>(categorical.categories[0], i, 'colorSelector', 'fill', defaultColor).solid.color,
selectionId: host.createSelectionIdBuilder()
.withCategory(categorical.categories[0], i)
.createSelectionId(),
selected: false
});
Anda sekarang memiliki visualDataPoints
sebagai titik data Anda dan array yang ids
diteruskan ke fungsi callback
.
Pada titik ini, visual harus membandingkan ISelectionId[]
array dengan pilihan dalam array Anda visualDataPoints
, lalu menandai titik data yang sesuai sebagai dipilih.
this.selectionManager.registerOnSelectCallback(
(ids: ISelectionId[]) => {
visualDataPoints.forEach(dataPoint => {
ids.forEach(bookmarkSelection => {
if (bookmarkSelection.equals(dataPoint.selectionId)) {
dataPoint.selected = true;
}
});
});
});
);
Setelah Anda memperbarui titik data, poin tersebut akan mencerminkan status pilihan saat ini yang disimpan dalam filter
objek. Kemudian, ketika titik data dirender, status pemilihan visual kustom cocok dengan status marka buku.
Visual dengan filter
Mari kita asumsikan bahwa visual membuat filter data menurut rentang tanggal. Anda memiliki startDate
dan endDate
sebagai rentang tanggal mulai dan berakhir.
Visual membuat filter tingkat lanjut dan memanggil metode host applyJsonFilter
untuk memfilter data berdasarkan kondisi yang relevan.
Targetnya adalah tabel yang digunakan untuk pemfilteran.
import { AdvancedFilter } from "powerbi-models";
const filter: IAdvancedFilter = new AdvancedFilter(
target,
"And",
{
operator: "GreaterThanOrEqual",
value: startDate
? startDate.toJSON()
: null
},
{
operator: "LessThanOrEqual",
value: endDate
? endDate.toJSON()
: null
});
this.host.applyJsonFilter(
filter,
"general",
"filter",
(startDate && endDate)
? FilterAction.merge
: FilterAction.remove
);
Setiap kali Anda memilih bookmark, visual kustom akan mendapatkan panggilan update
.
Dalam metode update
, visual memeriksa filter dalam objek:
const filter: IAdvancedFilter = FilterManager.restoreFilter(
&& options.jsonFilters
&& options.jsonFilters[0] as any
) as IAdvancedFilter;
Jika objek filter
tidak null, visual memulihkan kondisi filter dari objek:
const jsonFilters: AdvancedFilter = this.options.jsonFilters as AdvancedFilter[];
if (jsonFilters
&& jsonFilters[0]
&& jsonFilters[0].conditions
&& jsonFilters[0].conditions[0]
&& jsonFilters[0].conditions[1]
) {
const startDate: Date = new Date(`${jsonFilters[0].conditions[0].value}`);
const endDate: Date = new Date(`${jsonFilters[0].conditions[1].value}`);
// apply restored conditions
} else {
// apply default settings
}
Setelah itu, visual mengubah status internalnya agar sesuai dengan kondisi saat ini. Status internal mencakup titik data dan objek visualisasi (garis, persegi panjang, dan sebagainya).
Visual Pemotong Garis Waktu mengubah pemilih rentang ke rentang data terkait.
Menyimpan status filter visual
Selain menyimpan kondisi filter untuk marka buku, Anda juga dapat menyimpan aspek filter lainnya.
Misalnya, Timeline Slicer menyimpan Granularity
nilai properti sebagai status filter. Hal ini memungkinkan granularitas garis waktu (hari, bulan, tahun, dll.) berubah saat Anda mengubah bookmark.
Properti filterState
menyimpan aspek filter sebagai properti. Visual dapat menyimpan berbagai nilai filterState
dalam bookmark.
Untuk menyimpan nilai properti sebagai status filter, atur properti objek seperti "filterState": true
dalam file capabilities.json.