Skip to content

Commit 4bbd9e6

Browse files
committed
Improve compatibility by Integrating blocks
1 parent 41d8783 commit 4bbd9e6

2 files changed

Lines changed: 7 additions & 168 deletions

File tree

blocks/webduino.js

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,74 +1030,10 @@ Blockly.Blocks['board'] = {
10301030
}
10311031
}
10321032
};
1033-
1034-
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#bq2fue
1035-
Blockly.Blocks['board_ready'] = {
1036-
init: function () {
1037-
this.appendValueInput("device_")
1038-
.setCheck("String")
1039-
.appendField(Blockly.Msg.WEBDUINO_BOARD, "開發板")
1040-
.appendField(new Blockly.FieldDropdown([
1041-
[Blockly.Msg.WEBDUINO_BOARD_WIFI, "1"],
1042-
[Blockly.Msg.WEBDUINO_BOARD_SERIAL, "2"],
1043-
[Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH, "3"],
1044-
[Blockly.Msg.WEBDUINO_BOARD_WEBSOCKET, "4"]
1045-
]), "type_")
1046-
.appendField(":");
1047-
this.appendDummyInput()
1048-
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, " 類比取樣")
1049-
.appendField(new Blockly.FieldDropdown([
1050-
["20 ms", "20"],
1051-
["50 ms", "50"],
1052-
["75 ms", "75"],
1053-
["100 ms", "100"],
1054-
["250 ms", "250"],
1055-
["500 ms", "500"],
1056-
["1 sec", "1000"]
1057-
]), "rate_")
1058-
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, "串聯")
1059-
.appendField(new Blockly.FieldCheckbox("FALSE"), "check_")
1060-
.appendField(Blockly.Msg.WEBDUINO_BOARD_MULTI, "協同控制")
1061-
.appendField(new Blockly.FieldCheckbox("FALSE"), "multi_");
1062-
this.appendStatementInput("callbacks_");
1063-
this.setTooltip('');
1064-
this.setColour(290);
1065-
this.setHelpUrl('https://webduino.io');
1066-
}
1067-
};
1068-
1069-
1070-
Blockly.Blocks['smart_ready'] = {
1071-
init: function () {
1072-
this.appendValueInput("device_")
1073-
.setCheck("String")
1074-
.appendField(Blockly.Msg.WEBDUINO_SMART)
1075-
.appendField(new Blockly.FieldDropdown([
1076-
[Blockly.Msg.WEBDUINO_BOARD_WEBSOCKET, "4"],
1077-
[Blockly.Msg.WEBDUINO_BOARD_WIFI, "1"]
1078-
]), "type_")
1079-
.appendField(":");
1080-
this.appendDummyInput()
1081-
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING)
1082-
.appendField(new Blockly.FieldDropdown([
1083-
["20 ms", "20"],
1084-
["50 ms", "50"],
1085-
["75 ms", "75"],
1086-
["100 ms", "100"],
1087-
["250 ms", "250"],
1088-
["500 ms", "500"],
1089-
["1 sec", "1000"]
1090-
]), "rate_")
1091-
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN)
1092-
.appendField(new Blockly.FieldCheckbox("FALSE"), "check_")
1093-
.appendField(Blockly.Msg.WEBDUINO_BOARD_MULTI)
1094-
.appendField(new Blockly.FieldCheckbox("FALSE"), "multi_");
1095-
this.appendStatementInput("callbacks_");
1096-
this.setTooltip('');
1097-
this.setColour(290);
1098-
this.setHelpUrl('https://webduino.io');
1099-
}
1100-
};
1033+
1034+
// keep these 2 blocks for backward compatibility
1035+
Blockly.Blocks['board_ready'] = Blockly.Blocks['board'];
1036+
Blockly.Blocks['smart_ready'] = Blockly.Blocks['board'];
11011037

11021038
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tzhs2o
11031039
Blockly.Blocks['board_error'] = {

generators/webduino.js

Lines changed: 3 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -876,107 +876,10 @@ Blockly.JavaScript['board'] = function (block) {
876876
}
877877
return code;
878878
}
879-
880-
Blockly.JavaScript['board_ready'] = function (block) {
881-
var value_device_ = Blockly.JavaScript.valueToCode(block, 'device_', Blockly.JavaScript.ORDER_ATOMIC);
882-
var checkbox_type_ = block.getFieldValue('type_');
883-
var checkbox_check_ = block.getFieldValue('check_');
884-
var checkbox_multi_ = block.getFieldValue('multi_');
885-
var dropdown_rate_ = block.getFieldValue('rate_');
886-
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');
887-
var type;
888-
if (checkbox_type_ == '1') {
889-
if (checkbox_multi_ == 'TRUE') {
890-
type = 'boardReady({device:' + value_device_ + ', multi: true}, async function (board) {\n';
891-
} else {
892-
type = 'boardReady(' + value_device_ + ', async function (board) {\n';
893-
}
894-
} else if (checkbox_type_ == '2') {
895-
type = 'boardReady({transport: \'serial\', path: ' + value_device_ + '}, async function (board) {\n';
896-
} else if (checkbox_type_ == '3') {
897-
type = 'boardReady({transport: \'bluetooth\', address: ' + value_device_ + '}, async function (board) {\n';
898-
} else if (checkbox_type_ == '4') {
899-
type = 'boardReady({transport: \'websocket\', url: ' + value_device_ + '}, async function (board) {\n';
900-
}
901-
902-
var code;
903-
if (checkbox_check_ == 'FALSE') {
904-
code = type +
905-
' board.systemReset();\n' +
906-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
907-
statements_callbacks_ +
908-
'});\n';
909-
} else if (checkbox_check_ == 'TRUE') {
910-
code = 'if(window.readyBoardLength){\n' +
911-
' window.readyBoardLength = window.readyBoardLength + 1;\n' +
912-
'}else{\n' +
913-
' window.readyBoardLength = 1;\n' +
914-
'}\n\n' +
915-
type +
916-
' board.systemReset();\n' +
917-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
918-
statements_callbacks_ +
919-
' if(window.boardReadyNumber){\n' +
920-
' window.boardReadyNumber = window.boardReadyNumber +1;\n' +
921-
' }else{\n' +
922-
' window.boardReadyNumber = 1;\n' +
923-
' }\n' +
924-
' allBoardReady(window.boardReadyNumber);\n' +
925-
'});\n';
926-
}
927-
return code;
928-
};
929-
930-
Blockly.JavaScript['smart_ready'] = function (block) {
931-
var value_device_ = Blockly.JavaScript.valueToCode(block, 'device_', Blockly.JavaScript.ORDER_ATOMIC);
932-
var checkbox_type_ = block.getFieldValue('type_');
933-
var checkbox_check_ = block.getFieldValue('check_');
934-
var checkbox_multi_ = block.getFieldValue('multi_');
935-
var dropdown_rate_ = block.getFieldValue('rate_');
936-
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');
937-
var type;
938-
if (checkbox_type_ == '1') {
939-
if (checkbox_multi_ == 'TRUE') {
940-
type = "boardReady({board: 'Smart', transport: 'mqtt', device:" + value_device_ + ", multi: true}, async function (board) {\n";
941-
} else {
942-
type = "boardReady({board: 'Smart', transport: 'mqtt', device:" + value_device_ + ", multi: false}, async function (board) {\n";
943-
}
944-
} else if (checkbox_type_ == '2') {
945-
type = "boardReady({board: 'Smart', transport: 'serial', path: " + value_device_ + "}, async function (board) {\n";
946-
} else if (checkbox_type_ == '3') {
947-
type = "boardReady({board: 'Smart', transport: 'bluetooth', address: " + value_device_ + "}, async function (board) {\n";
948-
} else if (checkbox_type_ == '4') {
949-
type = "boardReady({board: 'Smart', url: " + value_device_ + "}, async function (board) {\n";
950-
}
951-
952-
var code;
953-
if (checkbox_check_ == 'FALSE') {
954-
code = type +
955-
' board.systemReset();\n' +
956-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
957-
statements_callbacks_ +
958-
'});\n';
959-
} else if (checkbox_check_ == 'TRUE') {
960-
code = 'if(window.readyBoardLength){\n' +
961-
' window.readyBoardLength = window.readyBoardLength + 1;\n' +
962-
'}else{\n' +
963-
' window.readyBoardLength = 1;\n' +
964-
'}\n\n' +
965-
type +
966-
' board.systemReset();\n' +
967-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
968-
statements_callbacks_ +
969-
' if(window.boardReadyNumber){\n' +
970-
' window.boardReadyNumber = window.boardReadyNumber +1;\n' +
971-
' }else{\n' +
972-
' window.boardReadyNumber = 1;\n' +
973-
' }\n' +
974-
' allBoardReady(window.boardReadyNumber);\n' +
975-
'});\n';
976-
}
977-
return code;
978-
};
979879

880+
// keep these 2 blocks for backward compatibility
881+
Blockly.JavaScript['board_ready'] = Blockly.JavaScript['board'];
882+
Blockly.JavaScript['smart_ready'] = Blockly.JavaScript['board'];
980883

981884
Blockly.JavaScript['board_error'] = function (block) {
982885
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');

0 commit comments

Comments
 (0)