'use strict';
goog.provide('Blockly.Blocks.webduino');
goog.require('Blockly.Blocks');
Blockly.Blocks.colour.HUE = 120;
Blockly.Blocks.colour.HUESON = 70;
var webUrl = 'https://webduino.io';
var mainUrl = 'https://tutorials.webduino.io/zh-tw/docs/';
var utmUrl = '?utm_source=trail-blockly&utm_medium=contextMenu&utm_campaign=tutorials';
/*
.o8
"888
.oooo888 .ooooo. ooo. .oo. .oo. .ooooo.
d88' `888 d88' `88b `888P"Y88bP"Y88b d88' `88b
888 888 888ooo888 888 888 888 888 888
888 888 888 .o 888 888 888 888 888
`Y8bod88P" `Y8bod8P' o888o o888o o888o `Y8bod8P'
*/
Blockly.Blocks['demo_show_text'] = {
init: function () {
this.appendValueInput("show_")
.appendField(Blockly.Msg.DEMO_SHOW, "顯示ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_text_size'] = {
init: function () {
this.appendValueInput("size_")
.appendField(Blockly.Msg.DEMO_TEXT_SIZE, "æå大å°");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_text_lineheight'] = {
init: function () {
this.appendValueInput("lineheight_")
.appendField(Blockly.Msg.DEMO_TEXT_LINEHEIGHT, "æåè¡é«");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_text_color'] = {
init: function () {
this.appendValueInput("color_")
.appendField(Blockly.Msg.DEMO_TEXT_COLOR, "æåé¡è²");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_light_click'] = {
init: function () {
this.appendStatementInput("do_")
.appendField(Blockly.Msg.DEMO_LIGHT_CLICK, "é»æçæ³¡ï¼å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_light_state'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_LIGHT_STATE, "è¨å®ç泡çæ
çºï¼")
.appendField(new Blockly.FieldDropdown([
["on", "on"],
["off", "off"]
]), "state_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_light_ifelse'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_LIGHT_IFELSE, "çæ³¡ç¾å¨ççæ
æ¯")
.appendField(new Blockly.FieldDropdown([
["on", "on"],
["off", "off"]
]), "state_");
this.setOutput(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_light_toggle'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_LIGHT_TOGGLE, "çæ³¡çæ
åæ");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_button_click'] = {
init: function () {
this.appendStatementInput("do_")
.appendField(Blockly.Msg.DEMO_BUTTON_CLICK, "é»é¸")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_BUTTON_BTN1, "1"],
[Blockly.Msg.DEMO_BUTTON_BTN2, "2"],
[Blockly.Msg.DEMO_BUTTON_BTN3, "3"],
[Blockly.Msg.DEMO_BUTTON_BTN4, "4"],
[Blockly.Msg.DEMO_BUTTON_BTN5, "5"]
]), "name_")
.appendField(Blockly.Msg.DEMO_BUTTON_CLICK_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_image_url'] = {
init: function () {
this.appendValueInput("url_")
.setCheck("String")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.DEMO_IMAGE_URL, "åçç¶²å");
this.setInputsInline(false);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_image_size'] = {
init: function () {
this.appendValueInput("w_")
.appendField(Blockly.Msg.DEMO_IMAGE_WIDTH, "åç寬度");
this.appendValueInput("h_")
.appendField(Blockly.Msg.DEMO_IMAGE_HEIGHT, "é«åº¦");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_image_rotate'] = {
init: function () {
this.appendValueInput("deg_")
.appendField(Blockly.Msg.DEMO_IMAGE_ROTATE, "åçæè½è§åº¦ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_image_opacity'] = {
init: function () {
this.appendValueInput("opacity_")
.appendField(Blockly.Msg.DEMO_IMAGE_OPACITY, "åçéæåº¦ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_image_position'] = {
init: function () {
this.appendValueInput("position_")
.appendField(Blockly.Msg.DEMO_IMAGE_POS, "åç")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_IMAGE_X, "x"],
[Blockly.Msg.DEMO_IMAGE_Y, "y"]
]), "direction_")
.appendField(Blockly.Msg.DEMO_IMAGE_MOVE, "ç§»åï¼");
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_IMAGE_PIXEL, "åç´ ");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_area_input'] = {
init: function () {
this.appendStatementInput("do_")
.appendField(Blockly.Msg.DEMO_AREA_COLOR_INPUT, "鏿é¡è²ï¼å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_area_input_color'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_AREA_COLOR_CHOOSE, "鏿çé¡è²");
this.setOutput(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_area_color'] = {
init: function () {
this.appendValueInput("color_")
.appendField(Blockly.Msg.DEMO_AREA_COLOR, "è¨å®ååé¡è²ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_range_set'] = {
init: function () {
this.appendValueInput("min_")
.appendField(Blockly.Msg.DEMO_RANGE_MIN, "æé¸è¨å®ï¼æå°å¼");
this.appendDummyInput();
this.appendValueInput("max_")
.appendField(Blockly.Msg.DEMO_RANGE_MAX, "æå¤§å¼");
this.appendDummyInput();
this.appendValueInput("step_")
.appendField(Blockly.Msg.DEMO_RANGE_STEP, "éè·");
this.appendDummyInput();
this.appendValueInput("value_")
.appendField(Blockly.Msg.DEMO_RANGE_DEFAULT, "é è¨å¼");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.DEMO_RANGE_INPUT, "èª¿æ´æé¸ï¼å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_range_show'] = {
init: function () {
this.appendValueInput("show_")
.appendField(Blockly.Msg.DEMO_RANGE_SHOW, "æ¸å¼é¡¯ç¤ºï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
Blockly.Blocks['demo_range_input_value'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_RANGE_VALUE, "æé¸çæ¸å¼");
this.setOutput(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'basic/blockly/blockly-information.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tm39n9
Blockly.Blocks['demo_youtube'] = {
init: function () {
this.appendValueInput("name_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE);
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_YOUTUBE_DEFAULT_1, "1"],
[Blockly.Msg.DEMO_YOUTUBE_DEFAULT_2, "2"]
]), "type_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT_ID)
.appendField(new Blockly.FieldTextInput("..."), "id_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#kqjbv8
Blockly.Blocks['demo_youtube_volume'] = {
init: function () {
this.appendValueInput("volume_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VOLUME);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tih6od
Blockly.Blocks['demo_youtube_speed'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SPEED)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VERYSLOW, "0.25"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SLOW, "0.5"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_NORMAL, "1"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_FAST, "1.5"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SUPERFAST, "2"]
]), "speed_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tcfvai
Blockly.Blocks['demo_youtube_control'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUS)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETPLAY, "1"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETPAUSE, "2"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETSTOP, "0"]
]), "status_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#metxhc
Blockly.Blocks['demo_youtube_status'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUS)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUSPLAY, "1"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUSPAUSE, "2"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUSCUE, "5"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUSSTOP, "0"],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_STATUSSTART, "-1"]
]), "status_");
this.setOutput(true);
this.setTooltip('');
this.setColour(70);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vcm5tv
Blockly.Blocks['demo_youtube_id'] = {
init: function () {
this.appendValueInput("id_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_CHANGEID)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_CHANGEID_ID);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vcm5tv
Blockly.Blocks['demo_youtube_listcontrol'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_YOUTUBE_PLAY)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_YOUTUBE_LIST_PRE, ".previousVideo()"],
[Blockly.Msg.DEMO_YOUTUBE_LIST_NEXT, ".nextVideo()"]
]), "preOrNext_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(180);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#wnw8t9
Blockly.Blocks['demo_youtube_listnum'] = {
init: function () {
this.appendValueInput("num_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_YOUTUBE_PLAY)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM);
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_NUM);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(180);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#who4oo
Blockly.Blocks['demo_youtube_currenttime'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_CURRENTTIME);
this.setOutput(true, null);
this.setTooltip('');
this.setColour(70);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#fg9c8k
Blockly.Blocks['demo_youtube_seekto'] = {
init: function () {
this.appendValueInput("sec_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_YOUTUBE_SET)
.appendField(new Blockly.FieldVariable("youtube"), "name_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_SEEKTO);
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_YOUTUBE_SEC);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
Blockly.Blocks['demo_youtube_callback'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET)
.appendField(new Blockly.FieldVariable("youtube"), "val_")
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT_1)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETSTOP, 0],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETPAUSE, 2],
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETPLAY, 1]
]), "event_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SETPLAY);
this.appendStatementInput("do_")
.setCheck(null)
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_DO);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
//https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#85c65d
Blockly.Blocks['demo_tracking'] = {
init: function () {
this.appendValueInput("var_")
.appendField(Blockly.Msg.DEMO_TRACKING_SET, "è¨å®å½±å追蹤");
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_TRACKING, "追蹤")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_TRACKING_FACE, "face"],
[Blockly.Msg.DEMO_TRACKING_COLOR, "color"]
]), "type_");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.DEMO_TRACKING_DO, "追蹤æåæï¼å·è¡");
this.appendStatementInput("standby_")
.appendField(Blockly.Msg.DEMO_TRACKING_STANDBY, "追蹤å¾
彿ï¼å·è¡");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/sensor/rfid-youtube.html' + utmUrl);
}
};
Blockly.Blocks['demo_tracking_action'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("track"), "name_")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_TRACKING_RUN, "run"],
[Blockly.Msg.DEMO_TRACKING_STOP, "stop"]
]), "action_")
.appendField(Blockly.Msg.DEMO_TRACKING_TRACK, "追蹤");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/component/led-tracking-face.html' + utmUrl);
}
};
Blockly.Blocks['demo_tracking_face'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("track"), "name_")
.appendField(Blockly.Msg.DEMO_TRACKING_FACESETTING, "人è 追蹤è¨å® ( éå¿
è¦ )");
this.appendDummyInput()
.appendField("EdgesDensity")
.appendField(new Blockly.FieldDropdown([
["0.1", "0.1"],
["0.2", "0.2"],
["0.3", "0.3"],
["0.4", "0.4"],
["0.5", "0.5"]
]), "ed_")
.appendField(" StepSize")
.appendField(new Blockly.FieldDropdown([
["0.5", "0.5"],
["1", "1"],
["1.5", "1.5"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"]
]), "ss_")
.appendField(" InitialScale")
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"]
]), "is_");
this.setColour(Blockly.Blocks.colour.HUE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'useful/component/led-tracking-face.html' + utmUrl);
}
};
Blockly.Blocks['demo_tracking_val'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_TRACKING_VAL, "追蹤æ¸å¼")
.appendField(new Blockly.FieldDropdown([
["x", "x"],
["y", "y"],
["width", "width"],
["height", "height"],
[Blockly.Msg.DEMO_TRACKING_VALTOTAL, "total"],
[Blockly.Msg.DEMO_TRACKING_VALCOLOR, "color"]
]), "val_");
this.setOutput(true);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'useful/component/led-tracking-face.html' + utmUrl);
}
};
// controller
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#6tauc6
Blockly.Blocks['demo_controller'] = {
init: function () {
this.appendStatementInput("do_")
.setCheck(null)
.appendField(Blockly.Msg.DEMO_CONTROLLER_BTN, "鿧卿éµ")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_BTNCLICK, "1"],
[Blockly.Msg.DEMO_CONTROLLER_BTNDOWN, "2"],
[Blockly.Msg.DEMO_CONTROLLER_BTNUP, "3"]
]), "event_")
.appendField(new Blockly.FieldDropdown([
["â", ".btn-power"],
["1", ".btn-num1"],
["2", ".btn-num2"],
["3", ".btn-num3"],
["4", ".btn-num4"],
["5", ".btn-num5"],
["6", ".btn-num6"],
["7", ".btn-num7"],
["8", ".btn-num8"],
["9", ".btn-num9"],
["0", ".btn-num0"],
["#", ".btn-num11"],
["*", ".btn-num12"],
["â²", ".btn-up"],
["â", ".btn-left"],
["â¶", ".btn-right"],
["â¼", ".btn-down"],
["â", ".btn-center"],
["ââ", ".btn-pre"],
["â ", ".btn-stop"],
["â¶", ".btn-play"],
["â â", ".btn-pause"],
["â¶â¶", ".btn-next"],
[Blockly.Msg.DEMO_CONTROLLER_BTNRED, ".btn-color1"],
[Blockly.Msg.DEMO_CONTROLLER_BTNGREEN, ".btn-color2"],
[Blockly.Msg.DEMO_CONTROLLER_BTNBLUE, ".btn-color3"],
[Blockly.Msg.DEMO_CONTROLLER_BTNYELLOW, ".btn-color4"]
]), "btn_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_BTNDO, "å·è¡");
this.setColour(Blockly.Blocks.colour.HUE);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['demo_controller_show'] = {
init: function () {
this.appendValueInput("show_")
.setCheck(null)
.appendField(Blockly.Msg.DEMO_CONTROLLER_SCREEN, "éæ§å¨è¢å¹ï¼é¡¯ç¤º");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['demo_controller_range'] = {
init: function () {
this.appendValueInput("min_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGEMIN, "鿧卿é¸ï¼æå°å¼");
this.appendValueInput("max_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGEMAX, "æå¤§å¼");
this.appendValueInput("step_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGESTEP, "éè·");
this.appendValueInput("default_")
.setCheck("Number")
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGEDEFAULT, "é è¨å¼");
this.appendStatementInput("range_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGEDO, "èª¿æ´æé¸æï¼å·è¡");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['demo_controller_range_value'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_CONTROLLER_RANGE_VALUE, "鿧卿é¸çæ¸å¼");
this.setOutput(true, "Number");
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUESON);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['demo_controller_showcolor'] = {
init: function () {
this.appendValueInput("color_")
.setCheck(null)
.appendField(Blockly.Msg.DEMO_CONTROLLER_SCREENSHOW, "éæ§å¨ è¢å¹")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_SCREENBG, "background"],
[Blockly.Msg.DEMO_CONTROLLER_SCREENTEXT, "color"]
]), "type_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_SCREENCOLOR, "é¡è²");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(Blockly.Blocks.colour.HUE);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
/*
.88b d88. .d88b. d8888b. d888888b db d88888b
88'YbdP`88 .8P Y8. 88 `8D `88' 88 88'
88 88 88 88 88 88oooY' 88 88 88ooooo
88 88 88 88 88 88~~~b. 88 88 88~~~~~
88 88 88 `8b d8' 88 8D .88. 88booo. 88.
YP YP YP `Y88P' Y8888P' Y888888P Y88888P Y88888P
*/
Blockly.Blocks['mobile_deviceorientation_event'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION, "è¡åè£ç½®ï¼åµæ¸¬")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_TYPE1, "1"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_TYPE2, "2"]
]), "type_");
this.appendStatementInput("do_")
.setCheck(null)
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_DO, "å·è¡");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(190);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['mobile_deviceorientation_event_val'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_ALPHA, "alpha"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_BETA, "beta"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_GAMMA, "gamma"]
]), "val_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_VAL1, "çæ¸å¼ ( å°æ¸é»")
.appendField(new Blockly.FieldDropdown([
["0", '1'],
["1", '10'],
["2", '100']
]), "round_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_VAL2, "ä½ )");
this.setOutput(true, null);
this.setTooltip('');
this.setColour(210);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['mobile_devicemotion_event_val'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_ACCELERATION_X, "x"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_ACCELERATION_Y, "y"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_ACCELERATION_Z, "z"]
]), "val_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_ACCELERATION, "軸å éåº¦çæ¸å¼ ( å°æ¸é»")
.appendField(new Blockly.FieldDropdown([
["0", '1'],
["1", '10'],
["2", '100']
]), "round_")
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_ACCELERATION_VAL2, "ä½ )");
this.setOutput(true, null);
this.setTooltip('');
this.setColour(210);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
Blockly.Blocks['mobile_deviceorientation_event_remove'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.DEMO_CONTROLLER_MOBILE_DEVICEORIENTATION_REMOVE, "忢嵿¸¬")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_TYPE1, "1"],
[Blockly.Msg.DEMO_CONTROLLER_MOBILE_TYPE2, "2"]
]), "type_");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(190);
this.setHelpUrl(mainUrl + 'useful/example/toycar-mobile.html' + utmUrl);
}
};
/*
. oooo
.o8 `888
ooo. .oo. .oo. .oooo. .o888oo 888 .oo.
`888P"Y88bP"Y88b `P )88b 888 888P"Y88b
888 888 888 .oP"888 888 888 888
888 888 888 d8( 888 888 . 888 888
o888o o888o o888o `Y888""8o "888" o888o o888o
*/
Blockly.Blocks['math_round_digit'] = {
init: function () {
this.appendValueInput("round_")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_MATH_ROUND, "round"],
[Blockly.Msg.WEBDUINO_MATH_ROUND_UP, "floor"],
[Blockly.Msg.WEBDUINO_MATH_ROUND_DOWN, "ceil"]
]), "type_")
.appendField(Blockly.Msg.WEBDUINO_MATH_ROUND_TO, "å°å°æ¸é»")
.appendField(new Blockly.FieldDropdown([
["0", "0"],
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"]
]), "digit_")
.appendField(Blockly.Msg.WEBDUINO_MATH_ROUND_NUM, "ä½");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
//https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#goxzmb
Blockly.Blocks['math_value_conversion'] = {
init: function () {
this.appendValueInput("source_")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_MATH_SCALE, "å°ºåº¦è½æï¼æ¸å¼ä¾æº");
this.appendValueInput("omin_")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_MATH_SCALE_OMIN, "(åå§) æå°å¼");
this.appendValueInput("omax_")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_MATH_SCALE_OMAX, "(åå§) æå¤§å¼");
this.appendValueInput("cmin_")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_MATH_SCALE_CMIN, "(è½æå¾) æå°å¼");
this.appendValueInput("cmax_")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_MATH_SCALE_CMAX, "(è½æå¾) æå¤§å¼");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['number_to_string'] = {
init: function () {
this.appendValueInput("number_")
.setCheck("Number")
.appendField(Blockly.Msg.NUMBER_CONVERT, "è½æçº")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.NUMBER_BINARY, "2"],
[Blockly.Msg.NUMBER_OCTAL, "8"],
[Blockly.Msg.NUMBER_DECTIMAL, ""],
[Blockly.Msg.NUMBER_HEX, "16"]
]), "string_")
.appendField(Blockly.Msg.NUMBER_STRING, "å串");
this.setOutput(true);
this.setTooltip('');
this.setColour(160);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
/*
o8o
`"'
ooo. .oo. .oo. .oooo. oooo ooo. .oo.
`888P"Y88bP"Y88b `P )88b `888 `888P"Y88b
888 888 888 .oP"888 888 888 888
888 888 888 d8( 888 888 888 888
o888o o888o o888o `Y888""8o o888o o888o o888o
*/
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vnzmgi
Blockly.Blocks['console'] = {
init: function () {
this.appendValueInput('console')
.appendField(Blockly.Msg.CUSTOM_JS_CONSOLE, 'console');
this.setColour(0);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#rrm4nf
Blockly.Blocks['getdate'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.CUSTOM_JS_Date, "ç¾å¨çæ¥æ")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.CUSTOM_JS_Date_1, "ymd"],
[Blockly.Msg.CUSTOM_JS_Date_2, "dmy"],
[Blockly.Msg.CUSTOM_JS_Date_3, "mdy"],
[Blockly.Msg.CUSTOM_JS_Date_4, "y"],
[Blockly.Msg.CUSTOM_JS_Date_5, "m"],
[Blockly.Msg.CUSTOM_JS_Date_6, "d"]
]), "date_");
this.setOutput(true);
this.setTooltip('');
this.setColour(20);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['gettime'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.CUSTOM_JS_Time, "ç¾å¨çæé")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.CUSTOM_JS_Time_1, "hms"],
[Blockly.Msg.CUSTOM_JS_Time_2, "h"],
[Blockly.Msg.CUSTOM_JS_Time_3, "m"],
[Blockly.Msg.CUSTOM_JS_Time_4, "s"]
]), "time_");
this.setOutput(true);
this.setTooltip('');
this.setColour(20);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['board_server'] = {
init: function () {
this.appendValueInput("server_")
.appendField(Blockly.Msg.WEBDUINO_BOARD_SERVER)
.appendField(":");
this.setInputsInline(true);
this.setColour(250);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['board'] = {
board_type: Blockly.Msg.WEBDUINO_MARK_OR_FLY,
init: function () {
function dropdown_options() {
var board_type = Blockly.Blocks['board']['board_type'];
var options_full = [
[Blockly.Msg.WEBDUINO_BOARD_WIFI, '1'],
[Blockly.Msg.WEBDUINO_BOARD_SERIAL, '2'],
[Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH, '3'],
[Blockly.Msg.WEBDUINO_BOARD_WEBSOCKET, '4']
];
var options_smart = [
[Blockly.Msg.WEBDUINO_BOARD_WIFI, '1'],
[Blockly.Msg.WEBDUINO_BOARD_WEBSOCKET, '4']
];
if (board_type === Blockly.Msg.WEBDUINO_MARK_OR_FLY) {
return options_full;
} else {
return options_smart;
}
}
this.appendValueInput('device_')
.setCheck('String')
.appendField(Blockly.Msg.WEBDUINO_BOARD, 'éç¼æ¿')
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_MARK_OR_FLY, '1'],
[Blockly.Msg.WEBDUINO_SMART, '2']
]), 'board_')
.appendField(Blockly.Msg.WEBDUINO_USE, 'éé')
.appendField(new Blockly.FieldDropdown(dropdown_options), 'type_')
.appendField(Blockly.Msg.WEBDUINO_CONNECT_TO, 'é£ç·è³');
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BOARD_SAMPLING, ' 顿¯å樣')
.appendField(new Blockly.FieldDropdown([
['20 ms', '20'],
['50 ms', '50'],
['75 ms', '75'],
['100 ms', '100'],
['250 ms', '250'],
['500 ms', '500'],
['1 sec', '1000']
]), 'rate_')
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN, '串è¯')
.appendField(new Blockly.FieldCheckbox('FALSE'), 'check_')
.appendField(Blockly.Msg.WEBDUINO_BOARD_MULTI, 'ååæ§å¶')
.appendField(new Blockly.FieldCheckbox('FALSE'), 'multi_');
this.appendStatementInput('callbacks_');
this.setTooltip('');
this.setColour(290);
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
},
onchange: function (ev) {
switch (ev.name) {
case 'board_':
var newValue = ev.newValue;
if (newValue == '1') {
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_MARK_OR_FLY;
this.getField('rate_').setValue('250');
} else if (newValue === '2') {
Blockly.Blocks['board']['board_type'] = Blockly.Msg.WEBDUINO_SMART;
this.getField('rate_').setValue('50');
}
this.getField('type_').setValue('1')
break;
}
}
};
// keep these 2 blocks for backward compatibility
Blockly.Blocks['board_ready'] = Blockly.Blocks['board'];
Blockly.Blocks['smart_ready'] = Blockly.Blocks['board'];
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tzhs2o
Blockly.Blocks['board_error'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BOARD_IF_ERROR);
this.appendStatementInput("callbacks_")
.appendField(Blockly.Msg.WEBDUINO_BOARD_ERROR_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
//https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#ophu3b
Blockly.Blocks['all_board_ready'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN_OK, "ç¶éç¼æ¿ä¸²é£å®æ");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_BOARD_CHAIN_DO, "å·è¡ï¼");
this.setTooltip('');
this.setColour(0);
this.setHelpUrl(mainUrl + 'basic/blockly/multi-board.html' + utmUrl);
}
};
//https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#oihtmu
Blockly.Blocks['board_query_pin_state'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_QUERY_PIN, "嵿¸¬è
³ä½");
this.appendValueInput("pin")
.setCheck("Number");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_PIN_DO, "å·è¡");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(120);
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['board_pin_state'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_PIN_STATE, "è
³ä½çæ
");
this.setOutput(true);
this.setTooltip('');
this.setColour(160);
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['pin_get'] = {
init: function () {
this.appendValueInput("pin")
.appendField(Blockly.Msg.WEBDUINO_PIN, "Pin")
.setCheck("Number");
this.setOutput(true);
this.setColour(270);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['pin_num'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setColour(230);
this.setOutput(true, "Number");
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['pin_board'] = {
init: function () {
this.appendValueInput("pin_")
.setCheck(["Number", "pin_num"])
.appendField(Blockly.Msg.WEBDUINO_BOARD, "Board")
.appendField(new Blockly.FieldDropdown(this.getBoardsDropdown), "board_");
this.setOutput(true);
this.setColour(270);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
},
getBoardsDropdown: function () {
var nameMap = {
'1': Blockly.Msg.WEBDUINO_BOARD_WIFI,
'2': Blockly.Msg.WEBDUINO_BOARD_SERIAL,
'3': Blockly.Msg.WEBDUINO_BOARD_BLUETOOTH,
'4': Blockly.Msg.WEBDUINO_BOARD_WEBSOCKET
},
xml = Blockly.Xml.workspaceToDom(Code.workspace),
boards = xml.querySelectorAll("block[type=board_ready], block[type=smart_ready], block[type=board]"),
menus = [];
if (boards.length < 1) {
return [
['', '']
];
}
for (var i = 0; i < boards.length; i++) {
var item = boards[i],
type = item.querySelector('field[name=type_]').textContent,
param = item.querySelector('value[name=device_]').textContent;
switch (type) {
case '1':
menus.push(['(' + nameMap['1'] + ') ' + param, "{transport: 'mqtt', device: '" + param + "'}"]);
break;
case '2':
menus.push(['(' + nameMap['2'] + ') ' + param, "{transport: 'serial', path: '" + param + "'}"]);
break;
case '3':
menus.push(['(' + nameMap['3'] + ') ' + param, "{transport: 'bluetooth', address: '" + param + "'}"]);
break;
case '4':
menus.push(['(' + nameMap['4'] + ') ' + param, "{transport: 'websocket', url: '" + param + "'}"]);
break;
}
}
return menus;
}
};
Blockly.Blocks['pin_set_mode'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_PIN_SET, "Set")
.appendField(new Blockly.FieldVariable("pin"), "pin_")
.appendField(Blockly.Msg.WEBDUINO_PIN_MODE, "Mode")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_PIN_DIN, "0"],
[Blockly.Msg.WEBDUINO_PIN_DOUT, "1"],
[Blockly.Msg.WEBDUINO_PIN_AIN, "2"],
[Blockly.Msg.WEBDUINO_PIN_AOUT, "3"]
]), "mode_");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['pin_read'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_PIN_READ)
.appendField(new Blockly.FieldVariable("pin"), "pin_")
.appendField(Blockly.Msg.WEBDUINO_PIN_VALUE);
this.setOutput(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['pin_write'] = {
init: function () {
this.appendValueInput("value_")
.appendField(Blockly.Msg.WEBDUINO_PIN_WRITE)
.appendField(new Blockly.FieldVariable("pin"), "pin_")
.appendField(Blockly.Msg.WEBDUINO_PIN_VALUE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/blockly/board-pin.html' + utmUrl);
}
};
Blockly.Blocks['led_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_LED, "Led")
.appendField(Blockly.Msg.WEBDUINO_LED_PIN, "pin")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setColour(230);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['led_state'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable(" "), "led_")
.appendField(Blockly.Msg.WEBDUINO_LED_SET_STATE, "set state")
.appendField(new Blockly.FieldDropdown([
["on", "on"],
["off", "off"]
]), "state_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['led_toggle'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable(" "), "led_")
.appendField(Blockly.Msg.WEBDUINO_LED_TOGGLE, "toggle");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['led_intensity'] = {
init: function () {
this.appendValueInput("intensity_")
.setCheck("Number")
.appendField(new Blockly.FieldVariable("led"), "led_")
.appendField(Blockly.Msg.WEBDUINO_LED_INTENSITY, "強度 (0-1)ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
//https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#u7a4oh
Blockly.Blocks['led_callback'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("led"), "name_")
.appendField(Blockly.Msg.WEBDUINO_LED_STATE_IS, " ççæ
çºï¼")
.appendField(new Blockly.FieldDropdown([
["on", "on"],
["off", "off"]
]), "state_");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_LED_STATE_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['led_blink'] = {
init: function () {
this.appendValueInput("time_")
.setCheck("Number")
.appendField(new Blockly.FieldVariable("led"), "name_")
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "éçï¼éçæé");
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "ç§");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['led_blink_callback'] = {
init: function () {
this.appendValueInput("time_")
.setCheck("Number")
.appendField(new Blockly.FieldVariable("led"), "name_")
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK, "éçï¼éçæé");
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_SEC, "ç§");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_LED_BLINK_DO, "æ¯æ¬¡éçå·è¡");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/led.html' + utmUrl);
}
};
Blockly.Blocks['rgbled_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_RGBLED, "RGBLed")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_RED, "red")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "red_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_GREEN, "green")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "green_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_BLUE, "blue")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "blue_");
this.setOutput(true);
this.setColour(230);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/rgbled.html' + utmUrl);
}
};
Blockly.Blocks['rgbled_new_cathode'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_RGBLED_CATHODE, "RGBLed")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_RED, "red")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "red_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_GREEN, "green")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "green_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_BLUE, "blue")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "blue_");
this.setOutput(true);
this.setColour(230);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/rgbled.html' + utmUrl);
}
};
Blockly.Blocks['rgbled_setcolor'] = {
init: function () {
this.appendValueInput("color_")
.appendField(new Blockly.FieldVariable(" "), "rgbled_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_SETCOLOR, "set color");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/rgbled.html' + utmUrl);
}
};
Blockly.Blocks['rgbled_setcolor_callback'] = {
init: function () {
this.appendValueInput("color_")
.appendField(new Blockly.FieldVariable(" "), "rgbled_")
.appendField(Blockly.Msg.WEBDUINO_RGBLED_SETCOLOR, "set color");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_LED_STATE_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/rgbled.html' + utmUrl);
}
};
Blockly.Blocks['fish_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_FISH);
this.setOutput(true);
this.setColour(230);
this.setTooltip('');
this.setHelpUrl('https://webduino.io');
}
};
Blockly.Blocks['fish_angle'] = {
init: function () {
this.appendValueInput("secs_")
.appendField(new Blockly.FieldVariable(" "), "fish_")
.appendField(new Blockly.FieldDropdown([
["â " + Blockly.Msg.WEBDUINO_FISH_SOAR, "soar"],
["â " + Blockly.Msg.WEBDUINO_FISH_SINK, "sink"]
]), "angle_")
.appendField(Blockly.Msg.WEBDUINO_FISH_MOVE_FOR);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_FISH_MOVE_SEC);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl('https://webduino.io');
}
};
Blockly.Blocks['fish_move'] = {
init: function () {
this.appendValueInput("secs_")
.appendField(new Blockly.FieldVariable(" "), "fish_")
.appendField(new Blockly.FieldDropdown([
["â " + Blockly.Msg.WEBDUINO_FISH_MOVE, ""],
["⺠" + Blockly.Msg.WEBDUINO_FISH_LEFT, "1"],
["â» " + Blockly.Msg.WEBDUINO_FISH_RIGHT, "2"]
]), "direction_")
.appendField(Blockly.Msg.WEBDUINO_FISH_MOVE_FOR);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_FISH_MOVE_SEC);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_FISH_MOVE_SPEED)
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"]
]), "speed_");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl('https://webduino.io');
}
};
Blockly.Blocks['timer'] = {
init: function () {
this.appendValueInput("secs_")
.appendField(Blockly.Msg.WEBDUINO_TIMER_AFTER);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_TIMER_SECOND);
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_TIMER_DO, "do");
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(180);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['interval'] = {
init: function () {
this.appendValueInput("secs_")
.appendField(Blockly.Msg.WEBDUINO_INTERVAL_EVERY);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_INTERVAL_SECOND);
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_INTERVAL_DO);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(180);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['delay'] = {
init: function () {
this.appendValueInput("secs_")
.appendField(Blockly.Msg.WEBDUINO_DELAY);
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_DELAY_SECONDS);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(180);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/index.html' + utmUrl);
}
};
Blockly.Blocks['ultrasonic_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_NEW_TRIG, "UltraSonic, Trig:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "trig_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_NEW_ECHO, " Echo:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "echo_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/sensor/ultrasonic.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#s2p7t7
Blockly.Blocks['ultrasonic_get'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("ultrasonic"), "var_");
this.appendValueInput("time")
.setCheck("Number")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_GET_DISTANCE, "get distance over every ");
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_GET_TIME, "ms ( 1/1000 sec )");
this.appendStatementInput("do")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_GET_DO, "do");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/sensor/ultrasonic.html' + utmUrl);
}
};
Blockly.Blocks['ultrasonic_get_promise'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("ultrasonic"), "var_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_GET);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/sensor/ultrasonic.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vv8fx4
Blockly.Blocks['ultrasonic_distance'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("ultrasonic"), "var_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_DISTANCE, "'s distance");
this.setOutput(true);
this.setTooltip('');
this.setColour(35);
this.setHelpUrl(mainUrl + 'basic/sensor/ultrasonic.html' + utmUrl);
}
};
Blockly.Blocks['ultrasonic_stop'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("ultrasonic"), "var_")
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_STOP, "忢æ·åè·é¢");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/sensor/ultrasonic.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#nrzdoq
Blockly.Blocks['button_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUTTON_NEW, "Button , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/component/button.html' + utmUrl);
}
};
Blockly.Blocks['button_pullup_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUTTON_PULLUP_NEW)
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/component/button.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#hj3nxn
Blockly.Blocks['button_event'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUTTON_EVENT_WHEN, "ç¶")
.appendField(new Blockly.FieldVariable("button"), "var_")
.appendField(Blockly.Msg.WEBDUINO_BUTTON_EVENT_WAS, "é²è¡")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_BUTTON_EVENT_PRESSED, "pressed"],
[Blockly.Msg.WEBDUINO_BUTTON_EVENT_RELEASED, "released"],
[Blockly.Msg.WEBDUINO_BUTTON_EVENT_LONGPRESS, "longPress"]
]), "event_")
.appendField(Blockly.Msg.WEBDUINO_BUTTON_EVENT_TO, "æ");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_BUTTON_EVENT_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/button.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#ninxcs
Blockly.Blocks['pir_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_PIR, "PIR , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/sensor/pir.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vzwp59
Blockly.Blocks['pir_status'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_PIR_WHEN, "ç¶")
.appendField(new Blockly.FieldVariable("pir"), "item_")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_PIR_STATUS_DETECTED, "detected"],
[Blockly.Msg.WEBDUINO_PIR_STATUS_ENDED, "ended"]
]), "status_")
.appendField(Blockly.Msg.WEBDUINO_PIR_DETECTED, "嵿¸¬å°äººé«ç´
å¤ç·è®å");
this.appendStatementInput("var_")
.appendField(Blockly.Msg.WEBDUINO_PIR_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/sensor/pir.html' + utmUrl);
}
};
Blockly.Blocks['sound_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SOUND, "Sound , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/sensor/sound.html' + utmUrl);
}
};
Blockly.Blocks['sound_status'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SOUND_WHEN, "ç¶")
.appendField(new Blockly.FieldVariable("sound"), "item_")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_SOUND_STATUS_DETECTED, "detected"],
[Blockly.Msg.WEBDUINO_SOUND_STATUS_ENDED, "ended"]
]), "status_")
.appendField(Blockly.Msg.WEBDUINO_SOUND_DETECTED, "嵿¸¬å°è²é³è®å");
this.appendStatementInput("var_")
.appendField(Blockly.Msg.WEBDUINO_SOUND_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/sensor/sound.html' + utmUrl);
}
};
Blockly.Blocks['shock_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SHOCK_NEW, "Shock , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/component/shake-button.html' + utmUrl);
}
};
Blockly.Blocks['shock_event'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SHOCK_EVENT_WHEN, "ç¶")
.appendField(new Blockly.FieldVariable("shake"), "var_")
.appendField(Blockly.Msg.WEBDUINO_SHOCK_EVENT_WAS, "çæ
çº")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_SHOCK_EVENT_HIGH, "high"],
[Blockly.Msg.WEBDUINO_SHOCK_EVENT_LOW, "low"]
]), "event_")
.appendField(Blockly.Msg.WEBDUINO_SHOCK_EVENT_TO, "æ");
this.appendStatementInput("do_")
.appendField(Blockly.Msg.WEBDUINO_SHOCK_EVENT_DO, "å·è¡ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/shake-button.html' + utmUrl);
}
};
Blockly.Blocks['dht_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_DHT_NEW, "DHT , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/sensor/dht.html' + utmUrl);
}
};
Blockly.Blocks['dht_get'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("dht"), "var_");
this.appendValueInput("time")
.setCheck("Number")
.appendField(Blockly.Msg.WEBDUINO_DHT_GET, "get temperature and humidity over every ");
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_DHT_GET_TIME, "ms ( 1/1000 sec )");
this.appendStatementInput("do")
.appendField(Blockly.Msg.WEBDUINO_DHT_GET_DO, "do");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/sensor/dht.html' + utmUrl);
}
};
Blockly.Blocks['dht_get_number'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable("dht"), "name_")
.appendField(Blockly.Msg.WEBDUINO_DHT_GET_NOW, "測å¾ç®åç")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_DHT_GET_T, "temperature"],
[Blockly.Msg.WEBDUINO_DHT_GET_H, "humidity"]
]), "dht_");
this.setOutput(true);
this.setTooltip('');
this.setColour(35);
this.setHelpUrl(mainUrl + 'basic/sensor/dht.html' + utmUrl);
}
};
Blockly.Blocks['buzzer_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER, "Buzzer , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#76fim8
Blockly.Blocks['buzzer_music'] = {
init: function () {
this.appendValueInput("music_name_")
.appendField(new Blockly.FieldImage("media/notes.png", 12, 14, "å³å°åç¨"))
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1, "建ç«é³æ¨ï¼é³æ¨å稱ï¼");
this.appendStatementInput("music_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_EDIT, "é³ç¬¦èç¯å¥ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('å³å°åç¨ï¼è«æ¹ç¨ "ç¨ buzzer ææ¾..."');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
Blockly.Blocks['buzzer_var_notes_var_tempos'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_TONE, "é³ç¬¦ï¼")
.appendField(new Blockly.FieldVariable("notes"), "notes")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_TEMPOS, " ç¯å¥ ( å¹¾åä¹1ç§ )ï¼")
.appendField(new Blockly.FieldVariable("tempo"), "tempo");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setColour(35);
this.setTooltip('');
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#5k77h6
Blockly.Blocks['buzzer_notes_tempos'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_TONE, "é³ç¬¦ï¼")
.appendField(new Blockly.FieldDropdown([
["C", "C"],
["CS", "CS"],
["D", "D"],
["DS", "DS"],
["E", "E"],
["F", "F"],
["FS", "FS"],
["G", "G"],
["GS", "GS"],
["A", "A"],
["AS", "AS"],
["B", "B"],
[Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_NO, "0"]
]), "tone_")
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"]
]), "pitch_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC1_TEMPOS, " ç¯å¥ ( å¹¾åä¹1ç§ )ï¼")
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"],
["8", "8"],
["9", "9"],
["10", "10"]
]), "tempos_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(35);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
Blockly.Blocks['buzzer_music_play'] = {
init: function () {
this.appendStatementInput("music_")
.setCheck(null)
.appendField(Blockly.Msg.WEBDUINO_BUZZER_USE, "使ç¨")
.appendField(new Blockly.FieldVariable("buzzer"), "var_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_PLAY, "ææ¾ï¼");
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip('');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
Blockly.Blocks['buzzer_single'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldImage("media/notes.png", 12, 14, "å³å°åç¨"))
.appendField(Blockly.Msg.WEBDUINO_BUZZER_SINGLE, "使ç¨")
.appendField(new Blockly.FieldVariable("buzzer"), "var_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_SINGLE_TONE, "ææ¾å®é³ï¼é³ç¬¦")
.appendField(new Blockly.FieldDropdown([
["C", "C"],
["CS", "CS"],
["D", "D"],
["DS", "DS"],
["E", "E"],
["F", "F"],
["FS", "FS"],
["G", "G"],
["GS", "GS"],
["A", "A"],
["AS", "AS"],
["B", "B"]
]), "tone_")
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"]
]), "pitch_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_SINGLE_TEMPOS, "ç¯å¥")
.appendField(new Blockly.FieldDropdown([
["1", "1"],
["2", "2"],
["3", "3"],
["4", "4"],
["5", "5"],
["6", "6"],
["7", "7"],
["8", "8"],
["9", "9"],
["10", "10"]
]), "tempos_");
this.setInputsInline(false);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('å³å°åç¨ï¼è«æ¹ç¨ "ç¨ buzzer ææ¾..."');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vnhdso
Blockly.Blocks['buzzer_play'] = {
init: function () {
this.appendValueInput("play_music_")
.appendField(new Blockly.FieldImage("media/notes.png", 12, 14, "å³å°åç¨"))
.appendField(Blockly.Msg.WEBDUINO_BUZZER_USE, "使ç¨")
.appendField(new Blockly.FieldVariable("buzzer"), "var_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_PLAY, "ææ¾ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('å³å°åç¨ï¼è«æ¹ç¨ "ç¨ buzzer ææ¾..."');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#t2cidp
Blockly.Blocks['buzzer_event'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER_LET, "è®")
.appendField(new Blockly.FieldVariable("buzzer"), "var_")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_BUZZER_EVENT_STOP, ".stop()"],
[Blockly.Msg.WEBDUINO_BUZZER_EVENT_PAUSE, ".pause()"],
[Blockly.Msg.WEBDUINO_BUZZER_EVENT_RESUMEPLAY, ".play()"]
]), "event_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_EVENT_PLAY, "ææ¾");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#du7e52
Blockly.Blocks['buzzer_state'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER_CHECK, "夿·")
.appendField(new Blockly.FieldVariable("buzzer"), "var_")
.appendField(Blockly.Msg.WEBDUINO_BUZZER_STATE, "ççæ
çºï¼")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_BUZZER_STATE_STOP, "stopped"],
[Blockly.Msg.WEBDUINO_BUZZER_STATE_PAUSE, "paused"],
[Blockly.Msg.WEBDUINO_BUZZER_STATE_PLAYING, "playing"]
]), "state_");
this.setOutput(true);
this.setTooltip('');
this.setColour(65);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#tgex67
Blockly.Blocks['buzzer_music_array'] = {
init: function () {
this.appendValueInput("notes_")
.setCheck("String")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC2_NOTES, "é³ç¬¦ï¼");
this.appendValueInput("tempos_")
.setCheck("String")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.WEBDUINO_BUZZER_MUSIC2_TEMPOS, "ç¯å¥ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(35);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vv3u4z
Blockly.Blocks['buzzer_load_music'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC, "é¸æè³æåº«é³æ¨ï¼")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC1, "m1"],
[Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC4, "m4"],
[Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC2, "m2"],
[Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC3, "m3"],
[Blockly.Msg.WEBDUINO_BUZZER_CHOOSE_MUSIC5, "m5"]
]), "music_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(35);
this.setToolUrl('http://webduinoio.github.io/samples/content/buzzer-piano/');
this.setHelpUrl(mainUrl + 'basic/component/buzzer.html' + utmUrl);
}
};
Blockly.Blocks['relay_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_RELAY, "Relay , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/component/relay.html' + utmUrl);
}
};
Blockly.Blocks['relay_state'] = {
init: function () {
this.appendDummyInput()
.appendField(new Blockly.FieldVariable(" "), "relay_")
.appendField(Blockly.Msg.WEBDUINO_RELAY_SET_STATE, "set state")
.appendField(new Blockly.FieldDropdown([
["on", "on"],
["off", "off"]
]), "state_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(65);
this.setTooltip('');
this.setHelpUrl(mainUrl + 'basic/component/relay.html' + utmUrl);
}
};
Blockly.Blocks['servo_new'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SERVO, "Servo , pin:")
.appendField(new Blockly.FieldDropdown(Code.getPinDropdown), "pin_");
this.setOutput(true);
this.setTooltip('');
this.setColour(230);
this.setHelpUrl(mainUrl + 'basic/component/servo.html' + utmUrl);
}
};
Blockly.Blocks['servo_angle'] = {
init: function () {
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_SERVO_TEXT, "伺æé¦¬é")
.appendField(new Blockly.FieldVariable("servo"), "var_")
.appendField(Blockly.Msg.WEBDUINO_SERVO_ANGLE, " æè½è§åº¦ï¼")
.appendField(new Blockly.FieldAngle("90"), "angle_");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/servo.html' + utmUrl);
}
};
Blockly.Blocks['servo_angle_set'] = {
init: function () {
this.appendValueInput("angle_")
.appendField(Blockly.Msg.WEBDUINO_SERVO_TEXT, "伺æé¦¬é")
.appendField(new Blockly.FieldVariable("servo"), "var_")
.appendField(Blockly.Msg.WEBDUINO_SERVO_ANGLE, " æè½è§åº¦ï¼");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
this.setColour(65);
this.setHelpUrl(mainUrl + 'basic/component/servo.html' + utmUrl);
}
};
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#qyqz9n
Blockly.Blocks['data_firebase'] = {
init: function () {
this.appendValueInput("name_")
.appendField(Blockly.Msg.WEBDUINO_FIREBASE_NAME, "ä½¿ç¨ firebase è³æåº«");
this.appendDummyInput()
.appendField(Blockly.Msg.WEBDUINO_FIREBASE_URL, "ç¶²åï¼")
.appendField(new Blockly.FieldTextInput("https://