डाइनैमिक कैटगरी

डाइनैमिक कैटगरी ऐसी कैटगरी होती हैं जिन्हें हर बार खोलने पर, किसी फ़ंक्शन के आधार पर डाइनैमिक तौर पर फिर से पॉप्युलेट किया जाता है.

Blockly में, रजिस्टर की गई स्ट्रिंग की मदद से किसी कैटगरी को फ़ंक्शन से जोड़ने की सुविधा मिलती है. फ़ंक्शन से कैटगरी के कॉन्टेंट की परिभाषा मिलनी चाहिए. इसमें ब्लॉक, बटन, लेबल वगैरह शामिल हैं. कॉन्टेंट को JSON या एक्सएमएल के तौर पर तय किया जा सकता है. हालांकि, 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 में, पहले से मौजूद तीन डाइनैमिक कैटगरी उपलब्ध हैं.

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 के कोडबेस में 'प्रोसीड्यूर' शब्द का इस्तेमाल किया जाता है. हालांकि, छात्र-छात्राओं को 'फ़ंक्शन' शब्द समझने में ज़्यादा आसानी होती है. मैच न होने के लिए हम माफ़ी चाहते हैं.