Interaktiivisen pudotusvalikon luominen Tableau-parametreille JavaScript-sovellusliittymän avulla

Temp mail SuperHeros
Interaktiivisen pudotusvalikon luominen Tableau-parametreille JavaScript-sovellusliittymän avulla
Interaktiivisen pudotusvalikon luominen Tableau-parametreille JavaScript-sovellusliittymän avulla

Käyttäjälähtöisten parametrien integrointi Tableau Embedded Dashboardeihin

Tableaun koontinäyttöjen upottaminen verkkosovelluksiin Tableau Embedding API:n avulla mahdollistaa kehittäjien toimittamaan dynaamisia, tietopohjaisia ​​ratkaisuja. Yksi tehokas tapa parantaa käyttökokemusta on sallia vuorovaikutus kojelaudan parametrien kanssa pudotusvalikoiden kautta.

Tässä esimerkissä haasteena on pudotusvalikon määrittäminen käsittelemään tiettyä Tableau-parametria nimeltä "Moeda". Toisin kuin suodattimet, jotka on helpompi integroida, parametrit vaativat tarkan käsittelyn, jotta ne voidaan ladata ja päivittää oikein JavaScriptin avulla.

Vaikka Tableau API tarjoaa menetelmiä parametrien käyttämiseen, voi olla hankalaa näyttää käytettävissä olevat parametriarvot oikein pudotusvalikon vaihtoehtoina ja varmistaa saumattomat päivitykset, kun käyttäjät tekevät valinnan.

Tämän artikkelin tavoitteena on opastaa sinua asennuksen vaiheissa "Moeda" parametri pudotusvalikosta. Opit hakemaan sallitut arvot, näyttämään ne avattavassa valikossa ja varmistamaan, että parametrit päivittyvät tehokkaasti valinnan aikana, mikä ratkaisee kehittäjien yleisimmät ongelmat.

Komento Käyttöesimerkki
viz.workbook.getParametersAsync() Tämä asynkroninen menetelmä hakee luettelon kaikista Tableau-työkirjan parametreista. On tärkeää ladata parametritiedot dynaamisesti ennen niiden käyttöä sulautetussa kojelaudassa.
viz.workbook.changeParameterValueAsync() Päivittää tietyn parametrin arvon Tableaussa. Se varmistaa, että kun käyttäjä muuttaa pudotusvalikon valintaa, työkirjan parametri päivitetään reaaliajassa.
allowableValues Tämä ominaisuus sisältää Tableau-parametrin sallitut arvot. Sitä käytetään täyttämään avattava valikko kaikilla kelvollisilla parametrivaihtoehdoilla, joista käyttäjät voivat valita.
currentValue.value Käyttää Tableau-parametrin nykyistä arvoa. Tämä varmistaa, että avattavan valikon oletusvalinta vastaa parametrin nykyistä tilaa kojelaudassa.
document.createElement("select") Luo
dropdown.addEventListener("change") Lisää avattavaan valikkoon tapahtumaseuraajan käyttäjän valinnan muutosten havaitsemiseksi. Kun se käynnistetään, se käynnistää parametrien päivitysprosessin Tableau-työkirjassa.
find((p) =>find((p) => p.name === "Moeda") Käyttää find()-menetelmää parametritaulukossa tietyn "Moeda"-parametrin paikantamiseen. Tämä varmistaa, että päivitykset kohdistetaan oikeaan parametriin.
viz.addEventListener(TableauEventType.FirstInteractive) Tämä komento varmistaa, että parametrien pudotusvalikon lataustoiminto suoritetaan vasta, kun Tableaun kojelauta on ladattu täyteen, jolloin vältetään ajoitusongelmat.
option.value = value.value Asettaa
jest.fn().mockResolvedValue() Käytetään yksikkötesteissä asynkronisten toimintojen käyttäytymisen pilkkaamiseen. Tämä varmistaa, että parametrien päivityslogiikka simuloidaan oikein testauksen aikana ilman live Tableau -ympäristöä.

Taulukon parametrien dynaaminen ohjaus JavaScriptin avulla

Yllä olevat skriptit on suunniteltu mahdollistamaan sujuva vuorovaikutus Tableau-hallintapaneelin ja mukautetun HTML-koodin välillä pudotusvalikosta valikosta. Nämä komentosarjat käyttävät Tableau Embedding API:ta, jonka avulla kehittäjät voivat upottaa Tableau-koontinäyttöjä verkkosovelluksiin ja laajentaa niiden interaktiivisuutta. Ensisijainen tavoite on käsitellä "Moeda"-nimistä parametria JavaScriptin kautta hakemalla sen sallitut arvot ja päivittämällä parametri dynaamisesti, kun käyttäjä tekee valinnan.

Skriptin ensimmäinen osa alkaa toiminnolla "Moeda"-parametrin lataamiseksi. Tämä toiminto hyödyntää getParametersAsync() menetelmä noutaa kaikki työkirjan käytettävissä olevat parametrit. Kun parametrit on ladattu, komentosarja tunnistaa tietyn "Moeda"-parametrin käyttämällä löytää() menetelmä. Jos parametria ei löydy, se kirjaa virheen välttääkseen muun koodin rikkoutumisen. Tämä on ratkaisevan tärkeää, koska parametrien kanssa työskentely edellyttää niiden olemassaoloa, ennen kuin jatkat logiikkaa.

Kun olet tunnistanut parametrin, a pudotusvalikosta -valikko luodaan dynaamisesti JavaScriptin DOM-käsittelymenetelmillä. Jokainen arvo parametrin sallituista arvoista lisätään vaihtoehtona avattavaan valikkoon. Skripti varmistaa, että pudotusvalikko heijastaa parametrin nykyistä tilaa asettamalla valitun vaihtoehdon parametrin nykyiseen arvoon. Tämä vaihe on välttämätön sen varmistamiseksi, että käyttäjä näkee viimeisimmän arvon kojelaudassa, mikä varmistaa johdonmukaisuuden kojelaudan tilan ja avattavan valikon oletusasetuksen välillä.

Skriptin viimeinen osa sisältää tapahtumakuuntelijan lisäämisen avattavaan valikkoon. Tämä tapahtumanseuranta havaitsee, kun käyttäjä muuttaa valittua vaihtoehtoa ja käynnistää changeParameterValueAsync() funktio päivittääksesi parametrin Tableaussa. Lisäksi komentosarja varmistaa, että pudotusvalikko näytetään vasta sen jälkeen, kun kojelauta on latautunut kokonaan käyttämällä FirstInteractive tapahtuma. Tämä varmistaa, että pudotusvalikkoa ei täytetä ennenaikaisesti, mikä estää virheet tai puuttuvat parametriarvot. Ratkaisu on sekä modulaarinen että skaalautuva, joten se on helppo mukauttaa muihin parametreihin tai kojetauluihin käyttämällä uudelleen samaa logiikkarakennetta.

Interaktiivisen pudotusvalikon luominen taulukkoparametrien hallitsemiseksi

JavaScriptin käyttäminen Tableau Embedding API:n kanssa parametrien lataamiseen ja päivittämiseen dynaamisesti

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

Modulaarisen pudotuslogiikan käyttöönotto Tableau-parametripäivityksiä varten

Optimoitu lähestymistapa modulaaristen toimintojen ja parannetun virheenkäsittelyn avulla

// 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-parametrien vuorovaikutuksen testaus eri ympäristöissä

Yksikkötestien kirjoittaminen JavaScriptillä parametrien päivitysten vahvistamiseksi

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

Parhaat käytännöt taulukkoparametrien käsittelemiseen JavaScriptillä

Kun Tableau-koontinäyttöjä upotetaan verkkosovelluksiin, kehittäjien on usein tehtävä parametreista dynaamisia parantaakseen käyttäjien vuorovaikutusta. Yksi keskeinen haaste on käsitellä parametreja kuten "Moeda" avattavan valikon kautta suodattimien käyttämisen sijaan. Parametrit ovat monimutkaisempia, koska ne vaativat API-kutsuja sallittujen arvojensa hakemiseen ja ne on päivitettävä funktioiden, kuten esim. changeParameterValueAsync(). Tämä lähestymistapa antaa käyttäjille enemmän hallintaa tiettyihin tietonäkymiin hallintapaneelissa päivittämättä sivua.

Parametrien hallinta Tableau-koontipaneeleissa edellyttää niiden tunnistamista oikein getParametersAsync(). Yleinen ongelma on, että jotkin parametrit eivät ehkä ole käytettävissä tai ne saattavat vaatia eri käyttöoikeustasoja työkirjan kokoonpanosta riippuen. Siksi on tärkeää sisällyttää virheiden käsittely, jotta pudotusvalikon logiikka ei katkea, jos parametria ei löydy. Toinen huomioitava näkökohta on avattavan valikon näyttäminen vasta sen jälkeen, kun kojelauta on ladattu täyteen. Käyttämällä FirstInteractive tapahtuma varmistaa, että kojelaudan elementit ovat valmiit ennen mukautusten käyttöönottoa.

Suorituskyvyn optimointi on myös ratkaisevan tärkeää, varsinkin kun käsitellään suuria tietojoukkoja tai kojetauluja, joissa on useita parametreja. JavaScript toimii kuten löytää() auttaa rajaamaan parametrien hakua, mutta koodin on pysyttävä modulaarisena tulevan skaalautuvuuden mahdollistamiseksi. Kehittäjien tulee myös vahvistaa parametriarvot ennen niiden päivittämistä, jotta käyttöliittymän ja kojelautatietojen välillä ei ole epäjohdonmukaisuuksia. Näiden strategioiden avulla on helpompi hallita Tableau-parametreja tehokkaasti ja rakentaa kojelaudat, joissa käyttökokemus on saumaton.

Usein kysyttyjä kysymyksiä parametrien käyttämisestä Tableau API:ssa

  1. Mitä eroa Tableaun parametrilla ja suodattimella on?
  2. Parametrien avulla käyttäjät voivat välittää tiettyjä arvoja kojelautaan, kun taas suodattimet rajoittavat näytettävää dataa kriteerien perusteella. Suodattimet vaikuttavat tietosarjoihin, kun taas parametrit vaikuttavat tiettyihin kenttiin tai laskelmiin.
  3. Miksi pudotusvalikkoni pysyy tyhjänä parametreja noudettaessa?
  4. Varmista, että getParametersAsync() toiminto noutaa parametrin onnistuneesti. Jos näin ei ole, parametri saattaa olla piilotettu tai ei ole käytettävissä työkirjarajoitusten vuoksi.
  5. Kuinka varmistan, että pudotusvalikko vastaa parametrin nykyistä tilaa?
  6. Käytä currentValue.value -ominaisuus asettaaksesi oletusvaihtoehdon avattavassa valikossa. Tämä pitää käyttöliittymän ja kojelaudan kohdakkain.
  7. Kuinka voin käsitellä virheitä päivitettäessä parametreja Tableaussa?
  8. Kääri changeParameterValueAsync() soita sisään a try-catch lohko käsittelemään parametrin päivityksen yhteydessä ilmeneviä virheitä.
  9. Mikä tapahtuma varmistaa, että kojelauta on valmis ennen mukauttamista?
  10. The FirstInteractive Tapahtuma Tableau API:ssa ilmoittaa, että kojelauta on ladattu täyteen ja on valmis lisätoimiin, kuten avattavan valikon lisäämiseen.

Viimeisiä ajatuksia interaktiivisesta parametrien käsittelystä

Vuorovaikutteisten hallintapaneelien upottaminen parametroiduilla pudotusvalikoilla tarjoaa käyttäjille enemmän joustavuutta. Oikealla asetuksella kehittäjät voivat hakea parametreja, kuten Moeda ja käytä Tableau API:ta kojelaudan hallinnan parantamiseen. Tämän asennuksen avulla käyttäjät voivat tutkia tietoja tehokkaammin.

Avainelementit, kuten FirstInteractive tapahtumien ja vankan virheiden käsittelyn avulla varmistat, että pudotusvalikot toimivat sujuvasti sovelluksessa. Tätä lähestymistapaa noudattamalla kehittäjät voivat hallita parametreja tehokkaasti ja tarjota loppukäyttäjille dynaamisen ja reagoivan kojelautakokemuksen.

Lähteet ja viitteet taulukkoparametrien toteuttamiseen
  1. Virkailija viittasi kojetaulujen upottamiseen ja vuorovaikutukseen parametrien kanssa liittyviin yksityiskohtiin Tableau JavaScript API -dokumentaatio .
  2. Näkemyksiä tapahtumien kuuntelijoista, mm FirstInteractive, on johdettu sivustolta löytyvistä esimerkeistä Tableau-yhteisöfoorumi .
  3. Yleiset käsitteet ja parhaat käytännöt JavaScriptin dynaamisten käyttöliittymäelementtien kanssa työskentelyyn on otettu osoitteesta MDN Web Docs .