Skip to content

Commit 9909fae

Browse files
committed
conbine 3 board blocks to 1 block
1 parent 82c3f44 commit 9909fae

56 files changed

Lines changed: 108 additions & 706 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

blocks/msg/en.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,10 @@ Blockly.Msg.WEBDUINO_STATUS_FOREVER_NAME = ", name:";
118118
Blockly.Msg.WEBDUINO_STATUS_REPEAT_STOP = "Stop";
119119
Blockly.Msg.WEBDUINO_STATUS_REPEAT_STOPCONTENT = "";
120120

121-
Blockly.Msg.WEBDUINO_BOARD_READY_WEBDUINO = "(Wi-Fi) Board device:";
121+
Blockly.Msg.WEBDUINO_BOARD = "Board";
122+
Blockly.Msg.WEBDUINO_BOARD_WIFI = "Wi-Fi";
123+
Blockly.Msg.WEBDUINO_BOARD_SERIAL = "Serial Port";
124+
Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH = "Bluetooth";
122125
Blockly.Msg.WEBDUINO_BOARD_CHAIN = "chain";
123126
Blockly.Msg.WEBDUINO_BOARD_CHAIN_OK = "When all boards chain ready";
124127
Blockly.Msg.WEBDUINO_BOARD_CHAIN_DO = "do:";
@@ -129,9 +132,7 @@ Blockly.Msg.WEBDUINO_PIN_STATE = "Pin state";
129132
Blockly.Msg.WEBDUINO_BOARD_ERROR_IF = "If";
130133
Blockly.Msg.WEBDUINO_BOARD_ERROR = "offine";
131134
Blockly.Msg.WEBDUINO_BOARD_ERROR_DO = "do:";
132-
Blockly.Msg.WEBDUINO_BOARD_READY_PATH = "(Serial Port) Board path:";
133135
Blockly.Msg.WEBDUINO_BOARD_SAMPLING = " Sampling";
134-
Blockly.Msg.WEBDUINO_BOARD_READY_ADDRESS = "(Bluetooth) Board address:";
135136

136137
Blockly.Msg.WEBDUINO_LED = "LED";
137138
Blockly.Msg.WEBDUINO_LED_PIN = "pin";

blocks/msg/zh-hant.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,10 @@ Blockly.Msg.WEBDUINO_DELAY = "延遲";
134134
Blockly.Msg.WEBDUINO_DELAY_SECONDS = "秒";
135135

136136
// Board
137-
138-
Blockly.Msg.WEBDUINO_BOARD_READY_WEBDUINO = "( Wi-Fi ) 開發版,名稱";
137+
Blockly.Msg.WEBDUINO_BOARD = "開發板";
138+
Blockly.Msg.WEBDUINO_BOARD_WIFI = "Wi-Fi";
139+
Blockly.Msg.WEBDUINO_BOARD_SERIAL = "序列埠";
140+
Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH = "藍芽";
139141
Blockly.Msg.WEBDUINO_BOARD_CHAIN = " 串聯";
140142
Blockly.Msg.WEBDUINO_BOARD_CHAIN_OK = "當開發板串連完成";
141143
Blockly.Msg.WEBDUINO_BOARD_CHAIN_DO = "執行";
@@ -146,9 +148,7 @@ Blockly.Msg.WEBDUINO_PIN_STATE = "腳位狀態";
146148
Blockly.Msg.WEBDUINO_BOARD_ERROR_IF = "如果";
147149
Blockly.Msg.WEBDUINO_BOARD_ERROR = "斷線";
148150
Blockly.Msg.WEBDUINO_BOARD_ERROR_DO = "執行";
149-
Blockly.Msg.WEBDUINO_BOARD_READY_PATH = "( 序列埠 ) 開發板,路徑";
150151
Blockly.Msg.WEBDUINO_BOARD_SAMPLING = " 類比取樣";
151-
Blockly.Msg.WEBDUINO_BOARD_READY_ADDRESS = "( 藍芽 ) 開發板,路徑";
152152

153153
// LED
154154

blocks/webduino.js

Lines changed: 6 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -527,53 +527,13 @@ Blockly.Blocks['board_ready'] = {
527527
init: function () {
528528
this.appendValueInput("device_")
529529
.setCheck("String")
530-
.appendField(Blockly.Msg.WEBDUINO_BOARD_READY_WEBDUINO);
531-
this.appendDummyInput()
532-
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, " 類比取樣")
533-
.appendField(new Blockly.FieldDropdown([
534-
["20 ms", "20"],
535-
["50 ms", "50"],
536-
["75 ms", "75"],
537-
["100 ms", "100"]
538-
]), "rate_")
539-
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, "串聯")
540-
.appendField(new Blockly.FieldCheckbox("FALSE"), "check_");
541-
this.appendStatementInput("callbacks_");
542-
this.setTooltip('');
543-
this.setColour(290);
544-
this.setHelpUrl('http://www.example.com/');
545-
}
546-
};
547-
548-
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#gkt6j9
549-
Blockly.Blocks['board_ready_serial_port'] = {
550-
init: function () {
551-
this.appendValueInput("path_")
552-
.setCheck("String")
553-
.appendField(Blockly.Msg.WEBDUINO_BOARD_READY_PATH, "開發板 路徑:");
554-
this.appendDummyInput()
555-
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, " 類比取樣")
530+
.appendField(Blockly.Msg.WEBDUINO_BOARD, "開發板")
556531
.appendField(new Blockly.FieldDropdown([
557-
["20 ms", "20"],
558-
["50 ms", "50"],
559-
["75 ms", "75"],
560-
["100 ms", "100"]
561-
]), "rate_")
562-
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, "串聯")
563-
.appendField(new Blockly.FieldCheckbox("FALSE"), "check_");
564-
this.appendStatementInput("callbacks_");
565-
this.setTooltip('');
566-
this.setColour(290);
567-
this.setHelpUrl('http://www.example.com/');
568-
}
569-
};
570-
571-
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#gkt6j9
572-
Blockly.Blocks['board_ready_address'] = {
573-
init: function () {
574-
this.appendValueInput("address_")
575-
.setCheck("String")
576-
.appendField(Blockly.Msg.WEBDUINO_BOARD_READY_ADDRESS, "開發板 位址:");
532+
[Blockly.Msg.WEBDUINO_BOARD_WIFI, "1"],
533+
[Blockly.Msg.WEBDUINO_BOARD_SERIAL, "2"],
534+
[Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH, "3"]
535+
]), "type_")
536+
.appendField(":");
577537
this.appendDummyInput()
578538
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, " 類比取樣")
579539
.appendField(new Blockly.FieldDropdown([

code.js

Lines changed: 83 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -207,102 +207,104 @@ Code.getBBox_ = function (element) {
207207
};
208208

209209
Code.loadDemoArea = function(demo){
210-
demo = {};
211-
demo.btn = document.getElementById('demoButton');
212-
demo.area = document.getElementById('demo-area');
213-
demo.select = document.getElementById('demo-select');
214-
demo.close = document.querySelector('.close-btn');
215-
demo.da = document.querySelectorAll('.da');
216-
demo.option = document.querySelectorAll('#demo-select option');
217-
demo.contentHeight = document.getElementById('content_blocks').offsetHeight;
218-
demo.area.style.height = (demo.contentHeight - 130) + 'px';
219-
demo.resizeBar = document.getElementById('demo-resize-bar');
220-
221-
if(localStorage.demoAreaWidth){
222-
demo.area.style.width = localStorage.demoAreaWidth;
223-
}
224-
225-
window.addEventListener('resize',function(){
210+
if(document.getElementById('demo-area')){
211+
demo = {};
212+
demo.btn = document.getElementById('demoButton');
213+
demo.area = document.getElementById('demo-area');
214+
demo.select = document.getElementById('demo-select');
215+
demo.close = document.querySelector('.close-btn');
216+
demo.da = document.querySelectorAll('.da');
217+
demo.option = document.querySelectorAll('#demo-select option');
226218
demo.contentHeight = document.getElementById('content_blocks').offsetHeight;
227219
demo.area.style.height = (demo.contentHeight - 130) + 'px';
228-
});
220+
demo.resizeBar = document.getElementById('demo-resize-bar');
229221

230-
demo.resizeBar.onmousedown = function(e,dr){
231-
demo.area.style.opacity = '0.4';
232-
dr={};
233-
dr.ox = e.pageX;
234-
dr.dw = demo.area.offsetWidth;
235-
demo.area.className = demo.area.className + " resize";
236-
document.onmousemove = function(event){
237-
dr.rx = event.pageX;
238-
demo.area.style.width = dr.dw-dr.rx+dr.ox-20+'px';
239-
localStorage.demoAreaWidth = demo.area.style.width;
222+
if(localStorage.demoAreaWidth){
223+
demo.area.style.width = localStorage.demoAreaWidth;
240224
}
241-
}
242225

243-
document.onmouseup = function(){
244-
demo.area.style.opacity = '1';
245-
demo.area.className = demo.area.className.replace(" resize", "");
246-
document.onmousemove = null;
247-
}
226+
window.addEventListener('resize',function(){
227+
demo.contentHeight = document.getElementById('content_blocks').offsetHeight;
228+
demo.area.style.height = (demo.contentHeight - 130) + 'px';
229+
});
248230

249-
demo.content = function(p,s){
250-
s={};
251-
for(s.i=0; s.i<demo.da.length; s.i++){
252-
demo.da[s.i].className = demo.da[s.i].className.replace("show", "");
231+
demo.resizeBar.onmousedown = function(e,dr){
232+
demo.area.style.opacity = '0.4';
233+
dr={};
234+
dr.ox = e.pageX;
235+
dr.dw = demo.area.offsetWidth;
236+
demo.area.className = demo.area.className + " resize";
237+
document.onmousemove = function(event){
238+
dr.rx = event.pageX;
239+
demo.area.style.width = dr.dw-dr.rx+dr.ox-20+'px';
240+
localStorage.demoAreaWidth = demo.area.style.width;
241+
}
253242
}
254-
demo.option[p-1].selected = true;
255-
document.getElementById('demo-area-0'+p).className = document.getElementById('demo-area-0'+p).className + " show";
256-
localStorage.demoAreaSelect = p;
257-
}
258243

259-
demo.btn.onclick = function () {
260-
if(localStorage.demoArea=='open'){
244+
document.onmouseup = function(){
245+
demo.area.style.opacity = '1';
246+
demo.area.className = demo.area.className.replace(" resize", "");
247+
document.onmousemove = null;
248+
}
249+
250+
demo.content = function(p,s){
251+
s={};
252+
for(s.i=0; s.i<demo.da.length; s.i++){
253+
demo.da[s.i].className = demo.da[s.i].className.replace("show", "");
254+
}
255+
demo.option[p-1].selected = true;
256+
document.getElementById('demo-area-0'+p).className = document.getElementById('demo-area-0'+p).className + " show";
257+
localStorage.demoAreaSelect = p;
258+
}
259+
260+
demo.btn.onclick = function () {
261+
if(localStorage.demoArea=='open'){
262+
demo.area.className = demo.area.className.replace("show", "");
263+
localStorage.demoArea = 'close';
264+
}else{
265+
demo.area.className = demo.area.className.replace("show", "");
266+
demo.area.className = demo.area.className + "show";
267+
localStorage.demoArea = 'open';
268+
}
269+
};
270+
demo.close.onclick = function () {
261271
demo.area.className = demo.area.className.replace("show", "");
262272
localStorage.demoArea = 'close';
263-
}else{
273+
};
274+
275+
demo.select.addEventListener('change',function(s){
276+
s={};
277+
s.selectValue = this.value;
278+
s.selectId = 'demo-area-0'+s.selectValue;
279+
localStorage.demoAreaSelect = s.selectValue;
280+
for(s.i=0; s.i<demo.da.length; s.i++){
281+
demo.da[s.i].className = demo.da[s.i].className.replace("show", "");
282+
}
283+
document.getElementById(s.selectId).className = document.getElementById(s.selectId).className + " show"
284+
});
285+
286+
if(localStorage.demoArea=='open'){
264287
demo.area.className = demo.area.className.replace("show", "");
265288
demo.area.className = demo.area.className + "show";
266-
localStorage.demoArea = 'open';
289+
}else{
290+
demo.area.className = demo.area.className.replace("show", "");
267291
}
268-
};
269-
demo.close.onclick = function () {
270-
demo.area.className = demo.area.className.replace("show", "");
271-
localStorage.demoArea = 'close';
272-
};
273292

274-
demo.select.addEventListener('change',function(s){
275-
s={};
276-
s.selectValue = this.value;
277-
s.selectId = 'demo-area-0'+s.selectValue;
278-
localStorage.demoAreaSelect = s.selectValue;
279-
for(s.i=0; s.i<demo.da.length; s.i++){
280-
demo.da[s.i].className = demo.da[s.i].className.replace("show", "");
293+
if(localStorage.demoAreaSelect==1){
294+
demo.content(1);
295+
}else if(localStorage.demoAreaSelect==2){
296+
demo.content(2);
297+
}else if(localStorage.demoAreaSelect==3){
298+
demo.content(3);
299+
}else if(localStorage.demoAreaSelect==4){
300+
demo.content(4);
301+
}else if(localStorage.demoAreaSelect==5){
302+
demo.content(5);
303+
}else if(localStorage.demoAreaSelect==6){
304+
demo.content(6);
305+
}else if(localStorage.demoAreaSelect==7){
306+
demo.content(7);
281307
}
282-
document.getElementById(s.selectId).className = document.getElementById(s.selectId).className + " show"
283-
});
284-
285-
if(localStorage.demoArea=='open'){
286-
demo.area.className = demo.area.className.replace("show", "");
287-
demo.area.className = demo.area.className + "show";
288-
}else{
289-
demo.area.className = demo.area.className.replace("show", "");
290-
}
291-
292-
if(localStorage.demoAreaSelect==1){
293-
demo.content(1);
294-
}else if(localStorage.demoAreaSelect==2){
295-
demo.content(2);
296-
}else if(localStorage.demoAreaSelect==3){
297-
demo.content(3);
298-
}else if(localStorage.demoAreaSelect==4){
299-
demo.content(4);
300-
}else if(localStorage.demoAreaSelect==5){
301-
demo.content(5);
302-
}else if(localStorage.demoAreaSelect==6){
303-
demo.content(6);
304-
}else if(localStorage.demoAreaSelect==7){
305-
demo.content(7);
306308
}
307309
}
308310

generators/webduino.js

Lines changed: 11 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -412,74 +412,23 @@ Blockly.JavaScript['gettime'] = function (block) {
412412

413413
Blockly.JavaScript['board_ready'] = function (block) {
414414
var value_device_ = Blockly.JavaScript.valueToCode(block, 'device_', Blockly.JavaScript.ORDER_ATOMIC);
415+
var checkbox_type_ = block.getFieldValue('type_');
415416
var checkbox_check_ = block.getFieldValue('check_');
416417
var dropdown_rate_ = block.getFieldValue('rate_');
417418
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');
418-
var code;
419-
if (checkbox_check_ == 'FALSE') {
420-
code = 'boardReady(' + value_device_ + ', function (board) {\n' +
421-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
422-
statements_callbacks_ +
423-
'});\n';
424-
} else if (checkbox_check_ == 'TRUE') {
425-
code = 'if(window.readyBoardLength){\n' +
426-
' window.readyBoardLength = window.readyBoardLength + 1;\n' +
427-
'}else{\n' +
428-
' window.readyBoardLength = 1;\n' +
429-
'}\n\n' +
430-
'boardReady(' + value_device_ + ', function (board) {\n' +
431-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
432-
statements_callbacks_ +
433-
' if(window.boardReadyNumber){\n' +
434-
' window.boardReadyNumber = window.boardReadyNumber +1;\n' +
435-
' }else{\n' +
436-
' window.boardReadyNumber = 1;\n' +
437-
' }\n' +
438-
' allBoardReady(window.boardReadyNumber);\n' +
439-
'});\n';
440-
}
441-
return code;
442-
};
443-
444-
Blockly.JavaScript['board_ready_serial_port'] = function (block) {
445-
var value_path_ = Blockly.JavaScript.valueToCode(block, 'path_', Blockly.JavaScript.ORDER_ATOMIC);
446-
var dropdown_rate_ = block.getFieldValue('rate_');
447-
var checkbox_check_ = block.getFieldValue('check_');
448-
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');
449-
var code;
450-
if (checkbox_check_ == 'FALSE') {
451-
code = 'boardReady({ transport: \'serial\', path:' + value_path_ + ' }, function (board) {\n' +
452-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
453-
statements_callbacks_ +
454-
'});\n';
455-
} else if (checkbox_check_ == 'TRUE') {
456-
code = 'if(window.readyBoardLength){\n' +
457-
' window.readyBoardLength = window.readyBoardLength + 1;\n' +
458-
'}else{\n' +
459-
' window.readyBoardLength = 1;\n' +
460-
'}\n\n' +
461-
'boardReady({ transport: \'serial\', path:' + value_path_ + ' }, function (board) {\n' +
462-
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
463-
statements_callbacks_ +
464-
' if(window.boardReadyNumber){\n' +
465-
' window.boardReadyNumber = window.boardReadyNumber +1;\n' +
466-
' }else{\n' +
467-
' window.boardReadyNumber = 1;\n' +
468-
' }\n' +
469-
' allBoardReady(window.boardReadyNumber);\n' +
470-
'});\n';
419+
420+
var type;
421+
if(checkbox_type_=='1'){
422+
type = 'boardReady(' + value_device_ + ', function (board) {\n';
423+
}else if(checkbox_type_=='2'){
424+
type = 'boardReady({ transport: \'serial\', path:' + value_device_ + ' }, function (board) {\n';
425+
}else if(checkbox_type_=='3'){
426+
type = 'boardReady({ transport: \'bluetooth\', address:' + value_device_ + ' }, function (board) {\n';
471427
}
472-
return code;
473-
};
474428

475-
Blockly.JavaScript['board_ready_address'] = function (block) {
476-
var value_address_ = Blockly.JavaScript.valueToCode(block, 'address_', Blockly.JavaScript.ORDER_ATOMIC);
477-
var dropdown_rate_ = block.getFieldValue('rate_');
478-
var checkbox_check_ = block.getFieldValue('check_');
479-
var statements_callbacks_ = Blockly.JavaScript.statementToCode(block, 'callbacks_');
480429
var code;
481430
if (checkbox_check_ == 'FALSE') {
482-
code = 'boardReady({ transport: \'bluetooth\', address:' + value_address_ + ' }, function (board) {\n' +
431+
code = type +
483432
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
484433
statements_callbacks_ +
485434
'});\n';
@@ -489,7 +438,7 @@ Blockly.JavaScript['board_ready_address'] = function (block) {
489438
'}else{\n' +
490439
' window.readyBoardLength = 1;\n' +
491440
'}\n\n' +
492-
'boardReady({ transport: \'bluetooth\', address:' + value_address_ + ' }, function (board) {\n' +
441+
type +
493442
' board.samplingInterval = ' + dropdown_rate_ + ';\n' +
494443
statements_callbacks_ +
495444
' if(window.boardReadyNumber){\n' +

0 commit comments

Comments
 (0)