$lang['tuto'] = "návody"; ?> Vytvorenie interaktívnej rozbaľovacej ponuky pre parametre

Vytvorenie interaktívnej rozbaľovacej ponuky pre parametre Tableau pomocou rozhrania JavaScript API

Temp mail SuperHeros
Vytvorenie interaktívnej rozbaľovacej ponuky pre parametre Tableau pomocou rozhrania JavaScript API
Vytvorenie interaktívnej rozbaľovacej ponuky pre parametre Tableau pomocou rozhrania JavaScript API

Integrácia parametrov riadených používateľom do vstavaných informačných panelov Tableau

Vkladanie tabúľ tabla do webových aplikácií pomocou rozhrania Tableau Embedding API umožňuje vývojárom poskytovať dynamické riešenia založené na údajoch. Jedným z účinných spôsobov, ako zlepšiť používateľskú skúsenosť, je umožniť interakciu s parametrami ovládacieho panela prostredníctvom rozbaľovacích ponúk.

V tomto príklade spočíva výzva v konfigurácii rozbaľovacej ponuky na manipuláciu s konkrétnym volaným parametrom Tableau "Moeda". Na rozdiel od filtrov, ktoré sa ľahšie integrujú, parametre vyžadujú presnú manipuláciu, aby sa správne načítali a aktualizovali pomocou JavaScriptu.

Aj keď Tableau API poskytuje metódy prístupu k parametrom, môže byť zložité správne zobraziť dostupné hodnoty parametrov ako rozbaľovacie možnosti a zabezpečiť bezproblémové aktualizácie, keď používatelia vyberú.

Cieľom tohto článku je previesť vás krokmi nastavenia "Moeda" parameter s rozbaľovacím zoznamom. Dozviete sa, ako načítať prípustné hodnoty, zobraziť ich v rozbaľovacej ponuke a zabezpečiť efektívne aktualizácie parametrov pri výbere, čím sa vyriešia bežné problémy, ktorým vývojári čelia.

Príkaz Príklad použitia
viz.workbook.getParametersAsync() Táto asynchrónna metóda načíta zoznam všetkých parametrov dostupných v zošite Tableau. Je dôležité dynamicky načítať údaje o parametroch pred interakciou s nimi vo vstavanom dashboarde.
viz.workbook.changeParameterValueAsync() Aktualizuje hodnotu konkrétneho parametra v Tableau. Zabezpečuje, že keď používateľ zmení výber v rozbaľovacom zozname, parameter v zošite sa aktualizuje v reálnom čase.
allowableValues Táto vlastnosť obsahuje prípustné hodnoty pre parameter Tableau. Používa sa na vyplnenie rozbaľovacej ponuky všetkými platnými možnosťami parametrov, z ktorých si môžu používatelia vybrať.
currentValue.value Pristupuje k aktuálnej hodnote parametra Tableau. Tým sa zabezpečí, že predvolený výber rozbaľovacej ponuky zodpovedá aktuálnemu stavu parametra na informačnom paneli.
document.createElement("select") Dynamicky prostredníctvom JavaScriptu vytvorí rozbaľovací prvok
dropdown.addEventListener("change") Do rozbaľovacej ponuky pridá poslucháča udalostí, ktorý zisťuje zmeny výberu používateľa. Po spustení spustí proces aktualizácie parametrov v zošite Tableau.
find((p) =>find((p) => p.name === "Moeda") Používa metódu find() v poli parametrov na nájdenie špecifického parametra "Moeda". Tým sa zabezpečí, že aktualizácie budú zacielené na správny parameter.
viz.addEventListener(TableauEventType.FirstInteractive) Tento príkaz zaisťuje, že funkcia načítania rozbaľovacieho zoznamu parametrov sa vykoná až po úplnom načítaní ovládacieho panela Tableau, čím sa zabráni problémom s načasovaním.
option.value = value.value Nastaví atribút value prvku
jest.fn().mockResolvedValue() Používa sa v jednotkových testoch na zosmiešňovanie správania asynchrónnych funkcií. To zaisťuje, že logika aktualizácie parametrov je počas testovania správne simulovaná bez potreby živého prostredia Tableau.

Ako dynamicky ovládať parametre Tableau pomocou JavaScriptu

Skripty uvedené vyššie sú navrhnuté tak, aby umožňovali hladkú interakciu medzi tabuľkou Tableau a vlastným HTML rozbaľovacia ponuka menu. Tieto skripty využívajú rozhranie Tableau Embedding API, ktoré umožňuje vývojárom vkladať tabule Tableau do webových aplikácií a rozširovať ich interaktivitu. Primárnym cieľom je manipulovať s parametrom s názvom „Moeda“ prostredníctvom JavaScriptu načítaním jeho povolených hodnôt a dynamickou aktualizáciou parametra, keď používateľ urobí výber.

Prvá časť skriptu začína funkciou na načítanie parametra „Moeda“. Táto funkcia využíva getParametersAsync() metóda na získanie všetkých dostupných parametrov v zošite. Po načítaní parametrov skript identifikuje špecifický parameter "Moeda" pomocou nájsť () metóda. Ak sa parameter nenájde, zaznamená chybu, aby nedošlo k porušeniu zvyšku kódu. To je dôležité, pretože práca s parametrami vyžaduje vedieť, či existujú, skôr ako budete pokračovať s ďalšou logikou.

Po identifikácii parametra, a rozbaľovacia ponuka ponuka sa dynamicky vytvára pomocou manipulačných metód JavaScriptu s DOM. Každá hodnota z povolených hodnôt parametra sa pridá ako možnosť v rozbaľovacej ponuke. Skript zaisťuje, že rozbaľovacia ponuka odráža aktuálny stav parametra nastavením vybranej možnosti na aktuálnu hodnotu parametra. Tento krok je nevyhnutný na zabezpečenie toho, aby sa používateľovi zobrazila najnovšia hodnota na paneli, čím sa zabezpečí konzistencia medzi stavom panela a predvolenou možnosťou rozbaľovacej ponuky.

Posledná časť skriptu zahŕňa pridanie poslucháča udalostí do rozbaľovacej ponuky. Tento prijímač udalostí zistí, keď používateľ zmení vybratú možnosť, a spustí ju changeParameterValueAsync() funkcia na aktualizáciu parametra v Tableau. Skript navyše zaisťuje, že rozbaľovacia ponuka sa vykreslí až po úplnom načítaní dashboardu pomocou FirstInteractive udalosť. Tým sa zabezpečí, že rozbaľovacia ponuka nebude vyplnená predčasne, čím sa zabráni chybám alebo chýbajúcim hodnotám parametrov. Riešenie je modulárne a škálovateľné, vďaka čomu sa dá jednoducho prispôsobiť iným parametrom alebo dashboardom opätovným použitím rovnakej logickej štruktúry.

Vytvorenie interaktívnej rozbaľovacej ponuky na ovládanie parametrov tabuľky

Používanie JavaScriptu s rozhraním Tableau Embedding API na dynamické načítanie a aktualizáciu parametrov

// 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);

Implementácia modulárnej rozbaľovacej logiky pre aktualizácie parametrov Tableau

Optimalizovaný prístup využívajúci modulárne funkcie a vylepšené spracovanie chýb

// 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");
});

Testovanie interakcie parametrov Tableau v rôznych prostrediach

Písanie testov jednotiek pomocou JavaScriptu na overenie aktualizácií parametrov

// 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");
});

Osvedčené postupy na spracovanie parametrov tabuľky pomocou JavaScriptu

Pri vkladaní tabúľ tabla do webových aplikácií vývojári často potrebujú urobiť parametre dynamické, aby zlepšili interaktivitu používateľov. Jednou z kľúčových výziev je manipulácia s parametrami ako napr "Moeda" pomocou rozbaľovacej ponuky namiesto použitia filtrov. Parametre sú zložitejšie, pretože vyžadujú volania API na získanie povolených hodnôt a je potrebné ich aktualizovať pomocou funkcií, ako napr. changeParameterValueAsync(). Tento prístup poskytuje používateľom väčšiu kontrolu nad konkrétnymi zobrazeniami údajov na informačnom paneli bez obnovovania stránky.

Správa parametrov v tabuľkách Tableau zahŕňa ich správnu identifikáciu getParametersAsync(). Bežným úskalím je, že niektoré parametre nemusia byť dostupné alebo môžu vyžadovať rôzne úrovne prístupu v závislosti od konfigurácie zošita. Preto je dôležité zahrnúť spracovanie chýb, aby sa zabránilo prerušeniu logiky rozbaľovacej ponuky, ak sa nenájde parameter. Ďalším aspektom, ktorý treba zvážiť, je vykreslenie rozbaľovacej ponuky až po úplnom načítaní ovládacieho panela. Pomocou FirstInteractive udalosť zaisťuje, že prvky dashboardu sú pripravené pred použitím prispôsobení.

Optimalizácia výkonu je tiež kľúčová, najmä pri práci s veľkými súbormi údajov alebo dashboardmi s viacerými parametrami. JavaScript funguje ako nájsť () pomôcť zúžiť vyhľadávanie parametrov, ale kód musí zostať modulárny, aby sa umožnila budúca škálovateľnosť. Vývojári by tiež mali overiť hodnoty parametrov pred ich aktualizáciou, aby sa predišlo nezrovnalostiam medzi používateľským rozhraním a údajmi dashboardu. S týmito stratégiami je jednoduchšie efektívne spravovať parametre Tableau a vytvárať dashboardy s bezproblémovou používateľskou skúsenosťou.

Často kladené otázky o používaní parametrov v Tableau API

  1. Aký je rozdiel medzi parametrom a filtrom v Tableau?
  2. Parametre umožňujú používateľom odovzdávať konkrétne hodnoty do dashboardu, zatiaľ čo filtre obmedzujú zobrazované údaje na základe kritérií. Filtre pôsobia na množiny údajov, zatiaľ čo parametre ovplyvňujú konkrétne polia alebo výpočty.
  3. Prečo moja rozbaľovacia ponuka zostáva pri načítavaní parametrov prázdna?
  4. Uistite sa, že getParametersAsync() funkcia úspešne načíta parameter. Ak nie, parameter môže byť skrytý alebo nedostupný z dôvodu obmedzení zošita.
  5. Ako zabezpečím, aby sa rozbaľovacia ponuka zhodovala s aktuálnym stavom parametra?
  6. Použite currentValue.value vlastnosť na nastavenie predvolenej možnosti v rozbaľovacej ponuke. Používateľské rozhranie a palubná doska tak budú zarovnané.
  7. Ako môžem zvládnuť chyby pri aktualizácii parametrov v Tableau?
  8. Zabaliť changeParameterValueAsync() zavolajte dovnútra a try-catch blok na spracovanie akýchkoľvek chýb, ktoré sa vyskytnú pri aktualizácii parametra.
  9. Aká udalosť zaisťuje pripravenosť dashboardu pred prispôsobením?
  10. The FirstInteractive udalosť v Tableau API signalizuje, že dashboard je plne načítaný a je pripravený na ďalšie interakcie, ako je pridanie rozbaľovacej ponuky.

Záverečné myšlienky o interaktívnom spracovaní parametrov

Vkladanie interaktívnych dashboardov s parametrizovanými rozbaľovacími ponukami ponúka používateľom väčšiu flexibilitu. Pri správnom nastavení môžu vývojári získať parametre ako Moeda a použite rozhranie Tableau API na zlepšenie ovládania dashboardu. Toto nastavenie umožňuje používateľom efektívnejšie skúmať údaje.

Kľúčové prvky, ako napr FirstInteractive Udalosti a robustné spracovanie chýb zabezpečujú, že rozbaľovacie ponuky v rámci aplikácie fungujú hladko. Nasledovaním tohto prístupu môžu vývojári efektívne spravovať parametre a ponúknuť koncovým používateľom dynamický a citlivý dashboard.

Zdroje a odkazy na implementáciu parametrov Tableau
  1. Podrobnosti o vložení dashboardov a interakcii s parametrami boli uvedené od úradníka Tableau JavaScript API dokumentácia .
  2. Pohľady do poslucháčov udalostí, ako napr FirstInteractive, boli odvodené z príkladov nájdených na Fórum komunity Tableau .
  3. Všeobecné koncepty a osvedčené postupy pre prácu s dynamickými prvkami používateľského rozhrania v JavaScripte boli prevzaté z Webové dokumenty MDN .