प्रीसेट ब्लॉक

टूलबॉक्स में, ब्लॉक की स्थिति को कॉन्फ़िगर (पहले से सेट) किया जा सकता है. उदाहरण के लिए, किसी फ़ील्ड को डिफ़ॉल्ट वैल्यू पर सेट किया जा सकता है या दो ब्लॉक को एक साथ कनेक्ट किया जा सकता है. शैडो ब्लॉक भी बनाए जा सकते हैं. ये चाइल्ड ब्लॉक के लिए डिफ़ॉल्ट के तौर पर काम करते हैं.

उदाहरण

यहां पहले से सेट किए गए ब्लॉक के कुछ उदाहरण दिए गए हैं.

पहले से सेट की गई फ़ील्ड वैल्यू वाला ब्लॉक

यहां math_number ब्लॉक दिया गया है. इसके फ़ील्ड में डिफ़ॉल्ट वैल्यू 0 के बजाय, 42 नंबर दिखता है:

यह एक नंबर ब्लॉक है, जिसकी वैल्यू पहले से ही 42 पर सेट है.

यहां एक टूलबॉक्स दिया गया है, जो इस फ़ील्ड को सेट करता है:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "math_number",
     "fields": {
       "NUM": 42
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_number">
   <field name="NUM">42</field>
 </block>
</xml>

पहले से कनेक्ट किए गए ब्लॉक

यहां controls_for ब्लॉक दिया गया है, जिससे तीन math_number ब्लॉक कनेक्ट हैं:

&quot;count with i from value to value by value&quot; ब्लॉक. वैल्यू के तीन इनपुट, 1, 10, और 1 वैल्यू वाले नंबर ब्लॉक से कनेक्ट किए गए हैं.

यहां एक टूलबॉक्स दिया गया है, जो इन ब्लॉक को पहले से कनेक्ट करता है:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "controls_for",
     "inputs": {
       "FROM": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
       "TO": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 10
           }
         }
       },
       "BY": {
         "block": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="controls_for">
   <value name="FROM">
     <block type="math_number">
       <field name="NUM">1</field>
     </block>
   </value>
   <value name="TO">
     <block type="math_number">
       <field name="NUM">10</field>
     </block>
   </value>
   <value name="BY">
     <block type="math_number">
       <field name="NUM">1</field>
     </block>
   </value>
 </block>
</xml>

बंद किए गए ब्लॉक

बंद किए गए ब्लॉक को टूलबॉक्स से खींचकर नहीं लाया जा सकता. disabled प्रॉपर्टी का इस्तेमाल करके, ब्लॉक को अलग-अलग बंद किया जा सकता है. यह प्रॉपर्टी, वैकल्पिक है.

तीन ब्लॉक वाला फ़्लायआउट मेन्यू. तीसरा ब्लॉक बंद है और उसे धूसर किया गया है.

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type":"math_number"
   },
   {
     "kind": "block",
     "type": "math_arithmetic"
   },
   {
     "kind": "block",
     "type": "math_single",
     "disabled": "true"
   }
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_number"></block>
 <block type="math_arithmetic"></block>
 <block type="math_single" disabled="true"></block>
</xml>

` setDisabledReason` का इस्तेमाल करके, किसी ब्लॉक को प्रोग्राम के ज़रिए भी बंद या चालू किया जा सकता है.

अपने ब्लॉक कॉन्फ़िगर करना

टूलबॉक्स में किसी ब्लॉक को उसी तरह कॉन्फ़िगर किया जा सकता है जिस तरह वर्कस्पेस में किया जाता है. उदाहरण के लिए, फ़ील्ड वैल्यू सेट की जा सकती हैं, ब्लॉक को वैल्यू या स्टेटमेंट इनपुट से कनेक्ट किया जा सकता है, टिप्पणियां जोड़ी जा सकती हैं, और ब्लॉक को छोटा या बंद किया जा सकता है. ऐसा इसलिए किया जा सकता है, क्योंकि टूलबॉक्स, ब्लॉक को कॉन्फ़िगर करने के लिए उसी कोड का इस्तेमाल करते हैं जिसका इस्तेमाल वर्कस्पेस, ब्लॉक को क्रम से लगाने के लिए करते हैं.

इसका मतलब है कि ब्लॉक कॉन्फ़िगरेशन बनाना आसान है. इसके लिए, अपने ब्लॉक को वर्कस्पेस में लोड करें, उसे अपनी पसंद के मुताबिक कॉन्फ़िगर करें, और कंसोल में यह कोड चलाकर उसे क्रम से लगाएं.

JSON

console.log(Blockly.serialization.workspaces.save(Blockly.getMainWorkspace()));

XML

console.log(Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()));

इसके बाद, कॉन्फ़िगरेशन कोड को कॉपी करके अपने टूलबॉक्स में चिपकाया जा सकता है. x, y, और id प्रॉपर्टी को हटाना न भूलें. इन्हें टूलबॉक्स में अनदेखा किया जाता है.

वैरिएबल फ़ील्ड

वैरिएबल फ़ील्ड को टूलबॉक्स में अलग तरीके से तय करना पड़ सकता है. ऐसा तब होता है, जब उन्हें क्रम से लगाया जाता है.

खास तौर पर, जब वैरिएबल फ़ील्ड को आम तौर पर JSON में क्रम से लगाया जाता है, तो उनमें सिर्फ़ उस वैरिएबल का आईडी होता है जिसे वे दिखाते हैं. ऐसा इसलिए होता है, क्योंकि वैरिएबल का नाम और टाइप अलग से क्रम से लगाया जाता है. हालांकि, टूलबॉक्स में वह जानकारी नहीं होती. इसलिए, उसे सीधे वैरिएबल फ़ील्ड में शामिल करना पड़ता है.

{
  "kind": "flyoutToolbox",
  "content": [
    {
      "kind": "block",
      "type": "controls_for",
      "fields": {
        "VAR": {
          "name": "index",
          "type": "Number"
        }
      }
    }
  ]
}

शैडो ब्लॉक

शैडो ब्लॉक, प्लेसहोल्डर ब्लॉक होते हैं. ये कई काम करते हैं:

  • ये अपने पैरंट ब्लॉक के लिए डिफ़ॉल्ट वैल्यू दिखाते हैं.
  • इनकी मदद से, लोग सीधे वैल्यू टाइप कर सकते हैं. इसके लिए, उन्हें नंबर या स्ट्रिंग ब्लॉक लाने की ज़रूरत नहीं होती.
  • आम ब्लॉक के उलट, अगर कोई व्यक्ति इनके ऊपर कोई ब्लॉक छोड़ता है, तो ये ब्लॉक बदल जाते हैं.
  • ये लोगों को उस वैल्यू के टाइप के बारे में बताते हैं जिसकी उम्मीद की जाती है.

शैडो ब्लॉक बनाने के लिए, block प्रॉपर्टी या <block> टैग के बजाय, shadow प्रॉपर्टी (JSON) या <shadow> टैग (XML) का इस्तेमाल करें. उदाहरण के लिए, यहां math_arithmetic ब्लॉक दिया गया है, जिससे दो math_number शैडो ब्लॉक कनेक्ट हैं:

यह इमेज, `math_arithmetic` ब्लॉक दिखाती है. इसमें दो वैल्यू इनपुट हैं, जिन्हें ऑपरेटर ड्रॉपडाउन से अलग किया गया है. इस ड्रॉपडाउन में प्लस ऑपरेटर चुना गया है. इनपुट की गई हर वैल्यू में शैडो नंबर ब्लॉक होता है. इसे धूसर रंग में दिखाया गया है, ताकि यह पता चल सके कि कोई दूसरा ब्लॉक इसे बदल सकता है.

यहां एक टूलबॉक्स दिया गया है, जो इन शैडो ब्लॉक का इस्तेमाल करता है:

JSON

{
 "kind": "flyoutToolbox",
 "contents": [
   {
     "kind": "block",
     "type": "math_arithmetic",
     "fields": {
       "OP": "ADD"
     },
     "inputs": {
       "A": {
         "shadow": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       },
       "B": {
         "shadow": {
           "type": "math_number",
           "fields": {
             "NUM": 1
           }
         }
       }
     }
   },
 ]
}

XML

<xml id="toolbox" style="display: none">
 <block type="math_arithmetic">
   <field name="OP">ADD</field>
   <value name="A">
     <shadow type="math_number">
       <field name="NUM">1</field>
     </shadow>
   </value>
   <value name="B">
     <shadow type="math_number">
       <field name="NUM">1</field>
     </shadow>
   </value>
 </block>
</xml>