easymode.js 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081
  1. // 'use strict';
  2. // goog.provide('Blockly.Blocks.easymode');
  3. // goog.require('Blockly.Blocks');
  4. // goog.require('Blockly.Types');
  5. // Blockly.Blocks.easymode.HUE = 215;
  6. // /*wifi easymode
  7. // *setup for WiFi network
  8. // */
  9. // Blockly.Blocks['wifiEasymode_network'] = {
  10. // init: function() {
  11. // this.appendDummyInput()
  12. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_NETWORK_TITLE)
  13. // this.appendDummyInput()
  14. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_NETWORK_SSID)
  15. // .appendField(new Blockly.FieldTextInput("CocoRobo"), "wifi_ssid")
  16. // this.appendDummyInput()
  17. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_NETWORK_PW)
  18. // .appendField(new Blockly.FieldTextInput("cocorobo"), "wifi_pw")
  19. // this.setColour("#e55d58");
  20. // // this.setPreviousStatement(true, null);
  21. // // this.setNextStatement(true, null);
  22. // // this.setInputsInline(true);
  23. // this.setTooltip("");
  24. // this.setHelpUrl("");
  25. // },
  26. // };
  27. // /*****************************************************************************************/
  28. // /*wifi easymode
  29. // *setup for WiFi network
  30. // */
  31. // Blockly.Blocks['wifiEasymode_thingspeak'] = {
  32. // init: function() {
  33. // this.appendDummyInput()
  34. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  35. // .appendField(new Blockly.FieldImage("./../blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  36. // this.appendDummyInput()
  37. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_THINGSPEAK_APIKEY)
  38. // this.appendDummyInput()
  39. // .appendField(" ")
  40. // .appendField(new Blockly.FieldTextInput("bAssF9YJ_7oZP1k4et_IUx"), "API_KEY")
  41. // this.appendDummyInput()
  42. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_THINGSPEAK_SENDDATA)
  43. // this.itemCount_ = 1;
  44. // this.updateShape_();
  45. // this.setMutator(new Blockly.Mutator(['thingspeakEM_create_with_item']));
  46. // this.setColour("#204d86");
  47. // this.setPreviousStatement(true, null);
  48. // this.setNextStatement(true, null);
  49. // // this.setInputsInline(true);
  50. // this.setTooltip("");
  51. // this.setHelpUrl("");
  52. // },
  53. // mutationToDom: function() {
  54. // var container = document.createElement('mutation');
  55. // container.setAttribute('items', this.itemCount_);
  56. // return container;
  57. // },
  58. // /**
  59. // * Parse XML to restore the inputs.
  60. // * @param {!Element} xmlElement XML storage element.
  61. // * @this Blockly.Block
  62. // */
  63. // domToMutation: function(xmlElement) {
  64. // this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
  65. // this.updateShape_();
  66. // },
  67. // /**
  68. // * Populate the mutator's dialog with this block's components.
  69. // * @param {!Blockly.Workspace} workspace Mutator's workspace.
  70. // * @return {!Blockly.Block} Root block in mutator.
  71. // * @this Blockly.Block
  72. // */
  73. // decompose: function(workspace) {
  74. // var containerBlock = workspace.newBlock('thingspeakEM_create_with_container');
  75. // containerBlock.initSvg();
  76. // var connection = containerBlock.getInput('STACK').connection;
  77. // for (var i = 0; i < this.itemCount_; i++) {
  78. // var itemBlock = workspace.newBlock('thingspeakEM_create_with_item');
  79. // itemBlock.initSvg();
  80. // connection.connect(itemBlock.previousConnection);
  81. // connection = itemBlock.nextConnection;
  82. // }
  83. // return containerBlock;
  84. // },
  85. // /**
  86. // * Reconfigure this block based on the mutator dialog's components.
  87. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  88. // * @this Blockly.Block
  89. // */
  90. // compose: function(containerBlock) {
  91. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  92. // // Count number of inputs.
  93. // var connections = [];
  94. // while (itemBlock) {
  95. // connections.push(itemBlock.valueConnection_);
  96. // itemBlock = itemBlock.nextConnection &&
  97. // itemBlock.nextConnection.targetBlock();
  98. // }
  99. // // Disconnect any children that don't belong.
  100. // for (var i = 0; i < this.itemCount_; i++) {
  101. // var connection = this.getInput('ADD' + i).connection.targetConnection;
  102. // if (connection && connections.indexOf(connection) == -1) {
  103. // connection.disconnect();
  104. // }
  105. // }
  106. // this.itemCount_ = connections.length;
  107. // this.updateShape_();
  108. // // Reconnect any child blocks.
  109. // for (var i = 0; i < this.itemCount_; i++) {
  110. // Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
  111. // }
  112. // },
  113. // /**
  114. // * Store pointers to any connected child blocks.
  115. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  116. // * @this Blockly.Block
  117. // */
  118. // saveConnections: function(containerBlock) {
  119. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  120. // var i = 0;
  121. // while (itemBlock) {
  122. // var input = this.getInput('ADD' + i);
  123. // itemBlock.valueConnection_ = input && input.connection.targetConnection;
  124. // i++;
  125. // itemBlock = itemBlock.nextConnection &&
  126. // itemBlock.nextConnection.targetBlock();
  127. // }
  128. // },
  129. // /**
  130. // * Modify this block to have the correct number of inputs.
  131. // * @private
  132. // * @this Blockly.Block
  133. // */
  134. // updateShape_: function() {
  135. // if (this.itemCount_ && this.getInput('EMPTY')) {
  136. // this.removeInput('EMPTY');
  137. // } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
  138. // this.appendDummyInput('EMPTY')
  139. // .appendField(this.newQuote_(true))
  140. // .appendField(this.newQuote_(false));
  141. // }
  142. // // Add new inputs.
  143. // for (var i = 0; i < this.itemCount_; i++) {
  144. // if (!this.getInput('ADD' + i)) {
  145. // var input = this.appendValueInput('ADD' + i);
  146. // input.appendField(" " + "Field " + (i + 1) + ":");
  147. // }
  148. // }
  149. // if (!this.getInput('ADD' + this.itemCount_)) {
  150. // this.appendDummyInput('ADD' + this.itemCount_);
  151. // }
  152. // // Remove deleted inputs.
  153. // while (this.getInput('ADD' + i)) {
  154. // this.removeInput('ADD' + i);
  155. // i++;
  156. // }
  157. // },
  158. // };
  159. // Blockly.Blocks['thingspeakEM_create_with_container'] = {
  160. // /**
  161. // * Mutator block for list container.
  162. // * @this Blockly.Block
  163. // */
  164. // init: function() {
  165. // this.setColour("#204d86");
  166. // this.appendDummyInput()
  167. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD);
  168. // this.appendStatementInput('STACK');
  169. // this.setTooltip('');
  170. // this.contextMenu = false;
  171. // }
  172. // };
  173. // Blockly.Blocks['thingspeakEM_create_with_item'] = {
  174. // /**
  175. // * Mutator bolck for adding items.
  176. // * @this Blockly.Block
  177. // */
  178. // init: function() {
  179. // this.setColour("#204d86");
  180. // this.appendDummyInput()
  181. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE);
  182. // this.setPreviousStatement(true);
  183. // this.setNextStatement(true);
  184. // this.setTooltip('');
  185. // this.contextMenu = false;
  186. // }
  187. // };
  188. // /*****************************************************************************************/
  189. // /*wifi easymode
  190. // * CocoCloud
  191. // * post data {JSON} to Cloud event
  192. // */
  193. // Blockly.Blocks['wifiEasymode_cococloud_post'] = {
  194. // init: function() {
  195. // this.appendDummyInput()
  196. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  197. // .appendField(new Blockly.FieldImage("./../blockly/media/blockly-easymode_cococloud.png", 180, 40, "0"));
  198. // this.appendDummyInput()
  199. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT);
  200. // this.appendDummyInput("ADD0")
  201. // .appendField(" ")
  202. // // .appendField(new Blockly.FieldDropdown([
  203. // // ["Your event", "Your event"]
  204. // // ]), "event0");
  205. // .appendField(new Blockly.FieldTextInput("http://api.cocorobo.cn/iot/data/apikey/af69409636e28e959252812bf7397f200f3a9de368f298e8926edc706c534eaa/event/camera"), "event0")
  206. // this.appendValueInput("dataA")
  207. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA)
  208. // // this.updateEvent_();
  209. // this.setColour("#5da5f9");
  210. // this.setPreviousStatement(true, null);
  211. // this.setNextStatement(true, null);
  212. // // this.setInputsInline(true);
  213. // this.setTooltip("");
  214. // this.setHelpUrl("");
  215. // },
  216. // updateEvent_: function() {
  217. // // Add new inputs.
  218. // var self = this;
  219. // var input = this.getInput('ADD0');
  220. // var api_key = document.getElementById('api-key').innerHTML || "";
  221. // $.ajax({
  222. // // url: '//api.cocorobo.cn/iot/data/apikey/' + api_key + '/event/',
  223. // url: '//staging.cocorobo.cn/api/iot/data/apikey/' + api_key + '/event/',
  224. // xhrFields: {
  225. // withCredentials: true
  226. // },
  227. // type: 'GET',
  228. // success: function(data) {
  229. // var eventsName = [];
  230. // if (data != null) {
  231. // $.each(data, function(i, obj) {
  232. // var temparray = []
  233. // temparray.push(obj.name);
  234. // temparray.push(obj.url);
  235. // eventsName.push(temparray);
  236. // });
  237. // self.eventsName = eventsName;
  238. // input.removeField("event0");
  239. // input.appendField(new Blockly.FieldDropdown(eventsName), "event0");
  240. // }
  241. // },
  242. // error: function(error) {
  243. // console.log("error");
  244. // }
  245. // });
  246. // }
  247. // }
  248. // /*wifi easymode
  249. // * CocoCloud
  250. // * post data {JSON} to Cloud event
  251. // */
  252. // Blockly.Blocks['wifiEasymode_cococloud_get'] = {
  253. // init: function() {
  254. // this.appendDummyInput()
  255. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  256. // .appendField(new Blockly.FieldImage("./../blockly/media/blockly-easymode_cococloud.png", 180, 40, "0"));
  257. // this.appendDummyInput()
  258. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT)
  259. // this.appendDummyInput("ADD0")
  260. // .appendField(" ")
  261. // // .appendField(new Blockly.FieldDropdown([
  262. // // ["Your event", "Your event"]
  263. // // ]), "event0");
  264. // .appendField(new Blockly.FieldTextInput("http://api.cocorobo.cn/iot/data/apikey/af69409636e28e959252812bf7397f200f3a9de368f298e8926edc706c534eaa/event/camera"), "event0")
  265. // this.appendDummyInput()
  266. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA)
  267. // .appendField(new Blockly.FieldVariable("dataGet"), "DATAVAR");
  268. // // this.updateEvent_();
  269. // this.setColour("#5da5f9");
  270. // this.setPreviousStatement(true, null);
  271. // this.setNextStatement(true, null);
  272. // // this.setInputsInline(true);
  273. // this.setTooltip("");
  274. // this.setHelpUrl("");
  275. // },
  276. // updateEvent_: function() {
  277. // // Add new inputs.
  278. // var self = this;
  279. // var input = this.getInput('ADD0');
  280. // var api_key = document.getElementById('api-key').innerHTML || "";
  281. // $.ajax({
  282. // // url: '//api.cocorobo.cn/iot/data/apikey/' + api_key + '/event/',
  283. // url: '//staging.cocorobo.cn/api/iot/data/apikey/' + api_key + '/event/',
  284. // xhrFields: {
  285. // withCredentials: true
  286. // },
  287. // type: 'GET',
  288. // success: function(data) {
  289. // var eventsName = [];
  290. // if (data != null) {
  291. // $.each(data, function(i, obj) {
  292. // var temparray = []
  293. // temparray.push(obj.name);
  294. // temparray.push(obj.url);
  295. // eventsName.push(temparray);
  296. // });
  297. // self.eventsName = eventsName;
  298. // input.removeField("event0");
  299. // input.appendField(new Blockly.FieldDropdown(eventsName), "event0");
  300. // }
  301. // },
  302. // error: function(error) {
  303. // console.log("error");
  304. // }
  305. // });
  306. // },
  307. // getVarType: function(varName) {
  308. // let vartype = Blockly.Types.TEXT;
  309. // return vartype;
  310. // }
  311. // }
  312. // /*****************************************************************************************/
  313. // /*wifi easymode
  314. // * CocoCloud
  315. // * post data {JSON} to Cloud event
  316. // */
  317. // Blockly.Blocks['wifiEasymode_cococloud2_post'] = {
  318. // init: function() {
  319. // this.appendDummyInput()
  320. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  321. // .appendField(new Blockly.FieldImage("./../blockly/media/cloud-tx.png", 180, 40, "0"));
  322. // this.appendDummyInput()
  323. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT);
  324. // this.appendDummyInput()
  325. // .appendField(" ")
  326. // // .appendField(new Blockly.FieldDropdown([
  327. // // ["Your event", "Your event"]
  328. // // ]), "event0");
  329. // .appendField(new Blockly.FieldTextInput("d0f98bb70ae070cd89725780e67dfe6b"), "event0")
  330. // this.appendDummyInput()
  331. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SENDDATA);
  332. // this.appendValueInput("ADD0")
  333. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME)
  334. // .appendField(new Blockly.FieldTextInput("EM_data0"), "field0")
  335. // this.itemCount_ = 1;
  336. // this.updateShape_();
  337. // this.setMutator(new Blockly.Mutator(['cococloud_create_with_item']));
  338. // // this.updateEvent_();
  339. // this.setColour("#5da5f9");
  340. // this.setPreviousStatement(true, null);
  341. // this.setNextStatement(true, null);
  342. // // this.setInputsInline(true);
  343. // this.setTooltip("");
  344. // this.setHelpUrl("");
  345. // },
  346. // mutationToDom: function() {
  347. // var container = document.createElement('mutation');
  348. // container.setAttribute('items', this.itemCount_);
  349. // return container;
  350. // },
  351. // /**
  352. // * Parse XML to restore the inputs.
  353. // * @param {!Element} xmlElement XML storage element.
  354. // * @this Blockly.Block
  355. // */
  356. // domToMutation: function(xmlElement) {
  357. // this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
  358. // this.updateShape_();
  359. // },
  360. // /**
  361. // * Populate the mutator's dialog with this block's components.
  362. // * @param {!Blockly.Workspace} workspace Mutator's workspace.
  363. // * @return {!Blockly.Block} Root block in mutator.
  364. // * @this Blockly.Block
  365. // */
  366. // decompose: function(workspace) {
  367. // var containerBlock = workspace.newBlock('cococloud_create_with_container');
  368. // containerBlock.initSvg();
  369. // var connection = containerBlock.getInput('STACK').connection;
  370. // for (var i = 0; i < this.itemCount_; i++) {
  371. // var itemBlock = workspace.newBlock('cococloud_create_with_item');
  372. // itemBlock.initSvg();
  373. // connection.connect(itemBlock.previousConnection);
  374. // connection = itemBlock.nextConnection;
  375. // }
  376. // return containerBlock;
  377. // },
  378. // /**
  379. // * Reconfigure this block based on the mutator dialog's components.
  380. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  381. // * @this Blockly.Block
  382. // */
  383. // compose: function(containerBlock) {
  384. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  385. // // Count number of inputs.
  386. // var connections = [];
  387. // while (itemBlock) {
  388. // connections.push(itemBlock.valueConnection_);
  389. // itemBlock = itemBlock.nextConnection &&
  390. // itemBlock.nextConnection.targetBlock();
  391. // }
  392. // // Disconnect any children that don't belong.
  393. // for (var i = 0; i < this.itemCount_; i++) {
  394. // var connection = this.getInput('ADD' + i).connection.targetConnection;
  395. // if (connection && connections.indexOf(connection) == -1) {
  396. // connection.disconnect();
  397. // }
  398. // }
  399. // this.itemCount_ = connections.length;
  400. // this.updateShape_();
  401. // // Reconnect any child blocks.
  402. // for (var i = 0; i < this.itemCount_; i++) {
  403. // Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
  404. // }
  405. // },
  406. // /**
  407. // * Store pointers to any connected child blocks.
  408. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  409. // * @this Blockly.Block
  410. // */
  411. // saveConnections: function(containerBlock) {
  412. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  413. // var i = 0;
  414. // while (itemBlock) {
  415. // var input = this.getInput('ADD' + i);
  416. // itemBlock.valueConnection_ = input && input.connection.targetConnection;
  417. // i++;
  418. // itemBlock = itemBlock.nextConnection &&
  419. // itemBlock.nextConnection.targetBlock();
  420. // }
  421. // },
  422. // /**
  423. // * Modify this block to have the correct number of inputs.
  424. // * @private
  425. // * @this Blockly.Block
  426. // */
  427. // updateShape_: function() {
  428. // if (this.itemCount_ && this.getInput('EMPTY')) {
  429. // this.removeInput('EMPTY');
  430. // } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
  431. // this.appendDummyInput('EMPTY')
  432. // .appendField(this.newQuote_(true))
  433. // .appendField(this.newQuote_(false));
  434. // }
  435. // // Add new inputs.
  436. // for (var i = 0; i < this.itemCount_; i++) {
  437. // if (!this.getInput('ADD' + i)) {
  438. // var input = this.appendValueInput('ADD' + i);
  439. // input.appendField(Blockly.Msg.WIFIEASYMODE_COCOClOUD_DATA_NAME)
  440. // .appendField(new Blockly.FieldTextInput("EM_data" + i), "field" + i);
  441. // }
  442. // }
  443. // if (!this.getInput('ADD' + this.itemCount_)) {
  444. // this.appendDummyInput('ADD' + this.itemCount_);
  445. // }
  446. // // Remove deleted inputs.
  447. // while (this.getInput('ADD' + i)) {
  448. // this.removeInput('ADD' + i);
  449. // i++;
  450. // }
  451. // },
  452. // updateEvent_: function() {
  453. // // Add new inputs.
  454. // var self = this;
  455. // var input = this.getInput('ADD0');
  456. // var api_key = document.getElementById('api-key').innerHTML || "";
  457. // $.ajax({
  458. // // url: '//api.cocorobo.cn/iot/data/apikey/' + api_key + '/event/',
  459. // url: '//staging.cocorobo.cn/api/iot/data/apikey/' + api_key + '/event/',
  460. // xhrFields: {
  461. // withCredentials: true
  462. // },
  463. // type: 'GET',
  464. // success: function(data) {
  465. // var eventsName = [];
  466. // if (data != null) {
  467. // $.each(data, function(i, obj) {
  468. // var temparray = []
  469. // temparray.push(obj.name);
  470. // temparray.push(obj.url);
  471. // eventsName.push(temparray);
  472. // });
  473. // self.eventsName = eventsName;
  474. // input.removeField("event0");
  475. // input.appendField(new Blockly.FieldDropdown(eventsName), "event0");
  476. // }
  477. // },
  478. // error: function(error) {
  479. // console.log("error");
  480. // }
  481. // });
  482. // }
  483. // };
  484. // Blockly.Blocks['cococloud_create_with_container'] = {
  485. // /**
  486. // * Mutator block for list container.
  487. // * @this Blockly.Block
  488. // */
  489. // init: function() {
  490. // this.setColour("#5da5f9");
  491. // this.appendDummyInput()
  492. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD);
  493. // this.appendStatementInput('STACK');
  494. // this.setTooltip('');
  495. // this.contextMenu = false;
  496. // }
  497. // };
  498. // Blockly.Blocks['cococloud_create_with_item'] = {
  499. // /**
  500. // * Mutator bolck for adding items.
  501. // * @this Blockly.Block
  502. // */
  503. // init: function() {
  504. // this.setColour("#5da5f9");
  505. // this.appendDummyInput()
  506. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE);
  507. // this.setPreviousStatement(true);
  508. // this.setNextStatement(true);
  509. // this.setTooltip('');
  510. // this.contextMenu = false;
  511. // },
  512. // }
  513. // /*wifi easymode
  514. // * CocoCloud
  515. // * post data {JSON} to Cloud event
  516. // */
  517. // Blockly.Blocks['wifiEasymode_cococloud2_get'] = {
  518. // init: function() {
  519. // this.appendDummyInput()
  520. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  521. // .appendField(new Blockly.FieldImage("./../blockly/media/cloud-rx.png", 180, 40, "0"));
  522. // this.appendDummyInput()
  523. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOClOUD_EVENT)
  524. // this.appendDummyInput()
  525. // .appendField(" ")
  526. // .appendField(new Blockly.FieldTextInput("d0f98bb70ae070cd89725780e67dfe6b"), "event0")
  527. // this.appendDummyInput()
  528. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_COCOCLOUD_GETDATA)
  529. // // .appendField(new Blockly.FieldVariable("dataGet"), "DATAVAR");
  530. // this.appendValueInput("ADD0")
  531. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR)
  532. // .appendField(new Blockly.FieldVariable("data_0"), "DATA0")
  533. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM)
  534. // // this.updateEvent_();
  535. // this.itemCount_ = 1;
  536. // this.updateShape_();
  537. // this.setMutator(new Blockly.Mutator(['cococloud_create_with_item']));
  538. // // this.updateEvent_();
  539. // this.setColour("#5da5f9");
  540. // this.setPreviousStatement(true, null);
  541. // this.setNextStatement(true, null);
  542. // // this.setInputsInline(true);
  543. // this.setTooltip("");
  544. // this.setHelpUrl("");
  545. // },
  546. // mutationToDom: function() {
  547. // var container = document.createElement('mutation');
  548. // container.setAttribute('items', this.itemCount_);
  549. // return container;
  550. // },
  551. // /**
  552. // * Parse XML to restore the inputs.
  553. // * @param {!Element} xmlElement XML storage element.
  554. // * @this Blockly.Block
  555. // */
  556. // domToMutation: function(xmlElement) {
  557. // this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
  558. // this.updateShape_();
  559. // },
  560. // /**
  561. // * Populate the mutator's dialog with this block's components.
  562. // * @param {!Blockly.Workspace} workspace Mutator's workspace.
  563. // * @return {!Blockly.Block} Root block in mutator.
  564. // * @this Blockly.Block
  565. // */
  566. // decompose: function(workspace) {
  567. // var containerBlock = workspace.newBlock('cococloud_create_with_container');
  568. // containerBlock.initSvg();
  569. // var connection = containerBlock.getInput('STACK').connection;
  570. // for (var i = 0; i < this.itemCount_; i++) {
  571. // var itemBlock = workspace.newBlock('cococloud_create_with_item');
  572. // itemBlock.initSvg();
  573. // connection.connect(itemBlock.previousConnection);
  574. // connection = itemBlock.nextConnection;
  575. // }
  576. // return containerBlock;
  577. // },
  578. // /**
  579. // * Reconfigure this block based on the mutator dialog's components.
  580. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  581. // * @this Blockly.Block
  582. // */
  583. // compose: function(containerBlock) {
  584. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  585. // // Count number of inputs.
  586. // var connections = [];
  587. // while (itemBlock) {
  588. // connections.push(itemBlock.valueConnection_);
  589. // itemBlock = itemBlock.nextConnection &&
  590. // itemBlock.nextConnection.targetBlock();
  591. // }
  592. // // Disconnect any children that don't belong.
  593. // for (var i = 0; i < this.itemCount_; i++) {
  594. // var connection = this.getInput('ADD' + i).connection.targetConnection;
  595. // if (connection && connections.indexOf(connection) == -1) {
  596. // connection.disconnect();
  597. // }
  598. // }
  599. // this.itemCount_ = connections.length;
  600. // this.updateShape_();
  601. // // Reconnect any child blocks.
  602. // for (var i = 0; i < this.itemCount_; i++) {
  603. // Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
  604. // }
  605. // },
  606. // /**
  607. // * Store pointers to any connected child blocks.
  608. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  609. // * @this Blockly.Block
  610. // */
  611. // saveConnections: function(containerBlock) {
  612. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  613. // var i = 0;
  614. // while (itemBlock) {
  615. // var input = this.getInput('ADD' + i);
  616. // itemBlock.valueConnection_ = input && input.connection.targetConnection;
  617. // i++;
  618. // itemBlock = itemBlock.nextConnection &&
  619. // itemBlock.nextConnection.targetBlock();
  620. // }
  621. // },
  622. // /**
  623. // * Modify this block to have the correct number of inputs.
  624. // * @private
  625. // * @this Blockly.Block
  626. // */
  627. // updateShape_: function() {
  628. // if (this.itemCount_ && this.getInput('EMPTY')) {
  629. // this.removeInput('EMPTY');
  630. // } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
  631. // this.appendDummyInput('EMPTY')
  632. // .appendField(this.newQuote_(true))
  633. // .appendField(this.newQuote_(false));
  634. // }
  635. // // Add new inputs.
  636. // for (var i = 0; i < this.itemCount_; i++) {
  637. // if (!this.getInput('ADD' + i)) {
  638. // var input = this.appendValueInput('ADD' + i)
  639. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR)
  640. // .appendField(new Blockly.FieldVariable("data_" + i), "DATA" + i)
  641. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_SETVAR_FROM)
  642. // }
  643. // }
  644. // if (!this.getInput('ADD' + this.itemCount_)) {
  645. // this.appendDummyInput('ADD' + this.itemCount_);
  646. // }
  647. // // Remove deleted inputs.
  648. // while (this.getInput('ADD' + i)) {
  649. // this.removeInput('ADD' + i);
  650. // i++;
  651. // }
  652. // },
  653. // updateEvent_: function() {
  654. // // Add new inputs.
  655. // var self = this;
  656. // var input = this.getInput('ADD0');
  657. // var api_key = document.getElementById('api-key').innerHTML || "";
  658. // $.ajax({
  659. // // url: '//api.cocorobo.cn/iot/data/apikey/' + api_key + '/event/',
  660. // url: '//staging.cocorobo.cn/api/iot/data/apikey/' + api_key + '/event/',
  661. // xhrFields: {
  662. // withCredentials: true
  663. // },
  664. // type: 'GET',
  665. // success: function(data) {
  666. // var eventsName = [];
  667. // if (data != null) {
  668. // $.each(data, function(i, obj) {
  669. // var temparray = []
  670. // temparray.push(obj.name);
  671. // temparray.push(obj.url);
  672. // eventsName.push(temparray);
  673. // });
  674. // self.eventsName = eventsName;
  675. // input.removeField("event0");
  676. // input.appendField(new Blockly.FieldDropdown(eventsName), "event0");
  677. // }
  678. // },
  679. // error: function(error) {
  680. // console.log("error");
  681. // }
  682. // });
  683. // },
  684. // getVarType: function(varName) {
  685. // return Blockly.Types.TEXT;
  686. // }
  687. // };
  688. // Blockly.Blocks['wifiEasymode_cococloud2_get_data'] = {
  689. // init: function() {
  690. // this.appendDummyInput()
  691. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_KEY)
  692. // .appendField(new Blockly.FieldTextInput("EM_data"), "KEY")
  693. // // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_TYPE)
  694. // // .appendField(new Blockly.FieldDropdown(
  695. // // [
  696. // // ["Text", "Text"],
  697. // // ["Number", "Number"],
  698. // // ["Boolean", "Boolean"],
  699. // // ["Large Number", "Large Number"],
  700. // // ["Decimal", "Decimal"]
  701. // // ]), 'VAR_TYPE')
  702. // .appendField(Blockly.Msg.WIFIEASYMODE_COCOCLOUD_END)
  703. // // this.updateEvent_();
  704. // this.setColour("#5da5f9");
  705. // this.setOutput(true);
  706. // // this.setInputsInline(true);
  707. // this.setTooltip("");
  708. // this.setHelpUrl("");
  709. // },
  710. // getBlockType: function() {
  711. // // var blocktype = Blockly.Types.TEXT
  712. // // switch (this.getFieldValue("VAR_TYPE")) {
  713. // // case "Text":
  714. // // blocktype = Blockly.Types.TEXT;
  715. // // break;
  716. // // case "Number":
  717. // // blocktype = Blockly.Types.NUMBER;
  718. // // break;
  719. // // case "Boolean":
  720. // // blocktype = Blockly.Types.BOOLEAN;
  721. // // break;
  722. // // case "Large Number":
  723. // // blocktype = Blockly.Types.LARGE_NUMBER;
  724. // // break;
  725. // // case "Decimal":
  726. // // blocktype = Blockly.Types.DECIMAL;
  727. // // break;
  728. // // }
  729. // return Blockly.Types.TEXT;
  730. // }
  731. // };
  732. // /*****************************************************************************************/
  733. // /*wifi easymode
  734. // * IFTTT
  735. // * post data {JSON} to Cloud event
  736. // */
  737. // Blockly.Blocks['wifiEasymode_IFTTT'] = {
  738. // init: function() {
  739. // this.appendDummyInput()
  740. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/blockly-easymode_thingspeak.png", 180, 40, "0"));
  741. // .appendField(new Blockly.FieldImage("./../blockly/media/blockly-easymode_ifttt.png", 180, 40, "0"));
  742. // this.appendDummyInput()
  743. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_IFTTT_KEY);
  744. // this.appendDummyInput()
  745. // .appendField(" ")
  746. // .appendField(new Blockly.FieldTextInput("bAssF9YJ_7oZP1k4et_IUx"), "IFTTT_KEY")
  747. // this.appendDummyInput()
  748. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_IFTTT_EVENT);
  749. // this.appendDummyInput()
  750. // .appendField(" ")
  751. // .appendField(new Blockly.FieldTextInput("cocorobo_webhook"), "IFTTT_EVENT")
  752. // this.appendValueInput("dataA")
  753. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_IFTTT_SENDDATA)
  754. // this.setColour("#ee9220");
  755. // this.setPreviousStatement(true, null);
  756. // this.setNextStatement(true, null);
  757. // // this.setInputsInline(true);
  758. // this.setTooltip("");
  759. // this.setHelpUrl("");
  760. // },
  761. // }
  762. // /*****************************************************************************************/
  763. // /*wifi easymode
  764. // * wifi-2-main transfer
  765. // * send msg from wifi to main
  766. // */
  767. // Blockly.Blocks['wifiEasymode_transfer_send'] = {
  768. // init: function() {
  769. // this.appendDummyInput()
  770. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND)
  771. // .appendField(new Blockly.FieldVariable("dataMain"), "DATAMAIN");
  772. // this.appendDummyInput()
  773. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2);
  774. // this.setColour("#1e61bf");
  775. // this.setPreviousStatement(true, null);
  776. // this.setNextStatement(true, null);
  777. // // this.setInputsInline(true);
  778. // this.setTooltip("");
  779. // this.setHelpUrl("");
  780. // },
  781. // getVarType: function(varName) {
  782. // let vartype = Blockly.Types.ARRAY;
  783. // return vartype;
  784. // }
  785. // }
  786. // /*wifi easymode
  787. // * wifi-2-main transfer
  788. // * receive msg from main to wifi
  789. // */
  790. // Blockly.Blocks['wifiEasymode_transfer_receive'] = {
  791. // init: function() {
  792. // this.appendDummyInput()
  793. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE)
  794. // this.appendDummyInput()
  795. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2)
  796. // .appendField(new Blockly.FieldVariable("dataMain"), "DATAMAIN");
  797. // this.setColour("#1e61bf");
  798. // this.setPreviousStatement(true, null);
  799. // this.setNextStatement(true, null);
  800. // // this.setInputsInline(true);
  801. // this.setTooltip("");
  802. // this.setHelpUrl("");
  803. // },
  804. // getVarType: function(varName) {
  805. // let vartype = Blockly.Types.ARRAY;
  806. // return vartype;
  807. // }
  808. // }
  809. // /*****************************************************************************************/
  810. // /*wifi easymode
  811. // * wifi-2-main transfer
  812. // * send msg from wifi to main
  813. // */
  814. // Blockly.Blocks['wifiEasymode_transfer2_send'] = {
  815. // init: function() {
  816. // this.appendDummyInput()
  817. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/cocomod_blockly_wifi.png", 140, 40, "0"));
  818. // .appendField(new Blockly.FieldImage("./../blockly/media/transfer-2.png", 50, 40, "0"));
  819. // this.appendDummyInput()
  820. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND)
  821. // .appendField(new Blockly.FieldDropdown([
  822. // ["txData", "txData"]
  823. // ]), "DATAMAIN");
  824. // this.appendDummyInput()
  825. // .appendField(Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_LINE2);
  826. // this.appendValueInput("ADD0")
  827. // .appendField(Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE + "0")
  828. // this.setColour("#1e61bf");
  829. // this.setPreviousStatement(true, null);
  830. // this.setNextStatement(true, null);
  831. // // this.setInputsInline(true);
  832. // this.setTooltip("");
  833. // this.setHelpUrl("");
  834. // this.itemCount_ = 1;
  835. // this.updateShape_();
  836. // this.setMutator(new Blockly.Mutator(['Easymode_transfer_create_with_item']));
  837. // },
  838. // mutationToDom: function() {
  839. // var container = document.createElement('mutation');
  840. // container.setAttribute('items', this.itemCount_);
  841. // return container;
  842. // },
  843. // /**
  844. // * Parse XML to restore the inputs.
  845. // * @param {!Element} xmlElement XML storage element.
  846. // * @this Blockly.Block
  847. // */
  848. // domToMutation: function(xmlElement) {
  849. // this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
  850. // this.updateShape_();
  851. // },
  852. // /**
  853. // * Populate the mutator's dialog with this block's components.
  854. // * @param {!Blockly.Workspace} workspace Mutator's workspace.
  855. // * @return {!Blockly.Block} Root block in mutator.
  856. // * @this Blockly.Block
  857. // */
  858. // decompose: function(workspace) {
  859. // var containerBlock = workspace.newBlock('Easymode_transfer_create_with_container');
  860. // containerBlock.initSvg();
  861. // var connection = containerBlock.getInput('STACK').connection;
  862. // for (var i = 0; i < this.itemCount_; i++) {
  863. // var itemBlock = workspace.newBlock('Easymode_transfer_create_with_item');
  864. // itemBlock.initSvg();
  865. // connection.connect(itemBlock.previousConnection);
  866. // connection = itemBlock.nextConnection;
  867. // }
  868. // return containerBlock;
  869. // },
  870. // /**
  871. // * Reconfigure this block based on the mutator dialog's components.
  872. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  873. // * @this Blockly.Block
  874. // */
  875. // compose: function(containerBlock) {
  876. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  877. // // Count number of inputs.
  878. // var connections = [];
  879. // while (itemBlock) {
  880. // connections.push(itemBlock.valueConnection_);
  881. // itemBlock = itemBlock.nextConnection &&
  882. // itemBlock.nextConnection.targetBlock();
  883. // }
  884. // // Disconnect any children that don't belong.
  885. // for (var i = 0; i < this.itemCount_; i++) {
  886. // var connection = this.getInput('ADD' + i).connection.targetConnection;
  887. // if (connection && connections.indexOf(connection) == -1) {
  888. // connection.disconnect();
  889. // }
  890. // }
  891. // this.itemCount_ = connections.length;
  892. // this.updateShape_();
  893. // // Reconnect any child blocks.
  894. // for (var i = 0; i < this.itemCount_; i++) {
  895. // Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
  896. // }
  897. // },
  898. // /**
  899. // * Store pointers to any connected child blocks.
  900. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  901. // * @this Blockly.Block
  902. // */
  903. // saveConnections: function(containerBlock) {
  904. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  905. // var i = 0;
  906. // while (itemBlock) {
  907. // var input = this.getInput('ADD' + i);
  908. // itemBlock.valueConnection_ = input && input.connection.targetConnection;
  909. // i++;
  910. // itemBlock = itemBlock.nextConnection &&
  911. // itemBlock.nextConnection.targetBlock();
  912. // }
  913. // },
  914. // /**
  915. // * Modify this block to have the correct number of inputs.
  916. // * @private
  917. // * @this Blockly.Block
  918. // */
  919. // updateShape_: function() {
  920. // if (this.itemCount_ && this.getInput('EMPTY')) {
  921. // this.removeInput('EMPTY');
  922. // } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
  923. // this.appendDummyInput('EMPTY')
  924. // .appendField(this.newQuote_(true))
  925. // .appendField(this.newQuote_(false));
  926. // }
  927. // // Add new inputs.
  928. // for (var i = 0; i < this.itemCount_; i++) {
  929. // if (!this.getInput('ADD' + i)) {
  930. // var input = this.appendValueInput('ADD' + i)
  931. // .appendField(Blockly.Msg.WIFIEASYMODE_TRANSFER_SEND_VALUE + i);
  932. // }
  933. // }
  934. // this.removeInput('ADD' + this.itemCount_)
  935. // // Remove deleted inputs.
  936. // while (this.getInput('ADD' + i)) {
  937. // this.removeInput('ADD' + i);
  938. // i++;
  939. // }
  940. // },
  941. // };
  942. // Blockly.Blocks['Easymode_transfer_create_with_container'] = {
  943. // /**
  944. // * Mutator block for list container.
  945. // * @this Blockly.Block
  946. // */
  947. // init: function() {
  948. // this.setColour("#1e61bf");
  949. // this.appendDummyInput()
  950. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_CONTAINER_TITLE_ADD);
  951. // this.appendStatementInput('STACK');
  952. // this.setTooltip('');
  953. // this.contextMenu = false;
  954. // }
  955. // };
  956. // Blockly.Blocks['Easymode_transfer_create_with_item'] = {
  957. // /**
  958. // * Mutator bolck for adding items.
  959. // * @this Blockly.Block
  960. // */
  961. // init: function() {
  962. // this.setColour("#1e61bf");
  963. // this.appendDummyInput()
  964. // .appendField(Blockly.Msg.THINGSPEAK_CREATE_WITH_ITEM_TITLE);
  965. // this.setPreviousStatement(true);
  966. // this.setNextStatement(true);
  967. // this.setTooltip('');
  968. // this.contextMenu = false;
  969. // }
  970. // };
  971. // /*wifi easymode
  972. // * wifi-2-main transfer
  973. // * receive msg from main to wifi
  974. // */
  975. // Blockly.Blocks['wifiEasymode_transfer2_receive'] = {
  976. // init: function() {
  977. // this.appendDummyInput()
  978. // // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/cocomod_blockly_wifi.png", 140, 40, "0"));
  979. // .appendField(new Blockly.FieldImage("./../blockly/media/transfer-2.png", 50, 40, "0"));
  980. // this.appendDummyInput()
  981. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE)
  982. // this.appendDummyInput()
  983. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE2)
  984. // .appendField(new Blockly.FieldDropdown([
  985. // ["rxData", "rxData"]
  986. // ]), "DATAMAIN");
  987. // this.appendDummyInput()
  988. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_LINE3)
  989. // .appendField(new Blockly.FieldDropdown([
  990. // ["1", "1"],
  991. // ["2", "2"],
  992. // ["3", "3"],
  993. // ["4", "4"],
  994. // ["5", "5"],
  995. // ["6", "6"],
  996. // ]), "LENGTH");
  997. // this.setColour("#1e61bf");
  998. // this.setPreviousStatement(true, null);
  999. // this.setNextStatement(true, null);
  1000. // // this.setInputsInline(true);
  1001. // this.setTooltip("");
  1002. // this.setHelpUrl("");
  1003. // },
  1004. // getVarType: function(varName) {
  1005. // let vartype = Blockly.Types.ARRAY;
  1006. // return vartype;
  1007. // }
  1008. // }
  1009. // /*wifi easymode
  1010. // * wifi-2-main transfer
  1011. // * get data from dataMain
  1012. // * @param {dataMain} :where data tranferred stored in
  1013. // */
  1014. // Blockly.Blocks['wifiEasymode_transfer2_receive_getValue'] = {
  1015. // init: function() {
  1016. // this.appendDummyInput()
  1017. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET)
  1018. // .appendField(new Blockly.FieldDropdown([
  1019. // ["rxData", "rxData"]
  1020. // ]), "DATAMAIN")
  1021. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE2)
  1022. // .appendField(new Blockly.FieldDropdown([
  1023. // ["0", "0"],
  1024. // ["1", "1"],
  1025. // ["2", "2"],
  1026. // ["3", "3"],
  1027. // ["4", "4"],
  1028. // ["5", "5"],
  1029. // ]), "INDEX")
  1030. // .appendField(" " + Blockly.Msg.WIFIEASYMODE_TRANSFER_RECEIVE_GET_LINE3);
  1031. // this.setColour("#1e61bf");
  1032. // this.setOutput(true)
  1033. // // this.setInputsInline(true);
  1034. // this.setTooltip("");
  1035. // this.setHelpUrl("");
  1036. // },
  1037. // getBlockType: function() {
  1038. // return Blockly.Types.NUMBER;
  1039. // }
  1040. // }