'use strict'; goog.provide('Blockly.Blocks.wificlient'); goog.require('Blockly.Blocks'); goog.require('Blockly.Types'); Blockly.Blocks.wificlient.HUE = "#049d90"; /**wifi client *setup for httpclient */ Blockly.Blocks['wifiClient_http_setup'] = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldImage( // "http://cocorobo.cn/cocoblockly/blockly/media/cocoblockly_http_block.png", 140, 40, "15")) "./../blockly/media/cocoblockly_http_block.png", 140, 40, "15")) this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_SETUP); this.setColour(Blockly.Blocks.wificlient.HUE); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // this.setInputsInline(true); this.setTooltip(""); this.setHelpUrl(""); }, }; /**wifi client *http request method to get */ Blockly.Blocks['wifiClient_http_get'] = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldImage( // "http://cocorobo.cn/cocoblockly/blockly/media/cocoblockly_http_block.png", 140, 40, "15")); "./../blockly/media/cocoblockly_http_block.png", 140, 40, "15")); this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_GET_URL) .appendField(new Blockly.FieldTextInput("/"), "URL"); this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_GET_DATA) .appendField(new Blockly.FieldTextInput("Data_receive"), "VAR") this.setColour(Blockly.Blocks.wificlient.HUE); // this.setOutput(true,Blockly.Types.TEXT.output); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setTooltip(""); this.setHelpUrl(""); }, }; /**WiFi Client * receive JSON data from Client,and parse it into List * @param {variable} var the list name of JSON data parse into * @param {} */ Blockly.Blocks['wifiClient_http_get_getValue'] = { init: function() { this.appendDummyInput() .appendField(" " + Blockly.Msg.WIFICLIENT_RECEIVE_GET) .appendField(new Blockly.FieldTextInput("Data_receive"), "VAR") .appendField(" " + Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE2) .appendField(new Blockly.FieldDropdown([ ["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ]), "INDEX") .appendField(" " + Blockly.Msg.WIFICLIENT_RECEIVE_GET_LINE3) .appendField(new Blockly.FieldDropdown([ [Blockly.Msg.WIFISERVER_RECEIVE_GET_INT, "Int"], [Blockly.Msg.WIFISERVER_RECEIVE_GET_STRING, "String"] ]), "TYPE") this.setColour(Blockly.Blocks.wificlient.HUE); this.setOutput(true) this.setTooltip(""); this.setHelpUrl(""); }, getBlockType: function() { return Blockly.Types.NUMBER; } } /**wifi client *http request method to post *post content {String,item,Json} */ Blockly.Blocks['wifiClient_http_post'] = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldImage( // "http://cocorobo.cn/cocoblockly/blockly/media/cocoblockly_http_block.png", 140, 40, "15")); "./../blockly/media/cocoblockly_http_block.png", 140, 40, "15")); this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_POST_URL) .appendField(new Blockly.FieldTextInput("/"), "URL"); this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_POST_VAR) .appendField(new Blockly.FieldTextInput("Data_send"), "VAR") this.appendValueInput("ADD0") .appendField(Blockly.Msg.WIFICLIENT_HTTP_POST_DATA + '0'); this.itemCount_ = 1; this.setMutator(new Blockly.Mutator(['wifiClient_create_with_item'])); this.setColour(Blockly.Blocks.wificlient.HUE); // this.setOutput(true,Blockly.Types.TEXT.output); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setInputsInline(false); this.setTooltip(""); this.setHelpUrl(""); }, mutationToDom: function() { var container = document.createElement('mutation'); container.setAttribute('items', this.itemCount_); return container; }, /** * Parse XML to restore the inputs. * @param {!Element} xmlElement XML storage element. * @this Blockly.Block */ domToMutation: function(xmlElement) { this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10); this.updateShape_(); }, /** * Populate the mutator's dialog with this block's components. * @param {!Blockly.Workspace} workspace Mutator's workspace. * @return {!Blockly.Block} Root block in mutator. * @this Blockly.Block */ decompose: function(workspace) { var containerBlock = workspace.newBlock('wifiClient_create_with_container'); containerBlock.initSvg(); var connection = containerBlock.getInput('STACK').connection; for (var i = 0; i < this.itemCount_; i++) { var itemBlock = workspace.newBlock('wifiClient_create_with_item'); itemBlock.initSvg(); connection.connect(itemBlock.previousConnection); connection = itemBlock.nextConnection; } return containerBlock; }, /** * Reconfigure this block based on the mutator dialog's components. * @param {!Blockly.Block} containerBlock Root block in mutator. * @this Blockly.Block */ compose: function(containerBlock) { var itemBlock = containerBlock.getInputTargetBlock('STACK'); // var itemBlock = containerBlock.nextConnection.targetBlock(); // Count number of inputs. var connections = []; while (itemBlock) { connections.push(itemBlock.valueConnection_); itemBlock = itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); } // Disconnect any children that don't belong. // for (var i = 0; i < this.itemCount_; i++) { // var connection = this.getInput('ADD' + i).connection.targetConnection; // if (connection && connections.indexOf(connection) == -1) { // connection.disconnect(); // } // } this.itemCount_ = connections.length; this.updateShape_(); // Reconnect any child blocks. for (var i = 0; i < this.itemCount_; i++) { Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i) } }, /** * Store pointers to any connected child blocks. * @param {!Blockly.Block} containerBlock Root block in mutator. * @this Blockly.Block */ saveConnections: function(containerBlock) { var itemBlock = containerBlock.getInputTargetBlock('STACK'); var i = 0; while (itemBlock) { var input = this.getInput('ADD' + i); i++; itemBlock = itemBlock.nextConnection && itemBlock.nextConnection.targetBlock(); } }, /** * Modify this block to have the correct number of inputs. * @private * @this Blockly.Block */ updateShape_: function() { // Add new inputs. for (var i = 0; i < this.itemCount_; i++) { if (!this.getInput('ADD' + i)) { this.appendValueInput("ADD" + i) .appendField(Blockly.Msg.WIFICLIENT_HTTP_POST_DATA + i) } } // Remove deleted inputs. while (this.getInput('ADD' + i)) { this.removeInput('ADD' + i); i++; } } }; Blockly.Blocks['wifiClient_create_with_container'] = { /** * Mutator block for list container. * @this Blockly.Block */ init: function() { this.appendDummyInput() .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD); this.appendStatementInput('STACK'); this.setColour(Blockly.Blocks.wificlient.HUE); this.setTooltip(''); this.contextMenu = false; } }; Blockly.Blocks['wifiClient_create_with_item'] = { /** * Mutator bolck for adding items. * @this Blockly.Block */ init: function() { this.setColour(Blockly.Blocks.wificlient.HUE); this.appendDummyInput() .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(''); this.contextMenu = false; } }; /**wifi client *http request method to put *put content {String,item,Json} */ Blockly.Blocks['wifiClient_http_put'] = { init: function() { this.appendDummyInput() .appendField(new Blockly.FieldImage( // "http://cocorobo.cn/cocoblockly/blockly/media/cocoblockly_http_block.png", 140, 40, "15")); "./../blockly/media/cocoblockly_http_block.png", 140, 40, "15")); this.appendValueInput("DATA") .appendField(Blockly.Msg.WIFICLIENT_HTTP_PUT_DATA); this.appendValueInput("URL") .appendField(Blockly.Msg.WIFICLIENT_HTTP_PUT_URL); this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_PUT_TYPE) .appendField(new Blockly.FieldDropdown([ [Blockly.Msg.REQUEST_DATA_STRING, "String"], [Blockly.Msg.REQUEST_DATA_CLOUD, "Cloud Data"] ]), "TYPE"); this.setColour(Blockly.Blocks.wificlient.HUE); // this.setOutput(true,Blockly.Types.TEXT.output); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setInputsInline(false); this.setTooltip(""); this.setHelpUrl(""); }, }; /**wifi Client *method to get reponse */ Blockly.Blocks['wifiClient_http_response'] = { init: function() { this.appendDummyInput() .appendField(Blockly.Msg.WIFICLIENT_HTTP_RESPONSE) this.setColour(Blockly.Blocks.wificlient.HUE); this.setOutput(true, Blockly.Types.TEXT.output); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // this.setInputsInline(true); this.setTooltip(""); this.setHelpUrl(""); }, };