clouddata.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. // 'use strict';
  2. // goog.provide('Blockly.Blocks.clouddata');
  3. // goog.require('Blockly.Blocks');
  4. // goog.require('Blockly.Types');
  5. // Blockly.Blocks.clouddata.HUE = 130;
  6. // /****************************************
  7. // * * * * * * * * *
  8. // * Simple version for CocoCloud *
  9. // * Generate JSON *
  10. // * * * * * * * * *
  11. // ****************************************/
  12. // /*JSON tool
  13. // *create a main JSON object
  14. // *name a JSON
  15. // *
  16. // */
  17. // Blockly.Blocks['clouddata_json_generator'] = {
  18. // /**
  19. // * Block for creating a JSON object with any number of
  20. // * elements of [key:value] .
  21. // * @this Blockly.Block
  22. // */
  23. // init: function() {
  24. // this.appendDummyInput()
  25. // .appendField(Blockly.Msg.CLOUDDATA_GENERATOR_DATA)
  26. // .appendField(new Blockly.FieldTextInput("data"), "VAR");
  27. // this.itemCount_ = 1;
  28. // this.updateShape_();
  29. // this.setMutator(new Blockly.Mutator(['clouddata_create_with_item']));
  30. // this.setPreviousStatement(true);
  31. // this.setNextStatement(true);
  32. // this.setTooltip('');
  33. // this.setHelpUrl('');
  34. // this.setColour(Blockly.Blocks.clouddata.HUE);
  35. // },
  36. // /**
  37. // * Create XML to represent number of inputs.
  38. // * @return {!Element} XML storage element.
  39. // * @this Blockly.Block
  40. // */
  41. // mutationToDom: function() {
  42. // var container = document.createElement('mutation');
  43. // container.setAttribute('items', this.itemCount_);
  44. // return container;
  45. // },
  46. // /**
  47. // * Parse XML to restore the inputs.
  48. // * @param {!Element} xmlElement XML storage element.
  49. // * @this Blockly.Block
  50. // */
  51. // domToMutation: function(xmlElement) {
  52. // this.itemCount_ = parseInt(xmlElement.getAttribute('items'), 10);
  53. // this.updateShape_();
  54. // },
  55. // /**
  56. // * Populate the mutator's dialog with this block's components.
  57. // * @param {!Blockly.Workspace} workspace Mutator's workspace.
  58. // * @return {!Blockly.Block} Root block in mutator.
  59. // * @this Blockly.Block
  60. // */
  61. // decompose: function(workspace) {
  62. // var containerBlock = workspace.newBlock('clouddata_create_with_container');
  63. // containerBlock.initSvg();
  64. // var connection = containerBlock.getInput('STACK').connection;
  65. // for (var i = 0; i < this.itemCount_; i++) {
  66. // var itemBlock = workspace.newBlock('clouddata_create_with_item');
  67. // itemBlock.initSvg();
  68. // connection.connect(itemBlock.previousConnection);
  69. // connection = itemBlock.nextConnection;
  70. // }
  71. // return containerBlock;
  72. // },
  73. // /**
  74. // * Reconfigure this block based on the mutator dialog's components.
  75. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  76. // * @this Blockly.Block
  77. // */
  78. // compose: function(containerBlock) {
  79. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  80. // // Count number of inputs.
  81. // var connections = [];
  82. // while (itemBlock) {
  83. // connections.push(itemBlock.valueConnection_);
  84. // itemBlock = itemBlock.nextConnection &&
  85. // itemBlock.nextConnection.targetBlock();
  86. // }
  87. // // Disconnect any children that don't belong.
  88. // for (var i = 0; i < this.itemCount_; i++) {
  89. // var connection = this.getInput('ADD' + i).connection.targetConnection;
  90. // if (connection && connections.indexOf(connection) == -1) {
  91. // connection.disconnect();
  92. // }
  93. // }
  94. // this.itemCount_ = connections.length;
  95. // this.updateShape_();
  96. // // Reconnect any child blocks.
  97. // for (var i = 0; i < this.itemCount_; i++) {
  98. // Blockly.Mutator.reconnect(connections[i], this, 'ADD' + i);
  99. // }
  100. // },
  101. // /**
  102. // * Store pointers to any connected child blocks.
  103. // * @param {!Blockly.Block} containerBlock Root block in mutator.
  104. // * @this Blockly.Block
  105. // */
  106. // saveConnections: function(containerBlock) {
  107. // var itemBlock = containerBlock.getInputTargetBlock('STACK');
  108. // var i = 0;
  109. // while (itemBlock) {
  110. // var input = this.getInput('ADD' + i);
  111. // itemBlock.valueConnection_ = input && input.connection.targetConnection;
  112. // i++;
  113. // itemBlock = itemBlock.nextConnection &&
  114. // itemBlock.nextConnection.targetBlock();
  115. // }
  116. // },
  117. // /**
  118. // * Modify this block to have the correct number of inputs.
  119. // * @private
  120. // * @this Blockly.Block
  121. // */
  122. // updateShape_: function() {
  123. // if (this.itemCount_ && this.getInput('EMPTY')) {
  124. // this.removeInput('EMPTY');
  125. // } else if (!this.itemCount_ && !this.getInput('EMPTY')) {
  126. // this.appendDummyInput('EMPTY')
  127. // .appendField(this.newQuote_(true))
  128. // .appendField(this.newQuote_(false));
  129. // }
  130. // // Add new inputs.
  131. // for (var i = 0; i < this.itemCount_; i++) {
  132. // if (!this.getInput('ADD' + i)) {
  133. // var input = this.appendValueInput('ADD' + i);
  134. // input.appendField(Blockly.Msg.CLOUDDATA_CREATE_WITH_INPUT_WITH)
  135. // .appendField(new Blockly.FieldTextInput("key"), 'KEY' + i);
  136. // }
  137. // }
  138. // // Remove deleted inputs.
  139. // while (this.getInput('ADD' + i)) {
  140. // this.removeInput('ADD' + i);
  141. // i++;
  142. // }
  143. // },
  144. // };
  145. // Blockly.Blocks['clouddata_create_with_container'] = {
  146. // /**
  147. // * Mutator block for list container.
  148. // * @this Blockly.Block
  149. // */
  150. // init: function() {
  151. // this.setColour(Blockly.Blocks.clouddata.HUE);
  152. // this.appendDummyInput()
  153. // .appendField(Blockly.Msg.CLOUDDATA_CREATE_WITH_CONTAINER_TITLE_ADD);
  154. // this.appendStatementInput('STACK');
  155. // this.setTooltip('');
  156. // this.contextMenu = false;
  157. // }
  158. // };
  159. // Blockly.Blocks['clouddata_create_with_item'] = {
  160. // /**
  161. // * Mutator bolck for adding items.
  162. // * @this Blockly.Block
  163. // */
  164. // init: function() {
  165. // this.setColour(Blockly.Blocks.clouddata.HUE);
  166. // this.appendDummyInput()
  167. // .appendField(Blockly.Msg.CLOUDDATA_CREATE_WITH_ITEM_TITLE);
  168. // this.setPreviousStatement(true);
  169. // this.setNextStatement(true);
  170. // this.setTooltip('');
  171. // this.contextMenu = false;
  172. // }
  173. // };
  174. // /*cloud data output
  175. // *expose JSONmessageBuffer to user
  176. // *
  177. // */
  178. // Blockly.Blocks['clouddata_parse_prettyPrint_display'] = {
  179. // init: function() {
  180. // this.appendDummyInput()
  181. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_PRETTYPRINT_DISPLAY);
  182. // this.setColour(Blockly.Blocks.clouddata.HUE);
  183. // this.setOutput(true, Blockly.Types.TEXT.output);
  184. // // this.setPreviousStatement(true, null);
  185. // // this.setNextStatement(true, null);
  186. // // this.setInputsInline(true);
  187. // this.setTooltip("");
  188. // this.setHelpUrl("");
  189. // },
  190. // };
  191. // /****************************************
  192. // * * * * * * * * *
  193. // * Simple version for CocoCloud *
  194. // * Parse JSON *
  195. // * * * * * * * * *
  196. // ****************************************/
  197. // Blockly.Blocks['clouddata_json_parser_setup'] = {
  198. // init: function() {
  199. // this.appendDummyInput()
  200. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_SETUP_INIT)
  201. // .appendField(new Blockly.FieldTextInput("Data"), "DATA");
  202. // this.appendValueInput("PAYLOAD")
  203. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_SETUP_PAYLOAD);
  204. // this.setPreviousStatement(true, null);
  205. // this.setNextStatement(true, null);
  206. // this.setColour(Blockly.Blocks.clouddata.HUE);
  207. // this.setTooltip("");
  208. // this.setHelpUrl("");
  209. // }
  210. // }
  211. // Blockly.Blocks['clouddata_json_parser'] = {
  212. // init: function() {
  213. // this.appendDummyInput()
  214. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_KEY)
  215. // .appendField(new Blockly.FieldTextInput("key"), "KEY")
  216. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_TYPE)
  217. // .appendField(new Blockly.FieldDropdown(
  218. // [
  219. // ["Text", "Text"],
  220. // ["Number", "Number"],
  221. // ["Boolean", "Boolean"],
  222. // ["Large Number", "Large Number"],
  223. // ["Decimal", "Decimal"]
  224. // ]), 'VAR_TYPE')
  225. // .appendField(Blockly.Msg.CLOUDDATA_PARSE_JSON)
  226. // .appendField(new Blockly.FieldTextInput("Data"), "DATA");
  227. // this.setColour(Blockly.Blocks.clouddata.HUE);
  228. // this.setOutput(true, this.getBlockType());
  229. // // this.setPreviousStatement(true, null);
  230. // // this.setNextStatement(true, null);
  231. // this.setInputsInline(true);
  232. // this.setTooltip("");
  233. // this.setHelpUrl("");
  234. // },
  235. // getBlockType: function() {
  236. // var blocklyTypeKey = this.getFieldValue('VAR_TYPE');
  237. // return Blockly.Types[blocklyTypeKey];
  238. // },
  239. // };
  240. // /****************************************
  241. // * * * * * * * * *
  242. // * Simple version for CocoCloud *
  243. // * cloud service *
  244. // * * * * * * * * *
  245. // ****************************************/
  246. // /**
  247. // *CocoCloud Service
  248. // *method POST a http request with a JSON data
  249. // *@param url :http://staging.cocorobo.cn/cloud/iot/{events} or http://cocorobo.cn/cloud/iot/{events}
  250. // *@param event get from URL://cocorobo.cn/cloud/iot/data/apikey/{@param APIKEY}/event
  251. // *@param data JSON form - generate from clouddata blocks
  252. // */
  253. // Blockly.Blocks['cococloud_simple_post'] = {
  254. // init: function() {
  255. // this.appendDummyInput()
  256. // .appendField(Blockly.Msg.COCOCLOUD_TITLE);
  257. // this.appendValueInput('ADD0')
  258. // .appendField(Blockly.Msg.COCOCLOUD_POST)
  259. // .appendField(new Blockly.FieldDropdown([
  260. // ["event", "event"]
  261. // ]), "event0");
  262. // this.itemCount = 1;
  263. // this.updateShape_();
  264. // this.eventTag = null;
  265. // this.setColour(150);
  266. // this.setPreviousStatement(true, null);
  267. // this.setNextStatement(true, null);
  268. // this.setTooltip("");
  269. // this.setHelpUrl("");
  270. // },
  271. // /**
  272. // * Modify this block to have the correct number of inputs.
  273. // * @private
  274. // * @this Blockly.Block
  275. // */
  276. // updateShape_: 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. // };
  308. // /**
  309. // *CocoCloud Service
  310. // *method GET a http request to get a JSON data
  311. // *@param url :http://staging.cocorobo.cn/cloud/iot/{events} or http://cocorobo.cn/cloud/iot/{events}
  312. // *@param event get from URL://cocorobo.cn/cloud/iot/data/apikey/{@param APIKEY}/event
  313. // * data JSON form
  314. // */
  315. // Blockly.Blocks['cococloud_simple_get'] = {
  316. // init: function() {
  317. // this.appendDummyInput()
  318. // .appendField(Blockly.Msg.COCOCLOUD_TITLE);
  319. // this.appendDummyInput("iuput_id0")
  320. // .appendField(Blockly.Msg.COCOCLOUD_GET, "text_field0")
  321. // .appendField(new Blockly.FieldDropdown([
  322. // ["event", "event"]
  323. // ]), "event0")
  324. // .appendField(Blockly.Msg.COCOCLOUD_GET1, "text_field1");
  325. // this.itemCount = 1;
  326. // this.updateShape_();
  327. // this.setColour(150);
  328. // this.setPreviousStatement(true, null);
  329. // this.setNextStatement(true, null);
  330. // this.setTooltip("");
  331. // this.setHelpUrl("");
  332. // },
  333. // /**
  334. // * Modify this block to have the correct number of inputs.
  335. // * @private
  336. // * @this Blockly.Block
  337. // */
  338. // updateShape_: function() {
  339. // // Add new inputs.
  340. // var self = this;
  341. // var input = this.getInput('iuput_id0');
  342. // var api_key = document.getElementById('api-key').innerHTML || "";
  343. // $.ajax({
  344. // // url: '//api.cocorobo.cn/iot/data/apikey/' + api_key + '/event/',
  345. // url: '//staging.cocorobo.cn/api/iot/data/apikey/' + api_key + '/event/',
  346. // xhrFields: {
  347. // withCredentials: true
  348. // },
  349. // type: 'GET',
  350. // success: function(data) {
  351. // var eventsName = [];
  352. // if (data != null) {
  353. // $.each(data, function(i, obj) {
  354. // var temparray = [];
  355. // temparray.push(obj.name);
  356. // temparray.push(obj.url);
  357. // eventsName.push(temparray);
  358. // });
  359. // self.eventsName = eventsName;
  360. // input.removeField("text_field0");
  361. // input.removeField("event0");
  362. // input.removeField("text_field1");
  363. // input.appendField(Blockly.Msg.COCOCLOUD_GET, "text_field0")
  364. // .appendField(new Blockly.FieldDropdown(eventsName), "event0")
  365. // .appendField(Blockly.Msg.COCOCLOUD_GET1, "text_field1");
  366. // }
  367. // },
  368. // error: function(error) {
  369. // console.log("error");
  370. // }
  371. // });
  372. // }
  373. // };
  374. // /**
  375. // *CocoCloud Service
  376. // * get JSON data from cococloud-get-block
  377. // */
  378. // Blockly.Blocks['cococloud_simple_getPayLoad'] = {
  379. // init: function() {
  380. // this.appendDummyInput()
  381. // .appendField(Blockly.Msg.COCOCLOUD_TITLE);
  382. // this.appendDummyInput()
  383. // .appendField(Blockly.Msg.COCOCLOUD_GETPAYLOAD);
  384. // this.setColour(150);
  385. // this.setOutput(true);
  386. // this.setTooltip("");
  387. // this.setHelpUrl("");
  388. // },
  389. // };
  390. // /**
  391. // * Time Service
  392. // * get standard time
  393. // * Setup
  394. // */
  395. // Blockly.Blocks['cloud_time_setup'] = {
  396. // init: function() {
  397. // this.appendDummyInput()
  398. // .appendField(new Blockly.FieldImage("http://cocorobo.cn/cocoblockly/blockly/media/main-sensor101-counter.png", 50, 40, "15"));
  399. // this.appendDummyInput()
  400. // .appendField(Blockly.Msg.COCOCLOUD_TIME_SETUP);
  401. // this.setColour(215);
  402. // this.setTooltip("");
  403. // this.setHelpUrl("");
  404. // },
  405. // }
  406. // /**
  407. // * Time Service
  408. // * get standard time
  409. // * get Date
  410. // */
  411. // Blockly.Blocks['cloud_time_getDate'] = {
  412. // init: function() {
  413. // this.appendDummyInput()
  414. // .appendField(Blockly.Msg.COCOCLOUD_TIME_GETDATE)
  415. // .appendField(new Blockly.FieldDropdown([
  416. // [Blockly.Msg.COCOCLOUD_TIME_YEAR, "year"],
  417. // [Blockly.Msg.COCOCLOUD_TIME_MONTH, "month"],
  418. // [Blockly.Msg.COCOCLOUD_TIME_DAY, "day"],
  419. // ]), "date_detail")
  420. // this.setColour(215);
  421. // this.setOutput(true);
  422. // this.setTooltip("");
  423. // this.setHelpUrl("");
  424. // },
  425. // };
  426. // /**
  427. // * Time Service
  428. // * get standard time
  429. // * get Time
  430. // */
  431. // Blockly.Blocks['cloud_time_getTime'] = {
  432. // init: function() {
  433. // this.appendDummyInput()
  434. // .appendField(Blockly.Msg.COCOCLOUD_TIME_GETTIME)
  435. // .appendField(new Blockly.FieldDropdown([
  436. // [Blockly.Msg.COCOCLOUD_TIME_HOUR, "hour"],
  437. // [Blockly.Msg.COCOCLOUD_TIME_MINUTE, "minute"],
  438. // [Blockly.Msg.COCOCLOUD_TIME_SECOND, "second"],
  439. // ]), "time_detail")
  440. // this.setColour(215);
  441. // this.setOutput(true);
  442. // this.setTooltip("");
  443. // this.setHelpUrl("");
  444. // },
  445. // };