Skip to content
Snippets Groups Projects
Commit f6db52be authored by tranoris's avatar tranoris
Browse files

Merge branch 'parent-child-characteristics' into 'develop'

Parent child characteristics

See merge request !7
parents f8db4939 d1f8e6bf
No related branches found
No related tags found
2 merge requests!13Merging 2024Q2_RC into main, creating 2024Q2 Release,!7Parent child characteristics
Pipeline #5363 passed
......@@ -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 = '<block type="getServiceRefName">' +
......@@ -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 = '<block type="setServiceRefProps">' +
// '<field name="ASERVICEREFNAME">'+ servRef.name +'</field>' +
// '<field name="ASERVICEREFUUID">'+ servRef.uuid +'</field>' +
// '</block>';
// var block = Blockly.Xml.textToDom(blockText);
// xmlList.push(block);
// }
// }
if (Blockly.Blocks['setServiceRefCharacteristicValues']) {
for (var i = 0; i < chars.length; i++) {
var blockText = '<block type="setServiceRefCharacteristicValues">' +
'<field name="ASERVICEREFNAME">' + chars[i].name + '</field>' +
'<field name="ASERVICEREFUUID">' + chars[i].uuid + '</field>' +
'</block>';
var block = Blockly.Xml.textToDom(blockText);
xmlList.push(block);
}
}
if (Blockly.Blocks['serviceRefCharacteristic']) {
var blockText = '<block type="serviceRefCharacteristic">' +
'<field name="ACHARACTERISTICNAME"></field>' +
'<field name="AVALUE"></field>' +
'</block>';
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.<!Element>} 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 = '<block type="createresourcewhen"></block>';
blockText = '<block type="createResourceRefIf"></block>';
block = Blockly.Xml.textToDom(blockText);
xmlList.push(block);
......@@ -618,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];
};
......@@ -1366,12 +1468,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) {
......@@ -1416,6 +1572,107 @@ 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 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 = '[';
if (objects){
objects.forEach(element => {
var charname = element.charname;
var avalue = element.charvalue;
code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n';
});
}
varray += ']';
code += 'setServiceRefCharacteristicsValues(' + servicename +', ' + charvalsVarName + ');\n';
code += '}\n';
return code;
};
}
......
......@@ -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);
......@@ -1224,6 +1232,27 @@ 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")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField("if");
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);
this.setTooltip("Create a resource when a condition validates to true during the creation process.");
this.setHelpUrl("");
}
};
......@@ -1356,4 +1385,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 referenced 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment