Interaktyvaus lentelės parametrų išskleidžiamojo meniu kūrimas naudojant JavaScript API

Temp mail SuperHeros
Interaktyvaus lentelės parametrų išskleidžiamojo meniu kūrimas naudojant JavaScript API
Interaktyvaus lentelės parametrų išskleidžiamojo meniu kūrimas naudojant JavaScript API

Vartotojo valdomų parametrų integravimas į lentelių įterptuosius prietaisų skydelius

Tableau“ prietaisų skydelių įterpimas į žiniatinklio programas naudojant „Tableau Embedding“ API leidžia kūrėjams pateikti dinamiškus, duomenimis pagrįstus sprendimus. Vienas veiksmingas būdas pagerinti naudotojo patirtį – išskleidžiamuosiuose meniu įgalinti sąveiką su prietaisų skydelio parametrais.

Šiame pavyzdyje iššūkis yra sukonfigūruoti išskleidžiamąjį meniu, kad būtų galima manipuliuoti konkrečiu vadinamu Tableau parametru "Moeda". Skirtingai nuo filtrų, kuriuos lengviau integruoti, parametrus reikia tiksliai tvarkyti, kad būtų galima teisingai įkelti ir atnaujinti naudojant „JavaScript“.

Nors „Tableau“ API pateikia metodus pasiekti parametrus, gali būti sudėtinga tinkamai parodyti turimas parametrų reikšmes kaip išskleidžiamąsias parinktis ir užtikrinti sklandų atnaujinimą, kai vartotojai pasirenka.

Šio straipsnio tikslas – padėti atlikti sąrankos veiksmus "Moeda" parametras su išskleidžiamuoju meniu. Sužinosite, kaip gauti leistinas reikšmes, rodyti jas išskleidžiamajame meniu ir užtikrinti, kad parametrai būtų efektyviai atnaujinami pasirinkus, sprendžiant įprastas kūrėjams kylančias problemas.

komandą Naudojimo pavyzdys
viz.workbook.getParametersAsync() Šis asinchroninis metodas nuskaito visų „Tableau“ darbaknygėje esančių parametrų sąrašą. Labai svarbu dinamiškai įkelti parametrų duomenis prieš sąveikaujant su jais įterptojoje prietaisų skydelyje.
viz.workbook.changeParameterValueAsync() Atnaujina konkretaus Tableau parametro reikšmę. Tai užtikrina, kad vartotojui pakeitus išskleidžiamąjį pasirinkimą, darbaknygės parametras būtų atnaujintas realiuoju laiku.
allowableValues Ši savybė turi leistinas Tableau parametro reikšmes. Jis naudojamas išskleidžiamajame meniu užpildyti visomis galiojančiomis parametrų parinktimis, kurias vartotojai gali pasirinkti.
currentValue.value Prieina dabartinę lentelės parametro reikšmę. Taip užtikrinama, kad numatytasis išskleidžiamojo meniu pasirinkimas atitiktų esamą parametro būseną prietaisų skydelyje.
document.createElement("select") Dinamiškai sukuria išskleidžiamąjį elementą
dropdown.addEventListener("change") Į išskleidžiamąjį meniu prideda įvykių klausytoją, kad aptiktų naudotojo pasirinkimo pakeitimus. Suaktyvinus, jis inicijuoja parametrų atnaujinimo procesą „Tableau“ darbaknygėje.
find((p) =>find((p) => p.name === "Moeda") Naudoja Find() metodą parametrų masyve, kad surastų konkretų "Moeda" parametrą. Tai užtikrina teisingą parametrą, skirtą naujinimams.
viz.addEventListener(TableauEventType.FirstInteractive) Ši komanda užtikrina, kad funkcija įkelti parametrų išskleidžiamąjį meniu bus vykdoma tik tada, kai visiškai įkeliamas „Tableau“ prietaisų skydelis, išvengiant laiko problemų.
option.value = value.value Nustato elemento
jest.fn().mockResolvedValue() Naudojamas vienetų testuose, siekiant pajuokti asinchroninių funkcijų elgesį. Taip užtikrinama, kad testavimo metu parametrų atnaujinimo logika būtų tinkamai imituojama, nereikalaujant tiesioginės „Tableau“ aplinkos.

Kaip dinamiškai valdyti lentelės parametrus naudojant „JavaScript“.

Aukščiau pateikti scenarijai sukurti taip, kad būtų užtikrinta sklandi „Tableau“ prietaisų skydelio ir tinkinto HTML sąveika išskleidžiamąjį meniu meniu. Šie scenarijai naudoja Tableau Embedding API, kuri leidžia kūrėjams įterpti Tableau prietaisų skydelius į žiniatinklio programas ir išplėsti jų interaktyvumą. Pagrindinis tikslas yra manipuliuoti parametru, pavadintu „Moeda“, naudojant „JavaScript“, gaunant jo leistinas reikšmes ir dinamiškai atnaujinant parametrą, kai vartotojas pasirenka.

Pirmoji scenarijaus dalis prasideda funkcija įkelti parametrą „Moeda“. Ši funkcija išnaudoja getParametersAsync() būdas gauti visus galimus darbaknygės parametrus. Įkėlus parametrus, scenarijus identifikuoja konkretų „Moeda“ parametrą naudodamas rasti () metodas. Jei parametras nerastas, jis registruoja klaidą, kad nesulaužtų likusio kodo. Tai labai svarbu, nes dirbant su parametrais reikia žinoti, ar jie egzistuoja, prieš tęsiant tolesnę logiką.

Nustačius parametrą, a išskleidžiamąjį meniu meniu yra dinamiškai sukurtas naudojant JavaScript DOM manipuliavimo metodus. Kiekviena parametro leistinų verčių reikšmė pridedama kaip parinktis išskleidžiamajame meniu. Scenarijus užtikrina, kad išskleidžiamasis meniu atspindėtų esamą parametro būseną, nustatant pasirinktą parinktį į dabartinę parametro vertę. Šis veiksmas yra būtinas norint užtikrinti, kad vartotojas prietaisų skydelyje matytų naujausią vertę, užtikrinant informacijos suvestinės būsenos ir išskleidžiamojo meniu numatytosios parinkties nuoseklumą.

Paskutinė scenarijaus dalis apima įvykių klausytojo įtraukimą į išskleidžiamąjį meniu. Šis įvykių klausytojas aptinka, kai vartotojas pakeičia pasirinktą parinktį, ir suaktyvina changeParameterValueAsync() funkcija atnaujinti parametrą Tableau. Be to, scenarijus užtikrina, kad išskleidžiamasis meniu būtų rodomas tik tada, kai prietaisų skydelis bus visiškai įkeltas naudojant FirstInteractive renginys. Taip užtikrinama, kad išskleidžiamasis meniu nebūtų užpildytas per anksti, išvengiant klaidų ar trūkstamų parametrų verčių. Sprendimas yra modulinis ir keičiamo dydžio, todėl jį lengva pritaikyti kitiems parametrams ar prietaisų skydams pakartotinai naudojant tą pačią loginę struktūrą.

Interaktyvaus išskleidžiamojo meniu sukūrimas lentelės parametrams valdyti

„JavaScript“ naudojimas su „Tableau Embedding“ API, kad būtų galima dinamiškai įkelti ir atnaujinti parametrus

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

Modulinės išskleidžiamosios logikos diegimas lentelės parametrų naujinimams

Optimizuotas metodas naudojant modulines funkcijas ir patobulintą klaidų valdymą

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

Lentelės parametrų sąveikos įvairiose aplinkose testavimas

Vienetų testų rašymas naudojant „JavaScript“, kad patvirtintų parametrų atnaujinimus

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

Geriausia lentelės parametrų tvarkymo naudojant „JavaScript“ praktika

Įterpdami „Tableau“ prietaisų skydelius į žiniatinklio programas, kūrėjai dažnai turi pakeisti parametrus dinamiškai, kad pagerintų vartotojų interaktyvumą. Vienas iš pagrindinių iššūkių yra valdyti tokius parametrus kaip "Moeda" per išskleidžiamąjį meniu, o ne naudodami filtrus. Parametrai yra sudėtingesni, nes jiems reikia API iškvietimų, kad būtų gautos leistinos reikšmės, ir juos reikia atnaujinti naudojant tokias funkcijas kaip changeParameterValueAsync(). Šis metodas suteikia vartotojams daugiau galimybių valdyti konkrečius duomenų rodinius informacijos suvestinėje neatnaujinant puslapio.

Tableau prietaisų skydelių parametrų valdymas apima teisingą jų identifikavimą getParametersAsync(). Įprasta klaida yra ta, kad kai kurie parametrai gali būti nepasiekiami arba jiems gali prireikti skirtingų prieigos lygių, atsižvelgiant į darbaknygės konfigūraciją. Todėl svarbu įtraukti klaidų apdorojimą, kad išskleidžiamojo meniu logika nenutrūktų, jei parametras nerastas. Kitas aspektas, į kurį reikia atsižvelgti, yra išskleidžiamojo meniu pateikimas tik visiškai įkėlus prietaisų skydelį. Naudojant FirstInteractive įvykis užtikrina, kad prietaisų skydelio elementai būtų paruošti prieš taikant tinkinimus.

Našumo optimizavimas taip pat yra labai svarbus, ypač kai dirbate su dideliais duomenų rinkiniais arba prietaisų skydeliais su keliais parametrais. JavaScript veikia kaip rasti () padėti susiaurinti parametrų paiešką, tačiau kodas turi likti modulinis, kad ateityje būtų galima keisti mastelį. Kūrėjai taip pat turėtų patvirtinti parametrų reikšmes prieš jas atnaujindami, kad išvengtų vartotojo sąsajos ir prietaisų skydelio duomenų neatitikimų. Taikant šias strategijas tampa lengviau efektyviai valdyti „Tableau“ parametrus ir kurti sklandžią naudotojo patirtį.

Dažnai užduodami klausimai apie parametrų naudojimą Tableau API

  1. Kuo skiriasi parametras ir filtras „Tableau“?
  2. Parametrai leidžia vartotojams perduoti konkrečias reikšmes į prietaisų skydelį, o filtrai riboja rodomus duomenis pagal kriterijus. Filtrai veikia duomenų rinkinius, o parametrai turi įtakos konkretiems laukams arba skaičiavimams.
  3. Kodėl išskleidžiamasis meniu lieka tuščias, kai gaunami parametrai?
  4. Įsitikinkite, kad getParametersAsync() funkcija sėkmingai nuskaito parametrą. Jei ne, parametras gali būti paslėptas arba nepasiekiamas dėl darbaknygės apribojimų.
  5. Kaip užtikrinti, kad išskleidžiamasis meniu atitiktų dabartinę parametro būseną?
  6. Naudokite currentValue.value ypatybę, kad išskleidžiamajame meniu nustatytumėte numatytąją parinktį. Taip vartotojo sąsaja ir prietaisų skydelis bus suderinti.
  7. Kaip galiu tvarkyti klaidas atnaujinant parametrus „Tableau“?
  8. Apvyniokite changeParameterValueAsync() skambinti viduje a try-catch blokas, kad būtų galima apdoroti visas klaidas, atsirandančias atnaujinant parametrą.
  9. Koks įvykis užtikrina, kad prietaisų skydelis būtų paruoštas prieš tinkinant?
  10. The FirstInteractive įvykis Tableau API signalizuoja, kad prietaisų skydelis visiškai įkeltas ir yra paruoštas tolimesnėms sąveikoms, pvz., pridėti išskleidžiamąjį meniu.

Paskutinės mintys apie interaktyvų parametrų tvarkymą

Interaktyvių prietaisų skydelių su parametriniais išskleidžiamaisiais meniu įterpimas suteikia vartotojams daugiau lankstumo. Tinkamai nustatydami kūrėjai gali gauti tokius parametrus kaip Moeda ir naudokite Tableau API, kad pagerintumėte prietaisų skydelio valdymą. Ši sąranka leidžia vartotojams efektyviau tyrinėti duomenis.

Pagrindiniai elementai, tokie kaip FirstInteractive įvykiai ir patikimas klaidų tvarkymas, užtikrina, kad išskleidžiamieji meniu programoje veiktų sklandžiai. Laikydamiesi šio metodo, kūrėjai gali efektyviai valdyti parametrus ir pasiūlyti galutiniams vartotojams dinamišką ir greitai reaguojančią prietaisų skydelio patirtį.

Lentelės parametrų įgyvendinimo šaltiniai ir nuorodos
  1. Išsamią informaciją apie prietaisų skydelių įterpimą ir sąveiką su parametrais nurodė pareigūnas Tableau JavaScript API dokumentacija .
  2. Įžvalgos apie įvykių klausytojus, pvz FirstInteractive, buvo gauti iš pavyzdžių, rastų Tableau bendruomenės forumas .
  3. Bendrosios sąvokos ir geriausios praktikos pavyzdžiai dirbant su „JavaScript“ dinaminiais vartotojo sąsajos elementais buvo paimti iš MDN žiniatinklio dokumentai .