// 'use strict'; // goog.provide('Blockly.Blocks.jsontool'); // goog.require('Blockly.Blocks'); // goog.require('Blockly.Types'); // Blockly.Blocks.jsontool.HUE = 130; // /**************************************** // * * * * * * * * * // * Generate JSON * // * * * * * * * * * // ****************************************/ // /*JSON tool // *setup for generator // *name a JSON // *add map {key :value} into this JSON // */ // Blockly.Blocks['jsontool_generator_setup'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_SETUP) // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME"); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // Blockly.Blocks['jsontool_generator_keyvalue'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_JSONOBJECT) // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME"); // this.appendValueInput("KEY") // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_KEY); // this.appendValueInput("VALUE") // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_VALUE); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON tool // *create a main JSON Object/Array // *name a JSON // * // */ // Blockly.Blocks['jsontool_generator_main_block'] = { // /** // * Block for creating a main Json object/array with any number of elements of // * { [key:value] or [nested object] or [nested array]}. // * @this Blockly.Block // */ // init: function() { // // var nameField = new Blockly.FieldTextInput( // // Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME, // // Blockly.jsontool.rename); // // nameField.setSpellcheck(false); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE) // .appendField(new Blockly.FieldDropdown([ // ["Object", "Object"], // ["Array", "Array"] // ]), "jsontype"); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_MAIN_TITLE_NAME) // // .appendField(nameField, 'NAME'); // .appendField(new Blockly.FieldTextInput("jsonVar"), 'NAME'); // this.appendStatementInput('STACK'); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // this.setHelpUrl(""); // this.setTooltip(""); // this.setColour(Blockly.Blocks.jsontool.HUE); // }, // /** // * Initialization of the block has completed, clean up anything that may be // * inconsistent as a result of the XML loading. // * @this Blockly.Block // */ // validate: function() { // var name = Blockly.Procedures.findLegalName( // this.getFieldValue('NAME'), this); // this.setFieldValue(name, 'NAME'); // }, // /** // * Add custom menu options to this block's context menu. // * @param {!Array} options List of menu options to add to. // * @this Blockly.Block // */ // // customContextMenu: function(options) { // // // Add option to create caller. // // var option = {enabled: true}; // // var name = this.getFieldValue('NAME'); // // option.text = Blockly.Msg.PROCEDURES_CREATE_DO.replace('%1', name); // // var xmlBlock = goog.dom.createDom('block', null, null); // // xmlBlock.setAttribute('type', this.callType_); // // option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); // // options.push(option); // // }, // // callType_: 'procedures_callnoreturn', // /** @return {!string} This block does not define type, so 'undefined' */ // getVarType: function(varName) { // return Blockly.Types.UNDEF; // }, // }; // /*JSON tool // *create a nested JSON Object/Array // *name a JSON // *nest in the main JSON Object/Array // */ // Blockly.Blocks['jsontool_generator_nested_block'] = { // /** // * Block for creating a nested Json object/array with any number of elements of // * { [key:value] or [nested object] or [nested array]}. // * @this Blockly.Block // */ // init: function() { // // var nameField = new Blockly.FieldTextInput( // // Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME, // // Blockly.jsontool.rename); // // nameField.setSpellcheck(false); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE) // .appendField(new Blockly.FieldDropdown([ // ["Object", "Object"], // ["Array", "Array"] // ]), "jsontype"); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_NESTED_TITLE_NAME) // // .appendField(nameField, 'NAME'); // .appendField(new Blockly.FieldTextInput(Blockly.Msg.JSONTOOL_GENERATOR_MAIN_JSONNAME), 'NAME'); // this.appendStatementInput('STACK1'); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // this.setHelpUrl(""); // this.setTooltip(""); // this.setColour(Blockly.Blocks.jsontool.HUE); // }, // /** // * Initialization of the block has completed, clean up anything that may be // * inconsistent as a result of the XML loading. // * @this Blockly.Block // */ // validate: function() { // var name = Blockly.Procedures.findLegalName( // this.getFieldValue('NAME'), this); // this.setFieldValue(name, 'NAME'); // }, // /** // * Return all variables referenced by this block. // * @return {!Array.} List of variable names. // * @this Blockly.Block // */ // // /** // // * Add custom menu options to this block's context menu. // // * @param {!Array} options List of menu options to add to. // // * @this Blockly.Block // // */ // // customContextMenu: function(options) { // // // Add option to create caller. // // var option = {enabled: true}; // // var name = this.getFieldValue('NAME'); // // option.text = Blockly.Msg.PROCEDURES_CREATE_DO.replace('%1', name); // // var xmlBlock = goog.dom.createDom('block', null, null); // // xmlBlock.setAttribute('type', this.callType_); // // option.callback = Blockly.ContextMenu.callbackFactory(this, xmlBlock); // // options.push(option); // // }, // // callType_: 'procedures_callnoreturn', // /** @return {!string} This block does not define type, so 'undefined' */ // getVarType: function(varName) { // return Blockly.Types.UNDEF; // }, // }; // /** // *JSON object generate with [key:value] // * // */ // Blockly.Blocks['jsontool_generator_object_keyValue'] = { // /** // * blocks of key-value for JSON Object // * @this Blockly.Block // */ // init: function() { // this.setColour(Blockly.Blocks.jsontool.HUE); // this.appendValueInput("KEY") // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_KEY); // this.appendValueInput("VALUE") // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_VALUE); // this.setPreviousStatement(true); // this.setNextStatement(true); // // this.setOutput(true,"String"); // this.setInputsInline(true); // this.setTooltip(""); // } // }; // /** // *JSON array generate with [value] // * // */ // Blockly.Blocks['jsontool_generator_array_value'] = { // /** // * blocks of value for JSON Array // * @this Blockly.Block // */ // init: function() { // this.setColour(Blockly.Blocks.jsontool.HUE); // this.appendValueInput("VALUE") // .appendField(Blockly.Msg.JSONTOOL_GENERATOR_ARRAY_VALUE); // this.setPreviousStatement(true); // this.setNextStatement(true); // // this.setOutput(true,"String"); // this.setInputsInline(true); // this.setTooltip(""); // } // }; // // /** // // *JSON container for create items // // * // // */ // // Blockly.Blocks['json_create_with_container'] = { // // /** // // * Mutator block for json container. // // * @this Blockly.Block // // */ // // init: function() { // // this.setColour(Blockly.Blocks.jsontool.HUE); // // this.appendDummyInput() // // .appendField(Blockly.Msg.JSON_CREATE_WITH_CONTAINER_TITLE_ADD); // // this.appendStatementInput('STACK'); // // this.setTooltip(""); // // this.contextMenu = false; // // } // // }; // // /** // // *JSON container for add items // // * // // */ // // Blockly.Blocks['json_create_with_item'] = { // // /** // // * Mutator bolck for adding items. // // * @this Blockly.Block // // */ // // init: function() { // // this.setColour(Blockly.Blocks.jsontool.HUE); // // this.appendDummyInput() // // .appendField(Blockly.Msg.JSONTOOL_CREATE_WITH_ITEM_TITLE); // // this.setPreviousStatement(true); // // this.setNextStatement(true); // // this.setTooltip(""); // // this.contextMenu = false; // // } // // }; // /**************************************** // * * * * * * * * * // * Parse JSON * // * * * * * * * * * // ****************************************/ // /*JSON tool // *parse json setup // */ // Blockly.Blocks['jsontool_parse_setup'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_SETUP); // this.appendDummyInput() // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME") // .appendField(Blockly.Msg.JSONTOOL_PARSE_JSONOBJECT); // this.appendValueInput("OBJECT_SIZE") // .appendField(Blockly.Msg.JSONTOOL_OBJECT_SIZE); // this.appendValueInput("ARRAY_SIZE") // .appendField(Blockly.Msg.JSONTOOL_ARRAY_SIZE); // this.appendValueInput("RESPONSE") // .appendField(Blockly.Msg.JSONTOOL_PARSE_RESPONSE); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setPreviousStatement(true); // this.setNextStatement(true); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON tool // *parse json // */ // Blockly.Blocks['jsontool_parse_begin'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_EACH) // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME"); // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_TOVAR) // .appendField(new Blockly.FieldVariable( // Blockly.Msg.VARIABLES_DEFAULT_NAME), 'VAR') // .appendField(Blockly.Msg.JSONTOOL_PARSE_VARTYPE) // .appendField(new Blockly.FieldDropdown( // [ // ["Text", "Text"], // ["Number", "Number"], // ["Boolean", "Boolean"], // ["Large Number", "Large Number"], // ["Decimal", "Decimal"] // ]), 'JSONVAR_TYPE'); // this.appendValueInput("KEY") // // .appendField(Blockly.Msg.JSONTOOL_PARSE_BY); // this.setColour(Blockly.Blocks.jsontool.HUE); // // this.setOutput(true,Blockly.Types.TEXT.output); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // // this.jsonInit({ // // "message0": Blockly.Msg.JSONTOOL_PARSE_KEYVALUE, // // "args0": [ // // { // // "type": "field_input", // // "name": "JSONNAME", // // "check": "Text", // // "text": "jsonVar" // // }, // // { // // "type": "input_value", // // "name": "KEY", // // "check": "Text" // // } // // ], // // "output": null, // // "colour": Blockly.Blocks.jsontool.HUE, // // "inputsInline": true, // // }); // // }, // // /** // // * Assigns a type to the block based on the selected type to cast. // // * @return {!string} Blockly type for this block configuration. // // * @this Blockly.Block // // */ // // getBlockType: function() { // // var blocklyTypeKey = this.getFieldValue('JSONVAR_TYPE'); // // return Blockly.Types[blocklyTypeKey]; // // }, // getVarType: function(varName) { // // var varType = this.getFieldValue('JSONVAR_TYPE'); // // console.log(Blockly.Types[varType]); // // return Blockly.Types[varType]; // let vartype = Blockly.Types.UNDEF; // if (this && this.getFieldValue('JSONVAR_TYPE') === 'Text') { // vartype = Blockly.Types.TEXT; // } else if (this && this.getFieldValue('JSONVAR_TYPE') === 'Number') { // vartype = Blockly.Types.NUMBER; // } else if (this && this.getFieldValue('JSONVAR_TYPE') === 'Boolean') { // vartype = Blockly.Types.BOOLEAN; // } else if (this && this.getFieldValue('JSONVAR_TYPE') === 'Large Number') { // vartype = Blockly.Types.LARGE_NUMBER; // } else if (this && this.getFieldValue('JSONVAR_TYPE') === 'Decimal') { // vartype = Blockly.Types.DECIMAL; // } // return vartype; // } // }; // /*JSON parse tool // *parse json with key-value // */ // Blockly.Blocks['jsontool_parse_key'] = { // init: function() { // this.appendValueInput("KEY") // .appendField(Blockly.Msg.JSONTOOL_PARSE_KEY); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON parse tool // *parse json with array-value in Json object // */ // Blockly.Blocks['jsontool_parse_arr_inobject'] = { // init: function() { // this.appendValueInput("VAR") // .appendField(Blockly.Msg.JSONTOOL_PARSE_ARRAY); // this.appendValueInput("INDEX") // .appendField(Blockly.Msg.JSONTOOL_PARSE_INDEX); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON parse tool // *parse json with array-value in Json array // */ // Blockly.Blocks['jsontool_parse_arr_inarray'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_ARRAY); // this.appendValueInput("INDEX") // .appendField(Blockly.Msg.JSONTOOL_PARSE_INDEX); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON parse tool // *parse json with key-value with nests // */ // Blockly.Blocks['jsontool_parse_key_nest'] = { // init: function() { // this.appendValueInput("KEY") // .appendField(Blockly.Msg.JSONTOOL_PARSE_KEY); // this.appendValueInput("NEST") // .appendField(Blockly.Msg.JSONTOOL_PARSE_NEST); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON parse tool // *parse json with array-value in JSON object with nests // */ // Blockly.Blocks['jsontool_parse_arr_inobject_nest'] = { // init: function() { // this.appendValueInput("VAR") // .appendField(Blockly.Msg.JSONTOOL_PARSE_ARRAY); // this.appendValueInput("INDEX") // .appendField(Blockly.Msg.JSONTOOL_PARSE_INDEX); // this.appendValueInput("NEST") // .appendField(Blockly.Msg.JSONTOOL_PARSE_NEST); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON parse tool // *parse json with array-value in JSON array with nests // */ // Blockly.Blocks['jsontool_parse_arr_inarray_nest'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_ARRAY); // this.appendValueInput("INDEX") // .appendField(Blockly.Msg.JSONTOOL_PARSE_INDEX); // this.appendValueInput("NEST") // .appendField(Blockly.Msg.JSONTOOL_PARSE_NEST); // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.TEXT.output); // // this.setPreviousStatement(true, null); // // // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON tool // *method to print Json data in a pretty way // */ // Blockly.Blocks['jsontool_parse_prettyPrint'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT) // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME") // .appendField(Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_WAY) // this.setColour(Blockly.Blocks.jsontool.HUE); // // this.setOutput(true,Blockly.Types.BOOLEAN.output); // this.setPreviousStatement(true, null); // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON tool // *expose JSONmessageBuffer to user // * // */ // Blockly.Blocks['jsontool_parse_prettyPrint_display'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_PRETTYPRINT_DISPLAY) // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.BOOLEAN.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // }; // /*JSON tool // *check whether it parse success // */ // Blockly.Blocks['jsontool_parse_isSuccess'] = { // init: function() { // this.appendDummyInput() // .appendField(Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS_NAME) // .appendField(new Blockly.FieldTextInput("jsonVar"), "JSONNAME") // .appendField(Blockly.Msg.JSONTOOL_PARSE_ISSUCCESS) // this.setColour(Blockly.Blocks.jsontool.HUE); // this.setOutput(true, Blockly.Types.BOOLEAN.output); // // this.setPreviousStatement(true, null); // // this.setNextStatement(true, null); // // this.setInputsInline(true); // this.setTooltip(""); // this.setHelpUrl(""); // }, // };