adding import inputs and outputs from functions into actions Refactor.

Issue-ID: CCSDK-2779
Signed-off-by: ShaabanEltanany <shaaban.eltanany.ext@orange.com>
Change-Id: Iced334d788728da817c19f0b208c8fb2d821f889
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts
index 56c1d0e..b0b6ae5 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts
@@ -46,24 +46,16 @@
             this.designerState = designerState;
             if (this.designerState && this.designerState.actionName) {
                 this.actionName = this.designerState.actionName;
+                console.log(this.actionName);
                 const action = this.designerState.template.workflows[this.actionName] as Action;
                 if (action.steps) {
                     const steps = Object.keys(action.steps);
-                    if (steps && steps.length > 0) {
-                        this.isFunctionAttributeActive = true;
-                    } else {
-                        this.isFunctionAttributeActive = false;
-                    }
+                    this.isFunctionAttributeActive = steps && steps.length > 0;
                     this.steps = steps;
                     this.suggestedOutputs = [];
                     this.suggestedInputs = [];
-                    /*steps.forEach(step => {
-                        const target = action.steps[step].target;
-                        this.getInputs(target);
-                    });*/
                 }
 
-
                 this.inputs = [];
                 if (action.inputs) {
                     const namesOfInput = Object.keys(action.inputs);
@@ -268,71 +260,42 @@
 
 
     submitTempAttributes() {
-        this.writeSelectedAttributeInputs();
-        this.writeSelectedAttributeOutputs();
+        this.writeSelectedAttribute(this.functionAndAttributesInput, 'inputs');
+        this.writeSelectedAttribute(this.functionAndAttributesOutput, 'outputs');
     }
 
-    private writeSelectedAttributeOutputs() {
-        this.functionAndAttributesOutput.forEach((key, value) => {
-            const nodeTemplate = this.getNodeTemplate(value);
+    private writeSelectedAttribute(map: Map<string, string[]>, attributeType: string) {
+        map.forEach((value, key) => {
+            const nodeTemplate = this.getNodeTemplate(key);
             this.functions.serverFunctions
                 /* tslint:disable:no-string-literal */
                 .filter(currentFunction => currentFunction.modelName.includes(nodeTemplate['type']))
                 .forEach(currentFunction => {
+
                     if (currentFunction['definition'] && currentFunction['definition']['interfaces']
                         [Object.keys(currentFunction['definition'] && currentFunction['definition']['interfaces'])]
-                        ['operations']['process']['outputs']) {
-                        let newOutputs = '';
-                        const outputs = currentFunction['definition'] && currentFunction['definition']['interfaces']
+                        ['operations']['process'][attributeType]) {
+                        let newAttributes = '';
+                        const attributes = currentFunction['definition'] && currentFunction['definition']['interfaces']
                             [Object.keys(currentFunction['definition'] && currentFunction['definition']['interfaces'])]
-                            ['operations']['process']['outputs'];
-                        key.forEach(attribute => {
-                            newOutputs += '"' + attribute + '": ' + this.convertToString(outputs[attribute]) + ',';
+                            ['operations']['process'][attributeType];
+                        value.forEach(attribute => {
+                            newAttributes += '"' + attribute + '": ' + this.convertToString(attributes[attribute]) + ',';
                         });
-                        if (key.length > 0) {
-                            newOutputs = this.removeTheLastComma(newOutputs);
-                            const originalOutputs = this.convertToString(this.designerState.template.workflows[this.actionName]['outputs']);
-                            console.log(originalOutputs.substr(0, originalOutputs.length - 1) + ',' + newOutputs + '}');
-                            this.designerState.template.workflows[this.actionName]['outputs'] =
-                                this.convertToObject(originalOutputs.substr(0, originalOutputs.length - 1) + ',' + newOutputs + '}');
+                        if (value.length > 0) {
+                            newAttributes = this.removeTheLastComma(newAttributes);
+                            const originalAttributes = this.convertToString(this.designerState.template.workflows[this.actionName]
+                                [attributeType]);
+                            console.log(originalAttributes.substr(0, originalAttributes.length - 1) + ',' + newAttributes + '}');
+                            this.designerState.template.workflows[this.actionName][attributeType] =
+                                this.convertToObject(originalAttributes.substr(0, originalAttributes.length - 1)
+                                    + ',' + newAttributes + '}');
                         }
                     }
                 });
         });
     }
 
-
-    private writeSelectedAttributeInputs() {
-        this.functionAndAttributesInput.forEach((key, value) => {
-            const nodeTemplate = this.getNodeTemplate(value);
-            this.functions.serverFunctions
-                /* tslint:disable:no-string-literal */
-                .filter(currentFunction => currentFunction.modelName.includes(nodeTemplate['type']))
-                .forEach(currentFunction => {
-                    if (currentFunction['definition'] && currentFunction['definition']['interfaces']
-                        [Object.keys(currentFunction['definition'] && currentFunction['definition']['interfaces'])]
-                        ['operations']['process']['inputs']) {
-                        let newInputs = '';
-                        const inputs = currentFunction['definition'] && currentFunction['definition']['interfaces']
-                            [Object.keys(currentFunction['definition'] && currentFunction['definition']['interfaces'])]
-                            ['operations']['process']['inputs'];
-                        key.forEach(attribute => {
-                            newInputs += '"' + attribute + '": ' + this.convertToString(inputs[attribute]) + ',';
-                        });
-                        if (key.length > 0) {
-                            newInputs = this.removeTheLastComma(newInputs);
-                            const originalInputs = this.convertToString(this.designerState.template.workflows[this.actionName]['inputs']);
-                            console.log(originalInputs.substr(0, originalInputs.length - 1) + ',' + newInputs + '}');
-                            this.designerState.template.workflows[this.actionName]['inputs'] =
-                                this.convertToObject(originalInputs.substr(0, originalInputs.length - 1) + ',' + newInputs + '}');
-                        }
-                    }
-
-
-                });
-        });
-    }
-
     private removeTheLastComma = (newInputs: string) => {
         if (newInputs.endsWith(',')) {
             newInputs = newInputs.substr(0, newInputs.length - 1);