update logic and text blocks
This commit is contained in:
		
							parent
							
								
									f709b4b757
								
							
						
					
					
						commit
						aaeaf7a5aa
					
				| @ -1,5 +1,7 @@ | ||||
| import Blockly from 'blockly/core'; | ||||
| import { getColour } from '../helpers/colour'; | ||||
| import * as Types from '../helpers/types'; | ||||
| import { getCompatibleTypes } from '../helpers/types'; | ||||
| 
 | ||||
| 
 | ||||
| Blockly.defineBlocksWithJsonArray([  // BEGIN JSON EXTRACT
 | ||||
| @ -230,6 +232,73 @@ Blockly.defineBlocksWithJsonArray([ // Mutator blocks. Do not extract. | ||||
|     } | ||||
| ]); | ||||
| 
 | ||||
| Blockly.Blocks['logic_compare'] = { | ||||
|     /** | ||||
|      * Block for comparison operator. | ||||
|      * @this Blockly.Block | ||||
|      */ | ||||
|     init: function () { | ||||
|         var OPERATORS = this.RTL ? [ | ||||
|             ['=', 'EQ'], | ||||
|             ['\u2260', 'NEQ'], | ||||
|             ['>', 'LT'], | ||||
|             ['\u2265', 'LTE'], | ||||
|             ['<', 'GT'], | ||||
|             ['\u2264', 'GTE'] | ||||
|         ] : [ | ||||
|                 ['=', 'EQ'], | ||||
|                 ['\u2260', 'NEQ'], | ||||
|                 ['<', 'LT'], | ||||
|                 ['\u2264', 'LTE'], | ||||
|                 ['>', 'GT'], | ||||
|                 ['\u2265', 'GTE'] | ||||
|             ]; | ||||
|         this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL); | ||||
|         this.setColour(getColour().logic); | ||||
|         this.setOutput(true, Types.BOOLEAN.typeName); | ||||
|         this.appendValueInput('A'); | ||||
|         this.appendValueInput('B') | ||||
|             .appendField(new Blockly.FieldDropdown(OPERATORS), 'OP'); | ||||
|         this.setInputsInline(true); | ||||
|         // Assign 'this' to a variable for use in the tooltip closure below.
 | ||||
|         var thisBlock = this; | ||||
|         this.setTooltip(function () { | ||||
|             var op = thisBlock.getFieldValue('OP'); | ||||
|             var TOOLTIPS = { | ||||
|                 'EQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ, | ||||
|                 'NEQ': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ, | ||||
|                 'LT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT, | ||||
|                 'LTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE, | ||||
|                 'GT': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT, | ||||
|                 'GTE': Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE | ||||
|             }; | ||||
|             return TOOLTIPS[op]; | ||||
|         }); | ||||
|     }, | ||||
|     /** | ||||
|      * Called whenever anything on the workspace changes. | ||||
|      * Prevent mismatched types from being compared. | ||||
|      * @param {!Blockly.Events.Abstract} e Change event. | ||||
|      * @this Blockly.Block | ||||
|      */ | ||||
|     onchange: function (e) { | ||||
|         var blockA = this.getInputTargetBlock('A'); | ||||
|         var blockB = this.getInputTargetBlock('B'); | ||||
|         if (blockA === null && blockB === null) { | ||||
|             this.getInput('A').setCheck(null); | ||||
|             this.getInput('B').setCheck(null); | ||||
|         } | ||||
|         if (blockA !== null && blockB === null) { | ||||
|             this.getInput('A').setCheck(getCompatibleTypes(blockA.outputConnection.check_[0])); | ||||
|             this.getInput('B').setCheck(getCompatibleTypes(blockA.outputConnection.check_[0])); | ||||
|         } | ||||
|         if (blockB !== null && blockA === null) { | ||||
|             this.getInput('B').setCheck(getCompatibleTypes(blockB.outputConnection.check_[0])); | ||||
|             this.getInput('A').setCheck(getCompatibleTypes(blockB.outputConnection.check_[0])); | ||||
|         } | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| Blockly.Blocks['switch_case'] = { | ||||
|     init: function () { | ||||
|  | ||||
| @ -1 +1,202 @@ | ||||
| import Blockly from 'blockly/core'; | ||||
| import { getColour } from '../helpers/colour'; | ||||
| import * as Types from '../helpers/types'; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Blockly.defineBlocksWithJsonArray([  // BEGIN JSON EXTRACT
 | ||||
|     // Block for text value
 | ||||
|     { | ||||
|         "type": "text", | ||||
|         "message0": "%1", | ||||
|         "args0": [{ | ||||
|             "type": "field_input", | ||||
|             "name": "TEXT", | ||||
|             "text": "" | ||||
|         }], | ||||
|         "output": Types.TEXT.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "helpUrl": "%{BKY_TEXT_TEXT_HELPURL}", | ||||
|         "tooltip": "%{BKY_TEXT_TEXT_TOOLTIP}", | ||||
|         "extensions": [ | ||||
|             "text_quotes", | ||||
|             "parent_tooltip_when_inline" | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_multiline", | ||||
|         "message0": "%1 %2", | ||||
|         "args0": [{ | ||||
|             "type": "field_image", | ||||
|             "src": 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpP' + | ||||
|                 'U2iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAdhgAAHYYBXaITgQAAABh0RVh0' + | ||||
|                 'U29mdHdhcmUAcGFpbnQubmV0IDQuMS42/U4J6AAAAP1JREFUOE+Vks0KQUEYhjm' + | ||||
|                 'RIja4ABtZ2dm5A3t3Ia6AUm7CylYuQRaUhZSlLZJiQbFAyRnPN33y01HOW08z88' + | ||||
|                 '73zpwzM4F3GWOCruvGIE4/rLaV+Nq1hVGMBqzhqlxgCys4wJA65xnogMHsQ5luj' + | ||||
|                 'nYHTejBBCK2mE4abjCgMGhNxHgDFWjDSG07kdfVa2pZMf4ZyMAdWmpZMfYOsLiD' + | ||||
|                 'MYMjlMB+K613QISRhTnITnsYg5yUd0DETmEoMlkFOeIT/A58iyK5E18BuTBfgYX' + | ||||
|                 'fwNJv4P9/oEBerLylOnRhygmGdPpTTBZAPkde61lbQe4moWUvYUZYLfUNftIY4z' + | ||||
|                 'wA5X2Z9AYnQrEAAAAASUVORK5CYII=', | ||||
|             "width": 12, | ||||
|             "height": 17, | ||||
|             "alt": '\u00B6' | ||||
|         }, { | ||||
|             "type": "field_multilinetext", | ||||
|             "name": "TEXT", | ||||
|             "text": "" | ||||
|         }], | ||||
|         "output": Types.TEXT.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "helpUrl": "%{BKY_TEXT_TEXT_HELPURL}", | ||||
|         "tooltip": "%{BKY_TEXT_TEXT_TOOLTIP}", | ||||
|         "extensions": [ | ||||
|             "parent_tooltip_when_inline" | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_join", | ||||
|         "message0": "", | ||||
|         "output": Types.TEXT.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "helpUrl": "%{BKY_TEXT_JOIN_HELPURL}", | ||||
|         "tooltip": "%{BKY_TEXT_JOIN_TOOLTIP}", | ||||
|         "mutator": "text_join_mutator" | ||||
| 
 | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_create_join_container", | ||||
|         "message0": "%{BKY_TEXT_CREATE_JOIN_TITLE_JOIN} %1 %2", | ||||
|         "args0": [{ | ||||
|             "type": "input_dummy" | ||||
|         }, | ||||
|         { | ||||
|             "type": "input_statement", | ||||
|             "name": "STACK" | ||||
|         }], | ||||
|         "style": "text_blocks", | ||||
|         "tooltip": "%{BKY_TEXT_CREATE_JOIN_TOOLTIP}", | ||||
|         "enableContextMenu": false | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_create_join_item", | ||||
|         "message0": "%{BKY_TEXT_CREATE_JOIN_ITEM_TITLE_ITEM}", | ||||
|         "previousStatement": null, | ||||
|         "nextStatement": null, | ||||
|         "style": getColour().text, | ||||
|         "tooltip": "%{BKY_TEXT_CREATE_JOIN_ITEM_TOOLTIP}", | ||||
|         "enableContextMenu": false | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_append", | ||||
|         "message0": "%{BKY_TEXT_APPEND_TITLE}", | ||||
|         "args0": [{ | ||||
|             "type": "field_variable", | ||||
|             "name": "VAR", | ||||
|             "variable": "%{BKY_TEXT_APPEND_VARIABLE}" | ||||
|         }, | ||||
|         { | ||||
|             "type": "input_value", | ||||
|             "name": "TEXT" | ||||
|         }], | ||||
|         "previousStatement": null, | ||||
|         "nextStatement": null, | ||||
|         "style": "text_blocks", | ||||
|         "extensions": [ | ||||
|             "text_append_tooltip" | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_length", | ||||
|         "message0": "%{BKY_TEXT_LENGTH_TITLE}", | ||||
|         "args0": [ | ||||
|             { | ||||
|                 "type": "input_value", | ||||
|                 "name": "VALUE", | ||||
|                 "check": ['String', 'Array'] | ||||
|             } | ||||
|         ], | ||||
|         "output": Types.NUMBER.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "tooltip": "%{BKY_TEXT_LENGTH_TOOLTIP}", | ||||
|         "helpUrl": "%{BKY_TEXT_LENGTH_HELPURL}" | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_isEmpty", | ||||
|         "message0": "%{BKY_TEXT_ISEMPTY_TITLE}", | ||||
|         "args0": [ | ||||
|             { | ||||
|                 "type": "input_value", | ||||
|                 "name": "VALUE", | ||||
|                 "check": ['String', 'Array'] | ||||
|             } | ||||
|         ], | ||||
|         "output": Types.BOOLEAN.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "tooltip": "%{BKY_TEXT_ISEMPTY_TOOLTIP}", | ||||
|         "helpUrl": "%{BKY_TEXT_ISEMPTY_HELPURL}" | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_indexOf", | ||||
|         "message0": "%{BKY_TEXT_INDEXOF_TITLE}", | ||||
|         "args0": [ | ||||
|             { | ||||
|                 "type": "input_value", | ||||
|                 "name": "VALUE", | ||||
|                 "check": "String" | ||||
|             }, | ||||
|             { | ||||
|                 "type": "field_dropdown", | ||||
|                 "name": "END", | ||||
|                 "options": [ | ||||
|                     [ | ||||
|                         "%{BKY_TEXT_INDEXOF_OPERATOR_FIRST}", | ||||
|                         "FIRST" | ||||
|                     ], | ||||
|                     [ | ||||
|                         "%{BKY_TEXT_INDEXOF_OPERATOR_LAST}", | ||||
|                         "LAST" | ||||
|                     ] | ||||
|                 ] | ||||
|             }, | ||||
|             { | ||||
|                 "type": "input_value", | ||||
|                 "name": "FIND", | ||||
|                 "check": "String" | ||||
|             } | ||||
|         ], | ||||
|         "output": Types.NUMBER.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "helpUrl": "%{BKY_TEXT_INDEXOF_HELPURL}", | ||||
|         "inputsInline": true, | ||||
|         "extensions": [ | ||||
|             "text_indexOf_tooltip" | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|         "type": "text_charAt", | ||||
|         "message0": "%{BKY_TEXT_CHARAT_TITLE}", // "in text %1 %2"
 | ||||
|         "args0": [ | ||||
|             { | ||||
|                 "type": "input_value", | ||||
|                 "name": "VALUE", | ||||
|                 "check": "String" | ||||
|             }, | ||||
|             { | ||||
|                 "type": "field_dropdown", | ||||
|                 "name": "WHERE", | ||||
|                 "options": [ | ||||
|                     ["%{BKY_TEXT_CHARAT_FROM_START}", "FROM_START"], | ||||
|                     ["%{BKY_TEXT_CHARAT_FROM_END}", "FROM_END"], | ||||
|                     ["%{BKY_TEXT_CHARAT_FIRST}", "FIRST"], | ||||
|                     ["%{BKY_TEXT_CHARAT_LAST}", "LAST"], | ||||
|                     ["%{BKY_TEXT_CHARAT_RANDOM}", "RANDOM"] | ||||
|                 ] | ||||
|             } | ||||
|         ], | ||||
|         "output": Types.TEXT.typeName, | ||||
|         "style": "text_blocks", | ||||
|         "helpUrl": "%{BKY_TEXT_CHARAT_HELPURL}", | ||||
|         "inputsInline": true, | ||||
|         "mutator": "text_charAt_mutator" | ||||
|     } | ||||
| ]);  // END JSON EXTRACT (Do not delete this comment.)
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user