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 602039246f1b76c10535104186fc25b028669175..7011d9f2c2ed746b7b07589da38f0fc57aea8d0b 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 @@ -70,30 +70,31 @@ export class ServiceRuleDesignComponent implements OnInit { charsListText: ServiceSpecCharacteristic[]; charsListLongText: ServiceSpecCharacteristic[]; charsListTimestamp: ServiceSpecCharacteristic[]; + charsListSecret: ServiceSpecCharacteristic[]; serviceSpecRel: ServiceSpecRelationship[]; resourceserviceSpecRef: ResourceSpecificationRef[]; - + generatedCode: string; blocklyCode: string; constructor( - private activatedRoute: ActivatedRoute, + private activatedRoute: ActivatedRoute, private router: Router, - bs: BlocklyJavaService, + bs: BlocklyJavaService, private toast: ToastrService, private lcmRulesService: LcmRuleSpecificationService, private specService: ServiceSpecificationService) { - + this.blocklyJavaService = bs; this.title = 'Create LCM Rule'; this.activatedRoute.params.subscribe(params => { this.programName = params['programName']; - + console.log( 'creating/editing the program - ' ); - + console.log( this.activatedRoute.snapshot.queryParams['specid'] ); }); @@ -115,21 +116,21 @@ export class ServiceRuleDesignComponent implements OnInit { if (this.activatedRoute.snapshot.queryParams['specid']){ - this.specID = this.activatedRoute.snapshot.queryParams['specid']; + this.specID = this.activatedRoute.snapshot.queryParams['specid']; this.blocklyJavaService.createJava(this.workspace, Blockly); - this.createOpensliceJava(this.workspace, Blockly); - this.retrieveServiceSpec(); + this.createOpensliceJava(this.workspace, Blockly); + this.retrieveServiceSpec(); } else { this.initializeLCMRuleSpec(); } - - - - - + + + + + // if (this.program.xmlData) { // this.workspace.clear(); // Blockly.Xml.domToWorkspace( @@ -137,34 +138,34 @@ export class ServiceRuleDesignComponent implements OnInit { // this.workspace // ); // } - + this.workspace.addChangeListener(() => { // var code = Blockly.JavaScript.workspaceToCode(this.workspace); // console.log(code); - + // var code2 = Blockly.Xml.domToText( // Blockly.Xml.workspaceToDom(this.workspace) // ); // console.log(code2); - + var code3 = Blockly.Java.workspaceToCode(this.workspace); console.log(code3) this.generatedCode = code3; this.lcmRuleSpec.code = code3; this.blocklyCode = Blockly.Xml.domToText( Blockly.Xml.workspaceToDom(this.workspace) ); - + }); - - + + } - + initializeLCMRuleSpec() { - if (this.activatedRoute.snapshot.params.id) + if (this.activatedRoute.snapshot.params.id) { this.lcmRuleSpecID = this.activatedRoute.snapshot.params.id this.retrieveLCMRuleSpec(); - + } else { this.newLCMRuleSpecification = true; @@ -174,22 +175,22 @@ export class ServiceRuleDesignComponent implements OnInit { description: 'new description', serviceSpecs: serviceSpecsList }; - + this.editForm.patchValue(this.lcmRuleSpec) this.editForm.markAsPristine() - - - var serviceSpecRef: ServiceSpecificationRef ; + + + var serviceSpecRef: ServiceSpecificationRef ; var serviceSpecsList: ServiceSpecificationRef[] = []; serviceSpecRef = { id: this.spec.id, name: this.spec.name } ; - serviceSpecsList.push(serviceSpecRef); - this.lcmRuleSpec.serviceSpecs = serviceSpecsList; + serviceSpecsList.push(serviceSpecRef); + this.lcmRuleSpec.serviceSpecs = serviceSpecsList; this.lcmRuleSpec.name = "LCM Rule " + this.spec.name; this.lcmRuleSpec.description = "LCM Rule for specification " + this.spec.name; - + this.editForm.patchValue(this.lcmRuleSpec) - this.editForm.markAsPristine() - + this.editForm.markAsPristine() + } } @@ -198,21 +199,21 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Variables.createVariableButtonHandler( ws, null, 'String'); //Blockly.Variables.createVariable( ws, null, 'panda'); } - - + + retrieveServiceSpec() { this.specService.retrieveServiceSpecification({id: this.specID}).subscribe( data => this.spec = data, error => console.error(error), () => { - - + + // valueTypes = ['INTEGER', '', '', 'FLOAT', 'BINARY', 'BOOLEAN', 'ARRAY', 'SET', 'TEXT', 'LONGTEXT', 'ENUM', 'TIMESTAMP'] //populate Specification Characteristic Panel Info // filter Spec Characteristic that does not have defined Value Type (parent spec char) this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType) - + this.workspace.charsListAllSpecs = this.spec.serviceSpecCharacteristic; // this.dataSource.paginator = this.paginator; this.charsListInteger= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'INTEGER'); @@ -227,18 +228,20 @@ export class ServiceRuleDesignComponent implements OnInit { this.charsListText= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'TEXT'); this.charsListLongText= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'LONGTEXT'); this.charsListTimestamp= this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'TIMESTAMP'); + this.charsListSecret = this.spec.serviceSpecCharacteristic.filter(specCharacteristic => specCharacteristic.valueType == 'SECRET'); this.serviceSpecRel= this.spec.serviceSpecRelationship; this.workspace.serviceSpecRel = this.serviceSpecRel; - + this.resourceserviceSpecRef= this.spec.resourceSpecification; this.workspace.resourceserviceSpecRef = this.resourceserviceSpecRef; this.workspace.charsListText = this.charsListText; this.workspace.charsListText = this.workspace.charsListText.concat( this.charsListLongText ); - + this.workspace.charsListText = this.workspace.charsListText.concat( this.charsListSecret ); + this.workspace.charsListNumber = this.charsListSmallint; this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListEnum ); this.workspace.charsListNumber = this.workspace.charsListNumber.concat( this.charsListInteger ); @@ -261,8 +264,8 @@ export class ServiceRuleDesignComponent implements OnInit { this.workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_SET', this.charvarsSetFunction); this.workspace.registerToolboxCategoryCallback( 'SPECSERVICE_RELS', this.serviceSpecRelsFunction); this.workspace.registerToolboxCategoryCallback( 'SPECRESOURCE_RELS', this.resourceSpecRelsFunction); - - + + this.title = 'Create LCM Rule for ' + this.spec.name; //the spec is loaded, so proceed to load the LCM Rule spec @@ -275,7 +278,7 @@ export class ServiceRuleDesignComponent implements OnInit { } - + retrieveLCMRuleSpec() { this.lcmRulesService.retrieveLCMRuleSpecification ({id: this.lcmRuleSpecID}).subscribe( data => this.lcmRuleSpec = data, @@ -290,7 +293,7 @@ export class ServiceRuleDesignComponent implements OnInit { this.workspace ); } - + this.editForm.patchValue(this.lcmRuleSpec) this.editForm.markAsPristine() @@ -301,14 +304,14 @@ export class ServiceRuleDesignComponent implements OnInit { ) } - + /** * Construct the blocks required by the flyout for the colours category. * @param {!Blockly.Workspace} workspace The workspace this flyout is for. * @return {!Array.} Array of XML block elements. */ charvarsAllFunction = function(workspace: any) { - var xmlList = []; + var xmlList = []; var chars: ServiceSpecCharacteristic[] = workspace.charsListAllSpecs ; var options = []; @@ -321,11 +324,11 @@ export class ServiceRuleDesignComponent implements OnInit { if (n1 > n2) { return 1; } - + if (n1 < n2) { return -1; } - + return 0; }); @@ -336,7 +339,7 @@ export class ServiceRuleDesignComponent implements OnInit { .appendField("Get Value as String", "TXTLBL") .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); - + this.setOutput(true, 'String'); this.setColour(160); this.setTooltip(""); @@ -344,18 +347,18 @@ export class ServiceRuleDesignComponent implements OnInit { } }; - + if (Blockly.Blocks['getcharacteristicvalueAsString']) { var blockText = '' + ''; var block = Blockly.Xml.textToDom(blockText); xmlList.push(block); - } + } blockText = ''; block = Blockly.Xml.textToDom(blockText); - xmlList.push(block); - + xmlList.push(block); + return xmlList; }; /** @@ -364,7 +367,7 @@ export class ServiceRuleDesignComponent implements OnInit { * @return {!Array.} Array of XML block elements. */ charvarsTextFunction = function(workspace: any) { - var xmlList = []; + var xmlList = []; var chars: ServiceSpecCharacteristic[] = workspace.charsListText; if (Blockly.Blocks['getcharval_string_type']) { @@ -376,10 +379,10 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + blockText = ''; block = Blockly.Xml.textToDom(blockText); - xmlList.push(block); + xmlList.push(block); if (Blockly.Blocks['setcharval_string_type']) { for (var i = 0; i < chars.length; i++) { @@ -390,21 +393,21 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + return xmlList; }; - - - + + + charvarsNumberFunction = function(workspace: any) { // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] - + var charsList: ServiceSpecCharacteristic[] = workspace.charsListNumber; - + var xmlList = []; - - + + if (Blockly.Blocks['getcharval_number']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -414,10 +417,10 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + blockText = ''; block = Blockly.Xml.textToDom(blockText); - xmlList.push(block); + xmlList.push(block); if (Blockly.Blocks['setcharval_number']) { @@ -429,17 +432,17 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + return xmlList; }; - - + + charvarsBoolFunction = function(workspace: any) { // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] var charsList: ServiceSpecCharacteristic[] = workspace.charsListBoolean; var xmlList = []; - - + + if (Blockly.Blocks['getcharval_bool_type']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -449,7 +452,7 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + if (Blockly.Blocks['setcharval_bool_type']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -459,18 +462,18 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + return xmlList; }; - - + + charvarsSetFunction = function(workspace: any) { // Returns an array of hex colours, e.g. ['#4286f4', '#ef0447'] - + var charsList: ServiceSpecCharacteristic[] = workspace.charsListSet; var xmlList = []; - - + + if (Blockly.Blocks['getcharval_set_type']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -480,7 +483,7 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + if (Blockly.Blocks['setcharval_set_type']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -490,8 +493,8 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - - + + if (Blockly.Blocks['setcharval_sadd']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -501,7 +504,7 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - + if (Blockly.Blocks['setcharval_sremove']) { for (var i = 0; i < charsList.length; i++) { var blockText = '' + @@ -511,23 +514,23 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } } - - - + + + return xmlList; }; - - + + /** * Construct the blocks required by the flyout for the colours category. * @param {!Blockly.Workspace} workspace The workspace this flyout is for. * @return {!Array.} Array of XML block elements. */ serviceSpecRelsFunction = function(workspace: any) { - var xmlList = []; + var xmlList = []; var chars: ServiceSpecRelationship[] = workspace.serviceSpecRel; - + if (Blockly.Blocks['getServiceRefName']) { for (var i = 0; i < chars.length; i++) { @@ -543,7 +546,7 @@ export class ServiceRuleDesignComponent implements OnInit { if (Blockly.Blocks['getServiceRefProps']) { for (var i = 0; i < chars.length; i++) { - + var blockText = '' + '' + chars[i].name + '' + ''; @@ -555,9 +558,9 @@ export class ServiceRuleDesignComponent implements OnInit { blockText = ''; block = Blockly.Xml.textToDom(blockText); - xmlList.push(block); + xmlList.push(block); + - @@ -571,27 +574,27 @@ export class ServiceRuleDesignComponent implements OnInit { // workspace.specService.retrieveServiceSpecification({id: servRef.id, servRef , xmlList }).subscribe( // data => serviceRefSpec = data, // error => console.error(error), - // () => { - - // var xmlx = xmlList; - // var serviceRefChars: ServiceSpecCharacteristic[] = serviceRefSpec.serviceSpecCharacteristic; + // () => { + + // 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() @@ -600,25 +603,25 @@ export class ServiceRuleDesignComponent implements OnInit { // this.appendDummyInput() // .appendField(new Blockly.FieldLabelSerializable(""), "ASERVICEREFUUID") // .appendField(new Blockly.FieldLabelSerializable(""), "NAMELBL") - // .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); - - + // .appendField(new Blockly.FieldDropdown( sortedArray ), "OPTIONEDVALUE"); + + // this.appendValueInput("AVALUE") // .setCheck("String") // .setAlign(Blockly.ALIGN_RIGHT) - // .appendField("value"); - - - // this.setInputsInline( true ); + // .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(""); - - // }, - - // }; + + // }, + + // }; // } // ) @@ -628,7 +631,7 @@ export class ServiceRuleDesignComponent implements OnInit { // ''; // var block = Blockly.Xml.textToDom(blockText); // xmlList.push(block); - + // } // } @@ -638,7 +641,7 @@ export class ServiceRuleDesignComponent implements OnInit { if (Blockly.Blocks['setServiceRefCharacteristicValues']) { for (var i = 0; i < chars.length; i++) { - + var blockText = '' + '' + chars[i].name + '' + '' + chars[i].uuid + '' + @@ -659,20 +662,20 @@ export class ServiceRuleDesignComponent implements OnInit { xmlList.push(block); } - + return xmlList; }; - - + + /** * Construct the blocks required by the flyout for the colours category. * @param {!Blockly.Workspace} workspace The workspace this flyout is for. * @return {!Array.} Array of XML block elements. */ resourceSpecRelsFunction = function(workspace: any) { - var xmlList = []; + var xmlList = []; var chars: ResourceSpecificationRef[] = workspace.resourceserviceSpecRef; if (Blockly.Blocks['getResourceRefName']) { @@ -687,15 +690,15 @@ export class ServiceRuleDesignComponent implements OnInit { blockText = ''; block = Blockly.Xml.textToDom(blockText); - xmlList.push(block); + xmlList.push(block); return xmlList; }; createOpensliceJava(workspace: any, Blockly: any) { - - + + workspace.registerButtonCallback( 'CREATE_STRING_VARIABLE' , this.myFirstButtonPressed ); // workspace.createVariable('Area of Service: Region specification', 'set'); // workspace.createVariable('Region panda1', 'Panda', null); @@ -705,14 +708,14 @@ export class ServiceRuleDesignComponent implements OnInit { // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_NUM', this.charvarsNum); // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_BOOL', this.charvarsBool); // workspace.registerToolboxCategoryCallback( 'SPECCHARVARIABLES_SET', this.charvarsSet); - + Blockly.Java['literal_text_multiline'] = function(block: { getFieldValue: (arg0: string) => any; }) { // Text value. var code = '"""\n' + block.getFieldValue('TEXT') + '\n"""\n'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['text_format_multi'] = function(block: { getFieldValue: (arg0: string) => any; }) { // Text value. @@ -727,7 +730,7 @@ export class ServiceRuleDesignComponent implements OnInit { var code = 'String.format(' + atext + ', ' + objects + ')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['changecharacteristicvalue'] = function (block: any) { // Print statement. var argument0 = Blockly.Java.valueToCode(block, 'spec', @@ -737,8 +740,8 @@ export class ServiceRuleDesignComponent implements OnInit { console.log( argument0 ); return 'changeCharacteristicValue(' + argument0 + ', ' + argument1 + ')'; }; - - + + Blockly.Java['getcharacteristicvalueAsString'] = function(block: any) { var dropdown_name = block.getFieldValue('OPTIONEDVALUE'); var comment_name = block.getFieldValue('NAMELBL'); @@ -746,89 +749,89 @@ export class ServiceRuleDesignComponent implements OnInit { var code = 'getCharValAsString(' + argument0 + ')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setcharacteristicvalue'] = function (block: any) { // Print statement. - + var dropdown_name = block.getFieldValue('NAME'); var argument0 = Blockly.Java.quote_( dropdown_name ); var argument1 = Blockly.Java.valueToCode(block, 'NAME', Blockly.Java.ORDER_NONE) || '""'; - + return 'setcharacteristicvalue(' + argument0 + ', ' + argument1 + ')'; }; - - + + Blockly.Java['getcharval_string_type'] = function(block: any) { var dropdown_name = block.getFieldValue('AVALUE'); var argument0 = Blockly.Java.quote_( dropdown_name ); var code = 'getCharValFromStringType(' + argument0 + ')' ; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setcharval_string_type'] = function (block: any) { // Print statement. - + var dropdown_name = block.getFieldValue('NAMELBL'); var argument0 = Blockly.Java.quote_( dropdown_name ); var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', Blockly.Java.ORDER_NONE) || '""'; - + var code: String = 'setCharValFromStringType(' + argument0 + ', ' + argument1 + ');\n'; return code; }; - + Blockly.Java['getcharval_number'] = function(block: any) { var dropdown_name = block.getFieldValue('AVALUE'); var argument0 = Blockly.Java.quote_( dropdown_name ); var code = 'getCharValNumber(' + argument0 + ')' ; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setcharval_number'] = function (block: any) { // Print statement. - + var dropdown_name = block.getFieldValue('NAMELBL'); var argument0 = Blockly.Java.quote_( dropdown_name ); var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', Blockly.Java.ORDER_NONE) || '""'; - + return 'setCharValNumber(' + argument0 + ', ' + argument1 + ');\n'; }; - - + + Blockly.Java['getcharval_bool_type'] = function(block: any) { var dropdown_name = block.getFieldValue('AVALUE'); var argument0 = Blockly.Java.quote_( dropdown_name ); var code = 'getCharValFromBooleanType(' + argument0 + ')' ; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setcharval_bool_type'] = function (block: any) { // Print statement. - + var dropdown_name = block.getFieldValue('NAMELBL'); var argument0 = Blockly.Java.quote_( dropdown_name ); var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', Blockly.Java.ORDER_NONE) || '""'; - + var code: String = 'setCharValFromBooleanType(' + argument0 + ', ' + argument1 + ');\n'; return code; }; - + Blockly.Java['getcharval_set_type'] = function(block: any) { var dropdown_name = block.getFieldValue('AVALUE'); var argument0 = Blockly.Java.quote_( dropdown_name ); var code = 'getCharValFromSetType(' + argument0 + ')' ; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setcharval_set_type'] = function (block: any) { // Print statement. - + var dropdown_name = block.getFieldValue('NAMELBL'); var argument0 = Blockly.Java.quote_( dropdown_name ); var argument1 = Blockly.Java.valueToCode(block, 'AVALUE', @@ -840,7 +843,7 @@ export class ServiceRuleDesignComponent implements OnInit { var additionalParamsAsObject= []; var dd = JSON.parse( argument1 ); dd.forEach( e => { - + var element = JSON.parse( e); //each element is a json String which describes the key value element var ename = element.paramname; var evalue = element.paramvalue; @@ -850,22 +853,22 @@ export class ServiceRuleDesignComponent implements OnInit { additionalParamsAsObject.push( newelem ); console.log('Variable additionalParams newelem = ' + newelem ); }); - + var a1 = JSON.stringify( additionalParamsAsObject, null ); a1 = '"' + textEscape (a1) + '"'; /** - * it generates for example: - * setCharValFromSetType("cirros_2vnf_nsd::Primitive::fsetup", + * it generates for example: + * setCharValFromSetType("cirros_2vnf_nsd::Primitive::fsetup", * "[{\"value\":\"1\",\"alias\":\"member_vnf_index\"},{\"value\":\"fsetup\",\"alias\":\"primitive\"},{\"value\":\"{ \\\"tvg\\\": { \\\"ip\\\": \\\"\\\", \\\"channel1\\\": { \\\"mode\\\": \\\"0\\\" } } }\",\"alias\":\"confjson\"}]"); - * ); + * ); */ - + return 'setCharValFromSetType(' + argument0 + ', ' + a1 + ');\n'; }; - - + + Blockly.Java['logic_set_contains_string'] = function (block: { getFieldValue: (arg0: string) => string }) { - + var argument0 = Blockly.Java.valueToCode(block, 'A', Blockly.Java.ORDER_NONE) || '0'; var argument1 = Blockly.Java.valueToCode(block, 'B', Blockly.Java.ORDER_NONE) || '0'; @@ -876,19 +879,19 @@ export class ServiceRuleDesignComponent implements OnInit { }; - + Blockly.Java['so_log_string'] = function (block: any) { // Print statement. - + var argument0 = Blockly.Java.valueToCode(block, 'txtlog', Blockly.Java.ORDER_NONE) || null; - + var code: String = 'logtext(' + argument0 + ');\n'; return code; }; - - + + Blockly.Java['osm_nsd_config'] = function(block: any) { var NSDID = Blockly.Java.valueToCode(block, 'NSDID', Blockly.Java.ORDER_NONE) || '""'; @@ -896,14 +899,14 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java.ORDER_NONE) || '""'; var config = Blockly.Java.valueToCode(block, 'config', Blockly.Java.ORDER_NONE) || null; - + var osmconfig: any = { nsdId:'zzz' }; osmconfig.nsdId = NSDID.replaceAll('"', ''); osmconfig.vimAccountId = VIMID.replaceAll('"', ''); var code = JSON.stringify( osmconfig, null ); - + code = '"' + textEscape( code ) + '"' ; if (config){ //it will replace all @@ -916,34 +919,34 @@ export class ServiceRuleDesignComponent implements OnInit { code = config; } - + return [code, Blockly.Java.ORDER_ATOMIC]; }; - - + + Blockly.Java['osm_nsd_config_detailed'] = function(block: any) { var NSDID = Blockly.Java.valueToCode(block, 'NSDID', Blockly.Java.ORDER_NONE) || '""'; var VIMID = Blockly.Java.valueToCode(block, 'VIMID', Blockly.Java.ORDER_NONE) || '""'; - + var VNF = Blockly.Java.valueToCode(block, 'VNF', Blockly.Java.ORDER_NONE) || null; - + var VLD = Blockly.Java.valueToCode(block, 'VLD', Blockly.Java.ORDER_NONE) || null; var additionalParamsForVnf = Blockly.Java.valueToCode(block, 'additionalParamsForVnf', Blockly.Java.ORDER_NONE) || null; - + var k8snamespace = Blockly.Java.valueToCode(block, 'k8s-namespace', Blockly.Java.ORDER_NONE) || null; - + var additionalParamsForNs = Blockly.Java.valueToCode(block, 'additionalParamsForNs', Blockly.Java.ORDER_NONE) || null; - + var ssh_keys = Blockly.Java.valueToCode(block, 'ssh_keys', Blockly.Java.ORDER_NONE) || null; @@ -956,9 +959,9 @@ export class ServiceRuleDesignComponent implements OnInit { osmconfig.nsdId = NSDID.replaceAll('"', ''); osmconfig.vimAccountId = VIMID.replaceAll('"', ''); - - if (VNF){ + + if (VNF){ osmconfig.vnf =JSON.parse(VNF) ; } if (VLD){ @@ -969,25 +972,25 @@ export class ServiceRuleDesignComponent implements OnInit { } if (additionalParamsForNs){ osmconfig.additionalParamsForNs = JSON.parse(additionalParamsForNs) ; - } + } if (ssh_keys){ osmconfig.ssh_keys = JSON.parse(ssh_keys) ; } var code = '"' + textEscape( JSON.stringify( osmconfig, null) ) + '"' ; - + return [code, Blockly.Java.ORDER_ATOMIC]; }; - - - + + + Blockly.Java['osm_nsd_config_vnf'] = function(block: any) { var membervnfindex = Blockly.Java.valueToCode(block, 'member-vnf-index', Blockly.Java.ORDER_NONE) || '"1"'; var vdu = Blockly.Java.valueToCode(block, 'vdu', - Blockly.Java.ORDER_NONE) || null; + Blockly.Java.ORDER_NONE) || null; var vimAccountId = Blockly.Java.valueToCode(block, 'VIMID', Blockly.Java.ORDER_NONE) || null; - + var code: any = { "member-vnf-index":membervnfindex.replaceAll('"', '') }; if ( vimAccountId ){ @@ -1001,15 +1004,15 @@ export class ServiceRuleDesignComponent implements OnInit { code = JSON.stringify( code, null ); return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['osm_nsd_config_vld'] = function(block: any) { var name = Blockly.Java.valueToCode(block, 'name', Blockly.Java.ORDER_NONE) || '""'; var vimnetworkname = Blockly.Java.valueToCode(block, 'vim-network-name', - Blockly.Java.ORDER_NONE) || null; + Blockly.Java.ORDER_NONE) || null; var config = Blockly.Java.valueToCode(block, 'config', Blockly.Java.ORDER_NONE) || null; - + var code: any = { "name":name.replaceAll('"', '') }; if ( vimnetworkname ){ @@ -1022,7 +1025,7 @@ export class ServiceRuleDesignComponent implements OnInit { config = config.substring(0, config.length-1); code = JSON.parse( config ); } - + code = JSON.stringify( code, null, 4 ); return [code, Blockly.Java.ORDER_ATOMIC]; }; @@ -1032,12 +1035,12 @@ export class ServiceRuleDesignComponent implements OnInit { var membervnfindex = Blockly.Java.valueToCode(block, 'member-vnf-index', Blockly.Java.ORDER_NONE) || '"1"'; var additionalParams = Blockly.Java.valueToCode(block, 'additionalParams', - Blockly.Java.ORDER_NONE) || null; + Blockly.Java.ORDER_NONE) || null; var additionalParamsForKdu = Blockly.Java.valueToCode(block, 'additionalParamsForKdu', - Blockly.Java.ORDER_NONE) || null; - - + Blockly.Java.ORDER_NONE) || null; + + var config = Blockly.Java.valueToCode(block, 'config', Blockly.Java.ORDER_NONE) || null; @@ -1047,8 +1050,8 @@ export class ServiceRuleDesignComponent implements OnInit { if (additionalParams){ var dd = JSON.parse( additionalParams); dd.forEach( e => { - - + + var element = JSON.parse( e); //each element is a json String which describes the key value element var evalue = element.paramvalue; @@ -1059,22 +1062,22 @@ export class ServiceRuleDesignComponent implements OnInit { additionalParamsAsObject = '"' + element.paramname + '" : "' + evalue + '"'; } }); - + additionalParamsAsObject = "{" + additionalParamsAsObject + "}"; code.additionalParams = JSON.parse( additionalParamsAsObject ) ; } var additionalParamsForKduAsObject= null; - + console.log('Variable additionalParamsForKdu = ' + additionalParamsForKdu ); code.additionalParamsForKdu = JSON.parse( additionalParamsForKdu ) ; // if (additionalParamsForKdu){ // var dd = JSON.parse( additionalParamsForKdu); - // dd.forEach( e => { - + // dd.forEach( e => { + // var element = JSON.parse( e); //each element is a json String which describes the key value element // if ( element ){ // var evalue = element.paramvalue; @@ -1086,9 +1089,9 @@ export class ServiceRuleDesignComponent implements OnInit { // additionalParamsForKduAsObject = '"' + element.paramname + '" : "' + evalue + '"'; // } // } - + // }); - + // if (additionalParamsForKduAsObject){ // additionalParamsForKduAsObject = "{" + additionalParamsForKduAsObject + "}"; // code.additionalParamsForKdu = JSON.parse( additionalParamsForKduAsObject ) ; @@ -1107,16 +1110,16 @@ export class ServiceRuleDesignComponent implements OnInit { return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['osm_nsd_config_kdu'] = function(block: any) { var kdu_name = Blockly.Java.valueToCode(block, 'kdu_name', - Blockly.Java.ORDER_NONE) || '"1"'; + Blockly.Java.ORDER_NONE) || '"1"'; var k8snamespace = Blockly.Java.valueToCode(block, 'k8s-namespace', Blockly.Java.ORDER_NONE) || null; var additionalParams = Blockly.Java.valueToCode(block, 'additionalParams', - Blockly.Java.ORDER_NONE) || null; - + Blockly.Java.ORDER_NONE) || null; + var code: any = { "kdu_name":kdu_name.replaceAll('"', '') }; if ( k8snamespace ){ @@ -1129,26 +1132,26 @@ export class ServiceRuleDesignComponent implements OnInit { additionalParams = additionalParams.substring(0, additionalParams.length-1); code.additionalParams = JSON.parse( additionalParams ) ; } - + code = JSON.stringify( code, null); // code = textEscape( JSON.stringify( code, null) ); // code = '"' + code + '"'; - + return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['param_value_tuple'] = function(block: any) { var paramname = Blockly.Java.valueToCode(block, 'paramname', Blockly.Java.ORDER_NONE) || '""'; - + var paramvalue = Blockly.Java.valueToCode(block, 'paramvalue', - Blockly.Java.ORDER_NONE) || '""'; - - //paramvalue = paramvalue.replaceAll('"', '') + Blockly.Java.ORDER_NONE) || '""'; + + //paramvalue = paramvalue.replaceAll('"', '') paramvalue = paramvalue.replace('"', ''); //remove only first and last quote paramvalue = paramvalue.substring(0, paramvalue.length-1); - + var code: any = { "paramname":paramname.replaceAll('"', ''), "paramvalue": paramvalue , }; code = textEscape( JSON.stringify( code, null) ); code = '"' + code + '"'; @@ -1158,9 +1161,9 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java['computeVariable'] = function(block: any) { var paramvariable = Blockly.Java.valueToCode(block, 'paramvariable', Blockly.Java.ORDER_NONE) || '""'; - - - + + + paramvariable = paramvariable.replaceAll('"', '$$QUOTESTR$$') var code: any = '$$XVALS_' + paramvariable+ '_XVALE$$'; @@ -1186,25 +1189,25 @@ export class ServiceRuleDesignComponent implements OnInit { return [code, Blockly.Java.ORDER_ATOMIC] } - + // If the code is not a literal (e.g., it's a method call) code = "escapeText(" + code + ")"; return [code, Blockly.Java.ORDER_ATOMIC]; }; - - + + Blockly.Java['valueFromJsonPath'] = function(block: any) { var jsoninput: string = Blockly.Java.valueToCode(block, 'jsoninput', Blockly.Java.ORDER_NONE) || '""'; - + var jsonpath: any = Blockly.Java.valueToCode(block, 'jsonpath', Blockly.Java.ORDER_NONE) || '""'; - + jsoninput = jsoninput.replace('"', ''); jsoninput = jsoninput.substring(0, jsoninput.length-1); - jsoninput = '"' + textEscape(jsoninput) + '"'; - + jsoninput = '"' + textEscape(jsoninput) + '"'; + jsonpath = jsonpath.replaceAll("\\\'", "'"); console.log('jsoninput = ' + jsoninput ); @@ -1214,34 +1217,34 @@ export class ServiceRuleDesignComponent implements OnInit { return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['rest_config_client'] = function (block: any) { // Print statement. - + var xbaseurl = Blockly.Java.valueToCode(block, 'baseurl', Blockly.Java.ORDER_NONE) || null; - - - + + + var xOAUTH2CLIENTID = Blockly.Java.valueToCode(block, 'aOAUTH2CLIENTID', Blockly.Java.ORDER_NONE) || null; - + var xOAUTHSECRET = Blockly.Java.valueToCode(block, 'aOAUTHSECRET', Blockly.Java.ORDER_NONE) || null; - + var xscopes = Blockly.Java.valueToCode(block, 'scopes', Blockly.Java.ORDER_NONE) || null; - + var xTOKEURI = Blockly.Java.valueToCode(block, 'aTOKENURI', Blockly.Java.ORDER_NONE) || null; - + var xUSERNAME = Blockly.Java.valueToCode(block, 'aUSERNAME', Blockly.Java.ORDER_NONE) || null; - + var xPASSWORD = Blockly.Java.valueToCode(block, 'aPASSWORD', Blockly.Java.ORDER_NONE) || null; - + var code: any = { baseurl: xbaseurl }; code.aOAUTH2CLIENTID = xOAUTH2CLIENTID; @@ -1250,7 +1253,7 @@ export class ServiceRuleDesignComponent implements OnInit { code.aTOKENURI = xTOKEURI; code.aUSERNAME = xUSERNAME; code.aPASSWORD = xPASSWORD; - + code = JSON.stringify( code, null ); @@ -1270,15 +1273,15 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java.ORDER_NONE) || null; var apayload = Blockly.Java.valueToCode(block, 'payload', Blockly.Java.ORDER_NONE) || null; - - - - + + + + var code: String = 'rest_block(' + argumentVERBOPTION + ',' + aurl + ',' + aheaders + ',' + apayload + ')'; - if ( argument0 ){ + if ( argument0 ){ argument0 = JSON.parse(argument0); - code = 'rest_block(' + argumentVERBOPTION + code = 'rest_block(' + argumentVERBOPTION +', ' + aurl +', ' + aheaders +', ' + apayload @@ -1292,77 +1295,77 @@ export class ServiceRuleDesignComponent implements OnInit { + ')'; } - + return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['currentServiceOrder'] = function(block: any) { // Variable getter. console.log('Variable getter currentServiceOrder') - + var dropdown_name = block.getFieldValue('VERBOPTION'); var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); - + // var apayload = Blockly.Java.nameDB_.getName(block.getFieldValue('payload'), // Blockly.Variables.NAME_TYPE); var code = 'getCurrentServiceOrderPropValue(' + argumentVERBOPTION +')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['currentService'] = function(block: any) { // Variable getter. console.log('currentService') - + //var acharname='""'; var dropdown_name = block.getFieldValue('VERBOPTION'); var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); - - + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + var code = 'getCurrentServicePropValue(' + argumentVERBOPTION +', '+acharname +')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['setCharacteristicOfCurrentService'] = function(block: any) { // Variable getter. console.log('setCharacteristicOfCurrentService') - + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', Blockly.Java.ORDER_ASSIGNMENT) || '""'; var avalue = Blockly.Java.valueToCode(block, 'avalue', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + var code = 'setCharacteristicOfCurrentService(' + acharname +', '+ avalue +');\n'; return code; }; - + Blockly.Java['payloadToService'] = function(block: any) { // Variable getter. console.log('payloadToService') - + //var acharname='""'; var dropdown_name = block.getFieldValue('VERBOPTION'); var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); - + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + var ajsonpayload = Blockly.Java.valueToCode(block, 'jsonpayload', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + var code = 'getFromPayloadServicePropValue(' + ajsonpayload +', '+argumentVERBOPTION +', '+ acharname +')'; @@ -1371,19 +1374,19 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java['createServiceOrder'] = function(block: any) { - + console.log('createServiceOrder') - + var serviceOrder: ServiceOrderCreate= { orderItem:[] }; - + var serviceSpecificationid = Blockly.Java.valueToCode(block, 'serviceSpecificationid', Blockly.Java.ORDER_NONE) || null; var aserviceCharacteristics = Blockly.Java.valueToCode(block, 'serviceCharacteristics', - Blockly.Java.ORDER_NONE) || null; - - + Blockly.Java.ORDER_NONE) || null; + + let newOrderItem: ServiceOrderItem ; newOrderItem = { service: { serviceSpecification: { @@ -1400,21 +1403,21 @@ export class ServiceRuleDesignComponent implements OnInit { console.log('dd = ' + dd ); dd.forEach (e => { if ( e ){ - + var element = JSON.parse( e); //each element is a json String which describes the key value element var evalue = element.paramvalue; - var evalue = element.paramvalue; + var evalue = element.paramvalue; newOrderItem.service.serviceCharacteristic.push({ name: element.paramname, value: { value: evalue } }) - } + } }); } serviceOrder.orderItem.push(newOrderItem); - + var acode = '"' + textEscape( JSON.stringify( serviceOrder, null ) )+ '"'; var code = 'createServiceOrder(' + acode + ')'; @@ -1424,7 +1427,7 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java['askAgent'] = function(block: any) { // Variable getter. console.log('askAgent') - + var agentName = Blockly.Java.valueToCode(block, 'agentName', Blockly.Java.ORDER_NONE) || null; var chattext = Blockly.Java.valueToCode(block, 'text', @@ -1433,24 +1436,23 @@ export class ServiceRuleDesignComponent implements OnInit { Blockly.Java.ORDER_NONE) || null; var timeOut = Blockly.Java.valueToCode(block, 'timeOut', Blockly.Java.ORDER_NONE) || null; - + var code = 'askAgent(' + agentName + ',' + chattext + ',' + defaultText + ',' + timeOut + ')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - Blockly.Java['createServiceOrderJson'] = function(block: any) { // Variable getter. console.log('createServiceOrderJson') - + var jsonpayload = Blockly.Java.valueToCode(block, 'jsonpayload', Blockly.Java.ORDER_NONE) || null; - + var code = 'createServiceOrder(' + jsonpayload + ')'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['variables_get'] = function(block: any) { // Variable getter. console.log('Variable getter CUSTOM') @@ -1459,7 +1461,7 @@ export class ServiceRuleDesignComponent implements OnInit { //code = '$EVAL_' + code + '_EVAL$'; return [code, Blockly.Java.ORDER_ATOMIC]; }; - + Blockly.Java['variables_set'] = function(block: any) { // Variable setter. console.log('Variable setter CUSTOM') @@ -1484,7 +1486,7 @@ export class ServiceRuleDesignComponent implements OnInit { variable0 , Blockly.Variables.NAME_TYPE); //branch = Blockly.Java.INDENT + variable0 + ' = ' + // argument0 + '[' + indexVar + '];\n' + branch; - + branch = Blockly.Java.INDENT + branch; var code = 'for ( String ' + variable0 + ': ' + argument0 + ') {\n' + branch + '}\n'; @@ -1492,16 +1494,16 @@ export class ServiceRuleDesignComponent implements OnInit { }; - + Blockly.Java['createServiceRefIf'] = function(block: any) { var serviceName = Blockly.Java.valueToCode(block, 'SERVICE_NAME', Blockly.Java.ORDER_NONE) || '""'; - - + + var avalue = Blockly.Java.valueToCode(block, 'CONDITION', Blockly.Java.ORDER_ASSIGNMENT) || 'true'; - var charvalsVarName = 'charvals'; + var charvalsVarName = 'charvals'; //put it in braces so to ensure the scope of the hashmap variable var code = '{\n'; @@ -1516,7 +1518,7 @@ export class ServiceRuleDesignComponent implements OnInit { if (objects){ objects.forEach(element => { var charname = element.charname; - var avalue = element.charvalue; + var avalue = element.charvalue; code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; }); } @@ -1530,12 +1532,12 @@ export class ServiceRuleDesignComponent implements OnInit { 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'; + + var charvalsVarName = 'charvals'; //put it in braces so to ensure the scope of the hashmap variable var code = '{\n'; @@ -1550,7 +1552,7 @@ export class ServiceRuleDesignComponent implements OnInit { if (objects){ objects.forEach(element => { var charname = element.charname; - var avalue = element.charvalue; + var avalue = element.charvalue; code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; }); } @@ -1561,7 +1563,7 @@ export class ServiceRuleDesignComponent implements OnInit { return code; }; - + Blockly.Java['getServiceRefName'] = function(block: any) { var dropdown_name = block.getFieldValue('AVALUE'); var argument0 = Blockly.Java.quote_( dropdown_name ); @@ -1585,18 +1587,18 @@ export class ServiceRuleDesignComponent implements OnInit { // Variable getter. console.log('getServiceRefProps') - + //var acharname='""'; var dropdown_name = block.getFieldValue('VERBOPTION'); var servicename = block.getFieldValue('AVALUE'); servicename = Blockly.Java.quote_( servicename ); var argumentVERBOPTION = Blockly.Java.quote_( dropdown_name ); - - + + var acharname = Blockly.Java.valueToCode(block, 'characteristicName', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + var code = 'getServiceRefPropValue(' + servicename +', '+ argumentVERBOPTION +', '+acharname +')'; @@ -1604,30 +1606,30 @@ 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'; @@ -1637,7 +1639,7 @@ export class ServiceRuleDesignComponent implements OnInit { // }; - + Blockly.Java['serviceRefCharacteristic'] = function(block: any) { // Variable getter. console.log('serviceRefCharacteristic'); @@ -1648,7 +1650,7 @@ export class ServiceRuleDesignComponent implements OnInit { var aVALUE = Blockly.Java.valueToCode(block, 'AVALUE', Blockly.Java.ORDER_ASSIGNMENT) || '""'; - + console.log( aVALUE ); var code: any = { "charname" : acharname, "charvalue" : aVALUE }; @@ -1661,22 +1663,22 @@ export class ServiceRuleDesignComponent implements OnInit { // 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 ); @@ -1693,7 +1695,7 @@ export class ServiceRuleDesignComponent implements OnInit { if (objects){ objects.forEach(element => { var charname = element.charname; - var avalue = element.charvalue; + var avalue = element.charvalue; code += charvalsVarName + '.put(' + charname + ',' +avalue + ');\n'; }); } @@ -1706,15 +1708,15 @@ export class ServiceRuleDesignComponent implements OnInit { }; - + } - - - - - - - + + + + + + + saveProgram(): void { // this.program.xmlData = Blockly.Xml.domToText( // Blockly.Xml.workspaceToDom(this.workspace) @@ -1737,25 +1739,25 @@ export class ServiceRuleDesignComponent implements OnInit { this.lcmRulesService .createLCMRuleSpecification(updateObj).subscribe( data => { this.lcmRuleSpec = data }, error => console.error(error), - () => { + () => { this.newLCMRuleSpecification = false this.toast.success("Service Specification was successfully created") this.router.navigate(['services', 'service_spec_update', this.specID]) - - + + } ) - + } else { this.lcmRulesService.patchLCMRuleSpecification({id: this.lcmRuleSpec.id, body: updateObj}).subscribe( data => console.log(data), error => console.error(error), - () => { + () => { this.toast.success("Service Specification was successfully updated"); this.router.navigate(['services', 'service_spec_update', this.specID]) - + } ) } @@ -1766,31 +1768,31 @@ export class ServiceRuleDesignComponent implements OnInit { } - + addBlock(): void { - + this.workspace; - + // console.log('saving the program - ', JSON.stringify(this.program)); } - + cancelProgram(): void { - - + + console.log('cancelProgram the program - ' ); this.router.navigate(['services', 'service_spec_update', this.specID]) } - - + + } function textEscape(avalue: any): any { - + // Check if the value is an object (including arrays) if (typeof avalue === 'object' && avalue !== null) { // Convert object or array to a JSON string