ee4b19930f8ac716c8c633beef79627ba0f90995
[ccsdk/cds.git] /
1 import {Component, OnInit} from '@angular/core';
2 import {InputActionAttribute, OutputActionAttribute} from './models/InputActionAttribute';
3 import {DesignerStore} from '../designer.store';
4
5 @Component({
6     selector: 'app-action-attributes',
7     templateUrl: './action-attributes.component.html',
8     styleUrls: ['./action-attributes.component.css']
9 })
10 export class ActionAttributesComponent implements OnInit {
11
12     inputs = [];
13     outputs = [];
14     actionAttributesSideBar: boolean;
15     inputActionAttribute = new InputActionAttribute();
16     outputActionAttribute = new OutputActionAttribute();
17     isInputOtherType: boolean;
18     isOutputOtherType: boolean;
19     outputOtherType = '';
20     inputOtherType = '';
21
22     constructor(private designerStore: DesignerStore) {
23
24     }
25
26     ngOnInit() {
27     }
28
29     addInput(input: InputActionAttribute) {
30         if (input && input.type && input.name) {
31             const insertedInputActionAttribute = Object.assign({}, input);
32             this.inputs.push(insertedInputActionAttribute);
33         }
34     }
35
36     addOutput(output: OutputActionAttribute) {
37         if (output && output.type && output.name) {
38             const insertedOutputActionAttribute = Object.assign({}, output);
39             this.outputs.push(insertedOutputActionAttribute);
40         }
41     }
42
43     setInputType(type: string) {
44         this.inputActionAttribute.type = type;
45         this.isInputOtherType = this.checkIfTypeIsOther(type);
46     }
47
48     setInputRequired(isRequired) {
49         this.inputActionAttribute.required = isRequired;
50     }
51
52     setOutputRequired(isRequired) {
53         this.outputActionAttribute.required = isRequired;
54     }
55
56     setOutputType(type: string) {
57         this.outputActionAttribute.type = type;
58         this.isOutputOtherType = this.checkIfTypeIsOther(type);
59     }
60
61     checkIfTypeIsOther(type) {
62         return type.includes('Other');
63     }
64
65     submitAttributes() {
66         console.log(this.inputActionAttribute);
67         console.log(this.outputActionAttribute);
68         this.addInput(this.inputActionAttribute);
69         this.addOutput(this.outputActionAttribute);
70         this.clearFormInputs();
71         console.log(this.storeInputs(this.inputs));
72         this.designerStore.setInputsToSpecificWorkflow(this.storeInputs(this.inputs));
73         console.log(this.storeOutputs(this.outputs));
74     }
75
76     private clearFormInputs() {
77         this.inputActionAttribute = new InputActionAttribute();
78         this.outputActionAttribute = new OutputActionAttribute();
79         this.outputOtherType = '';
80         this.inputOtherType = '';
81     }
82
83     private storeInputs(InputActionAttributes: InputActionAttribute[]) {
84
85         let inputs = '';
86         InputActionAttributes.forEach(input => {
87             inputs += this.appendAttributes(input);
88
89         });
90         const returnedInputMap = new Map<string, string>();
91         returnedInputMap.set('inputs', inputs);
92         return returnedInputMap;
93     }
94
95     private storeOutputs(OutputActionAttributes: OutputActionAttribute[]) {
96         let outputs = '';
97         OutputActionAttributes.forEach(output => {
98             outputs += this.appendAttributes(output);
99         });
100         const returnedOutputMap = new Map<string, string>();
101         returnedOutputMap.set('outputs', outputs);
102         return returnedOutputMap;
103     }
104
105     private appendAttributes(output: OutputActionAttribute) {
106         return '"' + output.name + '":{\n' +
107             '                \'required\': ' + output.required + ',\n' +
108             '                \'type\': "' + output.type + '",\n' +
109             '                \'description\': "' + output.description + '"\n' +
110             '            }' + '\n';
111     }
112 }