ট্যাবলো এমবেডেড ড্যাশবোর্ডে ব্যবহারকারী-চালিত পরামিতিগুলিকে একীভূত করা
টেবল এম্বেডিং এপিআই ব্যবহার করে ওয়েব অ্যাপ্লিকেশনের মধ্যে ট্যাবলাউ ড্যাশবোর্ড এম্বেড করা ডেভেলপারদের গতিশীল, ডেটা-চালিত সমাধান সরবরাহ করতে দেয়। ব্যবহারকারীর অভিজ্ঞতা বাড়ানোর একটি শক্তিশালী উপায় হল ড্রপডাউন মেনুগুলির মাধ্যমে ড্যাশবোর্ড প্যারামিটারগুলির সাথে মিথস্ক্রিয়া সক্ষম করা।
এই উদাহরণে, একটি নির্দিষ্ট মূকনাটক পরামিতি ম্যানিপুলেট করার জন্য একটি ড্রপডাউন মেনু কনফিগার করাই চ্যালেঞ্জ। "মোয়েদা". ফিল্টারগুলির বিপরীতে, যা একীভূত করা সহজ, জাভাস্ক্রিপ্ট ব্যবহার করে সঠিকভাবে লোড এবং আপডেট করার জন্য প্যারামিটারগুলির সুনির্দিষ্ট হ্যান্ডলিং প্রয়োজন।
যদিও Tableau API প্যারামিটারগুলি অ্যাক্সেস করার পদ্ধতিগুলি সরবরাহ করে, ড্রপডাউন বিকল্প হিসাবে উপলব্ধ প্যারামিটার মানগুলি সঠিকভাবে প্রদর্শন করা এবং ব্যবহারকারীরা যখন একটি নির্বাচন করে তখন বিরামহীন আপডেটগুলি নিশ্চিত করা কঠিন হতে পারে।
এই নিবন্ধটির লক্ষ্য হল সেট আপ করার ধাপগুলির মাধ্যমে আপনাকে গাইড করা "মোয়েদা" একটি ড্রপডাউন সহ পরামিতি। আপনি শিখবেন কীভাবে অনুমোদনযোগ্য মানগুলি আনতে হয়, সেগুলিকে ড্রপডাউনে প্রদর্শন করতে হয় এবং যখন একটি নির্বাচন করা হয় তখন কার্যকরীভাবে প্যারামিটার আপডেট নিশ্চিত করতে হয়, বিকাশকারীদের মুখোমুখি হওয়া সাধারণ সমস্যাগুলি সমাধান করে৷
আদেশ | ব্যবহারের উদাহরণ |
---|---|
viz.workbook.getParametersAsync() | এই অ্যাসিঙ্ক্রোনাস পদ্ধতিটি টেবিলের কার্যপুস্তকে উপলব্ধ সমস্ত প্যারামিটারের একটি তালিকা পুনরুদ্ধার করে। এমবেডেড ড্যাশবোর্ডে তাদের সাথে ইন্টারঅ্যাক্ট করার আগে প্যারামিটার ডেটা গতিশীলভাবে লোড করা অপরিহার্য। |
viz.workbook.changeParameterValueAsync() | মূকনামে একটি নির্দিষ্ট প্যারামিটারের মান আপডেট করে। এটি নিশ্চিত করে যে ব্যবহারকারী যখন ড্রপডাউন নির্বাচন পরিবর্তন করে, ওয়ার্কবুকের প্যারামিটারটি রিয়েল-টাইমে আপডেট করা হয়। |
allowableValues | এই বৈশিষ্ট্যটি একটি মূকনাট্য প্যারামিটারের জন্য অনুমোদিত মান ধারণ করে। এটি ব্যবহারকারীরা নির্বাচন করতে পারে এমন সমস্ত বৈধ প্যারামিটার বিকল্পগুলির সাথে ড্রপডাউন মেনু পূরণ করতে ব্যবহৃত হয়। |
currentValue.value | একটি মূকনাট্য প্যারামিটারের বর্তমান মান অ্যাক্সেস করে। এটি নিশ্চিত করে যে ড্রপডাউনের ডিফল্ট নির্বাচন ড্যাশবোর্ডে প্যারামিটারের বর্তমান অবস্থার সাথে মেলে। |
document.createElement("select") | জাভাস্ক্রিপ্টের মাধ্যমে গতিশীলভাবে একটি |
dropdown.addEventListener("change") | ব্যবহারকারী নির্বাচন পরিবর্তন সনাক্ত করতে ড্রপডাউনে একটি ইভেন্ট শ্রোতা যোগ করে। ট্রিগার করা হলে, এটি টেবলুর ওয়ার্কবুকে প্যারামিটার আপডেট প্রক্রিয়া শুরু করে। |
find((p) =>find((p) => p.name === "Moeda") | নির্দিষ্ট "Moeda" প্যারামিটার সনাক্ত করতে পরামিতি অ্যারেতে find() পদ্ধতি ব্যবহার করে। এটি নিশ্চিত করে যে সঠিক প্যারামিটার আপডেটের জন্য লক্ষ্য করা হয়েছে। |
viz.addEventListener(TableauEventType.FirstInteractive) | এই কমান্ডটি নিশ্চিত করে যে প্যারামিটার ড্রপডাউন লোড করার ফাংশনটি শুধুমাত্র একবার সম্পাদিত হয় যখন মূক ড্যাশবোর্ড সম্পূর্ণরূপে লোড হয়ে যায়, সময় সংক্রান্ত সমস্যাগুলি এড়িয়ে। |
option.value = value.value | সংশ্লিষ্ট প্যারামিটার মানের সাথে মেলে একটি |
jest.fn().mockResolvedValue() | অসিঙ্ক্রোনাস ফাংশনের আচরণকে উপহাস করতে ইউনিট পরীক্ষায় ব্যবহৃত হয়। এটি নিশ্চিত করে যে প্যারামিটার আপডেট লজিকটি লাইভ মূক পরিবেশনের প্রয়োজন ছাড়াই পরীক্ষার সময় সঠিকভাবে সিমুলেট করা হয়েছে। |
কিভাবে গতিশীলভাবে জাভাস্ক্রিপ্ট ব্যবহার করে মূকনাট্য প্যারামিটার নিয়ন্ত্রণ করতে হয়
উপরে প্রদত্ত স্ক্রিপ্টগুলি একটি টেবিল ড্যাশবোর্ড এবং একটি কাস্টম HTML এর মধ্যে একটি মসৃণ মিথস্ক্রিয়া সক্ষম করার জন্য ডিজাইন করা হয়েছে ড্রপডাউন মেনু এই স্ক্রিপ্টগুলি টেবিল এম্বেডিং এপিআই ব্যবহার করে, যা ডেভেলপারদের ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে টেবলো ড্যাশবোর্ডগুলি এম্বেড করতে এবং তাদের ইন্টারঅ্যাক্টিভিটি প্রসারিত করতে দেয়। প্রাথমিক ফোকাস হল জাভাস্ক্রিপ্টের মাধ্যমে "Moeda" নামক একটি প্যারামিটারকে ম্যানিপুলেট করার মাধ্যমে এর অনুমোদনযোগ্য মানগুলি নিয়ে আসা এবং ব্যবহারকারী যখন একটি নির্বাচন করে তখন গতিশীলভাবে প্যারামিটারটি আপডেট করা৷
স্ক্রিপ্টের প্রথম অংশ "Moeda" প্যারামিটার লোড করার ফাংশন দিয়ে শুরু হয়। এই ফাংশন leverages getParametersAsync() ওয়ার্কবুকের সমস্ত উপলব্ধ পরামিতি পুনরুদ্ধার করার পদ্ধতি। পরামিতিগুলি লোড হয়ে গেলে, স্ক্রিপ্টটি ব্যবহার করে নির্দিষ্ট "Moeda" পরামিতি সনাক্ত করে খুঁজুন() পদ্ধতি যদি প্যারামিটারটি পাওয়া না যায়, তবে বাকি কোডটি ভাঙা এড়াতে এটি একটি ত্রুটি লগ করে। এটি অত্যন্ত গুরুত্বপূর্ণ কারণ পরামিতিগুলির সাথে কাজ করার জন্য আরও যুক্তি দিয়ে এগিয়ে যাওয়ার আগে সেগুলি বিদ্যমান কিনা তা জানা প্রয়োজন৷
পরামিতি সনাক্ত করার পর, ক ড্রপডাউন জাভাস্ক্রিপ্টের DOM ম্যানিপুলেশন পদ্ধতি ব্যবহার করে মেনুটি গতিশীলভাবে তৈরি করা হয়। প্যারামিটারের অনুমোদিত মান থেকে প্রতিটি মান ড্রপডাউনের মধ্যে একটি বিকল্প হিসাবে যোগ করা হয়। স্ক্রিপ্ট নিশ্চিত করে যে ড্রপডাউন প্যারামিটারের বর্তমান মানের জন্য নির্বাচিত বিকল্প সেট করে প্যারামিটারের বর্তমান অবস্থা প্রতিফলিত করে। ড্যাশবোর্ডের অবস্থা এবং ড্রপডাউনের ডিফল্ট বিকল্পের মধ্যে সামঞ্জস্য প্রদান করে ব্যবহারকারী ড্যাশবোর্ডে সর্বশেষ মান দেখতে পাচ্ছেন তা নিশ্চিত করার জন্য এই পদক্ষেপটি অপরিহার্য।
স্ক্রিপ্টের শেষ অংশে ড্রপডাউনে একটি ইভেন্ট শ্রোতা যোগ করা জড়িত। এই ইভেন্ট শ্রোতা সনাক্ত করে যখন ব্যবহারকারী নির্বাচিত বিকল্প পরিবর্তন করে এবং ট্রিগার করে ParameterValueAsync() পরিবর্তন করুন টেবিলে প্যারামিটার আপডেট করার ফাংশন। অতিরিক্তভাবে, স্ক্রিপ্টটি নিশ্চিত করে যে ড্যাশবোর্ডটি ব্যবহার করে সম্পূর্ণরূপে লোড হওয়ার পরেই ড্রপডাউনটি রেন্ডার করা হয়েছে। প্রথম ইন্টারেক্টিভ ঘটনা এটি নিশ্চিত করে যে ড্রপডাউনটি সময়ের আগে পপুলেট করা হয়নি, ত্রুটি প্রতিরোধ করে বা পরামিতি মান অনুপস্থিত। সমাধানটি মডুলার এবং স্কেলেবল উভয়ই, একই লজিক স্ট্রাকচার পুনরায় ব্যবহার করে অন্যান্য প্যারামিটার বা ড্যাশবোর্ডের জন্য মানিয়ে নেওয়া সহজ করে তোলে।
মূকনাট্য পরামিতি নিয়ন্ত্রণ করতে একটি ইন্টারেক্টিভ ড্রপডাউন তৈরি করা
প্যারামিটারগুলিকে গতিশীলভাবে লোড এবং আপডেট করতে টেবল এম্বেডিং API সহ জাভাস্ক্রিপ্ট ব্যবহার করা
// 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");
});
জাভাস্ক্রিপ্টের সাথে মূকনাট্য প্যারামিটার পরিচালনার জন্য সর্বোত্তম অনুশীলন
ওয়েব অ্যাপ্লিকেশানগুলিতে টেবলো ড্যাশবোর্ডগুলি এম্বেড করার সময়, বিকাশকারীদের প্রায়শই ব্যবহারকারীর ইন্টারঅ্যাক্টিভিটি বাড়ানোর জন্য প্যারামিটারগুলিকে গতিশীল করতে হবে। একটি মূল চ্যালেঞ্জ যেমন পরামিতি পরিচালনা করা হয় "মোয়েদা" ফিল্টার ব্যবহার করার পরিবর্তে একটি ড্রপডাউন মেনুর মাধ্যমে। প্যারামিটারগুলি আরও জটিল কারণ তাদের অনুমোদিত মানগুলি পুনরুদ্ধার করতে API কলগুলির প্রয়োজন এবং ফাংশনের মাধ্যমে আপডেট করা প্রয়োজন, যেমন ParameterValueAsync() পরিবর্তন করুন. এই পদ্ধতিটি ব্যবহারকারীদের পৃষ্ঠাটি রিফ্রেশ না করে ড্যাশবোর্ডে নির্দিষ্ট ডেটা ভিউয়ের উপর আরও নিয়ন্ত্রণ দেয়।
মূকনাট্য ড্যাশবোর্ডে পরামিতি পরিচালনার সাথে তাদের সঠিকভাবে সনাক্ত করা জড়িত getParametersAsync(). একটি সাধারণ সমস্যা হল যে কিছু প্যারামিটার উপলব্ধ নাও হতে পারে বা ওয়ার্কবুক কনফিগারেশনের উপর নির্ভর করে বিভিন্ন অ্যাক্সেস লেভেলের প্রয়োজন হতে পারে। অতএব, যদি একটি প্যারামিটার পাওয়া না যায় তাহলে ড্রপডাউন লজিকটি ভাঙা থেকে রোধ করতে ত্রুটি পরিচালনা অন্তর্ভুক্ত করা গুরুত্বপূর্ণ। বিবেচনা করার আরেকটি দিক হল ড্যাশবোর্ড সম্পূর্ণরূপে লোড হওয়ার পরেই ড্রপডাউন রেন্ডার করা। ব্যবহার করে প্রথম ইন্টারেক্টিভ ইভেন্ট নিশ্চিত করে যে কাস্টমাইজেশন প্রয়োগ করার আগে ড্যাশবোর্ড উপাদানগুলি প্রস্তুত।
পারফরম্যান্স অপ্টিমাইজেশানও অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন একাধিক প্যারামিটার সহ বড় ডেটাসেট বা ড্যাশবোর্ডগুলির সাথে কাজ করা হয়। জাভাস্ক্রিপ্ট ফাংশন মত খুঁজুন() পরামিতি অনুসন্ধানকে সংকুচিত করতে সাহায্য করে, কিন্তু ভবিষ্যতের মাপযোগ্যতার জন্য কোডটি মডুলার থাকতে হবে। ব্যবহারকারীর ইন্টারফেস এবং ড্যাশবোর্ড ডেটার মধ্যে অসঙ্গতি এড়াতে ডেভেলপারদের প্যারামিটারের মানগুলি আপডেট করার আগে যাচাই করা উচিত। এই কৌশলগুলির সাহায্যে, মূকনাট্যের প্যারামিটারগুলি দক্ষতার সাথে পরিচালনা করা এবং একটি বিরামহীন ব্যবহারকারীর অভিজ্ঞতার সাথে ড্যাশবোর্ড তৈরি করা সহজ হয়ে ওঠে।
Tableau API-এ প্যারামিটার ব্যবহার করার বিষয়ে প্রায়শই জিজ্ঞাসিত প্রশ্ন
- একটি প্যারামিটার এবং মূকনাট্য মধ্যে একটি ফিল্টার মধ্যে পার্থক্য কি?
- প্যারামিটারগুলি ব্যবহারকারীদের ড্যাশবোর্ডে নির্দিষ্ট মানগুলি পাস করার অনুমতি দেয়, যখন ফিল্টারগুলি মানদণ্ডের উপর ভিত্তি করে দেখানো ডেটা সীমাবদ্ধ করে। ফিল্টারগুলি ডেটাসেটের উপর কাজ করে, যেখানে প্যারামিটারগুলি নির্দিষ্ট ক্ষেত্র বা গণনাকে প্রভাবিত করে।
- প্যারামিটার আনার সময় কেন আমার ড্রপডাউন খালি থাকে?
- নিশ্চিত করুন getParametersAsync() ফাংশন সফলভাবে পরামিতি পুনরুদ্ধার করে। যদি তা না হয়, তাহলে কার্যপুস্তকের সীমাবদ্ধতার কারণে প্যারামিটারটি লুকানো বা অ্যাক্সেসযোগ্য নাও হতে পারে।
- আমি কীভাবে নিশ্চিত করব যে ড্রপডাউন প্যারামিটারের বর্তমান অবস্থার সাথে মেলে?
- ব্যবহার করুন currentValue.value ড্রপডাউনে ডিফল্ট বিকল্প সেট করার জন্য সম্পত্তি। এটি UI এবং ড্যাশবোর্ড সারিবদ্ধ রাখে।
- টেবিলে পরামিতি আপডেট করার সময় আমি কীভাবে ত্রুটিগুলি পরিচালনা করতে পারি?
- মোড়ানো changeParameterValueAsync() ভিতরে কল a try-catch পরামিতি আপডেট করা হলে যে কোনো ত্রুটি হ্যান্ডেল করতে ব্লক করুন।
- কোন ইভেন্ট কাস্টমাইজেশনের আগে ড্যাশবোর্ড প্রস্তুত তা নিশ্চিত করে?
- দ FirstInteractive Tableau API-এ ইভেন্টটি সংকেত দেয় যে ড্যাশবোর্ড সম্পূর্ণরূপে লোড হয়েছে এবং একটি ড্রপডাউন যোগ করার মতো আরও ইন্টারঅ্যাকশনের জন্য প্রস্তুত।
ইন্টারেক্টিভ প্যারামিটার হ্যান্ডলিং সম্পর্কে চূড়ান্ত চিন্তা
প্যারামিটারাইজড ড্রপডাউন সহ ইন্টারেক্টিভ ড্যাশবোর্ড এম্বেড করা ব্যবহারকারীদের জন্য আরও বেশি নমনীয়তা প্রদান করে। একটি সঠিক সেটআপের সাথে, বিকাশকারীরা যেমন পরামিতি আনতে পারে মোয়েদা এবং ড্যাশবোর্ড নিয়ন্ত্রণ উন্নত করতে টেবল এপিআই ব্যবহার করুন। এই সেটআপটি ব্যবহারকারীদের আরও কার্যকরভাবে ডেটা অন্বেষণ করতে দেয়।
মূল উপাদান, যেমন প্রথম ইন্টারেক্টিভ ইভেন্ট এবং শক্তিশালী ত্রুটি হ্যান্ডলিং, নিশ্চিত করুন যে ড্রপডাউন মেনুগুলি অ্যাপ্লিকেশনের মধ্যে মসৃণভাবে কাজ করে। এই পদ্ধতি অনুসরণ করে, বিকাশকারীরা দক্ষতার সাথে প্যারামিটারগুলি পরিচালনা করতে পারে এবং শেষ ব্যবহারকারীদের একটি গতিশীল এবং প্রতিক্রিয়াশীল ড্যাশবোর্ড অভিজ্ঞতা প্রদান করতে পারে।
মূকনাট্য পরামিতি বাস্তবায়নের জন্য উৎস এবং তথ্যসূত্র
- ড্যাশবোর্ড এম্বেড করা এবং পরামিতিগুলির সাথে ইন্টারঅ্যাক্ট করার বিশদ কর্মকর্তার কাছ থেকে উল্লেখ করা হয়েছে মূকনা জাভাস্ক্রিপ্ট API ডকুমেন্টেশন .
- ইভেন্ট শ্রোতাদের মধ্যে অন্তর্দৃষ্টি, যেমন প্রথম ইন্টারেক্টিভ, পাওয়া উদাহরণ থেকে উদ্ভূত হয়েছে মূকনাটক কমিউনিটি ফোরাম .
- জাভাস্ক্রিপ্টে গতিশীল UI উপাদানগুলির সাথে কাজ করার জন্য সাধারণ ধারণা এবং সর্বোত্তম অনুশীলনগুলি থেকে নেওয়া হয়েছিল MDN ওয়েব ডক্স .