$lang['tuto'] = "tutorials"; ?> Creació d'un menú desplegable interactiu per als

Creació d'un menú desplegable interactiu per als paràmetres de Tableau mitjançant l'API de JavaScript

Temp mail SuperHeros
Creació d'un menú desplegable interactiu per als paràmetres de Tableau mitjançant l'API de JavaScript
Creació d'un menú desplegable interactiu per als paràmetres de Tableau mitjançant l'API de JavaScript

Integració de paràmetres dirigits per l'usuari als quadres de comandament incrustats de Tableau

La inserció de taulers de control de Tableau dins d'aplicacions web mitjançant l'API d'inserció de Tableau permet als desenvolupadors oferir solucions dinàmiques basades en dades. Una manera potent de millorar l'experiència de l'usuari és habilitant la interacció amb els paràmetres del tauler mitjançant menús desplegables.

En aquest exemple, el repte consisteix a configurar un menú desplegable per manipular un paràmetre concret de Tableau anomenat "Moeda". A diferència dels filtres, que són més fàcils d'integrar, els paràmetres requereixen un maneig precís per carregar i actualitzar correctament mitjançant JavaScript.

Tot i que l'API de Tableau proporciona mètodes per accedir als paràmetres, pot ser complicat mostrar correctament els valors dels paràmetres disponibles com a opcions desplegables i garantir actualitzacions sense problemes quan els usuaris fan una selecció.

L'objectiu d'aquest article és guiar-vos a través dels passos de la configuració "Moeda" paràmetre amb un menú desplegable. Aprendràs a obtenir valors permesos, mostrar-los al menú desplegable i assegurar-te que els paràmetres s'actualitzen de manera eficaç quan es fa una selecció, solucionant els problemes comuns als quals s'enfronten els desenvolupadors.

Comandament Exemple d'ús
viz.workbook.getParametersAsync() Aquest mètode asíncron recupera una llista de tots els paràmetres disponibles al llibre de treball del Tableau. És essencial carregar les dades dels paràmetres de manera dinàmica abans d'interaccionar amb ells al tauler de control incrustat.
viz.workbook.changeParameterValueAsync() Actualitza el valor d'un paràmetre específic a Tableau. Assegura que quan l'usuari canvia la selecció desplegable, el paràmetre del llibre de treball s'actualitza en temps real.
allowableValues Aquesta propietat conté els valors permesos per a un paràmetre de Tableau. S'utilitza per omplir el menú desplegable amb totes les opcions de paràmetres vàlides que els usuaris poden seleccionar.
currentValue.value Accedeix al valor actual d'un paràmetre de Tableau. Això garanteix que la selecció predeterminada del menú desplegable coincideixi amb l'estat actual del paràmetre al tauler.
document.createElement("select") Crea un element desplegable
dropdown.addEventListener("change") Afegeix un oient d'esdeveniments al menú desplegable per detectar els canvis en la selecció d'usuaris. Quan s'activa, inicia el procés d'actualització de paràmetres al llibre de treball de Tableau.
find((p) =>find((p) => p.name === "Moeda") Utilitza el mètode find() a la matriu de paràmetres per localitzar el paràmetre específic "Moeda". Això garanteix que el paràmetre correcte estigui orientat per a les actualitzacions.
viz.addEventListener(TableauEventType.FirstInteractive) Aquesta ordre garanteix que la funció per carregar el menú desplegable de paràmetres només s'executa un cop el tauler de control del Tableau s'ha carregat completament, evitant problemes de temporització.
option.value = value.value Estableix l'atribut value d'un element
jest.fn().mockResolvedValue() S'utilitza en proves unitàries per burlar-se del comportament de les funcions asíncrones. Això garanteix que la lògica d'actualització dels paràmetres es simula correctament durant les proves sense necessitat d'un entorn de Tableau en directe.

Com controlar dinàmicament els paràmetres del quadre mitjançant JavaScript

Els scripts proporcionats anteriorment estan dissenyats per permetre una interacció fluida entre un tauler de control de Tableau i un HTML personalitzat desplegable menú. Aquests scripts utilitzen l'API d'inserció de Tableau, que permet als desenvolupadors incrustar taulers de Tableau dins d'aplicacions web i ampliar la seva interactivitat. L'objectiu principal és manipular un paràmetre anomenat "Moeda" mitjançant JavaScript obtenint els seus valors permesos i actualitzant el paràmetre de manera dinàmica quan l'usuari fa una selecció.

La primera part de l'script comença amb la funció per carregar el paràmetre "Moeda". Aquesta funció aprofita el getParametersAsync() mètode per recuperar tots els paràmetres disponibles al llibre de treball. Un cop carregats els paràmetres, l'script identifica el paràmetre específic de "Moeda" mitjançant l' trobar () mètode. Si no es troba el paràmetre, registra un error per evitar trencar la resta del codi. Això és crucial, ja que treballar amb paràmetres requereix saber si existeixen abans de continuar amb més lògica.

Després d'identificar el paràmetre, a desplegable El menú es crea dinàmicament mitjançant els mètodes de manipulació DOM de JavaScript. Cada valor dels valors permesos del paràmetre s'afegeix com a opció al menú desplegable. L'script assegura que el menú desplegable reflecteixi l'estat actual del paràmetre configurant l'opció seleccionada al valor actual del paràmetre. Aquest pas és essencial per garantir que l'usuari vegi el valor més recent al tauler, proporcionant coherència entre l'estat del tauler i l'opció predeterminada del menú desplegable.

L'última part del guió implica afegir un oient d'esdeveniments al menú desplegable. Aquest oient d'esdeveniments detecta quan l'usuari canvia l'opció seleccionada i activa el changeParameterValueAsync() funció per actualitzar el paràmetre a Tableau. A més, l'script assegura que el menú desplegable només es mostri després que el tauler s'hagi carregat completament mitjançant el Primer Interactiu esdeveniment. Això assegura que el menú desplegable no s'omple abans d'hora, evitant errors o valors de paràmetres que falten. La solució és modular i escalable, la qual cosa facilita l'adaptació a altres paràmetres o quadres de comandament reutilitzant la mateixa estructura lògica.

Creació d'un menú desplegable interactiu per controlar els paràmetres del quadre

Ús de JavaScript amb l'API d'inserció de Tableau per carregar i actualitzar paràmetres de manera dinàmica

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

Implementació de la lògica desplegable modular per a les actualitzacions de paràmetres de Tableau

Enfocament optimitzat amb funcions modulars i tractament d'errors millorat

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

Prova de la interacció dels paràmetres del quadre en diferents entorns

Redacció de proves unitàries amb JavaScript per validar les actualitzacions de paràmetres

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

Pràctiques recomanades per gestionar els paràmetres de Tableau amb JavaScript

Mentre incrusten els taulers de control de Tableau a les aplicacions web, els desenvolupadors sovint necessiten dinàmics els paràmetres per millorar la interactivitat dels usuaris. Un repte clau és manejar paràmetres com ara "Moeda" mitjançant un menú desplegable en lloc d'utilitzar filtres. Els paràmetres són més complexos perquè requereixen trucades a l'API per recuperar els seus valors permesos i s'han d'actualitzar mitjançant funcions, com ara changeParameterValueAsync(). Aquest enfocament ofereix als usuaris més control sobre les visualitzacions de dades específiques al tauler sense actualitzar la pàgina.

La gestió dels paràmetres als quadres de comandament de Tableau implica identificar-los correctament getParametersAsync(). Un error comú és que alguns paràmetres poden no estar disponibles o poden necessitar diferents nivells d'accés en funció de la configuració del llibre de treball. Per tant, és important incloure la gestió d'errors per evitar que la lògica desplegable es trenqui si no es troba un paràmetre. Un altre aspecte a tenir en compte és mostrar el menú desplegable només després que el tauler s'hagi carregat completament. Utilitzant el Primer Interactiu L'esdeveniment garanteix que els elements del tauler de control estiguin preparats abans d'aplicar personalitzacions.

L'optimització del rendiment també és crucial, especialment quan es tracta de grans conjunts de dades o taulers de control amb diversos paràmetres. JavaScript funciona com trobar () ajuda a reduir la cerca de paràmetres, però el codi ha de romandre modular per permetre una escalabilitat futura. Els desenvolupadors també haurien de validar els valors dels paràmetres abans d'actualitzar-los per evitar incoherències entre la interfície d'usuari i les dades del tauler. Amb aquestes estratègies, és més fàcil gestionar els paràmetres de Tableau de manera eficient i crear taulers amb una experiència d'usuari perfecta.

Preguntes freqüents sobre l'ús de paràmetres a l'API de Tableau

  1. Quina diferència hi ha entre un paràmetre i un filtre a Tableau?
  2. Els paràmetres permeten als usuaris passar valors específics al tauler, mentre que els filtres limiten les dades mostrades en funció de criteris. Els filtres actuen sobre els conjunts de dades, mentre que els paràmetres afecten camps o càlculs específics.
  3. Per què el meu menú desplegable roman buit quan obteniu paràmetres?
  4. Assegureu-vos que el getParametersAsync() La funció recupera correctament el paràmetre. Si no ho fa, el paràmetre pot estar amagat o no accessible a causa de les restriccions del llibre de treball.
  5. Com puc assegurar-me que el menú desplegable coincideix amb l'estat actual del paràmetre?
  6. Utilitza el currentValue.value propietat per establir l'opció predeterminada al menú desplegable. Això manté la interfície d'usuari i el tauler alineats.
  7. Com puc gestionar els errors en actualitzar paràmetres al Tableau?
  8. Emboliqui el changeParameterValueAsync() truca dins a try-catch bloc per gestionar els errors que es produeixin quan s'actualitza el paràmetre.
  9. Quin esdeveniment garanteix que el tauler estigui llest abans de la personalització?
  10. El FirstInteractive L'esdeveniment a l'API de Tableau indica que el tauler s'ha carregat completament i està preparat per a més interaccions, com ara afegir un menú desplegable.

Consideracions finals sobre el maneig de paràmetres interactius

La inserció de taulers interactius amb menús desplegables parametritzats ofereix una major flexibilitat als usuaris. Amb una configuració adequada, els desenvolupadors poden obtenir paràmetres com ara Moeda i utilitzeu l'API de Tableau per millorar el control del tauler. Aquesta configuració permet als usuaris explorar les dades de manera més eficaç.

Elements clau, com ara el Primer Interactiu esdeveniments i una gestió robusta d'errors, assegureu-vos que els menús desplegables funcionin sense problemes dins de l'aplicació. Seguint aquest enfocament, els desenvolupadors poden gestionar els paràmetres de manera eficient i oferir als usuaris finals una experiència de tauler dinàmica i sensible.

Fonts i referències per implementar els paràmetres del quadre
  1. Els detalls sobre la incorporació de taulers de control i la interacció amb els paràmetres es van fer referència a l'oficial Documentació de l'API de Tableau JavaScript .
  2. Informació sobre els oients d'esdeveniments, com ara Primer Interactiu, es van derivar d'exemples trobats al Fòrum de la comunitat de Tableau .
  3. Es van extreure els conceptes generals i les bones pràctiques per treballar amb elements dinàmics d'IU a JavaScript MDN Web Docs .