summaryrefslogtreecommitdiffstats
path: root/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes
diff options
context:
space:
mode:
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.css0
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html348
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.spec.ts25
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts58
-rw-r--r--cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/InputActionAttribute.ts17
5 files changed, 448 insertions, 0 deletions
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.css b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.css
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.css
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
new file mode 100644
index 000000000..051ef1634
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.html
@@ -0,0 +1,348 @@
+<div class="scrollWrapper">
+ <div class="row m-0">
+ <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">
+ </div>
+ </div>
+ </div>
+ <!--Add Attribute-->
+ <div class="row m-b add-attribute">
+ <div class="col">
+ <h5>Add Attribute</h5>
+ <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>
+ <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>
+ <span>Function Attribute</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!--INPUTS-->
+ <div class="accordion" id="accordionExample">
+ <div class="card">
+ <div class="card-header row" id="headingOne">
+ <button class="btn btn-link" type="button" data-toggle="collapse"
+ data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
+ Inputs
+ </button>
+ </div>
+ <div id="collapseOne" class="collapse show" aria-labelledby="headingOne"
+ data-parent="#accordionExample">
+ <div class="card-body action-attributes">
+ <div class="row">
+ <div class="col">
+ <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>
+ <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>
+ <a class="accordion-delete deleteAttribute"
+ tooltip="Delete Attribute" placement="bottom"><i
+ class="icon-delete-sm"></i></a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!--OUTPUTS-->
+ <div class="accordion" id="accordionExample1">
+ <div class="card">
+ <div class="card-header row" id="headingOne">
+ <button class="btn btn-link" type="button" data-toggle="collapse"
+ data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">
+ Outputs
+ </button>
+ </div>
+
+ <div id="collapseTwo" class="collapse show" aria-labelledby="headingOne"
+ data-parent="#accordionExample1">
+ <div class="card-body">
+ <div class="row">
+ <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 optional-attribute" type="button"
+ aria-hidden="true"></i>
+ <i [hidden]="output.required" class="optional-attribute"
+ type="button" aria-hidden="true"></i>
+ </label>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+<!--Action - Add Custom Attribute - Modal-->
+<div class="modal fade" id="exampleModalScrollable" tabindex="-1" role="dialog"
+ aria-labelledby="exampleModalScrollableTitle" aria-hidden="true">
+ <div class="modal-dialog modal-dialog-centered 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"/>
+ </button>
+ </div>
+ <div class="modal-body createAttributeTabs">
+ <!--Action - Inputs & Outputs Attribute-->
+ <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>
+ </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>
+ </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">
+ <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">
+ </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">
+ </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"
+ (click)="setInputType('String')">
+ String
+ </button>
+ <button type="button"
+ class="list-group-item list-group-item-action"
+ (click)="setInputType('Integer')">Integer
+ </button>
+ <button type="button"
+ class="list-group-item list-group-item-action"
+ (click)="setInputType('Boolean')">Boolean
+ </button>
+ <button type="button" class="list-group-item list-group-item-action"
+ (click)="setInputType('List')">List
+ </button>
+ <button type="button" class="list-group-item list-group-item-action"
+ (click)="setInputType('Other')">Other
+ </button>
+
+ </div>
+ </div>
+ </div>
+ <div class="form-group row">
+ <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
+ <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)">
+ <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)">
+ <label class="custom-control-label" for="customRadioInline2">False</label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!--OUTPUTS Tab-->
+ <div class="tab-pane fade create-form" id="profile" role="tabpanel" aria-labelledby="profile-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)]="outputActionAttribute.name" type="email" class="form-control"
+ 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">
+ </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')">
+ Integer
+ </button>
+ <button type="button"
+ class="list-group-item list-group-item-action"
+ (click)="setOutputType('Boolean')">
+ Boolean
+ </button>
+ <button type="button" class="list-group-item list-group-item-action"
+ (click)="setOutputType('List')">
+ List
+ </button>
+ <button type="button"
+ class="list-group-item list-group-item-action"
+ (click)="setOutputType('Other')">
+ Other
+ </button>
+ </div>
+ <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
+ placeholder="Add Other type name">
+ </div>
+ </div>
+ <div class="form-group row">
+ <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
+ <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)="setOutputRequired(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">
+ <label class="custom-control-label" for="customRadioInline2"
+ (click)="setOutputRequired(false)">False</label>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-primary" (click)="submitAttributes()">Submit Attributes</button>
+ </div>
+ </div>
+ </div>
+</div>
+<!--Delete Action - Modal-->
+<div class="modal fade" id="exampleModalScrollable1" tabindex="-1" role="dialog"
+ aria-labelledby="exampleModalScrollableTitle1" aria-hidden="true">
+ <div class="modal-dialog modal-dialog-centered 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"/>
+ </button>
+ </div>
+ <div class="modal-body">
+ Are you sure you want to delete <b>resource-assignment</b> action?
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-primary">Delete</button>
+ </div>
+ </div>
+ </div>
+</div>
+<!--Action - Edit Custom Attribute - Modal-->
+<div class="modal fade" id="exampleModalScrollable2" tabindex="-1" role="dialog"
+ aria-labelledby="exampleModalScrollableTitle2" aria-hidden="true">
+ <div class="modal-dialog modal-dialog-centered 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"/>
+ </button>
+ </div>
+ <div class="modal-body createAttributeTabs">
+ <div class="create-form">
+ <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 type="email" class="form-control" id="inputEmail3" placeholder="Attribute name"
+ 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).">
+ </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">Integer</button>
+ <button type="button" class="list-group-item list-group-item-action">Boolean</button>
+ <button type="button" class="list-group-item list-group-item-action">List</button>
+ <button type="button" class="list-group-item list-group-item-action active">Other
+ </button>
+ </div>
+ <input type="text" class="form-control mt-2 mb-2" id="inputPassword3"
+ placeholder="Add Other type name" value="dt-resource-assignment-properties">
+ </div>
+ </div>
+ <div class="form-group row">
+ <label class="col-form-label col-sm-3 pt-0">Required <span>*</span></label>
+ <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>
+ <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">
+ <label class="custom-control-label" for="customRadioInline2">False</label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
+ <button type="button" class="btn btn-primary">Save</button>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.spec.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.spec.ts
new file mode 100644
index 000000000..12078eb0d
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ActionAttributesComponent } from './action-attributes.component';
+
+describe('ActionAttributesComponent', () => {
+ let component: ActionAttributesComponent;
+ let fixture: ComponentFixture<ActionAttributesComponent>;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ ActionAttributesComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(ActionAttributesComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
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
new file mode 100644
index 000000000..f4f74a9fd
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/action-attributes.component.ts
@@ -0,0 +1,58 @@
+import {Component, OnInit} from '@angular/core';
+import {InputActionAttribute, OutputActionAttribute} from './models/InputActionAttribute';
+
+@Component({
+ selector: 'app-action-attributes',
+ templateUrl: './action-attributes.component.html',
+ styleUrls: ['./action-attributes.component.css']
+})
+export class ActionAttributesComponent implements OnInit {
+
+ inputs = [];
+ outputs = [];
+ actionAttributesSideBar: boolean;
+ inputActionAttribute = new InputActionAttribute();
+ outputActionAttribute = new OutputActionAttribute();
+
+ constructor() {
+
+ }
+
+ ngOnInit() {
+ }
+
+ _toggleSidebar2() {
+ this.actionAttributesSideBar = !this.actionAttributesSideBar;
+ }
+
+ addInput(input: InputActionAttribute) {
+ this.inputs.push(input);
+ }
+
+ addOutput(output: OutputActionAttribute) {
+ this.outputs.push(output);
+ }
+
+ setInputType(type) {
+ this.inputActionAttribute.type = type;
+ }
+
+ setInputRequired(isRequired) {
+ this.inputActionAttribute.required = isRequired;
+ }
+
+ setOutputRequired(isRequired) {
+ this.outputActionAttribute.required = isRequired;
+ }
+
+ setOutputType(type) {
+ this.outputActionAttribute.type = type;
+ }
+
+ submitAttributes() {
+ console.log(this.inputActionAttribute);
+ console.log(this.outputActionAttribute);
+ this.inputs.push(this.inputActionAttribute);
+ this.outputs.push(this.outputActionAttribute);
+ }
+}
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/InputActionAttribute.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/InputActionAttribute.ts
new file mode 100644
index 000000000..3aa370360
--- /dev/null
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/designer/action-attributes/models/InputActionAttribute.ts
@@ -0,0 +1,17 @@
+export class InputActionAttribute {
+ name: string;
+ description: string;
+ type: string;
+ required: boolean;
+
+ constructor() {
+ this.name = '';
+ this.description = '';
+ this.type = '';
+ this.required = false;
+ }
+}
+
+export class OutputActionAttribute extends InputActionAttribute {
+
+}