diff --git a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts index 56627e860c7c3805951340c5606f4c0f6a1e0f51..05629b3079da12dbd1a3c03383c2070219d9335c 100644 --- a/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts +++ b/src/app/p_services/admin/lifeCycleManagement/service-rule-design/service-rule-design.component.ts @@ -1470,12 +1470,66 @@ export class ServiceRuleDesignComponent implements OnInit { var avalue = Blockly.Java.valueToCode(block, 'CONDITION', Blockly.Java.ORDER_ASSIGNMENT) || 'true'; - - var code = 'createServiceRefIf(' + serviceName +', '+ avalue +');\n'; - + + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + + var charvalsVarName = 'charvals'; + code += 'java.util.HashMap<String,String> ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + + var varray = '['; + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'createServiceRefIf(' + serviceName +', '+ avalue +', '+ charvalsVarName +');\n'; + code += '}\n'; return code; }; + Blockly.Java['createResourceRefIf'] = function(block: any) { + var resourceName = Blockly.Java.valueToCode(block, 'RESOURCE_NAME', + Blockly.Java.ORDER_NONE) || '""'; + + + var avalue = Blockly.Java.valueToCode(block, 'CONDITION', + Blockly.Java.ORDER_ASSIGNMENT) || 'true'; + + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + + var charvalsVarName = 'charvals'; + code += 'java.util.HashMap<String,String> ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + + var varray = '['; + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'createResourceRefIf(' + resourceName +', '+ avalue +', '+ charvalsVarName +');\n'; + code += '}\n'; + return code; + }; Blockly.Java['getServiceRefName'] = function(block: any) { @@ -1598,8 +1652,11 @@ export class ServiceRuleDesignComponent implements OnInit { var objects = JSON.parse( cvs ); console.log( objects ); - var charvalsVarName = 'charvals_'+ Math.floor(Math.random() * 1000) + 1; - var code = 'java.util.HashMap<String,String> ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; + //var charvalsVarName = 'charvals_'+ Math.floor(Math.random() * 1000) + 1; + var charvalsVarName = 'charvals'; + //put it in braces so to ensure the scope of the hashmap variable + var code = '{\n'; + code += 'java.util.HashMap<String,String> ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; var varray = '['; @@ -1613,7 +1670,7 @@ export class ServiceRuleDesignComponent implements OnInit { varray += ']'; code += 'setServiceRefCharacteristicsValues(' + servicename +', ' + charvalsVarName + ');\n'; - + code += '}\n'; return code; }; diff --git a/src/assets/blockly/custom_blocks.js b/src/assets/blockly/custom_blocks.js index 7a1a00bd65407b8aa49e83e26eec02e446e85cb0..a3a0cb5cf420a8059b3e4b352d4ded3a927aff94 100644 --- a/src/assets/blockly/custom_blocks.js +++ b/src/assets/blockly/custom_blocks.js @@ -1214,8 +1214,16 @@ Blockly.Blocks['example_variable_typed'] = { .appendField("Create Ref Service"); this.appendValueInput("CONDITION") .setCheck("Boolean") + .setAlign(Blockly.ALIGN_RIGHT) .appendField("if"); - this.setInputsInline(true); + + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + + + this.setInputsInline(false); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(230); @@ -1231,8 +1239,13 @@ Blockly.Blocks['example_variable_typed'] = { .appendField("Create Ref Resource"); this.appendValueInput("CONDITION") .setCheck("Boolean") + .setAlign(Blockly.ALIGN_RIGHT) .appendField("if"); - this.setInputsInline(true); + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + this.setInputsInline(false); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(230);