Interaktiivse rippmenüü loomine tabeliparameetrite jaoks JavaScript API abil

Temp mail SuperHeros
Interaktiivse rippmenüü loomine tabeliparameetrite jaoks JavaScript API abil
Interaktiivse rippmenüü loomine tabeliparameetrite jaoks JavaScript API abil

Kasutajapõhiste parameetrite integreerimine tabeli manustatud armatuurlaudadesse

Tableau armatuurlaudade manustamine veebirakendustesse Tableau Embedding API abil võimaldab arendajatel pakkuda dünaamilisi andmepõhiseid lahendusi. Üks võimas viis kasutajakogemuse parandamiseks on armatuurlaua parameetritega suhtlemise lubamine rippmenüüde kaudu.

Selles näites seisneb väljakutse rippmenüü konfigureerimises, et manipuleerida konkreetse nimega Tableau parameetriga "Moeda". Erinevalt filtritest, mida on lihtsam integreerida, vajavad parameetrid JavaScripti abil õigeks laadimiseks ja värskendamiseks täpset käsitlemist.

Kuigi Tableau API pakub parameetritele juurdepääsu meetodeid, võib saadaolevate parameetrite väärtuste õige kuvamine rippmenüüvalikutena ja kasutajate valiku tegemisel sujuvate värskenduste tagamine olla keeruline.

Selle artikli eesmärk on juhendada teid, kuidas seadistada "Moeda" parameeter rippmenüüga. Saate teada, kuidas hankida lubatud väärtusi, kuvada need rippmenüüs ja tagada, et parameetrid värskendatakse tõhusalt valiku tegemisel, lahendades arendajate levinud probleemid.

Käsk Kasutusnäide
viz.workbook.getParametersAsync() See asünkroonne meetod hangib loendi kõigist Tableau töövihikus saadaolevatest parameetritest. Enne nendega manustatud armatuurlaual suhtlemist on oluline parameetrite andmed dünaamiliselt laadida.
viz.workbook.changeParameterValueAsync() Värskendab Tableau konkreetse parameetri väärtust. See tagab, et kui kasutaja muudab rippmenüü valikut, värskendatakse töövihiku parameetrit reaalajas.
allowableValues See atribuut sisaldab Tableau parameetri lubatud väärtusi. Seda kasutatakse rippmenüü täitmiseks kõigi kehtivate parameetrivalikutega, mille hulgast kasutajad saavad valida.
currentValue.value Avab Tableau parameetri praeguse väärtuse. See tagab, et rippmenüü vaikevalik ühtib armatuurlaual oleva parameetri praeguse olekuga.
document.createElement("select") Loob dünaamiliselt JavaScripti kaudu rippmenüüelemendi
dropdown.addEventListener("change") Lisab rippmenüüsse sündmuste kuulaja, et tuvastada kasutajavaliku muudatused. Käivitamisel käivitab see parameetrite värskendamise protsessi Tableau töövihikus.
find((p) =>find((p) => p.name === "Moeda") Kasutab parameetrite massiivi meetodit find() konkreetse "Moeda" parameetri leidmiseks. See tagab, et värskenduste jaoks on sihitud õige parameeter.
viz.addEventListener(TableauEventType.FirstInteractive) See käsk tagab, et parameetri rippmenüü laadimise funktsioon käivitatakse alles siis, kui Tableau armatuurlaud on täielikult laaditud, vältides ajastusprobleeme.
option.value = value.value Määrab elemendi
jest.fn().mockResolvedValue() Kasutatakse ühikutestides asünkroonsete funktsioonide käitumise pilkamiseks. See tagab, et parameetrite värskendamise loogikat simuleeritakse testimise ajal õigesti, ilma et oleks vaja reaalajas Tableau keskkonda.

Kuidas dünaamiliselt juhtida tabeli parameetreid JavaScripti abil

Ülaltoodud skriptid on loodud võimaldama sujuvat suhtlemist Tableau armatuurlaua ja kohandatud HTML-i vahel rippmenüüst menüü. Need skriptid kasutavad Tableau Embedding API-t, mis võimaldab arendajatel manustada Tableau armatuurlaudu veebirakendustesse ja laiendada nende interaktiivsust. Peamine eesmärk on manipuleerida parameetriga nimega "Moeda" JavaScripti kaudu, hankides selle lubatud väärtused ja värskendades parameetrit dünaamiliselt, kui kasutaja teeb valiku.

Skripti esimene osa algab parameetri "Moeda" laadimise funktsiooniga. See funktsioon võimendab getParametersAsync() meetod töövihikust kõigi saadaolevate parameetrite hankimiseks. Kui parameetrid on laaditud, tuvastab skript konkreetse "Moeda" parameetri, kasutades leia () meetod. Kui parameetrit ei leita, logib see vea, et vältida ülejäänud koodi murdmist. See on ülioluline, kuna parameetritega töötamine nõuab enne edasise loogikaga jätkamist teadmist, kas need on olemas.

Pärast parameetri tuvastamist a rippmenüüst menüü luuakse dünaamiliselt JavaScripti DOM-i manipuleerimismeetodite abil. Iga väärtus parameetri lubatud väärtustest lisatakse rippmenüüsse valikuna. Skript tagab, et rippmenüü kajastab parameetri hetkeolekut, määrates valitud suvandi parameetri praegusele väärtusele. See samm on oluline tagamaks, et kasutaja näeks armatuurlaual uusimat väärtust, pakkudes kooskõla armatuurlaua oleku ja rippmenüü vaikevaliku vahel.

Skripti viimane osa hõlmab sündmuste kuulaja lisamist rippmenüüsse. See sündmuste kuulaja tuvastab, kui kasutaja muudab valitud suvandit ja käivitab changeParameterValueAsync() funktsioon Tableau parameetri värskendamiseks. Lisaks tagab skript, et rippmenüü renderdatakse alles pärast seda, kui armatuurlaud on täielikult laaditud, kasutades FirstInteractive sündmus. See tagab, et rippmenüüd ei täideta enneaegselt, vältides vigu või puuduvaid parameetriväärtusi. Lahendus on nii modulaarne kui ka skaleeritav, mistõttu on sama loogikastruktuuri taaskasutamise abil lihtne kohandada teiste parameetrite või armatuurlaudade jaoks.

Interaktiivse rippmenüü loomine tabeli parameetrite juhtimiseks

JavaScripti kasutamine koos Tableau Embedding API-ga parameetrite dünaamiliseks laadimiseks ja värskendamiseks

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

Modulaarse rippmenüü loogika rakendamine tabeli parameetrite värskenduste jaoks

Optimeeritud lähenemisviis, mis kasutab moodulfunktsioone ja täiustatud veakäsitlust

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

Tabeliparameetrite interaktsiooni testimine erinevates keskkondades

Parameetrite värskenduste kinnitamiseks JavaScriptiga ühikutestide kirjutamine

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

Parimad tavad tabeliparameetrite käsitlemiseks JavaScriptiga

Tableau armatuurlaudade veebirakendustesse manustamisel peavad arendajad sageli muutma parameetreid dünaamiliseks, et suurendada kasutajate interaktiivsust. Üks peamisi väljakutseid on selliste parameetrite käsitlemine "Moeda" filtrite asemel rippmenüü kaudu. Parameetrid on keerukamad, kuna nende lubatud väärtuste hankimiseks on vaja API-kutseid ja neid tuleb värskendada funktsioonide, näiteks changeParameterValueAsync(). See lähenemisviis annab kasutajatele parema kontrolli armatuurlaual olevate konkreetsete andmevaadete üle ilma lehte värskendamata.

Parameetrite haldamine Tableau armatuurlaudadel hõlmab nende õiget tuvastamist getParametersAsync(). Levinud probleem on see, et mõned parameetrid ei pruugi olla saadaval või vajada erinevat juurdepääsutaset olenevalt töövihiku konfiguratsioonist. Seetõttu on oluline kaasata veakäsitlus, et vältida rippmenüü loogika purunemist, kui parameetrit ei leita. Teine aspekt, mida tuleks kaaluda, on rippmenüü renderdamine alles pärast armatuurlaua täielikku laadimist. Kasutades FirstInteractive sündmus tagab, et armatuurlaua elemendid on enne kohanduste rakendamist valmis.

Toimivuse optimeerimine on samuti ülioluline, eriti kui tegemist on suurte andmekogumite või mitme parameetriga armatuurlauaga. JavaScript toimib nagu leia () aitab parameetriotsingut kitsendada, kuid kood peab jääma modulaarseks, et võimaldada tulevikus skaleeritavust. Samuti peaksid arendajad parameetrite väärtused enne nende värskendamist valideerima, et vältida vastuolusid kasutajaliidese ja armatuurlaua andmete vahel. Nende strateegiate abil on lihtsam hallata Tableau parameetreid tõhusalt ja luua sujuva kasutajakogemusega armatuurlaudu.

Korduma kippuvad küsimused parameetrite kasutamise kohta Tableau API-s

  1. Mis vahe on Tableau parameetril ja filtril?
  2. Parameetrid võimaldavad kasutajatel edastada konkreetseid väärtusi armatuurlauale, samas kui filtrid piiravad kriteeriumide alusel kuvatavaid andmeid. Filtrid mõjutavad andmekogumeid, parameetrid aga konkreetseid välju või arvutusi.
  3. Miks jääb minu rippmenüü parameetrite toomisel tühjaks?
  4. Veenduge, et getParametersAsync() funktsioon hangib parameetri edukalt alla. Kui seda ei juhtu, võib parameeter olla peidetud või töövihiku piirangute tõttu kättesaamatu.
  5. Kuidas tagada, et rippmenüü vastab parameetri praegusele olekule?
  6. Kasutage currentValue.value atribuut, et määrata rippmenüüs vaikevalik. See hoiab kasutajaliidese ja armatuurlaua joondatud.
  7. Kuidas ma saan Tableau parameetrite värskendamisel vigu käsitleda?
  8. Pakkige changeParameterValueAsync() helista sees a try-catch blokk, et käsitleda parameetri värskendamisel tekkivaid vigu.
  9. Milline sündmus tagab, et armatuurlaud on enne kohandamist valmis?
  10. The FirstInteractive sündmus Tableau API-s annab märku, et armatuurlaud on täielikult laaditud ja valmis edasiseks suhtluseks, näiteks rippmenüü lisamiseks.

Viimased mõtted interaktiivse parameetrite käsitlemise kohta

Parameetritega rippmenüüdega interaktiivsete armatuurlaudade manustamine pakub kasutajatele suuremat paindlikkust. Õige seadistuse korral saavad arendajad hankida selliseid parameetreid nagu Moeda ja kasutage armatuurlaua juhtimise täiustamiseks Tableau API-t. See seadistus võimaldab kasutajatel andmeid tõhusamalt uurida.

Põhielemendid, nagu FirstInteractive sündmuste ja tugeva veakäsitluse tagamiseks, et rippmenüüd töötaksid rakenduses sujuvalt. Seda lähenemisviisi järgides saavad arendajad parameetreid tõhusalt hallata ja pakkuda lõppkasutajatele dünaamilist ja reageerivat armatuurlaua kasutuskogemust.

Allikad ja viited tabeliparameetrite rakendamiseks
  1. Ametnik viitas armatuurlaudade manustamise ja parameetritega suhtlemise üksikasjadele Tableau JavaScript API dokumentatsioon .
  2. Sündmuste kuulajate sissevaateid, nt FirstInteractive, tuletati veebilehelt leitud näidetest Tableau kogukonna foorum .
  3. Üldised kontseptsioonid ja parimad tavad JavaScriptis dünaamiliste kasutajaliidese elementidega töötamiseks on võetud siit MDN-i veebidokumendid .