ટેબ્લો એમ્બેડેડ ડેશબોર્ડ્સમાં વપરાશકર્તા-સંચાલિત પરિમાણોને એકીકૃત કરવું
ટેબ્લો એમ્બેડિંગ API નો ઉપયોગ કરીને વેબ એપ્લિકેશન્સમાં ટેબ્લો ડેશબોર્ડ્સને એમ્બેડ કરવું વિકાસકર્તાઓને ગતિશીલ, ડેટા-આધારિત ઉકેલો પહોંચાડવાની મંજૂરી આપે છે. ડ્રોપડાઉન મેનૂ દ્વારા ડેશબોર્ડ પેરામીટર્સ સાથે ક્રિયાપ્રતિક્રિયાને સક્ષમ કરીને વપરાશકર્તા અનુભવને વધારવાની એક શક્તિશાળી રીત છે.
આ ઉદાહરણમાં, ડ્રોપડાઉન મેનૂને રૂપરેખાંકિત કરવા માટે એક વિશિષ્ટ ટેબ્લો પેરામીટર કહેવાય છે. "મોએડા". ફિલ્ટર્સથી વિપરીત, જે એકીકૃત કરવા માટે સરળ છે, પરિમાણોને જાવાસ્ક્રિપ્ટનો ઉપયોગ કરીને યોગ્ય રીતે લોડ કરવા અને અપડેટ કરવા માટે ચોક્કસ હેન્ડલિંગની જરૂર છે.
ભલે Tableau API પરિમાણોને ઍક્સેસ કરવાની પદ્ધતિઓ પ્રદાન કરે છે, તે ઉપલબ્ધ પેરામીટર મૂલ્યોને ડ્રોપડાઉન વિકલ્પો તરીકે યોગ્ય રીતે પ્રદર્શિત કરવા અને વપરાશકર્તાઓ જ્યારે પસંદગી કરે ત્યારે સીમલેસ અપડેટ્સની ખાતરી કરવી મુશ્કેલ હોઈ શકે છે.
આ લેખનો ધ્યેય તમને સેટ કરવાના પગલાઓ દ્વારા માર્ગદર્શન આપવાનો છે "મોએડા" ડ્રોપડાઉન સાથે પરિમાણ. તમે સ્વીકાર્ય મૂલ્યો કેવી રીતે મેળવવી તે શીખી શકશો, તેમને ડ્રોપડાઉનમાં કેવી રીતે પ્રદર્શિત કરશો, અને જ્યારે પસંદગી કરવામાં આવે ત્યારે પેરામીટર અસરકારક રીતે અપડેટ થાય તેની ખાતરી કરો, વિકાસકર્તાઓનો સામનો કરવો પડે તેવી સામાન્ય સમસ્યાઓનું નિરાકરણ.
આદેશ | ઉપયોગનું ઉદાહરણ |
---|---|
viz.workbook.getParametersAsync() | આ અસુમેળ પદ્ધતિ ટેબ્લો વર્કબુકમાં ઉપલબ્ધ તમામ પરિમાણોની સૂચિ પુનઃપ્રાપ્ત કરે છે. એમ્બેડેડ ડેશબોર્ડમાં તેમની સાથે ક્રિયાપ્રતિક્રિયા કરતા પહેલા પેરામીટર ડેટાને ગતિશીલ રીતે લોડ કરવું આવશ્યક છે. |
viz.workbook.changeParameterValueAsync() | ટેબ્લોમાં ચોક્કસ પરિમાણના મૂલ્યને અપડેટ કરે છે. તે સુનિશ્ચિત કરે છે કે જ્યારે વપરાશકર્તા ડ્રોપડાઉન પસંદગીમાં ફેરફાર કરે છે, ત્યારે વર્કબુકમાં પેરામીટર રીઅલ-ટાઇમમાં અપડેટ થાય છે. |
allowableValues | આ ગુણધર્મ ટેબ્લો પેરામીટર માટે અનુમતિપાત્ર મૂલ્યો ધરાવે છે. તેનો ઉપયોગ તમામ માન્ય પેરામીટર વિકલ્પો સાથે ડ્રોપડાઉન મેનૂને બનાવવા માટે થાય છે જેમાંથી વપરાશકર્તાઓ પસંદ કરી શકે છે. |
currentValue.value | ટેબ્લો પેરામીટરના વર્તમાન મૂલ્યને ઍક્સેસ કરે છે. આ ખાતરી કરે છે કે ડ્રોપડાઉનની ડિફોલ્ટ પસંદગી ડેશબોર્ડમાં પેરામીટરની વર્તમાન સ્થિતિ સાથે મેળ ખાય છે. |
document.createElement("select") | JavaScript દ્વારા ગતિશીલ રીતે |
dropdown.addEventListener("change") | વપરાશકર્તા પસંદગી ફેરફારો શોધવા માટે ડ્રોપડાઉનમાં ઇવેન્ટ લિસનરને ઉમેરે છે. જ્યારે ટ્રિગર થાય છે, ત્યારે તે ટેબ્લો વર્કબુકમાં પેરામીટર અપડેટ પ્રક્રિયા શરૂ કરે છે. |
find((p) =>find((p) => p.name === "Moeda") | ચોક્કસ "Moeda" પરિમાણને શોધવા માટે પરિમાણો એરે પર find() પદ્ધતિનો ઉપયોગ કરે છે. આ સુનિશ્ચિત કરે છે કે અપડેટ્સ માટે યોગ્ય પરિમાણ લક્ષિત છે. |
viz.addEventListener(TableauEventType.FirstInteractive) | આ આદેશ સુનિશ્ચિત કરે છે કે પરિમાણ ડ્રોપડાઉન લોડ કરવા માટેનું કાર્ય માત્ર ત્યારે જ એક્ઝિક્યુટ થાય છે જ્યારે ટેબ્લો ડેશબોર્ડ સંપૂર્ણ લોડ થઈ જાય, સમયની સમસ્યાઓને ટાળીને. |
option.value = value.value | અનુરૂપ પરિમાણ મૂલ્ય સાથે મેળ કરવા માટે |
jest.fn().mockResolvedValue() | અસુમેળ કાર્યોની વર્તણૂકની મજાક કરવા માટે એકમ પરીક્ષણોમાં વપરાય છે. આ સુનિશ્ચિત કરે છે કે પરિમાણ અપડેટ લોજિક જીવંત ટેબ્લો પર્યાવરણની જરૂર વગર પરીક્ષણ દરમિયાન યોગ્ય રીતે અનુકરણ કરવામાં આવે છે. |
જાવાસ્ક્રિપ્ટનો ઉપયોગ કરીને ટેબ્લો પરિમાણોને ગતિશીલ રીતે કેવી રીતે નિયંત્રિત કરવું
ઉપર આપવામાં આવેલ સ્ક્રિપ્ટો ટેબ્લો ડેશબોર્ડ અને કસ્ટમ HTML વચ્ચે સરળ ક્રિયાપ્રતિક્રિયાને સક્ષમ કરવા માટે ડિઝાઇન કરવામાં આવી છે. ડ્રોપડાઉન મેનુ આ સ્ક્રિપ્ટો ટેબ્લો એમ્બેડિંગ API નો ઉપયોગ કરે છે, જે વિકાસકર્તાઓને વેબ એપ્લિકેશન્સમાં ટેબ્લો ડેશબોર્ડ્સને એમ્બેડ કરવાની અને તેમની ક્રિયાપ્રતિક્રિયાને વિસ્તારવા માટે પરવાનગી આપે છે. પ્રાથમિક ફોકસ JavaScript દ્વારા "Moeda" નામના પરિમાણને તેની અનુમતિપાત્ર મૂલ્યો લાવીને અને પેરામીટરને ગતિશીલ રીતે અપડેટ કરવાનું છે જ્યારે વપરાશકર્તા પસંદગી કરે છે.
સ્ક્રિપ્ટનો પહેલો ભાગ "Moeda" પેરામીટર લોડ કરવાના ફંક્શનથી શરૂ થાય છે. આ કાર્ય લાભ આપે છે getParametersAsync() કાર્યપુસ્તિકામાં ઉપલબ્ધ તમામ પરિમાણો પુનઃપ્રાપ્ત કરવાની પદ્ધતિ. એકવાર પરિમાણો લોડ થઈ જાય, પછી સ્ક્રિપ્ટ ચોક્કસ "Moeda" પરિમાણને ઓળખે છે શોધો() પદ્ધતિ જો પરિમાણ ન મળે, તો બાકીના કોડને તોડવાનું ટાળવા માટે તે ભૂલને લૉગ કરે છે. આ નિર્ણાયક છે કારણ કે પરિમાણો સાથે કામ કરવા માટે વધુ તર્ક સાથે આગળ વધતા પહેલા તે અસ્તિત્વમાં છે કે કેમ તે જાણવાની જરૂર છે.
પરિમાણ ઓળખ્યા પછી, એ ડ્રોપડાઉન જાવાસ્ક્રિપ્ટની DOM મેનીપ્યુલેશન પદ્ધતિઓનો ઉપયોગ કરીને મેનુ ગતિશીલ રીતે બનાવવામાં આવે છે. પરિમાણના માન્ય મૂલ્યોમાંથી દરેક મૂલ્ય ડ્રોપડાઉનમાં એક વિકલ્પ તરીકે ઉમેરવામાં આવે છે. સ્ક્રિપ્ટ સુનિશ્ચિત કરે છે કે ડ્રોપડાઉન પેરામીટરના વર્તમાન મૂલ્ય પર પસંદ કરેલ વિકલ્પ સેટ કરીને પેરામીટરની વર્તમાન સ્થિતિને પ્રતિબિંબિત કરે છે. ડેશબોર્ડની સ્થિતિ અને ડ્રોપડાઉનના ડિફોલ્ટ વિકલ્પ વચ્ચે સુસંગતતા પ્રદાન કરીને, વપરાશકર્તા ડેશબોર્ડમાં નવીનતમ મૂલ્ય જુએ છે તેની ખાતરી કરવા માટે આ પગલું આવશ્યક છે.
સ્ક્રિપ્ટના છેલ્લા ભાગમાં ડ્રોપડાઉનમાં ઇવેન્ટ લિસનર ઉમેરવાનો સમાવેશ થાય છે. જ્યારે વપરાશકર્તા પસંદ કરેલ વિકલ્પ બદલે છે અને ટ્રિગર કરે છે ત્યારે આ ઇવેન્ટ લિસનર શોધે છે ParameterValueAsync() બદલો ટેબ્લોમાં પરિમાણ અપડેટ કરવા માટેનું કાર્ય. વધુમાં, સ્ક્રિપ્ટ એ સુનિશ્ચિત કરે છે કે ડ્રોપડાઉન ફક્ત ડેશબોર્ડનો ઉપયોગ કરીને સંપૂર્ણ લોડ થયા પછી જ રેન્ડર કરવામાં આવે છે. પ્રથમ ઇન્ટરેક્ટિવ ઘટના આ સુનિશ્ચિત કરે છે કે ડ્રોપડાઉન અકાળે ભરાયેલું નથી, ભૂલોને અટકાવે છે અથવા પેરામીટર મૂલ્યો ખૂટે છે. સોલ્યુશન મોડ્યુલર અને સ્કેલેબલ બંને છે, જે સમાન લોજિક સ્ટ્રક્ચરનો પુનઃઉપયોગ કરીને અન્ય પરિમાણો અથવા ડેશબોર્ડ્સ માટે અનુકૂલન કરવાનું સરળ બનાવે છે.
ટેબ્લો પેરામીટર્સને નિયંત્રિત કરવા માટે ઇન્ટરેક્ટિવ ડ્રોપડાઉન બનાવવું
પરિમાણોને ગતિશીલ રીતે લોડ કરવા અને અપડેટ કરવા માટે ટેબ્લો એમ્બેડિંગ API સાથે JavaScript નો ઉપયોગ કરવો
// 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");
});
વિવિધ વાતાવરણમાં ટેબ્લો પેરામીટર ક્રિયાપ્રતિક્રિયાનું પરીક્ષણ
પેરામીટર અપડેટ્સને માન્ય કરવા માટે JavaScript સાથે એકમ ટેસ્ટ લખવી
// 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");
});
જાવાસ્ક્રિપ્ટ સાથે ટેબ્લો પેરામીટર્સને હેન્ડલ કરવા માટેની શ્રેષ્ઠ પદ્ધતિઓ
વેબ એપ્લીકેશનમાં ટેબ્લો ડેશબોર્ડ્સને એમ્બેડ કરતી વખતે, વિકાસકર્તાઓએ ઘણીવાર વપરાશકર્તાની ક્રિયાપ્રતિક્રિયાને વધારવા માટે પરિમાણોને ગતિશીલ બનાવવાની જરૂર હોય છે. એક મુખ્ય પડકાર જેવા પરિમાણોને હેન્ડલ કરવાનું છે "મોએડા" ફિલ્ટર્સનો ઉપયોગ કરવાને બદલે ડ્રોપડાઉન મેનૂ દ્વારા. પરિમાણો વધુ જટિલ છે કારણ કે તેઓને તેમના માન્ય મૂલ્યો પુનઃપ્રાપ્ત કરવા માટે API કૉલ્સની જરૂર છે અને કાર્યો દ્વારા અપડેટ કરવાની જરૂર છે, જેમ કે changeParameterValueAsync(). આ અભિગમ વપરાશકર્તાઓને પૃષ્ઠને તાજું કર્યા વિના ડેશબોર્ડમાં ચોક્કસ ડેટા દૃશ્યો પર વધુ નિયંત્રણ આપે છે.
ટેબ્લો ડેશબોર્ડ્સમાં પરિમાણોનું સંચાલન કરવા માટે તેમને યોગ્ય રીતે ઓળખવાનો સમાવેશ થાય છે getParametersAsync(). એક સામાન્ય મુશ્કેલી એ છે કે વર્કબુક રૂપરેખાંકન પર આધાર રાખીને કેટલાક પરિમાણો ઉપલબ્ધ ન હોઈ શકે અથવા અલગ એક્સેસ લેવલની જરૂર પડી શકે છે. તેથી, જો પેરામીટર ન મળે તો ડ્રોપડાઉન લોજીકને તૂટતા અટકાવવા માટે એરર હેન્ડલિંગનો સમાવેશ કરવો મહત્વપૂર્ણ છે. ધ્યાનમાં લેવાનું બીજું પાસું એ છે કે ડેશબોર્ડ સંપૂર્ણ લોડ થઈ જાય પછી જ ડ્રોપડાઉન રેન્ડર કરવું. નો ઉપયોગ કરીને પ્રથમ ઇન્ટરેક્ટિવ ઇવેન્ટ સુનિશ્ચિત કરે છે કે કસ્ટમાઇઝેશન લાગુ કરતાં પહેલાં ડેશબોર્ડ તત્વો તૈયાર છે.
પ્રદર્શન ઑપ્ટિમાઇઝેશન પણ નિર્ણાયક છે, ખાસ કરીને જ્યારે બહુવિધ પરિમાણો સાથે મોટા ડેટાસેટ્સ અથવા ડેશબોર્ડ્સ સાથે કામ કરતી વખતે. જાવાસ્ક્રિપ્ટ જેવા કાર્યો શોધો() પરિમાણ શોધને સંકુચિત કરવામાં મદદ કરે છે, પરંતુ ભાવિ માપનીયતાને મંજૂરી આપવા માટે કોડ મોડ્યુલર રહેવો જોઈએ. ડેવલપર્સે યુઝર ઈન્ટરફેસ અને ડેશબોર્ડ ડેટા વચ્ચેની વિસંગતતાઓને ટાળવા માટે પેરામીટરના મૂલ્યોને અપડેટ કરતા પહેલા પણ માન્ય કરવું જોઈએ. આ વ્યૂહરચનાઓ સાથે, ટેબ્લો પરિમાણોને અસરકારક રીતે સંચાલિત કરવું અને સીમલેસ વપરાશકર્તા અનુભવ સાથે ડેશબોર્ડ્સ બનાવવાનું સરળ બને છે.
Tableau API માં પરિમાણોનો ઉપયોગ કરવા વિશે વારંવાર પૂછાતા પ્રશ્નો
- ટેબ્લોમાં પરિમાણ અને ફિલ્ટર વચ્ચે શું તફાવત છે?
- પરિમાણો વપરાશકર્તાઓને ડેશબોર્ડમાં ચોક્કસ મૂલ્યો પસાર કરવાની મંજૂરી આપે છે, જ્યારે ફિલ્ટર માપદંડના આધારે દર્શાવેલ ડેટાને મર્યાદિત કરે છે. ફિલ્ટર્સ ડેટાસેટ્સ પર કાર્ય કરે છે, જ્યારે પરિમાણો ચોક્કસ ક્ષેત્રો અથવા ગણતરીઓને અસર કરે છે.
- પરિમાણો મેળવતી વખતે મારું ડ્રોપડાઉન શા માટે ખાલી રહે છે?
- ખાતરી કરો કે getParametersAsync() ફંક્શન સફળતાપૂર્વક પરિમાણ મેળવે છે. જો તે ન થાય, તો પરિમાણ છુપાયેલ હોઈ શકે છે અથવા વર્કબુક પ્રતિબંધોને કારણે ઍક્સેસિબલ ન હોઈ શકે.
- હું કેવી રીતે ખાતરી કરી શકું કે ડ્રોપડાઉન પેરામીટરની વર્તમાન સ્થિતિ સાથે મેળ ખાય છે?
- નો ઉપયોગ કરો currentValue.value ડ્રોપડાઉનમાં ડિફોલ્ટ વિકલ્પ સેટ કરવા માટે પ્રોપર્ટી. આ UI અને ડેશબોર્ડને સંરેખિત રાખે છે.
- ટેબ્લોમાં પરિમાણો અપડેટ કરતી વખતે હું ભૂલોને કેવી રીતે હેન્ડલ કરી શકું?
- લપેટી changeParameterValueAsync() અંદર કૉલ કરો try-catch જ્યારે પેરામીટર અપડેટ કરવામાં આવે ત્યારે થતી કોઈપણ ભૂલોને નિયંત્રિત કરવા માટે બ્લોક કરો.
- કસ્ટમાઇઝેશન પહેલાં કઈ ઇવેન્ટ ડેશબોર્ડ તૈયાર છે તેની ખાતરી કરે છે?
- આ FirstInteractive Tableau API માંની ઘટના એ સંકેત આપે છે કે ડેશબોર્ડ સંપૂર્ણપણે લોડ થઈ ગયું છે અને ડ્રોપડાઉન ઉમેરવા જેવી વધુ ક્રિયાપ્રતિક્રિયાઓ માટે તૈયાર છે.
ઇન્ટરેક્ટિવ પેરામીટર હેન્ડલિંગ પર અંતિમ વિચારો
પેરામીટરાઇઝ્ડ ડ્રોપડાઉન સાથે ઇન્ટરેક્ટિવ ડેશબોર્ડ્સ એમ્બેડ કરવાથી વપરાશકર્તાઓને વધુ સુગમતા મળે છે. યોગ્ય સેટઅપ સાથે, વિકાસકર્તાઓ જેવા પરિમાણો મેળવી શકે છે મોએડા અને ડેશબોર્ડ નિયંત્રણને વધારવા માટે ટેબ્લ્યુ API નો ઉપયોગ કરો. આ સેટઅપ વપરાશકર્તાઓને વધુ અસરકારક રીતે ડેટાનું અન્વેષણ કરવાની મંજૂરી આપે છે.
મુખ્ય ઘટકો, જેમ કે પ્રથમ ઇન્ટરેક્ટિવ ઇવેન્ટ અને મજબૂત એરર હેન્ડલિંગ, ખાતરી કરો કે ડ્રોપડાઉન મેનુ એપ્લીકેશનની અંદર સરળતાથી કામ કરે છે. આ અભિગમને અનુસરીને, વિકાસકર્તાઓ કાર્યક્ષમ રીતે પરિમાણોનું સંચાલન કરી શકે છે અને અંતિમ વપરાશકર્તાઓને ગતિશીલ અને પ્રતિભાવશીલ ડેશબોર્ડ અનુભવ પ્રદાન કરી શકે છે.
ટેબ્લો પરિમાણોને અમલમાં મૂકવા માટેના સ્ત્રોતો અને સંદર્ભો
- ડેશબોર્ડ્સને એમ્બેડ કરવા અને પરિમાણો સાથે ક્રિયાપ્રતિક્રિયા કરવાની વિગતો અધિકારી તરફથી સંદર્ભિત કરવામાં આવી હતી ટેબ્લો JavaScript API દસ્તાવેજીકરણ .
- ઇવેન્ટ શ્રોતાઓની આંતરદૃષ્ટિ, જેમ કે પ્રથમ ઇન્ટરેક્ટિવ, પર મળેલા ઉદાહરણો પરથી લેવામાં આવ્યા હતા ટેબ્લો કોમ્યુનિટી ફોરમ .
- જાવાસ્ક્રિપ્ટમાં ડાયનેમિક UI એલિમેન્ટ્સ સાથે કામ કરવા માટેની સામાન્ય વિભાવનાઓ અને શ્રેષ્ઠ પ્રથાઓમાંથી લેવામાં આવ્યા હતા MDN વેબ દસ્તાવેજ .