$lang['tuto'] = "Туторијали"; ?> Креирање интерактивног

Креирање интерактивног падајућег менија за параметре табеле помоћу ЈаваСцрипт АПИ-ја

Temp mail SuperHeros
Креирање интерактивног падајућег менија за параметре табеле помоћу ЈаваСцрипт АПИ-ја
Креирање интерактивног падајућег менија за параметре табеле помоћу ЈаваСцрипт АПИ-ја

Интегрисање корисничких параметара у уграђене контролне табле Таблеау

Уграђивање Таблеау контролне табле у веб апликације помоћу Таблеау Ембеддинг АПИ-ја омогућава програмерима да испоруче динамична решења заснована на подацима. Један моћан начин да се побољша корисничко искуство је омогућавање интеракције са параметрима контролне табле преко падајућих менија.

У овом примеру, изазов лежи у конфигурисању падајућег менија за манипулисање одређеним параметром Таблеау тзв. "Моеда". За разлику од филтера, које је лакше интегрисати, параметри захтевају прецизно руковање да би се правилно учитали и ажурирали помоћу ЈаваСцрипт-а.

Иако Таблеау АПИ пружа методе за приступ параметрима, може бити тешко правилно приказати доступне вредности параметара као падајуће опције и обезбедити беспрекорна ажурирања када корисници направе избор.

Циљ овог чланка је да вас води кроз кораке подешавања "Моеда" параметар са падајућим менијем. Научићете како да преузмете дозвољене вредности, прикажете их у падајућем менију и обезбедите да се параметри ефикасно ажурирају када се изврши избор, решавајући уобичајене проблеме са којима се програмери суочавају.

Цомманд Пример употребе
viz.workbook.getParametersAsync() Овај асинхрони метод преузима листу свих параметара доступних у радној свесци Таблеау. Неопходно је динамички учитавати податке о параметрима пре интеракције са њима на уграђеној контролној табли.
viz.workbook.changeParameterValueAsync() Ажурира вредност одређеног параметра у Таблеау-у. Он обезбеђује да када корисник промени избор падајућег менија, параметар у радној свесци се ажурира у реалном времену.
allowableValues Ово својство садржи дозвољене вредности за Таблеау параметар. Користи се за попуњавање падајућег менија са свим важећим опцијама параметара које корисници могу да бирају.
currentValue.value Приступа тренутној вредности параметра Таблеау. Ово осигурава да подразумевани избор падајућег менија одговара тренутном стању параметра на контролној табли.
document.createElement("select") Креира падајући елемент <селецт> динамички преко ЈаваСцрипт-а. Ово је неопходно када се уграђују прилагођене компоненте корисничког интерфејса у ХТМЛ током времена извршавања.
dropdown.addEventListener("change") Додаје слушалац догађаја у падајући мени да открије промене у избору корисника. Када се покрене, покреће процес ажурирања параметара у радној свесци Таблеау.
find((p) =>find((p) => p.name === "Moeda") Користи методу финд() на низу параметара да лоцира одређени параметар „Моеда“. Ово осигурава да је исправан параметар циљан за ажурирања.
viz.addEventListener(TableauEventType.FirstInteractive) Ова команда обезбеђује да се функција за учитавање падајућег менија параметара извршава само када се Таблеау контролна табла у потпуности учита, избегавајући проблеме са временом.
option.value = value.value Поставља атрибут вредности елемента <оптион> тако да одговара одговарајућој вредности параметра, омогућавајући падајућем менију да прикаже исправно стање података.
jest.fn().mockResolvedValue() Користи се у јединичним тестовима за исмевање понашања асинхроних функција. Ово осигурава да је логика ажурирања параметара исправно симулирана током тестирања без потребе за живом Таблеау окружењем.

Како да динамички контролишете параметре табеле користећи ЈаваСцрипт

Горе наведене скрипте су дизајниране да омогуће глатку интеракцију између Таблеау контролне табле и прилагођеног ХТМЛ-а падајући мени мени. Ове скрипте користе Таблеау Ембеддинг АПИ, који омогућава програмерима да уграде Таблеау контролне табле у веб апликације и прошире своју интерактивност. Примарни фокус је да се манипулише параметром под називом „Моеда“ кроз ЈаваСцрипт тако што ће дохватити његове дозвољене вредности и динамички ажурирати параметар када корисник направи избор.

Први део скрипте почиње са функцијом за учитавање параметра "Моеда". Ова функција користи гетПараметерсАсинц() метод за преузимање свих доступних параметара у радној свесци. Када се параметри учитају, скрипта идентификује одређени "Моеда" параметар користећи нађи() методом. Ако параметар није пронађен, евидентира грешку како би се избегао разбијање остатка кода. Ово је кључно јер рад са параметрима захтева да се зна да ли они постоје пре него што се настави са даљом логиком.

Након идентификације параметра, а падајући мени мени се динамички креира коришћењем ЈаваСцрипт метода манипулације ДОМ-ом. Свака вредност из дозвољених вредности параметра се додаје као опција у падајућем менију. Скрипта осигурава да падајући мени одражава тренутно стање параметра постављањем изабране опције на тренутну вредност параметра. Овај корак је од суштинског значаја да би се осигурало да корисник види најновију вредност на контролној табли, обезбеђујући доследност између стања контролне табле и подразумеване опције падајућег менија.

Последњи део скрипте укључује додавање слушаоца догађаја у падајући мени. Овај слушалац догађаја детектује када корисник промени изабрану опцију и покреће цхангеПараметерВалуеАсинц() функција за ажурирање параметра у Таблеау-у. Поред тога, скрипта осигурава да се падајући мени прикаже тек након што се контролна табла у потпуности учита помоћу ФирстИнтерацтиве догађај. Ово осигурава да се падајући мени не попуњава прерано, спречавајући грешке или недостајуће вредности параметара. Решење је и модуларно и скалабилно, што га чини лаким за прилагођавање другим параметрима или контролним таблама поновним коришћењем исте логичке структуре.

Креирање интерактивног падајућег менија за контролу параметара табеле

Коришћење ЈаваСцрипт-а са АПИ-јем за уграђивање Таблеау за динамичко учитавање и ажурирање параметара

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

Имплементација модуларне падајуће логике за ажурирања параметара табеле

Оптимизован приступ користећи модуларне функције и побољшано руковање грешкама

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

Тестирање интеракције параметара табеле у различитим окружењима

Писање јединичних тестова са ЈаваСцрипт-ом за проверу ажурирања параметара

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

Најбоље праксе за руковање параметрима табеле помоћу ЈаваСцрипт-а

Док уграђују Таблеау контролне табле у веб апликације, програмери често морају да учине параметре динамичким да би побољшали интерактивност корисника. Један од кључних изазова је руковање параметрима као што су "Моеда" преко падајућег менија уместо да користите филтере. Параметри су сложенији јер захтевају АПИ позиве да би добили своје дозвољене вредности и морају да се ажурирају преко функција, као што је цхангеПараметерВалуеАсинц(). Овај приступ даје корисницима већу контролу над одређеним приказима података на контролној табли без освежавања странице.

Управљање параметрима на Таблеау контролним таблама укључује њихову исправну идентификацију гетПараметерсАсинц(). Уобичајена замка је да неки параметри можда неће бити доступни или ће можда требати различите нивое приступа у зависности од конфигурације радне свеске. Стога је важно укључити руковање грешкама како бисте спречили да се логика падајућег менија поквари ако параметар није пронађен. Други аспект који треба узети у обзир је приказивање падајућег менија тек након што се контролна табла у потпуности учита. Коришћењем ФирстИнтерацтиве догађај осигурава да су елементи контролне табле спремни пре примене прилагођавања.

Оптимизација перформанси је такође кључна, посебно када се ради о великим скуповима података или контролним таблама са више параметара. ЈаваСцрипт функционише као нађи() помаже да се сузи претрага параметара, али код мора остати модуларан да би омогућио будућу скалабилност. Програмери такође треба да провере вредности параметара пре него што их ажурирају како би избегли недоследности између података корисничког интерфејса и контролне табле. Са овим стратегијама постаје лакше ефикасно управљати Таблеау параметрима и правити контролне табле са беспрекорним корисничким искуством.

Често постављана питања о коришћењу параметара у Таблеау АПИ-ју

  1. Која је разлика између параметра и филтера у Таблеау-у?
  2. Параметри омогућавају корисницима да прослеђују одређене вредности на контролну таблу, док филтери ограничавају приказане податке на основу критеријума. Филтери делују на скупове података, док параметри утичу на одређена поља или прорачуне.
  3. Зашто мој падајући мени остаје празан приликом преузимања параметара?
  4. Уверите се да getParametersAsync() функција успешно преузима параметар. Ако није, параметар може бити скривен или недоступан због ограничења радне свеске.
  5. Како да осигурам да падајући мени одговара тренутном стању параметра?
  6. Користите currentValue.value својство да поставите подразумевану опцију у падајућем менију. Ово одржава УИ и контролну таблу усклађеним.
  7. Како могу да решим грешке приликом ажурирања параметара у Таблеау-у?
  8. Замотајте changeParameterValueAsync() позив унутра а try-catch блок за руковање свим грешкама које се јављају када се параметар ажурира.
  9. Који догађај осигурава да је контролна табла спремна пре прилагођавања?
  10. Тхе FirstInteractive догађај у Таблеау АПИ-ју сигнализира да се контролна табла у потпуности учитала и да је спремна за даље интеракције као што је додавање падајућег менија.

Завршна размишљања о интерактивном руковању параметрима

Уграђивање интерактивних контролних табли са параметризованим падајућим менијима нуди већу флексибилност корисницима. Уз правилно подешавање, програмери могу да дохвате параметре као што су Моеда и користите Таблеау АПИ за побољшање контроле контролне табле. Ово подешавање омогућава корисницима да ефикасније истражују податке.

Кључни елементи, као што су ФирстИнтерацтиве догађајима и робусно руковање грешкама, обезбедите да падајући менији раде несметано у оквиру апликације. Пратећи овај приступ, програмери могу ефикасно управљати параметрима и понудити крајњим корисницима динамично и брзо искуство контролне табле.

Извори и референце за имплементацију параметара табеле
  1. Званичник је навео детаље о уграђивању контролних табли и интеракцији са параметрима Таблеау ЈаваСцрипт АПИ документација .
  2. Увид у слушаоце догађаја, као нпр ФирстИнтерацтиве, изведени су из примера пронађених на Таблеау Цоммунити Форум .
  3. Општи концепти и најбоље праксе за рад са динамичким УИ елементима у ЈаваСцрипт-у су преузети МДН веб документи .