دستههای پویا دستههایی هستند که هر بار که باز میشوند، بر اساس یک تابع بهصورت پویا مجدداً جمعیت میشوند.
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);
XML
// Returns an arry 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"
}
XML
<category name="Colours" custom="COLOUR_PALETTE"></category>
دسته بندی پویا داخلی
Blockly سه دسته پویا داخلی را ارائه می دهد.
-
'VARIABLE'
یک دسته بندی برای متغیرهای تایپ نشده ایجاد می کند. -
'VARIABLE_DYNAMIC'
یک دسته برای متغیرهای تایپ شده ایجاد می کند. دارای دکمه هایی برای ایجاد رشته ها، اعداد و رنگ ها است. 'PROCEDURE'
یک دسته بندی برای بلوک های تابع ایجاد می کند.
JSON
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE"
},
{
"kind": "category",
"name": "Variables",
"custom": "VARIABLE_DYNAMIC"
},
{
"kind": "category",
"name": "Functions",
"custom": "PROCEDURE"
}
XML
<category name="Variables" custom="VARIABLE"></category>
<category name="Variables" custom="VARIABLE_DYNAMIC"></category>
<category name="Functions" custom="PROCEDURE"></category>
توجه: کلمه "روش" در سراسر پایگاه کد Blockly استفاده می شود، اما کلمه "function" برای دانش آموزان قابل درک تر است. با عرض پوزش برای عدم تطابق.