add_select_blocks
This commit is contained in:
@@ -325,6 +325,20 @@ Blockly.Blocks['through_textinput_send'] = {
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks['through_select_send'] = {
|
||||
init: function() {
|
||||
this.setColour(textinput_HUE);
|
||||
this.appendDummyInput().appendField(Blockly.THROUGH);
|
||||
this.appendValueInput("name").setCheck("String");
|
||||
this.appendDummyInput().appendField(Blockly.SELECT_SEND);
|
||||
this.appendValueInput("message").setCheck("String");
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip("");
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks['get_keyboard_input'] = {
|
||||
init: function() {
|
||||
this.setColour(textinput_HUE);
|
||||
@@ -336,6 +350,17 @@ Blockly.Blocks['get_keyboard_input'] = {
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks['get_select_options'] = {
|
||||
init: function() {
|
||||
this.setColour(textinput_HUE);
|
||||
this.appendDummyInput().appendField(Blockly.MIXLY_MICROBIT_PY_STORAGE_GET);
|
||||
this.appendValueInput("name").setCheck("String");
|
||||
this.appendDummyInput().appendField(Blockly.GET_SELECT_OPTIONS);
|
||||
this.setOutput(true, null);
|
||||
this.setTooltip("");
|
||||
}
|
||||
};
|
||||
|
||||
joystick_HUE = "#4e73df";
|
||||
|
||||
Blockly.Blocks['when_joystick_dragged'] = {
|
||||
@@ -711,6 +736,24 @@ Blockly.Blocks['mic_sent'] = {
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks['select_sent'] = {
|
||||
init: function() {
|
||||
this.setColour(lineChart_HUE);
|
||||
this.appendDummyInput().appendField(Blockly.MIXLY_MICROBIT_JS_CURRENT);
|
||||
this.appendValueInput("name").setCheck("String");
|
||||
this.appendDummyInput().appendField(Blockly.SELECT_SENT);
|
||||
this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS+"value");
|
||||
this.setInputsInline(true);
|
||||
this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip("");
|
||||
},
|
||||
getVars:function(){
|
||||
return ["time","value"];
|
||||
}
|
||||
};
|
||||
|
||||
Blockly.Blocks['lineChart_send'] = {
|
||||
init: function() {
|
||||
this.appendDummyInput().appendField(Blockly.TO);
|
||||
@@ -2110,7 +2153,14 @@ Blockly.JavaScript.when_textinput_send=function(block) {
|
||||
Blockly.JavaScript.through_textinput_send=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var code="MixIO.getInstance("+name+",MixIO.typeTags.KEYBOARD)\n"+".trigger(MixIO.actionTags.KEYBOARD_SEND,"+message+")"
|
||||
var code="MixIO.getInstance("+name+",MixIO.typeTags.KEYBOARD)\n"+".trigger(MixIO.actionTags.KEYBOARD_SEND,"+message+")\n"
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.JavaScript.through_select_send=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var code="MixIO.getInstance("+name+",MixIO.typeTags.SELECT)\n"+".trigger(MixIO.actionTags.SELECT_SEND,"+message+")\n"
|
||||
return code;
|
||||
};
|
||||
|
||||
@@ -2127,6 +2177,12 @@ Blockly.JavaScript.get_keyboard_input=function(block) {
|
||||
return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
Blockly.JavaScript.get_select_options=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var code="MixIO.getInstance("+name+",MixIO.typeTags.SELECT).getOptions()";
|
||||
return [code, Blockly.JavaScript.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
Blockly.JavaScript.through_joystick_send=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var x = Blockly.JavaScript.valueToCode(this, 'x', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
@@ -2283,6 +2339,13 @@ Blockly.JavaScript.mic_sent=function(block) {
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.JavaScript.select_sent=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var code="MixIO.getInstance("+name+",MixIO.typeTags.SELECT)\n"+".bind(MixIO.eventTags.SELECT_SENT, function(event,value){\n"
|
||||
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
|
||||
return code;
|
||||
};
|
||||
|
||||
Blockly.JavaScript.lineChart_send=function(block) {
|
||||
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
|
||||
@@ -3235,6 +3298,7 @@ Blockly.SLIDER_NUM="滑杆的数值";
|
||||
Blockly.WHEN_TEXTINPUT_SEND="文本输入发送消息时";
|
||||
Blockly.THROUGH="通过";
|
||||
Blockly.TEXTINPUT_SEND="文本输入发送消息";
|
||||
Blockly.SELECT_SEND="下拉选项发送消息并变更选项为";
|
||||
|
||||
Blockly.JOYSTICK_DRAGGED="摇杆被拖动时";
|
||||
Blockly.JOYSTICK_SENDXY="摇杆发送位置消息";
|
||||
@@ -3276,6 +3340,7 @@ Blockly.BLUETOOTH_SENT = "蓝牙转发器发送消息"
|
||||
|
||||
Blockly.CAMERA_SENT = "摄像头发送消息时"
|
||||
Blockly.MIC_SENT = "语音识别发送消息时"
|
||||
Blockly.SELECT_SENT = "下拉选项发送消息时"
|
||||
|
||||
Blockly.BARCHART_RECIEVED="柱状图收到消息时";
|
||||
Blockly.BARCHART_SEND_MESSAGE="柱状图发送消息";
|
||||
@@ -3351,6 +3416,7 @@ Blockly.GET_LONG = "获取当前经度";
|
||||
Blockly.GET_LATI = "获取当前纬度";
|
||||
|
||||
Blockly.GET_KEYBOARD_INPUT="文本输入的文本";
|
||||
Blockly.GET_SELECT_OPTIONS = "下拉选项的选项列表"
|
||||
|
||||
Blockly.JSON2TEXT = "字典转文本";
|
||||
Blockly.TEXT2JSON = "文本转字典";
|
||||
|
||||
@@ -980,7 +980,34 @@
|
||||
</value>
|
||||
</block>
|
||||
</category>
|
||||
<category name="下拉选项" colour="#4e73df" css-icon="customIcon fa fa-list"></category>
|
||||
<category name="下拉选项" colour="#4e73df" css-icon="customIcon fa fa-list">
|
||||
<block type="select_sent">
|
||||
<value name="name">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">name</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="through_select_send">
|
||||
<value name="name">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">name</field>
|
||||
</shadow>
|
||||
</value>
|
||||
<value name="message">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">message</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
<block type="get_select_options">
|
||||
<value name="name">
|
||||
<shadow type="text">
|
||||
<field name="TEXT">name</field>
|
||||
</shadow>
|
||||
</value>
|
||||
</block>
|
||||
</category>
|
||||
<category name="文本输入" colour="#4e73df" css-icon="customIcon fa fa-i-cursor">
|
||||
<block type="when_textinput_send">
|
||||
<value name="name">
|
||||
|
||||
21
js/MixIO.js
21
js/MixIO.js
@@ -84,13 +84,14 @@ var MixIO = {
|
||||
TRIGGER: 15,
|
||||
BLE: 16,
|
||||
CAMERA: 17,
|
||||
MIC: 18
|
||||
MIC: 18,
|
||||
SELECT: 19
|
||||
},
|
||||
|
||||
oldTags: ["input_button", "input_slider", "input_keyboard", "input_controller", "input_rgb", "output_bulb", "output_text",
|
||||
"output_chart", "output_bar", "table", "output_dashboard", "output_map", "input_weather", "timer", "trigger", "ble", "camera", "input_mic"
|
||||
"output_chart", "output_bar", "table", "output_dashboard", "output_map", "input_weather", "timer", "trigger", "ble", "camera", "input_mic", "tinydb"
|
||||
],
|
||||
zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头", "语音识别"],
|
||||
zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头", "语音识别", "下拉选项"],
|
||||
|
||||
/*合法的MixIO事件种类*/
|
||||
eventTags: {
|
||||
@@ -136,7 +137,9 @@ var MixIO = {
|
||||
|
||||
CAMERA_SENT: "1711",
|
||||
|
||||
MIC_SENT: "1811"
|
||||
MIC_SENT: "1811",
|
||||
|
||||
SELECT_SENT: "1911"
|
||||
|
||||
},
|
||||
|
||||
@@ -176,9 +179,11 @@ var MixIO = {
|
||||
WEATHER_SYNC: "1321", //更新气象仪数据
|
||||
WEATHER_SEND: "1322", //发送气象仪数据
|
||||
|
||||
TRIGGER_TIMER: "1411",
|
||||
TRIGGER_TIMER: "1421",
|
||||
|
||||
BLUETOOTH_SENT: "1611"
|
||||
BLUETOOTH_SENT: "1621",
|
||||
|
||||
SELECT_SEND: "1921"
|
||||
},
|
||||
publish: function(topic, message) {
|
||||
// if message undefined
|
||||
@@ -248,6 +253,10 @@ var MixIO = {
|
||||
instance.getText = function() {
|
||||
return instance.attr('user-content')
|
||||
}
|
||||
} else if (type === MixIO.typeTags.SELECT) {
|
||||
instance.getOptions = function() {
|
||||
return instance.attr('user-content').split(",")
|
||||
}
|
||||
} else if (type === MixIO.typeTags.RGB_PICKER) {
|
||||
//获取RGB色盘当前颜色
|
||||
instance.getColor = function() {
|
||||
|
||||
@@ -1307,6 +1307,7 @@ function add_tinydb(user_title, user_topic, user_content, user_style, title_styl
|
||||
sendIcon.bind('click', function(event) {
|
||||
event.stopPropagation()
|
||||
publish(topic.text(), messDiv.val())
|
||||
itemdiv.trigger(MixIO.eventTags.SELECT_SENT, messDiv.val())
|
||||
sendIcon.removeClass("btn-primary")
|
||||
sendIcon.addClass("btn-success")
|
||||
sendIcon.children().removeClass('fa-paper-plane')
|
||||
@@ -1322,6 +1323,7 @@ function add_tinydb(user_title, user_topic, user_content, user_style, title_styl
|
||||
sendIcon.bind('touchend', function(event) {
|
||||
event.stopPropagation()
|
||||
publish(topic.text(), messDiv.val())
|
||||
itemdiv.trigger(MixIO.eventTags.SELECT_SENT, messDiv.val())
|
||||
sendIcon.removeClass("btn-primary")
|
||||
sendIcon.addClass("btn-success")
|
||||
sendIcon.children().removeClass('fa-paper-plane')
|
||||
@@ -1335,7 +1337,8 @@ function add_tinydb(user_title, user_topic, user_content, user_style, title_styl
|
||||
})
|
||||
contents.push(keyDiv)
|
||||
var itemdiv = add_block(3, 1, contents, attrs)
|
||||
itemdiv.bind(MixIO.actionTags.KEYBOARD_SEND, function(event, message) {
|
||||
// Aug 2025
|
||||
itemdiv.bind(MixIO.actionTags.SELECT_SEND, function(event, message) {
|
||||
messDiv.val(message)
|
||||
publish(topic.text(), messDiv.val())
|
||||
sendIcon.removeClass("btn-primary")
|
||||
@@ -1526,6 +1529,7 @@ function add_mic(user_title, user_topic, user_content, user_style, title_style)
|
||||
sendIcon.bind('mouseup', function(event) {
|
||||
event.stopPropagation()
|
||||
})
|
||||
// Aug 2025
|
||||
if (window.screen.width > 800)
|
||||
sendIcon.bind('click', function(event) {
|
||||
event.stopPropagation()
|
||||
|
||||
Reference in New Issue
Block a user