add block type to setter and getter
This commit is contained in:
		
							parent
							
								
									da4c8840ea
								
							
						
					
					
						commit
						5304907fd0
					
				| @ -56,7 +56,7 @@ Blockly.Blocks['io_digitalread'] = { | |||||||
|             .appendField(Blockly.Msg.ARD_DIGITALREAD) |             .appendField(Blockly.Msg.ARD_DIGITALREAD) | ||||||
|             .appendField(new Blockly.FieldDropdown( |             .appendField(new Blockly.FieldDropdown( | ||||||
|                 selectedBoard().digitalPins), 'PIN'); |                 selectedBoard().digitalPins), 'PIN'); | ||||||
|         this.setOutput(true, Types.BOOLEAN); |         this.setOutput(true, 'boolean'); | ||||||
|         this.setTooltip(Blockly.Msg.ARD_DIGITALREAD_TIP); |         this.setTooltip(Blockly.Msg.ARD_DIGITALREAD_TIP); | ||||||
|     }, |     }, | ||||||
|     /** @return {!string} The type of return value for the block, an integer. */ |     /** @return {!string} The type of return value for the block, an integer. */ | ||||||
|  | |||||||
| @ -50,6 +50,8 @@ Blockly.Blocks['sensebox_display_printDisplay'] = { | |||||||
|             .setCheck(null); |             .setCheck(null); | ||||||
|         this.setPreviousStatement(true, null); |         this.setPreviousStatement(true, null); | ||||||
|         this.setNextStatement(true, null); |         this.setNextStatement(true, null); | ||||||
|  |         let variableName = this.getField('COLOR'); | ||||||
|  |         console.log(variableName.getValue()); | ||||||
|         this.setTooltip(Blockly.Msg.senseBox_display_printDisplay_tip); |         this.setTooltip(Blockly.Msg.senseBox_display_printDisplay_tip); | ||||||
|         this.setHelpUrl('https://sensebox.de/books'); |         this.setHelpUrl('https://sensebox.de/books'); | ||||||
|     }, |     }, | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ import Blockly from 'blockly'; | |||||||
| import { getColour } from '../helpers/colour' | import { getColour } from '../helpers/colour' | ||||||
| import * as Types from '../helpers/types' | import * as Types from '../helpers/types' | ||||||
| import { selectedBoard } from '../helpers/board' | import { selectedBoard } from '../helpers/board' | ||||||
|  | import { colors } from '@material-ui/core'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * HDC1080 Temperature and Humidity Sensor |  * HDC1080 Temperature and Humidity Sensor | ||||||
| @ -16,7 +17,7 @@ Blockly.Blocks['sensebox_sensor_temp_hum'] = { | |||||||
|       .setAlign(Blockly.ALIGN_RIGHT) |       .setAlign(Blockly.ALIGN_RIGHT) | ||||||
|       .appendField(Blockly.Msg.senseBox_value) |       .appendField(Blockly.Msg.senseBox_value) | ||||||
|       .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_temp, "Temperature"], [Blockly.Msg.senseBox_hum, "Humidity"]]), "NAME"); |       .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_temp, "Temperature"], [Blockly.Msg.senseBox_hum, "Humidity"]]), "NAME"); | ||||||
|     this.setOutput(true, Types.NUMBER.typeId); |     this.setOutput(true, Types.DECIMAL.typeId); | ||||||
|     this.setColour(getColour().sensebox); |     this.setColour(getColour().sensebox); | ||||||
|     this.setTooltip(Blockly.Msg.senseBox_temp_hum_tip); |     this.setTooltip(Blockly.Msg.senseBox_temp_hum_tip); | ||||||
|     this.setHelpUrl('https://edu.books.sensebox.de/de/projekte/diy_umweltstation/temp_und_luftfeuchte.html'); |     this.setHelpUrl('https://edu.books.sensebox.de/de/projekte/diy_umweltstation/temp_und_luftfeuchte.html'); | ||||||
| @ -124,6 +125,8 @@ Blockly.Blocks['sensebox_sensor_pressure'] = { | |||||||
|     this.setOutput(true, Types.NUMBER.typeId); |     this.setOutput(true, Types.NUMBER.typeId); | ||||||
|     this.setTooltip(Blockly.Msg.senseBox_pressure_tip); |     this.setTooltip(Blockly.Msg.senseBox_pressure_tip); | ||||||
|     this.setHelpUrl('https://edu.books.sensebox.de/de/projekte/diy_umweltstation/luftdruck.html'); |     this.setHelpUrl('https://edu.books.sensebox.de/de/projekte/diy_umweltstation/luftdruck.html'); | ||||||
|  |     var input = this.getFieldValue('NAME'); | ||||||
|  |     console.log(input); | ||||||
|   }, |   }, | ||||||
|   /** |   /** | ||||||
|    * Parse XML to restore the number of pins available. |    * Parse XML to restore the number of pins available. | ||||||
| @ -231,7 +234,7 @@ Blockly.Blocks['sensebox_sensor_ultrasonic_ranger'] = { | |||||||
|       .appendField(Blockly.Msg.senseBox_ultrasonic_echo) |       .appendField(Blockly.Msg.senseBox_ultrasonic_echo) | ||||||
|       .appendField(new Blockly.FieldDropdown( |       .appendField(new Blockly.FieldDropdown( | ||||||
|         selectedBoard().digitalPins), 'ultrasonic_echo'); |         selectedBoard().digitalPins), 'ultrasonic_echo'); | ||||||
|     this.setOutput(true, Types.NUMBER.typeId); |     this.setOutput(true, 'int'); | ||||||
|     this.setTooltip(Blockly.Msg.senseBox_ultrasonic_tip); |     this.setTooltip(Blockly.Msg.senseBox_ultrasonic_tip); | ||||||
|     this.setHelpUrl('https://sensebox.de/books'); |     this.setHelpUrl('https://sensebox.de/books'); | ||||||
|   }, |   }, | ||||||
| @ -283,7 +286,7 @@ Blockly.Blocks['sensebox_sensor_ultrasonic_ranger'] = { | |||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   getBlockType: function () { |   getBlockType: function () { | ||||||
|     return Blockly.Types.NUMBER; |     return Blockly.Types.SHORT_NUMBER; | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,167 +1,41 @@ | |||||||
| import Blockly from 'blockly/core'; | import Blockly, { FieldVariable } from 'blockly/core'; | ||||||
| import { getColour } from '../helpers/colour'; | import { getColour } from '../helpers/colour'; | ||||||
|  | import { getCompatibleTypes } from '../helpers/types' | ||||||
| 
 | 
 | ||||||
| Blockly.defineBlocksWithJsonArray([ | 
 | ||||||
|     // BEGIN JSON EXTRACT
 | Blockly.Blocks['variables_set_dynamic'] = { | ||||||
|     { |     init: function () { | ||||||
|         type: 'variables_get_number', | 
 | ||||||
|         message0: '= number variable %1', |         // const type = myVar.type;
 | ||||||
|         args0: [ |         this.setColour(getColour().variables); | ||||||
|             { |         this.setPreviousStatement(true, null); | ||||||
|                 type: 'field_variable', |         this.setNextStatement(true, null); | ||||||
|                 name: 'VAR', |         this.appendValueInput('VALUE') | ||||||
|                 variable: null, |             .appendField('set', 'set') | ||||||
|                 variableTypes: ['Number'], |             .appendField(new Blockly.FieldVariable('VAR'), 'VAR') | ||||||
|                 defaultType: 'Number', |             .appendField('to'); | ||||||
|     }, |     }, | ||||||
|         ], |     onchange: function (e) { | ||||||
|         output: 'Number', |         let variableID = this.getFieldValue('VAR'); | ||||||
|         colour: getColour().variables, |         let variable = Blockly.getMainWorkspace().getVariableMap().getVariableById(variableID) | ||||||
|         tooltip: '', |         this.getInput('VALUE').setCheck(getCompatibleTypes(variable.type)); | ||||||
|         helpUrl: '', | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Blockly.Blocks['variables_get_dynamic'] = { | ||||||
|  |     init: function () { | ||||||
|  |         this.setColour(getColour().variables); | ||||||
|  |         this.appendDummyInput() | ||||||
|  |             .appendField('', 'type') | ||||||
|  |             .appendField(new Blockly.FieldVariable('VAR'), 'VAR'); | ||||||
|  |         this.setOutput(true); | ||||||
|     }, |     }, | ||||||
|     { |     onchange: function (e) { | ||||||
|         type: 'variables_set_number', |         let variableID = this.getFieldValue('VAR'); | ||||||
|         message0: 'Number variable %1 = %2', |         let variable = Blockly.getMainWorkspace().getVariableMap().getVariableById(variableID) | ||||||
|         args0: [ |         this.getField('type').setValue(variable.type); | ||||||
|             { | 
 | ||||||
|                 type: 'field_variable', |     } | ||||||
|                 name: 'VAR', | } | ||||||
|                 variable: null, | 
 | ||||||
|                 variableTypes: ['Number'], |  | ||||||
|                 defaultType: 'Number', |  | ||||||
|                 createNewVariable: false, |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 type: 'input_value', |  | ||||||
|                 name: 'VALUE', |  | ||||||
|                 check: 'Number', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         previousStatement: null, |  | ||||||
|         nextStatement: null, |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_get_colour', |  | ||||||
|         message0: '= color variable %1', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['Colour'], |  | ||||||
|                 defaultType: 'Colour', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         output: 'Colour', |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_set_colour', |  | ||||||
|         message0: 'Color variable %1 = %2', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['Colour'], |  | ||||||
|                 defaultType: 'Colour', |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 type: 'input_value', |  | ||||||
|                 name: 'VALUE', |  | ||||||
|                 check: 'Colour', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         previousStatement: null, |  | ||||||
|         nextStatement: null, |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_get_string', |  | ||||||
|         message0: '= text variable %1', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['String'], |  | ||||||
|                 defaultType: 'String', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         output: 'String', |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_set_string', |  | ||||||
|         message0: 'Text variable %1 = %2', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['String'], |  | ||||||
|                 defaultType: 'String', |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 type: 'input_value', |  | ||||||
|                 name: 'VALUE', |  | ||||||
|                 check: 'String', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         previousStatement: null, |  | ||||||
|         nextStatement: null, |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_get_boolean', |  | ||||||
|         message0: '= boolean variable %1', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['Boolean'], |  | ||||||
|                 defaultType: 'Boolean', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         output: 'Boolean', |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|         type: 'variables_set_boolean', |  | ||||||
|         message0: 'Boolean variable %1 = %2', |  | ||||||
|         args0: [ |  | ||||||
|             { |  | ||||||
|                 type: 'field_variable', |  | ||||||
|                 name: 'VAR', |  | ||||||
|                 variable: null, |  | ||||||
|                 variableTypes: ['Boolean'], |  | ||||||
|                 defaultType: 'Boolean', |  | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 type: 'input_value', |  | ||||||
|                 name: 'VALUE', |  | ||||||
|                 check: 'Boolean', |  | ||||||
|             }, |  | ||||||
|         ], |  | ||||||
|         previousStatement: null, |  | ||||||
|         nextStatement: null, |  | ||||||
|         colour: getColour().variables, |  | ||||||
|         tooltip: '', |  | ||||||
|         helpUrl: '', |  | ||||||
|     }, |  | ||||||
| ]); // END JSON EXTRACT (Do not delete this comment.)
 |  | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ const setVariableFunction = function (defaultValue) { | |||||||
|         const allVars = Blockly.getMainWorkspace().getVariableMap().getAllVariables(); |         const allVars = Blockly.getMainWorkspace().getVariableMap().getAllVariables(); | ||||||
|         const myVar = allVars.filter(v => v.name === variableName)[0] |         const myVar = allVars.filter(v => v.name === variableName)[0] | ||||||
| 
 | 
 | ||||||
|         Blockly.Arduino.setupCode_[''] = myVar.type + " " + myVar.name + ';\n'; |         Blockly.Arduino.variables_[myVar] = myVar.type + " " + myVar.name + ';\n'; | ||||||
|         return variableName + ' = ' + (variableValue || defaultValue) + ';\n'; |         return variableName + ' = ' + (variableValue || defaultValue) + ';\n'; | ||||||
|     }; |     }; | ||||||
| }; | }; | ||||||
|  | |||||||
| @ -12,6 +12,7 @@ | |||||||
| /** Single character. */ | /** Single character. */ | ||||||
| export const CHARACTER = { | export const CHARACTER = { | ||||||
|     typeId: 'Character', |     typeId: 'Character', | ||||||
|  |     typeName: 'char', | ||||||
|     typeMsgName: 'ARD_TYPE_CHAR', |     typeMsgName: 'ARD_TYPE_CHAR', | ||||||
|     compatibleTypes: [] |     compatibleTypes: [] | ||||||
| } | } | ||||||
| @ -31,14 +32,15 @@ export const TEXT = { | |||||||
| 
 | 
 | ||||||
| /** Short integer number. */ | /** Short integer number. */ | ||||||
| export const SHORT_NUMBER = { | export const SHORT_NUMBER = { | ||||||
|     typeId: 'Short Number', |     typeId: 'Short_Number', | ||||||
|  |     typeName: 'int', | ||||||
|     typeMsgName: 'ARD_TYPE_SHORT', |     typeMsgName: 'ARD_TYPE_SHORT', | ||||||
|     compatibleTypes: []    // Circular dependencies, add after all declarations
 |     compatibleTypes: ['int', 'float',]    // Circular dependencies, add after all declarations
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** Integer number. */ | /** Integer number. */ | ||||||
| export const NUMBER = { | export const NUMBER = { | ||||||
|     typeId: 'Number', |     typeId: 'int', | ||||||
|     typeMsgName: 'ARD_TYPE_NUMBER', |     typeMsgName: 'ARD_TYPE_NUMBER', | ||||||
|     compatibleTypes: ['Number']    // Circular dependencies, add after all declarations
 |     compatibleTypes: ['Number']    // Circular dependencies, add after all declarations
 | ||||||
| } | } | ||||||
| @ -52,12 +54,12 @@ export const LARGE_NUMBER = { | |||||||
| 
 | 
 | ||||||
| /** Decimal/floating point number. */ | /** Decimal/floating point number. */ | ||||||
| export const DECIMAL = { | export const DECIMAL = { | ||||||
|     typeId: 'Decimal', |     typeId: 'float', | ||||||
|     typeMsgName: 'ARD_TYPE_DECIMAL', |     typeMsgName: 'ARD_TYPE_DECIMAL', | ||||||
|     compatibleTypes: [BOOLEAN.typeId, |     compatibleTypes: [BOOLEAN.typeId, | ||||||
|         NUMBER, |     NUMBER.typeId, | ||||||
|         SHORT_NUMBER, |     SHORT_NUMBER.typeId, | ||||||
|         LARGE_NUMBER] |     LARGE_NUMBER.typeId] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /** Array/List of items. */ | /** Array/List of items. */ | ||||||
| @ -88,8 +90,23 @@ export const CHILD_BLOCK_MISSING = { | |||||||
|     compatibleTypes: [] |     compatibleTypes: [] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | const compatibleTypes = { | ||||||
|  |     boolean: ['boolean'], | ||||||
|  |     int: ['int'], | ||||||
|  |     char: ['char'], | ||||||
|  |     string: ['String'], | ||||||
|  |     void: ['void'], | ||||||
|  |     long: ['int', 'long'], | ||||||
|  |     double: ['int', 'long', 'double'], | ||||||
|  |     float: ['int', 'long', 'double', 'float'] | ||||||
| 
 | 
 | ||||||
| export const VARIABLE_TYPES = ['Number', 'String', 'Boolean', 'Colour']; | } | ||||||
|  | 
 | ||||||
|  | export const getCompatibleTypes = (type) => { | ||||||
|  |     return compatibleTypes[type]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | export const VARIABLE_TYPES = [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DECIMAL', 'long'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']]; | ||||||
| 
 | 
 | ||||||
| // /**
 | // /**
 | ||||||
| //  * Some Types have circular dependencies on their compatibilities, so add them
 | //  * Some Types have circular dependencies on their compatibilities, so add them
 | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ class Toolbox extends React.Component { | |||||||
|     componentDidUpdate() { |     componentDidUpdate() { | ||||||
|         this.props.workspace.registerToolboxCategoryCallback('CREATE_TYPED_VARIABLE', this.createFlyout); |         this.props.workspace.registerToolboxCategoryCallback('CREATE_TYPED_VARIABLE', this.createFlyout); | ||||||
| 
 | 
 | ||||||
|          const typedVarModal = new TypedVariableModal(this.props.workspace, 'callbackName', [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DECIMAL', 'long'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']]); |         const typedVarModal = new TypedVariableModal(this.props.workspace, 'callbackName', [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DECIMAL', 'float'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']]); | ||||||
|         typedVarModal.init(); |         typedVarModal.init(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user