From 1b30d0c0eda1abee023fa39c7df312782a4ff953 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Tue, 19 Dec 2023 15:04:11 +0200 Subject: [PATCH 1/5] changes to setServiceRefCharacteristicValues, removed setServiceRefProps --- .../service-rule-design.component.ts | 207 +++++++++++++++++- src/assets/blockly/custom_blocks.js | 106 +++++++++ 2 files changed, 310 insertions(+), 3 deletions(-) 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 e3214ec..852d361 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 @@ -250,7 +250,7 @@ export class ServiceRuleDesignComponent implements OnInit { this.workspace.charsListSet = this.workspace.charsListSet.concat( this.charsListArray ); this.workspace.charsListBoolean = this.charsListBoolean; - + this.workspace.specService = this.specService; this.charvarsAllFunction(this.workspace); //calling this function here causes a preloading of the blocks in the model in a synchronous manner. Asynchronously it is recalled later in the blockly toolbar @@ -527,6 +527,8 @@ export class ServiceRuleDesignComponent implements OnInit { var xmlList = []; var chars: ServiceSpecRelationship[] = workspace.serviceSpecRel; + + if (Blockly.Blocks['getServiceRefName']) { for (var i = 0; i < chars.length; i++) { var blockText = '' + @@ -556,10 +558,112 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); + + + + // if (Blockly.Blocks['setServiceRefProps']) { + // for (var i = 0; i < chars.length; i++) { + + // var options = []; + // var serviceRefSpec; + // var servRef = chars[i]; + + // workspace.specService.retrieveServiceSpecification({id: servRef.id, servRef , xmlList }).subscribe( + // data => serviceRefSpec = data, + // error => console.error(error), + // () => { + + // var xmlx = xmlList; + // var serviceRefChars: ServiceSpecCharacteristic[] = serviceRefSpec.serviceSpecCharacteristic; + // for (var j = 0; j < serviceRefChars.length; j++) { + // options.push([ serviceRefChars[j].name, serviceRefChars[j].name ]); + // } + // console.log(servRef); + + // var sortedArray: string[] = options.sort((n1,n2) => { + // if (n1 > n2) { + // return 1; + // } + + // if (n1 < n2) { + // return -1; + // } + + // return 0; + // }); + + // Blockly.Blocks['setServiceRefProps'] = { + // init: function() { + // this.appendDummyInput() + // .appendField("Service") + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + // this.appendDummyInput() + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID") + // .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + // .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); + + + // this.appendValueInput("AVALUE") + // .setCheck("String") + // .setAlign(Blockly.ALIGN_RIGHT) + // .appendField("value"); + + + // this.setInputsInline( true ); + // this.setPreviousStatement(true, null); + // this.setNextStatement(true, null); + // this.setColour(160); + // this.setTooltip("Set values to characteristics of a refernced service."); + // this.setHelpUrl(""); + + // }, + + // }; + // } + // ) + + // var blockText = '' + + // ''+ servRef.name +'' + + // ''+ servRef.uuid +'' + + // ''; + // var block = Blockly.Xml.textToDom(blockText); + // xmlList.push(block); + + + // } + // } + + + + + if (Blockly.Blocks['setServiceRefCharacteristicValues']) { + for (var i = 0; i < chars.length; i++) { + + var blockText = '' + + '' + chars[i].name + '' + + '' + chars[i].uuid + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + + } + } + + + if (Blockly.Blocks['serviceRefCharacteristic']) { + var blockText = '' + + '' + + '' + + ''; + var block = Blockly.Xml.textToDom(blockText); + xmlList.push(block); + } + return xmlList; }; + /** @@ -567,7 +671,7 @@ export class ServiceRuleDesignComponent implements OnInit { * @param {!Blockly.Workspace} workspace The workspace this flyout is for. * @return {!Array.} Array of XML block elements. */ - resourceSpecRelsFunction = function(workspace: any) { + resourceSpecRelsFunction = function(workspace: any) { var xmlList = []; var chars: ResourceSpecificationRef[] = workspace.resourceserviceSpecRef; @@ -581,7 +685,7 @@ export class ServiceRuleDesignComponent implements OnInit { } } - blockText = ''; + blockText = ''; block = Blockly.Xml.textToDom(blockText); xmlList.push(block); @@ -1416,6 +1520,103 @@ export class ServiceRuleDesignComponent implements OnInit { }; + + // Blockly.Java['setServiceRefProps'] = function(block: any) { + // // Variable getter. + // console.log('setServiceRefProps'); + + + // //var acharname='""'; + // var servicename = block.getFieldValue('ASERVICEREFNAME'); + // servicename = Blockly.Java.quote_( servicename ); + // var servicerefuuid = block.getFieldValue('ASERVICEREFUUID'); + // servicerefuuid = Blockly.Java.quote_( servicerefuuid ); + + // console.log( servicename ); + + + // // var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + // // Blockly.Java.ORDER_ASSIGNMENT) || '""'; + // var acharname = block.getFieldValue('OPTIONEDVALUE'); + // console.log( acharname ); + + + // var aVALUE = Blockly.Java.valueToCode(block, 'AVALUE', + // Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + // console.log( aVALUE ); + + // var code = 'setServiceRefPropValue(' + servicename +', '+acharname +', '+aVALUE +');\n'; + + + // return code; + // }; + + + + Blockly.Java['serviceRefCharacteristic'] = function(block: any) { + // Variable getter. + console.log('serviceRefCharacteristic'); + + var acharname = Blockly.Java.valueToCode(block, 'ACHARACTERISTICNAME', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + console.log( acharname ); + + var aVALUE = Blockly.Java.valueToCode(block, 'AVALUE', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + console.log( aVALUE ); + + var code: any = { "charname" : acharname, "charvalue" : aVALUE }; + + code = JSON.stringify( code, null ); + return [code, Blockly.Java.ORDER_ATOMIC]; + }; + + Blockly.Java['setServiceRefCharacteristicValues'] = function(block: any) { + // Variable getter. + console.log('setServiceRefCharacteristicValues'); + + + //var acharname='""'; + var servicename = block.getFieldValue('ASERVICEREFNAME'); + servicename = Blockly.Java.quote_( servicename ); + var servicerefuuid = block.getFieldValue('ASERVICEREFUUID'); + servicerefuuid = Blockly.Java.quote_( servicerefuuid ); + + console.log( servicename ); + + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', + Blockly.Java.ORDER_ASSIGNMENT) || '""'; + + console.log( acharname ); + + + var cvs = Blockly.Java.valueToCode(block, 'CHARVALUES', Blockly.Java.ORDER_NONE) || null ; + console.log( cvs ); + var objects = JSON.parse( cvs ); + console.log( objects ); + + var code = 'java.util.HashMap charvals = new java.util.HashMap<>();\n'; + + var varray = '['; + + if (objects){ + objects.forEach(element => { + var charname = element.charname; + var avalue = element.charvalue; + code += 'charvals.put(' + charname + ',' +avalue + ');\n'; + }); + } + varray += ']'; + + code += 'setServiceRefCharacteristicsValues(' + servicename +', charvals);\n'; + + + return code; + }; + } diff --git a/src/assets/blockly/custom_blocks.js b/src/assets/blockly/custom_blocks.js index 51d44d0..14cddac 100644 --- a/src/assets/blockly/custom_blocks.js +++ b/src/assets/blockly/custom_blocks.js @@ -1224,6 +1224,22 @@ Blockly.Blocks['example_variable_typed'] = { } }; + Blockly.Blocks['createResourceRefIf'] = { + init: function() { + this.appendValueInput("RESOURCE_NAME") + .setCheck("String") + .appendField("Create Ref Resource"); + this.appendValueInput("CONDITION") + .setCheck("Boolean") + .appendField("if"); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(230); + this.setTooltip("Create a resource when a condition validates to true during the creation process."); + this.setHelpUrl(""); + } + }; @@ -1356,4 +1372,94 @@ Blockly.Blocks['example_variable_typed'] = { this.updateShape(); } }; + + + + + // Blockly.Blocks['setServiceRefProps'] = { + // init: function() { + // this.appendDummyInput() + // .appendField("Service") + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + // this.appendDummyInput() + // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID") + // .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") + // .appendField(new Blockly.FieldLabelSerializable(""), "OPTIONEDVALUE"); + + + + // this.appendValueInput("AVALUE") + // .setCheck("String") + // .setAlign(Blockly.ALIGN_RIGHT) + // .appendField("value"); + + + // this.setInputsInline( true ); + // this.setPreviousStatement(true, null); + // this.setNextStatement(true, null); + // this.setColour(colourtexts); + // this.setTooltip("Set values to characteristics of a refernced service."); + // this.setHelpUrl(""); + + // }, + + // }; + + + + Blockly.Blocks['serviceRefCharacteristic'] = { + init: function() { + + this.appendValueInput("ACHARACTERISTICNAME") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Name"); + + + this.appendValueInput("AVALUE") + .setCheck("String") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("value"); + + + this.setInputsInline( true ); + this.setOutput(true, 'String'); + this.setColour(colourtexts); + this.setTooltip("Set values to characteristics of a refernced service."); + this.setHelpUrl(""); + + }, + + }; + + + Blockly.Blocks['setServiceRefCharacteristicValues'] = { + init: function() { + this.appendDummyInput() + .appendField("Service") + .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFNAME"); + this.appendDummyInput() + .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID"); + + + + this.appendValueInput("CHARVALUES") + .setCheck("Array") + .setAlign(Blockly.ALIGN_RIGHT) + .appendField("Characteristics"); + + + this.setInputsInline( false ); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(colourtexts); + this.setTooltip("Set values to characteristics of a refernced service."); + this.setHelpUrl(""); + + }, + + + + + }; \ No newline at end of file -- GitLab From 8b6f7a0010a0184a3256fccbaa4679f704f0f4ec Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Wed, 20 Dec 2023 14:42:29 +0200 Subject: [PATCH 2/5] typo --- src/assets/blockly/custom_blocks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/blockly/custom_blocks.js b/src/assets/blockly/custom_blocks.js index 14cddac..7a1a00b 100644 --- a/src/assets/blockly/custom_blocks.js +++ b/src/assets/blockly/custom_blocks.js @@ -1425,7 +1425,7 @@ Blockly.Blocks['example_variable_typed'] = { this.setInputsInline( true ); this.setOutput(true, 'String'); this.setColour(colourtexts); - this.setTooltip("Set values to characteristics of a refernced service."); + this.setTooltip("Set values to characteristics of a referenced service."); this.setHelpUrl(""); }, -- GitLab From 3281587a51dc500680645f3b30c81f5a9e4655c0 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Mon, 5 Feb 2024 13:58:31 +0200 Subject: [PATCH 3/5] fix charvalsVarName --- .../service-rule-design/service-rule-design.component.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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 852d361..56627e8 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 @@ -1598,7 +1598,8 @@ export class ServiceRuleDesignComponent implements OnInit { var objects = JSON.parse( cvs ); console.log( objects ); - var code = 'java.util.HashMap charvals = new java.util.HashMap<>();\n'; + var charvalsVarName = 'charvals_'+ Math.floor(Math.random() * 1000) + 1; + var code = 'java.util.HashMap ' + charvalsVarName + ' = new java.util.HashMap<>();\n'; var varray = '['; @@ -1606,12 +1607,12 @@ export class ServiceRuleDesignComponent implements OnInit { objects.forEach(element => { var charname = element.charname; var avalue = element.charvalue; - code += 'charvals.put(' + charname + ',' +avalue + ');\n'; + code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; }); } varray += ']'; - code += 'setServiceRefCharacteristicsValues(' + servicename +', charvals);\n'; + code += 'setServiceRefCharacteristicsValues(' + servicename +', ' + charvalsVarName + ');\n'; return code; -- GitLab From b252b250c9f9bda831e33183453b4ebf94bad3b0 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Tue, 6 Feb 2024 00:48:41 +0200 Subject: [PATCH 4/5] createServiceRefIf block with Characteristics --- .../service-rule-design.component.ts | 69 +++++++++++++++++-- src/assets/blockly/custom_blocks.js | 17 ++++- 2 files changed, 78 insertions(+), 8 deletions(-) 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 56627e8..05629b3 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 ' + 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 ' + 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 ' + 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 ' + 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 7a1a00b..a3a0cb5 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); -- GitLab From 5a886eb13457741eb5750940dcb57a01148059a6 Mon Sep 17 00:00:00 2001 From: Christos Tranoris Date: Tue, 6 Feb 2024 00:59:13 +0200 Subject: [PATCH 5/5] fix bracket bug in list witl --- .../service-rule-design/service-rule-design.component.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) 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 05629b3..a87aeee 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 @@ -722,11 +722,9 @@ export class ServiceRuleDesignComponent implements OnInit { var objects = Blockly.Java.valueToCode(block, 'VARIABLES', Blockly.Java.ORDER_NONE) || null; - objects = objects.replace('[', ' ,'); - objects = objects.replace(']', ' '); + objects = objects.substring(1, objects.length-1 ); //remove first and last brackets - - var code = 'String.format(' + atext + objects + ')'; + var code = 'String.format(' + atext + ', ' + objects + ')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; -- GitLab