Mengintegrasikan Parameter Berbasis Pengguna ke Dasbor Tertanam Tableau
Menyematkan dasbor Tableau dalam aplikasi web menggunakan Tableau Embedding API memungkinkan pengembang memberikan solusi dinamis berbasis data. Salah satu cara ampuh untuk meningkatkan pengalaman pengguna adalah dengan mengaktifkan interaksi dengan parameter dasbor melalui menu dropdown.
Dalam contoh ini, tantangannya terletak pada mengonfigurasi menu dropdown untuk memanipulasi parameter Tableau tertentu yang disebut "Moeda". Tidak seperti filter, yang lebih mudah diintegrasikan, parameter memerlukan penanganan yang tepat agar dapat dimuat dan diperbarui dengan benar menggunakan JavaScript.
Meskipun Tableau API menyediakan metode untuk mengakses parameter, mungkin sulit untuk menampilkan dengan benar nilai parameter yang tersedia sebagai opsi dropdown dan memastikan pembaruan yang lancar saat pengguna membuat pilihan.
Tujuan artikel ini adalah memandu Anda melalui langkah-langkah penyiapan "Moeda" parameter dengan dropdown. Anda akan mempelajari cara mengambil nilai yang diizinkan, menampilkannya di dropdown, dan memastikan parameter diperbarui secara efektif saat pilihan dibuat, sehingga memecahkan masalah umum yang dihadapi pengembang.
Memerintah | Contoh Penggunaan |
---|---|
viz.workbook.getParametersAsync() | Metode asinkron ini mengambil daftar semua parameter yang tersedia di buku kerja Tableau. Penting untuk memuat data parameter secara dinamis sebelum berinteraksi dengannya di dasbor tertanam. |
viz.workbook.changeParameterValueAsync() | Memperbarui nilai parameter tertentu di Tableau. Ini memastikan bahwa ketika pengguna mengubah pilihan dropdown, parameter di buku kerja diperbarui secara real-time. |
allowableValues | Properti ini menyimpan nilai yang diizinkan untuk parameter Tableau. Ini digunakan untuk mengisi menu dropdown dengan semua opsi parameter valid yang dapat dipilih pengguna. |
currentValue.value | Mengakses nilai parameter Tableau saat ini. Hal ini memastikan bahwa pilihan default dropdown cocok dengan status parameter saat ini di dasbor. |
document.createElement("select") | Membuat elemen dropdown |
dropdown.addEventListener("change") | Menambahkan pendengar acara ke dropdown untuk mendeteksi perubahan pilihan pengguna. Ketika dipicu, ini memulai proses pembaruan parameter di buku kerja Tableau. |
find((p) =>find((p) => p.name === "Moeda") | Menggunakan metode find() pada larik parameter untuk menemukan parameter "Moeda" tertentu. Hal ini memastikan parameter yang benar ditargetkan untuk pembaruan. |
viz.addEventListener(TableauEventType.FirstInteractive) | Perintah ini memastikan bahwa fungsi untuk memuat dropdown parameter hanya dijalankan setelah dasbor Tableau dimuat sepenuhnya, sehingga menghindari masalah waktu. |
option.value = value.value | Menyetel atribut value dari elemen |
jest.fn().mockResolvedValue() | Digunakan dalam pengujian unit untuk meniru perilaku fungsi asinkron. Hal ini memastikan bahwa logika pembaruan parameter disimulasikan dengan benar selama pengujian tanpa memerlukan lingkungan Tableau langsung. |
Cara Mengontrol Parameter Tableau Secara Dinamis Menggunakan JavaScript
Skrip yang disediakan di atas dirancang untuk memungkinkan interaksi yang lancar antara dasbor Tableau dan HTML khusus tarik-turun menu. Skrip ini menggunakan Tableau Embedding API, yang memungkinkan pengembang menyematkan dasbor Tableau dalam aplikasi web dan memperluas interaktivitasnya. Fokus utamanya adalah memanipulasi parameter bernama "Moeda" melalui JavaScript dengan mengambil nilai yang diperbolehkan dan memperbarui parameter secara dinamis saat pengguna membuat pilihan.
Bagian pertama skrip dimulai dengan fungsi untuk memuat parameter "Moeda". Fungsi ini memanfaatkan dapatkanParameterAsync() metode untuk mengambil semua parameter yang tersedia di buku kerja. Setelah parameter dimuat, skrip mengidentifikasi parameter "Moeda" tertentu menggunakan menemukan() metode. Jika parameter tidak ditemukan, ia akan mencatat kesalahan untuk menghindari kerusakan kode lainnya. Hal ini penting karena bekerja dengan parameter memerlukan mengetahui apakah parameter tersebut ada sebelum melanjutkan dengan logika lebih lanjut.
Setelah mengidentifikasi parameter, a tarik-turun menu dibuat secara dinamis menggunakan metode manipulasi DOM JavaScript. Setiap nilai dari nilai parameter yang diperbolehkan ditambahkan sebagai opsi dalam dropdown. Skrip memastikan bahwa dropdown mencerminkan keadaan parameter saat ini dengan mengatur opsi yang dipilih ke nilai parameter saat ini. Langkah ini penting untuk memastikan bahwa pengguna melihat nilai terbaru di dasbor, memberikan konsistensi antara status dasbor dan opsi default dropdown.
Bagian terakhir dari skrip melibatkan penambahan pendengar acara ke dropdown. Pemroses peristiwa ini mendeteksi ketika pengguna mengubah opsi yang dipilih dan memicunya ubahParameterValueAsync() berfungsi untuk memperbarui parameter di Tableau. Selain itu, skrip memastikan bahwa dropdown hanya dirender setelah dasbor dimuat sepenuhnya dengan menggunakan Interaktif Pertama peristiwa. Hal ini memastikan bahwa dropdown tidak diisi sebelum waktunya, mencegah kesalahan atau nilai parameter hilang. Solusinya bersifat modular dan terukur, sehingga mudah diadaptasi untuk parameter atau dasbor lain dengan menggunakan kembali struktur logika yang sama.
Membuat Dropdown Interaktif untuk Mengontrol Parameter Tableau
Menggunakan JavaScript dengan Tableau Embedding API untuk memuat dan memperbarui parameter secara dinamis
// Solution 1: Basic Implementation Using Async/Await and Tableau API
async function loadMoedaParameter() {
try {
const parameters = await viz.workbook.getParametersAsync();
const moedaParam = parameters.find((p) => p.name === "Moeda");
if (!moedaParam) {
console.error("Parameter 'Moeda' not found!");
return;
}
const dropdown = document.createElement("select");
moedaParam.allowableValues.forEach((value) => {
const option = document.createElement("option");
option.text = value.formattedValue;
option.value = value.value;
dropdown.appendChild(option);
});
dropdown.value = moedaParam.currentValue.value;
dropdown.addEventListener("change", async (e) => {
const selectedMoeda = e.target.value;
try {
await viz.workbook.changeParameterValueAsync("Moeda", selectedMoeda);
console.log("Moeda changed to:", selectedMoeda);
} catch (error) {
console.error("Error changing the Moeda parameter:", error);
}
});
document.getElementById("Moeda-container-desktop").appendChild(dropdown);
} catch (error) {
console.error("Error loading the Moeda parameter:", error);
}
}
viz.addEventListener(TableauEventType.FirstInteractive, loadMoedaParameter);
Menerapkan Logika Dropdown Modular untuk Pembaruan Parameter Tableau
Pendekatan yang Dioptimalkan Menggunakan Fungsi Modular dan Penanganan Kesalahan yang Ditingkatkan
// Solution 2: Modular and Reusable Code with Error Handling
function createDropdown(options, onChangeCallback) {
const dropdown = document.createElement("select");
dropdown.style.cssText = "border:none; width:100%; height:40px; background:#FFF;";
options.forEach(({ text, value }) => {
const option = document.createElement("option");
option.text = text;
option.value = value;
dropdown.appendChild(option);
});
dropdown.addEventListener("change", (e) => onChangeCallback(e.target.value));
return dropdown;
}
async function updateParameter(parameterName, value) {
try {
await viz.workbook.changeParameterValueAsync(parameterName, value);
console.log(\`${parameterName} changed to: \${value}\`);
} catch (error) {
console.error("Error updating parameter:", error);
}
}
async function loadParameterDropdown(containerId, parameterName) {
try {
const parameters = await viz.workbook.getParametersAsync();
const param = parameters.find((p) => p.name === parameterName);
if (!param) throw new Error(\`Parameter '\${parameterName}' not found!\`);
const options = param.allowableValues.map((val) => ({
text: val.formattedValue,
value: val.value,
}));
const dropdown = createDropdown(options, (value) => {
updateParameter(parameterName, value);
});
document.getElementById(containerId).appendChild(dropdown);
} catch (error) {
console.error("Error loading parameter dropdown:", error);
}
}
viz.addEventListener(TableauEventType.FirstInteractive, () => {
loadParameterDropdown("Moeda-container-desktop", "Moeda");
});
Menguji Interaksi Parameter Tableau di Lingkungan Berbeda
Menulis Tes Unit dengan JavaScript untuk Memvalidasi Pembaruan Parameter
// Solution 3: Unit Test to Validate Parameter Changes
function mockVizWorkbook() {
return {
parameters: [{
name: "Moeda",
allowableValues: [{ value: "USD", formattedValue: "USD" }],
currentValue: { value: "USD" },
}],
changeParameterValueAsync: jest.fn().mockResolvedValue(),
};
}
test("Dropdown updates Moeda parameter correctly", async () => {
const vizMock = { workbook: mockVizWorkbook() };
const updateSpy = vizMock.workbook.changeParameterValueAsync;
document.body.innerHTML = '<div id="Moeda-container-desktop"></div>';
await loadParameterDropdown("Moeda-container-desktop", "Moeda");
const dropdown = document.querySelector("select");
dropdown.value = "USD";
dropdown.dispatchEvent(new Event("change"));
expect(updateSpy).toHaveBeenCalledWith("Moeda", "USD");
});
Praktik Terbaik untuk Menangani Parameter Tableau dengan JavaScript
Saat menyematkan dasbor Tableau di aplikasi web, pengembang sering kali perlu membuat parameter dinamis untuk meningkatkan interaktivitas pengguna. Salah satu tantangan utama adalah menangani parameter seperti "Moeda" melalui menu tarik-turun alih-alih menggunakan filter. Parameter lebih kompleks karena memerlukan panggilan API untuk mengambil nilai yang diizinkan dan perlu diperbarui melalui fungsi, seperti ubahParameterValueAsync(). Pendekatan ini memberi pengguna kontrol lebih besar atas tampilan data tertentu di dasbor tanpa menyegarkan halaman.
Mengelola parameter di dasbor Tableau melibatkan identifikasi dengan benar dapatkanParameterAsync(). Kesalahan umum adalah beberapa parameter mungkin tidak tersedia atau mungkin memerlukan tingkat akses berbeda bergantung pada konfigurasi buku kerja. Oleh karena itu, penting untuk menyertakan penanganan kesalahan untuk mencegah logika dropdown rusak jika parameter tidak ditemukan. Aspek lain yang perlu dipertimbangkan adalah merender dropdown hanya setelah dasbor terisi penuh. Menggunakan Interaktif Pertama acara memastikan bahwa elemen dasbor siap sebelum menerapkan penyesuaian.
Pengoptimalan kinerja juga penting, terutama ketika berhadapan dengan kumpulan data atau dasbor besar dengan banyak parameter. Fungsi JavaScript seperti menemukan() membantu mempersempit pencarian parameter, namun kode harus tetap modular untuk memungkinkan skalabilitas di masa depan. Pengembang juga harus memvalidasi nilai parameter sebelum memperbaruinya untuk menghindari inkonsistensi antara antarmuka pengguna dan data dasbor. Dengan strategi ini, pengelolaan parameter Tableau menjadi lebih mudah dan membangun dasbor dengan pengalaman pengguna yang lancar.
Pertanyaan Umum Tentang Penggunaan Parameter di Tableau API
- Apa perbedaan antara parameter dan filter di Tableau?
- Parameter memungkinkan pengguna untuk meneruskan nilai tertentu ke dasbor, sementara filter membatasi data yang ditampilkan berdasarkan kriteria. Filter bertindak pada kumpulan data, sedangkan parameter memengaruhi bidang atau penghitungan tertentu.
- Mengapa dropdown saya tetap kosong saat mengambil parameter?
- Pastikan getParametersAsync() fungsi berhasil mengambil parameter. Jika tidak, parameternya mungkin disembunyikan atau tidak dapat diakses karena pembatasan buku kerja.
- Bagaimana cara memastikan dropdown sesuai dengan status parameter saat ini?
- Gunakan currentValue.value properti untuk mengatur opsi default di dropdown. Ini menjaga UI dan dasbor tetap selaras.
- Bagaimana cara menangani kesalahan saat memperbarui parameter di Tableau?
- Bungkus changeParameterValueAsync() panggilan ke dalam a try-catch blok untuk menangani kesalahan apa pun yang terjadi saat parameter diperbarui.
- Peristiwa apa yang memastikan dasbor siap sebelum penyesuaian?
- Itu FirstInteractive Peristiwa di Tableau API menandakan bahwa dasbor telah terisi penuh dan siap untuk interaksi lebih lanjut seperti menambahkan dropdown.
Pemikiran Akhir tentang Penanganan Parameter Interaktif
Menyematkan dasbor interaktif dengan dropdown berparameter menawarkan fleksibilitas lebih besar bagi pengguna. Dengan pengaturan yang tepat, pengembang dapat mengambil parameter seperti Moeda dan gunakan Tableau API untuk meningkatkan kontrol dasbor. Pengaturan ini memungkinkan pengguna menjelajahi data dengan lebih efektif.
Elemen kunci, seperti Interaktif Pertama penanganan peristiwa dan kesalahan yang tangguh, pastikan menu tarik-turun berfungsi dengan lancar dalam aplikasi. Dengan mengikuti pendekatan ini, pengembang dapat mengelola parameter secara efisien dan menawarkan pengalaman dasbor yang dinamis dan responsif kepada pengguna akhir.
Sumber dan Referensi Penerapan Parameter Tableau
- Detail tentang penyematan dasbor dan interaksi dengan parameter dirujuk dari pejabat tersebut Dokumentasi API Tableau JavaScript .
- Wawasan tentang pendengar acara, seperti Interaktif Pertama, berasal dari contoh yang ditemukan di Forum Komunitas Tableau .
- Konsep umum dan praktik terbaik untuk bekerja dengan elemen UI dinamis dalam JavaScript diambil dari Dokumen Web MDN .