summaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes
diff options
context:
space:
mode:
authorShaabanEltanany <shaaban.eltanany.ext@orange.com>2020-10-26 13:46:14 +0200
committerShaabanEltanany <shaaban.eltanany.ext@orange.com>2020-10-26 15:27:30 +0200
commit4dd2f9d159e12e888e4e6dd9dda245e296e38b98 (patch)
treefc9b541d51fc131092b1ba8ebc27cbc2ee93af24 /cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes
parent1741f11216bc1325673373996f806bdc4ec81b42 (diff)
adding inputs and outputs to entry definition (Designer)
Issue-ID: CCSDK-2943 Signed-off-by: ShaabanEltanany <shaaban.eltanany.ext@orange.com> Change-Id: Iffd5c80ecf3fa35b21ab14b8c70308e0d3ee2a50
Diffstat (limited to 'cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes')
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html110
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts67
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/Action.ts5
3 files changed, 113 insertions, 69 deletions
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
index f7ba40ce1..d23628bc7 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
@@ -3,7 +3,7 @@
<div class="col">
<div class="form-group">
<label for="exampleInputEmail1">Action Name</label>
- <input type="text" class="form-control" placeholder="Action Name" value="resource-assignment">
+ <input type="text" class="form-control" placeholder="Action Name" readonly [value]="actionName">
</div>
</div>
</div>
@@ -14,13 +14,13 @@
<div class="row">
<div class="col pr-0 text-center">
<button type="button" data-toggle="modal" data-target="#exampleModalScrollable"
- class="btn btn-secondary"><i class="icon-custom-attribute" type="button"
- aria-hidden="true"></i></button>
+ class="btn btn-secondary"><i class="icon-custom-attribute" type="button"
+ aria-hidden="true"></i></button>
<span>Custom Attribute</span>
</div>
<div class="col text-center">
<button type="button" class="btn btn-secondary"><i class="icon-function-attribute" type="button"
- aria-hidden="true"></i></button>
+ aria-hidden="true"></i></button>
<span>Function Attribute</span>
</div>
</div>
@@ -32,7 +32,7 @@
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne"
- aria-expanded="true" aria-controls="collapseOne">
+ aria-expanded="true" aria-controls="collapseOne">
Inputs
</button>
</h2>
@@ -44,15 +44,15 @@
<div class="form-group" *ngFor="let input of inputs">
<label for="exampleFormControlTextarea1">{{input.name}}
<i [hidden]="!input.required" class="icon-required-star" type="button"
- aria-hidden="true"></i>
+ aria-hidden="true"></i>
<i [hidden]="input.required" type="button" aria-hidden="true"></i>
</label>
<div class="attributeOptions">
<a data-toggle="modal" data-target="#exampleModalScrollable2"
- class="accordion-delete editAttribute" tooltip="Edit Attribute"
- placement="bottom"><i class="icon-edit"></i></a>
+ class="accordion-delete editAttribute" tooltip="Edit Attribute"
+ placement="bottom"><i class="icon-edit"></i></a>
<a class="accordion-delete deleteAttribute" tooltip="Delete Attribute"
- placement="bottom"><i class="icon-delete-sm"></i></a>
+ placement="bottom"><i class="icon-delete-sm"></i></a>
</div>
</div>
</div>
@@ -67,7 +67,7 @@
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseTwo"
- aria-expanded="true" aria-controls="collapseTwo">
+ aria-expanded="true" aria-controls="collapseTwo">
Outputs
</button>
</h2>
@@ -79,10 +79,10 @@
<div class="col">
<div class="form-group" *ngFor="let output of outputs">
<label for="exampleFormControlTextarea1">{{output.name}}
- <i [hidden]="output.required" class="icon-required-star" type="button"
- aria-hidden="true"></i>
- <i [hidden]="!output.required" class="optional-attribute" type="button"
- aria-hidden="true"></i>
+ <i [hidden]="!output.required" class="icon-required-star" type="button"
+ aria-hidden="true"></i>
+ <i [hidden]="output.required" class="optional-attribute" type="button"
+ aria-hidden="true"></i>
</label>
</div>
@@ -95,14 +95,14 @@
</div>
<!--Action - Add Custom Attribute - Modal-->
<div class="modal fade" id="exampleModalScrollable" tabindex="-1" role="dialog"
- aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
+ aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalScrollableTitle">
Add Custom Attributes</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
- <img src="assets/img/icon-close.svg" />
+ <img src="assets/img/icon-close.svg"/>
</button>
</div>
<div class="modal-body createAttributeTabs">
@@ -110,29 +110,29 @@
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab"
- aria-controls="home" aria-selected="true">Inputs</a>
+ aria-controls="home" aria-selected="true">Inputs</a>
</li>
<li class="nav-item">
<a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab"
- aria-controls="profile" aria-selected="false">Outputs</a>
+ aria-controls="profile" aria-selected="false">Outputs</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<!--INPUTS Tab-->
<div class="tab-pane fade show active create-form" id="home" role="tabpanel"
- aria-labelledby="home-tab">
+ aria-labelledby="home-tab">
<div class="form-group row">
<label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
<div class="col-sm-9">
<input [(ngModel)]="inputActionAttribute.name" type="email" class="form-control"
- id="inputEmail3" placeholder="Attribute name">
+ id="inputEmail3" placeholder="Attribute name">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
<div class="col-sm-9">
<input [(ngModel)]="inputActionAttribute.description" type="text" class="form-control"
- id="inputPassword3" placeholder="Add some description">
+ id="inputPassword3" placeholder="Add some description">
</div>
</div>
<div class="form-group row">
@@ -140,25 +140,26 @@
<div class="col-sm-9">
<div class="list-group list-group-horizontal">
<button type="button" class="list-group-item list-group-item-action"
- (click)="setInputType('String')">
+ (click)="setInputType('String')">
String
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setInputType('Integer')">Integer
+ (click)="setInputType('Integer')">Integer
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setInputType('Boolean')">Boolean
+ (click)="setInputType('Boolean')">Boolean
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setInputType('List')">List
+ (click)="setInputType('List')">List
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setInputType('Other')">Other
+ (click)="setInputType('Other')">Other
</button>
</div>
<input [hidden]="!isInputOtherType" type="text" class="form-control mt-2 mb-2"
- id="inputPassword4" placeholder="Add Other type name" [(ngModel)]="inputOtherType"
- (change)="setInputType(inputOtherType)">
+ id="inputPassword4" placeholder="Add Other type name"
+ [(ngModel)]="inputOtherType"
+ (change)="setInputType(inputOtherType)">
</div>
</div>
@@ -167,12 +168,12 @@
<div class="col-sm-9">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline1" name="customRadioInline1"
- class="custom-control-input" (click)="setInputRequired(true)">
+ class="custom-control-input" (click)="setInputRequired(true)">
<label class="custom-control-label" for="customRadioInline1">True</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline2" name="customRadioInline1"
- class="custom-control-input" (click)="setInputRequired(false)">
+ class="custom-control-input" (click)="setInputRequired(false)">
<label class="custom-control-label" for="customRadioInline2">False</label>
</div>
</div>
@@ -184,41 +185,44 @@
<label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
<div class="col-sm-9">
<input [(ngModel)]="outputActionAttribute.name" type="email" class="form-control"
- id="inputEmail3" placeholder="Attribute name">
+ id="inputEmail3" placeholder="Attribute name">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
<div class="col-sm-9">
<input [(ngModel)]="outputActionAttribute.description" type="text" class="form-control"
- id="inputPassword3" placeholder="Add some description">
+ id="inputPassword3" placeholder="Add some description">
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-sm-3 pt-0">Type <span>*</span></label>
<div class="col-sm-9">
<div class="list-group list-group-horizontal">
- <button type="button" class="list-group-item list-group-item-action">String</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setOutputType('Integer')">
+ (click)="setOutputType('String')">String
+ </button>
+ <button type="button" class="list-group-item list-group-item-action"
+ (click)="setOutputType('Integer')">
Integer
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setOutputType('Boolean')">
+ (click)="setOutputType('Boolean')">
Boolean
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setOutputType('List')">
+ (click)="setOutputType('List')">
List
</button>
<button type="button" class="list-group-item list-group-item-action"
- (click)="setOutputType('Other')">
+ (click)="setOutputType('Other')">
Other
</button>
</div>
<input [hidden]="!isOutputOtherType" type="text" class="form-control mt-2 mb-2"
- id="inputPassword3" placeholder="Add Other type name" [(ngModel)]="outputOtherType"
- (change)="setOutputType(outputOtherType)">
+ id="inputPassword3" placeholder="Add Other type name"
+ [(ngModel)]="outputOtherType"
+ (change)="setOutputType(outputOtherType)">
</div>
</div>
<div class="form-group row">
@@ -226,14 +230,14 @@
<div class="col-sm-9">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline3" name="customRadioInline3"
- class="custom-control-input" (click)="setOutputRequired(true)">
+ class="custom-control-input" (click)="setOutputRequired(true)">
<label class="custom-control-label" for="customRadioInline3">True</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline4" name="customRadioInline3"
- class="custom-control-input">
+ class="custom-control-input">
<label class="custom-control-label" for="customRadioInline4"
- (click)="setOutputRequired(false)">False</label>
+ (click)="setOutputRequired(false)">False</label>
</div>
</div>
</div>
@@ -249,14 +253,14 @@
</div>
<!--Delete Action - Modal-->
<div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
- aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
+ aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalScrollableTitle1">
Delete Action</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
- <img src="assets/img/icon-close.svg" />
+ <img src="assets/img/icon-close.svg"/>
</button>
</div>
<div class="modal-body">
@@ -271,14 +275,14 @@
</div>
<!--Action - Edit Custom Attribute - Modal-->
<div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
- aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
+ aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
<div class="modal-dialog modal-dialog-scrollable" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalScrollableTitle2">
Edit Custom Attributes</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
- <img src="assets/img/icon-close.svg" />
+ <img src="assets/img/icon-close.svg"/>
</button>
</div>
<div class="modal-body createAttributeTabs">
@@ -287,15 +291,15 @@
<label for="inputEmail3" class="col-sm-3 col-form-label">Name <span>*</span></label>
<div class="col-sm-9">
<input type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
- value="resource-assignment-properties">
+ value="resource-assignment-properties">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-3 col-form-label">Description</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="inputPassword3"
- placeholder="Add some description"
- value="Dynamic PropertyDefinition for workflow(resource-assignment).">
+ placeholder="Add some description"
+ value="Dynamic PropertyDefinition for workflow(resource-assignment).">
</div>
</div>
<div class="form-group row">
@@ -311,7 +315,7 @@
</button>
</div>
<input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
- placeholder="Add Other type name" value="dt-resource-assignment-properties">
+ placeholder="Add Other type name" value="dt-resource-assignment-properties">
</div>
</div>
<div class="form-group row">
@@ -319,12 +323,12 @@
<div class="col-sm-9">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline1" name="customRadioInline1"
- class="custom-control-input" checked>
+ class="custom-control-input" checked>
<label class="custom-control-label" for="customRadioInline1">True</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline2" name="customRadioInline1"
- class="custom-control-input">
+ class="custom-control-input">
<label class="custom-control-label" for="customRadioInline2">False</label>
</div>
</div>
@@ -337,4 +341,4 @@
</div>
</div>
</div>
-</div> \ No newline at end of file
+</div>
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 ee4b19930..752f0502d 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
@@ -1,6 +1,8 @@
import {Component, OnInit} from '@angular/core';
import {InputActionAttribute, OutputActionAttribute} from './models/InputActionAttribute';
import {DesignerStore} from '../designer.store';
+import {DesignerDashboardState} from '../model/designer.dashboard.state';
+import {Action} from './models/Action';
@Component({
selector: 'app-action-attributes',
@@ -18,12 +20,46 @@ export class ActionAttributesComponent implements OnInit {
isOutputOtherType: boolean;
outputOtherType = '';
inputOtherType = '';
+ actionName = '';
+ designerState: DesignerDashboardState;
constructor(private designerStore: DesignerStore) {
}
ngOnInit() {
+ this.designerStore.state$.subscribe(designerState => {
+ this.designerState = designerState;
+ if (this.designerState && this.designerState.actionName) {
+ this.actionName = this.designerState.actionName;
+ const action = this.designerState.template.workflows[this.actionName] as Action;
+ this.inputs = [];
+ if (action.inputs) {
+ const namesOfInput = Object.keys(action.inputs);
+ this.inputs = this.extractFields(namesOfInput, action.inputs);
+ }
+ this.outputs = [];
+ if (action.outputs) {
+ const namesOfOutput = Object.keys(action.outputs);
+ this.outputs = this.extractFields(namesOfOutput, action.outputs);
+ }
+ }
+ });
+ }
+
+
+ private extractFields(namesOfOutput: string[], container: {}) {
+ const fields = [];
+ for (const nameOutput of namesOfOutput) {
+ const fieldAttribute = new OutputActionAttribute();
+ fieldAttribute.name = nameOutput;
+ fieldAttribute.description = container[nameOutput].description;
+ fieldAttribute.required = container[nameOutput].required;
+ fieldAttribute.type = container[nameOutput].type;
+ const insertedOutputActionAttribute = Object.assign({}, fieldAttribute);
+ fields.push(insertedOutputActionAttribute);
+ }
+ return fields;
}
addInput(input: InputActionAttribute) {
@@ -63,14 +99,11 @@ export class ActionAttributesComponent implements OnInit {
}
submitAttributes() {
- console.log(this.inputActionAttribute);
- console.log(this.outputActionAttribute);
this.addInput(this.inputActionAttribute);
this.addOutput(this.outputActionAttribute);
this.clearFormInputs();
- console.log(this.storeInputs(this.inputs));
- this.designerStore.setInputsToSpecificWorkflow(this.storeInputs(this.inputs));
- console.log(this.storeOutputs(this.outputs));
+ this.designerStore.setInputsAndOutputsToSpecificWorkflow(this.storeInputs(this.inputs)
+ , this.storeOutputs(this.outputs), this.actionName);
}
private clearFormInputs() {
@@ -87,9 +120,10 @@ export class ActionAttributesComponent implements OnInit {
inputs += this.appendAttributes(input);
});
- const returnedInputMap = new Map<string, string>();
- returnedInputMap.set('inputs', inputs);
- return returnedInputMap;
+ if (inputs.endsWith(',')) {
+ inputs = inputs.substr(0, inputs.length - 1);
+ }
+ return JSON.parse('{' + inputs + '}');
}
private storeOutputs(OutputActionAttributes: OutputActionAttribute[]) {
@@ -97,16 +131,17 @@ export class ActionAttributesComponent implements OnInit {
OutputActionAttributes.forEach(output => {
outputs += this.appendAttributes(output);
});
- const returnedOutputMap = new Map<string, string>();
- returnedOutputMap.set('outputs', outputs);
- return returnedOutputMap;
+ if (outputs.endsWith(',')) {
+ outputs = outputs.substr(0, outputs.length - 1);
+ }
+ return JSON.parse('{' + outputs + '}');
}
private appendAttributes(output: OutputActionAttribute) {
- return '"' + output.name + '":{\n' +
- ' \'required\': ' + output.required + ',\n' +
- ' \'type\': "' + output.type + '",\n' +
- ' \'description\': "' + output.description + '"\n' +
- ' }' + '\n';
+ return '"' + output.name + '" : {\n' +
+ ' "required" : ' + output.required + ',\n' +
+ ' "type" : "' + output.type + '",\n' +
+ ' "description" : "' + output.description + '"\n' +
+ ' },';
}
}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/Action.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/Action.ts
new file mode 100644
index 000000000..52e555617
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/Action.ts
@@ -0,0 +1,5 @@
+export class Action {
+ steps: {};
+ inputs: {};
+ outputs: {};
+}