Skip to content

Commit 3fd1d14

Browse files
committed
Add toolbox block overrides and update helper logic
1 parent 3b0f37a commit 3fd1d14

2 files changed

Lines changed: 58 additions & 4 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"overrides":{
3+
"control_forever":"<block type=\"control_forever\"><statement name=\"SUBSTACK\"></statement></block>",
4+
"control_if":"<block type=\"control_if\"><value name=\"CONDITION\"></value><statement name=\"SUBSTACK\"></statement></block>",
5+
"control_if_else":"<block type=\"control_if_else\"><value name=\"CONDITION\"></value><statement name=\"SUBSTACK\"></statement></block>",
6+
"control_wait_until":"<block type=\"control_wait_until\"><value name=\"CONDITION\"></value></block>",
7+
"control_repeat_until":"<block type=\"control_repeat_until\"><value name=\"CONDITION\"></value><statement name=\"SUBSTACK\"></statement></block>",
8+
"control_while":"<block type=\"control_while\"><value name=\"CONDITION\"></value><statement name=\"SUBSTACK\"></statement></block>",
9+
"operator_and":"<block type=\"operator_and\"><value name=\"OPERAND1\"></value><value name=\"OPERAND2\"></value></block>",
10+
"operator_or":"<block type=\"operator_or\"><value name=\"OPERAND1\"></value><value name=\"OPERAND2\"></value></block>",
11+
"operator_not":"<block type=\"operator_not\"><value name=\"OPERAND\"></value></block>",
12+
"event_whenbroadcastreceived":"<block type=\"event_whenbroadcastreceived\"><field name=\"BROADCAST_OPTION\" variabletype=\"broadcast_msg\">message1</field></block>"
13+
},
14+
"insert":{
15+
"data_variable":"<block blockType=\"Stack\" type=\"data_variable\"><field name=\"VARIABLE\" variabletype=\"\">my variable</field></block>",
16+
"data_setvariableto":"<block blockType=\"Stack\" type=\"data_setvariableto\"><field name=\"VARIABLE\" variabletype=\"\">my variable</field><value name=\"VALUE\"><shadow type=\"text\"><field name=\"TEXT\">0</field></shadow></value></block>",
17+
"data_changevariableby":"<block blockType=\"Stack\" type=\"data_changevariableby\"><field name=\"VARIABLE\" variabletype=\"\">my variable</field><value name=\"VALUE\"><shadow type=\"math_number\"><field name=\"NUM\">1</field></shadow></value></block>",
18+
"data_showvariable":"<block blockType=\"Stack\" type=\"data_showvariable\"><field name=\"VARIABLE\" variabletype=\"\">my variable</field></block>",
19+
"data_hidevariable":"<block blockType=\"Stack\" type=\"data_hidevariable\"><field name=\"VARIABLE\" variabletype=\"\">my variable</field></block>",
20+
"data_listcontents":"<block blockType=\"Reporter\" type=\"data_listcontents\"><field name=\"LIST\" variabletype=\"list\">my list</field></block>",
21+
"data_addtolist":"<block blockType=\"Stack\" type=\"data_addtolist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"ITEM\"><shadow type=\"text\"><field name=\"TEXT\">thing</field></shadow></value></block>",
22+
"data_deleteoflist":"<block blockType=\"Stack\" type=\"data_deleteoflist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"INDEX\"><shadow type=\"math_integer\"><field name=\"NUM\">1</field></shadow></value></block>",
23+
"data_deletealloflist":"<block blockType=\"Stack\" type=\"data_deletealloflist\"><field name=\"LIST\" variabletype=\"list\">my list</field></block>",
24+
"data_insertatlist":"<block blockType=\"Stack\" type=\"data_insertatlist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"ITEM\"><shadow type=\"text\"><field name=\"TEXT\">thing</field></shadow></value><value name=\"INDEX\"><shadow type=\"math_integer\"><field name=\"NUM\">1</field></shadow></value></block>",
25+
"data_replaceitemoflist":"<block blockType=\"Stack\" type=\"data_replaceitemoflist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"INDEX\"><shadow type=\"math_integer\"><field name=\"NUM\">1</field></shadow></value><value name=\"ITEM\"><shadow type=\"text\"><field name=\"TEXT\">thing</field></shadow></value></block>",
26+
"data_itemoflist":"<block blockType=\"Reporter\" type=\"data_itemoflist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"INDEX\"><shadow type=\"math_integer\"><field name=\"NUM\">1</field></shadow></value></block>",
27+
"data_itemnumoflist":"<block blockType=\"Reporter\" type=\"data_itemnumoflist\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"ITEM\"><shadow type=\"text\"><field name=\"TEXT\">thing</field></shadow></value></block>",
28+
"data_showlist":"<block blockType=\"Stack\" type=\"data_showlist\"><field name=\"LIST\" variabletype=\"list\">my list</field></block>",
29+
"data_lengthoflist":"<block blockType=\"Reporter\" type=\"data_lengthoflist\"><field name=\"LIST\" variabletype=\"list\">my list</field></block>",
30+
"data_listcontainsitem":"<block blockType=\"Boolean\" type=\"data_listcontainsitem\"><field name=\"LIST\" variabletype=\"list\">my list</field><value name=\"ITEM\"><shadow type=\"text\"><field name=\"TEXT\">thing</field></shadow></value></block>",
31+
"data_hidelist":"<block blockType=\"Stack\" type=\"data_hidelist\"><field name=\"LIST\" variabletype=\"list\">my list</field></block>"
32+
}
33+
}

‎src/addons/addons/ai-integration/helpers.js‎

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const toolboxOverrides = require('./assets/toolboxOverrides.json');
2+
13
export default class helpers {
24
constructor() {
35
}
@@ -217,14 +219,33 @@ export default class helpers {
217219
var newBlock = Blockly.Xml.domToBlock(blockElement, workspace)
218220
var returnType = extractBlockReturnType(newBlock);
219221
var blockCopy = block.cloneNode(true);
220-
blockCopy.removeAttribute("id");
221-
blockCopy.setAttribute("blockType", returnType);
222-
rootElement.appendChild(blockCopy);
222+
223+
if (toolboxOverrides.overrides[blockCopy.getAttribute("type")] !== undefined) {
224+
var parser = new DOMParser();
225+
var xmlDoc = parser.parseFromString(toolboxOverrides.overrides[blockCopy.getAttribute("type")], "text/xml");
226+
var overrideBlockElement = xmlDoc.getElementsByTagName("block")[0];
227+
overrideBlockElement.setAttribute("blockType", returnType);
228+
rootElement.appendChild(overrideBlockElement);
229+
}else{
230+
blockCopy.removeAttribute("id");
231+
blockCopy.setAttribute("blockType", returnType);
232+
rootElement.appendChild(blockCopy);
233+
}
234+
}
235+
for(var x of Object.keys(toolboxOverrides.insert)){
236+
if (toolboxOverrides.insert[x] !== undefined) {
237+
var parser = new DOMParser();
238+
var xmlDoc = parser.parseFromString(toolboxOverrides.insert[x], "text/xml");
239+
var overrideBlockElement = xmlDoc.getElementsByTagName("block")[0];
240+
rootElement.appendChild(overrideBlockElement);
241+
}else{
242+
console.error("A REALlY WEIRD ERROR OCCURED");
243+
}
223244
}
224245
workspace.dispose();
225246
var serializer = new XMLSerializer();
226247
var xmlString = serializer.serializeToString(sterializedToolbox);
227-
console.log("[DEBUG] toolbox has # of blocks: " + blocks.length);
248+
console.log("[DEBUG] toolbox has # of blocks: " + sterializedToolbox.getElementsByTagName("block").length);
228249
return xmlString.replace(/>\s+</g, '><').trim();
229250
}
230251
}

0 commit comments

Comments
 (0)