Я разрабатываю пользовательские блоки для решения по автоматизации. Я создал блок «switch», а также блок «set». Функция, которую я хочу достичь, это «установить xx_name_switch в true», в основном включать и выключать свет.
Когда я запускаю workspaceToCode на коммутаторе и блоке логики c, я получаю правильный вывод> ({"ma c": "D8: F1: 5B: D7: 69: A7", "state") : "1"}) == true;
Но теперь, когда я добавляю блок "set", я получаю только "SET" в качестве вывод кода !! где я ожидал>
"SET ({" ma c ":" D8: F1: 5B: D7: 69: A7 "," state ":" 1 "}) == true;"
Любая подсказка, что я делаю не так? вот код для пользовательских блоков
Blockly.Blocks['devices_4g_switch'] = {
init: function() {
// array definition for dynamic.
this.savedExpressionArray = [];
this.appendDummyInput()
.setAlign(Blockly.ALIGN_CENTRE)
.appendField("switch name")
// we have to add the binding so that "this" refers to the correct object.
.appendField(new Blockly.FieldDropdown(this.devicesList.bind(this)), 'NAME');
this.appendDummyInput()
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(new Blockly.FieldDropdown([["Switch 1","1"], ["Switch 2","2"], ["Switch 3","3"], ["Switch 4","4"], ["Switch all","0"]]), "switchs");
this.setInputsInline(true);
this.setOutput(true, null);
this.setColour(230);
this.setTooltip("4gang wireless switch");
this.setHelpUrl("");
},
devicesList: function() {
// gather devices list
var deviceList = [];
$('#devices-grid div.device-card').each(function(i) {
var dData = JSON.parse($(this).attr('data-settings'));
deviceList.push([dData.name, dData.mac]);
});
// These things changed to call this.savedExpressionArray.
for (var i = 0; i < this.savedExpressionArray.length; i++) {
deviceList.push( this.savedExpressionArray[i], 'OPTION' + i);
}
return deviceList;
}
};
Blockly.JavaScript['devices_4g_switch'] = function(block) {
var dropdown_name = block.getFieldValue('NAME');
var dropdown_switchs = block.getFieldValue('switchs');
var value_name = Blockly.JavaScript.valueToCode(block, 'NAME', Blockly.JavaScript.ORDER_ATOMIC);
// TODO: Assemble JavaScript into code variable.
var code = JSON.stringify({mac:dropdown_name, state:dropdown_switchs});
// TODO: Change ORDER_NONE to the correct strength.
return [code, Blockly.JavaScript.ORDER_NONE];
};
Blockly.Blocks['logic_set'] = {
init: function() {
this.appendValueInput("SET")
.setCheck("Boolean")
.appendField("Set");
this.setInputsInline(true);
this.setColour(230);
this.setTooltip("");
this.setHelpUrl("");
}
};
Blockly.JavaScript['logic_set'] = function(block) {
var value_set = Blockly.JavaScript.valueToCode(block, 'SET', Blockly.JavaScript.ORDER_ATOMIC);
// TODO: Assemble JavaScript into code variable.
var code = 'SET';
return code;
};