ডাইনামিক ক্যাটাগরি হলো এমন ক্যাটাগরি যা প্রতিবার খোলার সময় একটি ফাংশনের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ডেটা দ্বারা পূর্ণ হয়।
Blockly একটি নিবন্ধিত স্ট্রিং কী-এর মাধ্যমে একটি ফাংশনের সাথে কোনো ক্যাটাগরি যুক্ত করার সুবিধা দিয়ে এটি সমর্থন করে। ফাংশনটির একটি ক্যাটাগরির বিষয়বস্তুর (ব্লক, বাটন, লেবেল ইত্যাদি সহ) একটি সংজ্ঞা ফেরত দেওয়া উচিত। বিষয়বস্তুগুলো JSON বা XML হিসেবে নির্দিষ্ট করা যেতে পারে, যদিও JSON ব্যবহার করার পরামর্শ দেওয়া হয়।
আরও মনে রাখবেন যে, ফাংশনটিতে টার্গেট ওয়ার্কস্পেসটি একটি প্যারামিটার হিসেবে সরবরাহ করা হয়, ফলে আপনার ডাইনামিক ক্যাটাগরির ব্লকগুলো ওয়ার্কস্পেসটির অবস্থার উপর ভিত্তি করে তৈরি হতে পারে।
JSON
// Returns an array of objects.
var coloursFlyoutCallback = function(workspace) {
// Returns an array of hex colours, e.g. ['#4286f4', '#ef0447']
var colourList = getPalette();
var blockList = [];
for (var i = 0; i < colourList.length; i++) {
blockList.push({
'kind': 'block',
'type': 'colour_picker',
'fields': {
'COLOUR': colourList[i]
}
});
}
return blockList;
};
// Associates the function with the string 'COLOUR_PALETTE'
myWorkspace.registerToolboxCategoryCallback(
'COLOUR_PALETTE', coloursFlyoutCallback);
এক্সএমএল
// Returns an array of XML nodes.
var coloursFlyoutCallback = function(workspace) {
// Returns an array of hex colours, e.g. ['#4286f4', '#ef0447']
var colourList = getPalette();
var blockList = [];
for (var i = 0; i < colourList.length; i++) {
var block = document.createElement('block');
block.setAttribute('type', 'colour_picker');
var field = document.createElement('field');
field.setAttribute('name', 'COLOUR');
field.innerText = colourList[i];
block.appendChild(field);
blockList.push(block);
}
return blockList;
};
// Associates the function with the string 'COLOUR_PALETTE'
myWorkspace.registerToolboxCategoryCallback(
'COLOUR_PALETTE', coloursFlyoutCallback);
ডাইনামিক ক্যাটাগরি ফাংশনগুলোকে একটি স্ট্রিং কী-এর সাথে যুক্ত (অর্থাৎ রেজিস্টার) করার পর, আপনি আপনার ক্যাটাগরি ডেফিনিশনের custom প্রপার্টিতে এই স্ট্রিং কী-টি অ্যাসাইন করে ক্যাটাগরিটিকে ডাইনামিক করে তুলতে পারেন।
JSON
{
"kind": "category",
"name": "Colours",
"custom": "COLOUR_PALETTE"
}
এক্সএমএল
<category name="Colours" custom="COLOUR_PALETTE"></category>
অন্তর্নির্মিত গতিশীল বিভাগ
ব্লকলি তিনটি অন্তর্নির্মিত ডাইনামিক ক্যাটাগরি প্রদান করে।
-
'VARIABLE'টাইপবিহীন ভেরিয়েবলের জন্য একটি ক্যাটাগরি তৈরি করে। -
'VARIABLE_DYNAMIC'টাইপ করা ভেরিয়েবলের জন্য একটি ক্যাটাগরি তৈরি করে। এতে স্ট্রিং, সংখ্যা এবং রঙ তৈরি করার জন্য বাটন রয়েছে। 'PROCEDURE'ফাংশন ব্লকগুলির জন্য একটি বিভাগ তৈরি করে।
JSON
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE"
},
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE_DYNAMIC"
},
{
"kind": "category",
"name": "Functions",
"custom": "PROCEDURE"
}
এক্সএমএল
<category name="Variables" custom="VARIABLE"></category>
<category name="Variables" custom="VARIABLE_DYNAMIC"></category>
<category name="Functions" custom="PROCEDURE"></category>
দ্রষ্টব্য: Blockly কোডবেস জুড়ে 'procedure' শব্দটি ব্যবহৃত হয়েছে, কিন্তু শিক্ষার্থীদের কাছে 'function' শব্দটি বেশি বোধগম্য বলে মনে হয়েছে। এই অমিলের জন্য দুঃখিত।