August-Blockly

This commit is contained in:
Eason010212
2023-08-31 22:11:51 +08:00
parent 1c62a4aafb
commit b395707a01
3 changed files with 187 additions and 1 deletions

View File

@@ -138,6 +138,23 @@ Blockly.Blocks['publish_message'] = {
}
};
Blockly.Blocks['publish_project_message'] = {
init: function() {
this.setColour(message_HUE);
this.appendDummyInput().appendField(Blockly.Msg.TEXT_APPEND_TO);
this.appendValueInput("project").setCheck("String");
this.appendDummyInput().appendField(Blockly.Msg.VARIABLES_DEFAULT_NAME);
this.appendValueInput("topic").setCheck("String");
this.appendDummyInput().appendField(Blockly.PUBLISH_MESSAGE);
this.appendValueInput("message").setCheck("String");
this.appendDummyInput().appendField(Blockly.MESSAGE);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip("");
}
};
button_HUE = "#CFA45A";
Blockly.Blocks['button_down'] = {
@@ -1720,4 +1737,58 @@ Blockly.Blocks['text2json'] = {
this.setOutput(true, null);
this.setTooltip("");
}
};
Blockly.Blocks['get_accessToken'] = {
init: function() {
this.setColour("#1cc88a");
this.appendDummyInput().appendField(Blockly.USEAPIKEY);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.USESECRETKEY);
this.appendValueInput("name2").setCheck("String");
this.appendDummyInput().appendField(Blockly.GETTOKEN);
this.setOutput(true, null);
this.setTooltip("");
}
};
Blockly.Blocks['translate'] = {
init: function() {
this.setColour("#1cc88a");
this.appendDummyInput().appendField(Blockly.TRANSORIGIN);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.USETEXT);
this.appendValueInput("name2").setCheck("String");
this.appendDummyInput().appendField(Blockly.TOLANG);
this.appendValueInput("name3").setCheck("String");
this.appendDummyInput().appendField(Blockly.PARA1);
this.setInputsInline(true);
this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
},
getVars:function(){
return ["result"];
}
};
Blockly.Blocks['chat'] = {
init: function() {
this.setColour("#1cc88a");
this.appendDummyInput().appendField(Blockly.TRANSORIGIN);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.USETEXT2);
this.appendValueInput("name2").setCheck("String");
this.appendDummyInput().appendField(Blockly.BOT);
this.appendDummyInput().appendField(Blockly.PARA1);
this.setInputsInline(true);
this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
},
getVars:function(){
return ["result"];
}
};

View File

@@ -89,6 +89,14 @@ Blockly.JavaScript.publish_message=function(block) {
return code;
};
Blockly.JavaScript.publish_project_message=function(block) {
var project = Blockly.JavaScript.valueToCode(this, 'project', Blockly.JavaScript.ORDER_ATOMIC);
var topic = Blockly.JavaScript.valueToCode(this, 'topic', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
var code="propublish("+project+","+topic+","+message+")\n"
return code;
};
Blockly.JavaScript.button_down=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BUTTON)\n"+".bind(MixIO.eventTags.BUTTON_PRESSED, function(){\n"
@@ -672,4 +680,99 @@ Blockly.JavaScript.text2json=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="JSON.parse("+name+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.get_accessToken = function(block) {
MixIO.get_accessToken = function(client_id,client_secret){
var accessToken = undefined;
$.ajax({
type: 'POST',
url: 'proxy',
async: false,
data: {
'url': 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret+'',
'data':{
}
},
success: function(data) {
accessToken = data.access_token;
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
return accessToken;
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.get_accessToken("+name+","+name2+")";
return [code, Blockly.JavaScript.ORDER_ATOMIC];
};
Blockly.JavaScript.translate = function(block) {
MixIO.translate = function(access_token, query, to, func){
var result = undefined;
$.ajax({
type: 'POST',
url: 'proxy',
data: {
'url': 'https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token='+access_token+'',
'data':{
"from":"auto",
"to":to,
"q":query
}
},
success: function(data) {
func(data)
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var name3 = Blockly.JavaScript.valueToCode(this, 'name3', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.translate("+name+","+name2+","+name3+")";
var code="MixIO.translate("+name+","+name2+","+name3+",function(result){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.chat = function(block) {
MixIO.chat = function(access_token, message, history, func){
var result = undefined;
var allMessages = history;
allMessages.push({
"role": "user",
"content": message
})
$.ajax({
type: 'POST',
url: 'proxy',
data: {
'url': 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token='+access_token+'',
'data':{
"messages":allMessages
}
},
success: function(data) {
func(data)
},
error: function(xhr, type) {
MixIO.log(xhr);
}
});
}
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var name2 = Blockly.JavaScript.valueToCode(this, 'name2', Blockly.JavaScript.ORDER_ATOMIC);
var name3 = "[]";
var code="MixIO.chat("+name+","+name2+","+name3+")";
var code="MixIO.chat("+name+","+name2+","+name3+",function(result){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};

View File

@@ -311,6 +311,7 @@ Blockly.Msg["RENAME_VARIABLE"] = "重命名变量...";
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "将所有“%1”变量重命名为:";
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
Blockly.Msg["TEXT_APPEND_TITLE"] = "在%1之后加上文本%2";
Blockly.Msg["TEXT_APPEND_TO"] = "向";
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "将一些文本追加到变量“%1”里。";
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "转为小写";
@@ -553,4 +554,15 @@ Blockly.GET_LATI = "获取当前纬度";
Blockly.GET_KEYBOARD_INPUT="文本输入的文本";
Blockly.JSON2TEXT = "字典转文本";
Blockly.TEXT2JSON = "文本转字典";
Blockly.TEXT2JSON = "文本转字典";
Blockly.USEAPIKEY = "使用百度API Key";
Blockly.USESECRETKEY = "和Secret Key";
Blockly.GETTOKEN = "获取的Access Token";
Blockly.TRANSORIGIN = "使用Access Token";
Blockly.USETEXT = "将文本";
Blockly.USETEXT2 = "使用文本";
Blockly.BOT = "与文心一言对话";
Blockly.TOLANG = "翻译为";
Blockly.PARA1 = ",参数: result";