Інтеграція керованих користувачем параметрів у вбудовані інформаційні панелі Tableau
Вбудовування інформаційних панелей Tableau у веб-програми за допомогою Tableau Embedding API дозволяє розробникам створювати динамічні рішення, керовані даними. Один із потужних способів покращити взаємодію з користувачем — увімкнути взаємодію з параметрами інформаційної панелі за допомогою спадних меню.
У цьому прикладі завдання полягає в налаштуванні спадного меню для маніпулювання певним параметром Tableau під назвою "Моеда". На відміну від фільтрів, які легше інтегрувати, параметри вимагають точної обробки, щоб правильно завантажувати та оновлювати за допомогою JavaScript.
Незважаючи на те, що API Tableau надає методи доступу до параметрів, може бути складно правильно відобразити доступні значення параметрів як параметри, що випадають, і забезпечити безперебійне оновлення, коли користувачі роблять вибір.
Мета цієї статті — ознайомити вас із етапами налаштування "Моеда" параметр із спадним списком. Ви дізнаєтесь, як отримати допустимі значення, відобразити їх у спадному меню та забезпечити ефективне оновлення параметрів, коли зроблено вибір, вирішуючи типові проблеми, з якими стикаються розробники.
Команда | Приклад використання |
---|---|
viz.workbook.getParametersAsync() | Цей асинхронний метод отримує список усіх параметрів, доступних у книзі Tableau. Важливо динамічно завантажувати дані параметрів перед взаємодією з ними на вбудованій інформаційній панелі. |
viz.workbook.changeParameterValueAsync() | Оновлює значення певного параметра в Tableau. Це гарантує, що коли користувач змінює вибір у розкривному списку, параметр у книзі оновлюється в режимі реального часу. |
allowableValues | Ця властивість містить допустимі значення для параметра Tableau. Він використовується для заповнення спадного меню всіма дійсними параметрами, з яких користувачі можуть вибрати. |
currentValue.value | Отримує доступ до поточного значення параметра Tableau. Це гарантує, що вибір спадного меню за замовчуванням відповідає поточному стану параметра на інформаційній панелі. |
document.createElement("select") | Створює спадний елемент |
dropdown.addEventListener("change") | Додає прослуховувач подій до спадного меню для виявлення змін вибору користувача. Після запуску він ініціює процес оновлення параметрів у книзі Tableau. |
find((p) =>find((p) => p.name === "Moeda") | Використовує метод find() у масиві параметрів, щоб знайти певний параметр "Moeda". Це гарантує, що для оновлень призначено правильний параметр. |
viz.addEventListener(TableauEventType.FirstInteractive) | Ця команда гарантує, що функція для завантаження спадного меню параметрів буде виконана лише після повного завантаження інформаційної панелі Tableau, уникаючи проблем з часом. |
option.value = value.value | Встановлює атрибут value елемента |
jest.fn().mockResolvedValue() | Використовується в модульних тестах для імітації поведінки асинхронних функцій. Це гарантує правильне моделювання логіки оновлення параметрів під час тестування без потреби в живому середовищі Tableau. |
Як динамічно керувати параметрами Tableau за допомогою JavaScript
Сценарії, надані вище, призначені для забезпечення плавної взаємодії між інформаційною панеллю Tableau і користувацьким HTML спадний список меню. Ці сценарії використовують API вбудовування Tableau, який дозволяє розробникам вбудовувати інформаційні панелі Tableau у веб-додатки та розширювати їх інтерактивність. Основна мета полягає в маніпулюванні параметром під назвою "Moeda" через JavaScript шляхом отримання його допустимих значень і динамічного оновлення параметра, коли користувач робить вибір.
Перша частина сценарію починається з функції завантаження параметра "Moeda". Ця функція використовує getParametersAsync() метод для отримання всіх доступних параметрів у книзі. Після завантаження параметрів сценарій ідентифікує конкретний параметр "Moeda" за допомогою знайти() метод. Якщо параметр не знайдено, він реєструє помилку, щоб уникнути порушення решти коду. Це надзвичайно важливо, оскільки для роботи з параметрами потрібно знати, чи вони існують, перш ніж продовжувати з подальшою логікою.
Після ідентифікації параметра a спадний список меню створюється динамічно за допомогою методів обробки DOM JavaScript. Кожне значення з допустимих значень параметра додається як параметр у розкривному списку. Сценарій гарантує, що спадне меню відображає поточний стан параметра, встановлюючи для вибраного параметра поточне значення параметра. Цей крок важливий для забезпечення того, щоб користувач бачив останнє значення на інформаційній панелі, забезпечуючи узгодженість між станом інформаційної панелі та параметром спадного меню за замовчуванням.
Остання частина сценарію передбачає додавання слухача подій до спадного списку. Цей прослуховувач подій виявляє, коли користувач змінює вибраний параметр, і запускає changeParameterValueAsync() для оновлення параметра в Tableau. Крім того, сценарій гарантує, що спадне меню відображається лише після повного завантаження інформаційної панелі за допомогою FirstInteractive подія. Це гарантує, що спадне меню не буде заповнено передчасно, запобігаючи помилкам або відсутнім значенням параметрів. Рішення є модульним і масштабованим, що дозволяє легко адаптувати його для інших параметрів або інформаційних панелей шляхом повторного використання тієї самої логічної структури.
Створення інтерактивного розкривного меню для керування параметрами таблиці
Використання JavaScript із Tableau Embedding API для динамічного завантаження та оновлення параметрів
// 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);
Реалізація модульної логіки спадного меню для оновлення параметрів таблиці
Оптимізований підхід із використанням модульних функцій і вдосконаленої обробки помилок
// 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");
});
Тестування взаємодії параметрів Tableau у різних середовищах
Написання модульних тестів за допомогою JavaScript для перевірки оновлень параметрів
// 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");
});
Найкращі методи роботи з параметрами Tableau за допомогою JavaScript
Під час вбудовування інформаційних панелей Tableau у веб-додатки розробникам часто доводиться робити параметри динамічними, щоб покращити інтерактивність користувачів. Одним із ключових завдань є обробка таких параметрів, як "Моеда" через спадне меню замість використання фільтрів. Параметри складніші, оскільки для отримання допустимих значень потрібні виклики API, і їх потрібно оновлювати за допомогою таких функцій, як changeParameterValueAsync(). Цей підхід дає користувачам більше контролю над окремими даними на інформаційній панелі без оновлення сторінки.
Керування параметрами на інформаційних панелях Tableau передбачає їх правильну ідентифікацію getParametersAsync(). Поширеною помилкою є те, що деякі параметри можуть бути недоступними або потребувати різних рівнів доступу залежно від конфігурації книги. Тому важливо включити обробку помилок, щоб запобігти збою логіки спадного меню, якщо параметр не знайдено. Іншим аспектом, який слід враховувати, є рендеринг спадного меню лише після повного завантаження інформаційної панелі. Використовуючи FirstInteractive подія гарантує, що елементи інформаційної панелі готові до застосування налаштувань.
Оптимізація продуктивності також має вирішальне значення, особливо при роботі з великими наборами даних або інформаційними панелями з кількома параметрами. JavaScript працює як знайти() допоможе звузити пошук параметрів, але код повинен залишатися модульним, щоб забезпечити можливість масштабування в майбутньому. Розробники також повинні перевірити значення параметрів перед їх оновленням, щоб уникнути неузгодженості між інтерфейсом користувача та даними інформаційної панелі. Завдяки цим стратегіям стає легше ефективніше керувати параметрами Tableau і створювати інформаційні панелі з безперебійним користуванням.
Поширені запитання про використання параметрів у Tableau API
- Яка різниця між параметром і фільтром у Tableau?
- Параметри дозволяють користувачам передавати певні значення на інформаційну панель, тоді як фільтри обмежують відображувані дані на основі критеріїв. Фільтри діють на набори даних, тоді як параметри впливають на конкретні поля чи обчислення.
- Чому моє спадне меню залишається порожнім під час отримання параметрів?
- Переконайтеся, що getParametersAsync() функція успішно отримує параметр. Якщо цього не відбувається, параметр може бути прихованим або недоступним через обмеження книги.
- Як переконатися, що спадне меню відповідає поточному стану параметра?
- Використовуйте currentValue.value властивість, щоб встановити параметр за замовчуванням у розкривному списку. Це забезпечує узгодженість інтерфейсу користувача та інформаційної панелі.
- Як я можу обробляти помилки під час оновлення параметрів у Tableau?
- Загорніть changeParameterValueAsync() дзвонити всередину a try-catch блок для обробки будь-яких помилок, які виникають під час оновлення параметра.
- Яка подія гарантує, що інформаційна панель готова до налаштування?
- The FirstInteractive Подія в Tableau API сигналізує про те, що інформаційна панель повністю завантажена та готова до подальших взаємодій, як-от додавання спадного списку.
Останні думки щодо інтерактивної обробки параметрів
Вбудовування інтерактивних інформаційних панелей із параметризованими розкривними меню забезпечує більшу гнучкість для користувачів. При належному налаштуванні розробники можуть отримати такі параметри, як Моеда і використовуйте Tableau API для покращення керування панеллю керування. Це налаштування дозволяє користувачам ефективніше досліджувати дані.
Ключові елементи, такі як FirstInteractive подій і надійна обробка помилок гарантує безперебійну роботу спадних меню в програмі. Дотримуючись цього підходу, розробники можуть ефективно керувати параметрами та пропонувати кінцевим користувачам динамічну та чутливу інформаційну панель.
Джерела та посилання для реалізації параметрів таблиці
- Докладні відомості про вбудовування інформаційних панелей і взаємодію з параметрами були наведені офіційними посиланнями Документація Tableau JavaScript API .
- Статистичні відомості про слухачів подій, наприклад FirstInteractive, були отримані з прикладів, знайдених на Форум спільноти Tableau .
- Загальні концепції та найкращі практики роботи з динамічними елементами інтерфейсу користувача в JavaScript були взяті з Веб-документи MDN .