aboutsummaryrefslogtreecommitdiffstats
path: root/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter
diff options
context:
space:
mode:
authorvempo <vitaliy.emporopulo@amdocs.com>2018-07-24 17:34:04 +0300
committervempo <vitaliy.emporopulo@amdocs.com>2018-07-25 11:39:10 +0300
commita52d50e788792a63e97a9176ab319d53db7a2853 (patch)
treeb1c2222cacf4b8192aea16d1e0315b1f005c5347 /deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter
parent3c2665debb400aef7f0ed9e235698d2ff9f859db (diff)
Replaced old implementation at root
Old project files and directories has been moved under 'deprecated-workflow-designer'. The old project is not built by the CI anymore, but can be still built manually. New modules/directories have been moved up and integrated with the CI system. Change-Id: I1528c792bcbcce9e50bfc294a1328a20e72c91cf Issue-ID: SDC-1559 Signed-off-by: vempo <vitaliy.emporopulo@amdocs.com>
Diffstat (limited to 'deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter')
-rw-r--r--deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css50
-rw-r--r--deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html61
-rw-r--r--deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts195
3 files changed, 306 insertions, 0 deletions
diff --git a/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css
new file mode 100644
index 00000000..4002997c
--- /dev/null
+++ b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.css
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ * ZTE - initial API and implementation and/or initial documentation
+ */
+
+.parameter{
+ margin-bottom: 1rem;
+}
+
+.parameter-section{
+ display: inline;
+ margin-right: 5px;
+}
+
+.parameter-item{
+ display: inline;
+}
+
+.parameter-required{
+ color: red;
+}
+
+.parameter-label{
+ width: 100px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ vertical-align: bottom;
+ /* display: inline-table; */
+}
+
+.parameter-value{
+ width: 160px;
+ vertical-align: baseline;
+}
+
+.plx-input{
+ vertical-align: baseline;
+}
+
+.plx-btn{
+ vertical-align: baseline;
+}
diff --git a/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html
new file mode 100644
index 00000000..1b91b426
--- /dev/null
+++ b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.html
@@ -0,0 +1,61 @@
+<!--
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ * ZTE - initial API and implementation and/or initial documentation
+ */
+-->
+
+<div *ngIf="param.show" class="parameter">
+ <div *ngIf="currentShowLabel" class="parameter-section">
+ <label *ngIf="true === param.required" class="parameter-required">*</label>
+ <input *ngIf="currentCanEditName" class="parameter-label plx-input" type="text" [ngModel]="param.name" (ngModelChange)="keyChange($event)">
+ <label *ngIf="!currentCanEditName" class="parameter-label">{{param.name}}</label>
+ </div>
+ <div *ngIf="currentShowValue" class="parameter-section">
+ <div *ngIf="showValueValue" class="parameter-item">
+ <div [ngSwitch]="param.valueSource" class="parameter-item">
+ <input *ngSwitchCase="valueTypeEnum[valueTypeEnum.number]" class="parameter-value plx-input" type="text" [ngModel]="param.value"
+ (ngModelChange)="valueChange($event)" [disabled]="!currentCanEditValue">
+ <select *ngSwitchCase="valueTypeEnum[valueTypeEnum.boolean]" class="parameter-value" type="text" [ngModel]="param.value"
+ (ngModelChange)="valueChange($event)" [disabled]="!currentCanEditValue">
+ <option>true</option>
+ <option>false</option>
+ </select>
+ <tree-select *ngSwitchCase="valueSourceEnum[valueSourceEnum.Plan]" name="simpleSelect" [items]="planOptions" childrenField="children"
+ #simpleSelect="ngModel" class="parameter-value" [ngModel]="planValue" (ngModelChange)="valueChange($event)"
+ [disabled]="!currentCanEditValue"></tree-select>
+ <select *ngSwitchCase="valueSourceEnum[valueSourceEnum.Topology]" class="parameter-value" type="text" [ngModel]="param.value"
+ (ngModelChange)="valueChange($event)" [disabled]="!currentCanEditValue">
+ <option *ngFor="let topology of topologyOptions" value="{{topology.value}}">{{topology.name}}
+ </option>
+ </select>
+ <!--string, Variable-->
+ <input *ngSwitchDefault class="parameter-value plx-input" type="text" [ngModel]="param.value" (ngModelChange)="valueChange($event)"
+ [disabled]="!currentCanEditValue">
+ </div>
+ </div>
+ <select *ngIf="showValueSource" class="parameter-item" style="width:auto;" type="text" [ngModel]="param.valueSource" (ngModelChange)="valueSourceChange($event)"
+ [disabled]="!currentCanEditValue">
+ <option *ngFor="let sourceItem of sourceItems" value="{{sourceItem.value}}">
+ {{sourceItem.name}}
+ </option>
+ </select>
+ </div>
+ <div *ngIf="currentCanInsert" class="parameter-section">
+ <button type="button" class="plx-btn plx-btn-primary" (click)="insertParam()">
+ <i class="fa fa-plus"></i>
+ </button>
+ </div>
+ <div *ngIf="currentCanDelete" class="parameter-section">
+ <button type="button" class="plx-btn plx-btn-error" (click)="deleteParam()">
+ <i class="fa fa-minus"></i>
+ </button>
+ </div>
+</div> \ No newline at end of file
diff --git a/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts
new file mode 100644
index 00000000..c208c1de
--- /dev/null
+++ b/deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter/parameter.component.ts
@@ -0,0 +1,195 @@
+/**
+ * Copyright (c) 2017 ZTE Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * and the Apache License 2.0 which both accompany this distribution,
+ * and are available at http://www.eclipse.org/legal/epl-v10.html
+ * and http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Contributors:
+ * ZTE - initial API and implementation and/or initial documentation
+ */
+
+import {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from "@angular/core";
+import {PlanTreeviewItem} from "../../model/plan-treeview-item";
+import {ValueSource} from "../../model/value-source.enum";
+import {Parameter} from "../../model/workflow/parameter";
+import {ToscaService} from "../../services/tosca.service";
+import {ValueType} from "../../model/value-type.enum";
+
+/**
+ * this component contains in property component if the corresponding node has parameter properties
+ * eg. task node have input and output params, start event node has input param
+ */
+@Component({
+ selector: 'wfm-parameter',
+ styleUrls: ['./parameter.component.css'],
+ templateUrl: 'parameter.component.html',
+})
+export class ParameterComponent implements OnInit {
+ @Input() public param: Parameter;
+ @Input() public valueSource: ValueSource[] = [];
+ @Input() public showLabel: boolean;
+ @Input() public showValue: boolean;
+ @Input() public canEditName: boolean;
+ @Input() public canEditValue: boolean;
+ @Input() public canInsert: boolean;
+ @Input() public canDelete: boolean;
+ @Input() public planItems: PlanTreeviewItem[];
+ @Output() paramChange = new EventEmitter<Parameter>();
+ @Output() insert = new EventEmitter<Parameter>();
+ @Output() delete = new EventEmitter<Parameter>();
+
+ // Parameter setting
+ public currentShowLabel: boolean;
+ public currentShowValue: boolean;
+ public currentCanEditName: boolean;
+ public currentCanEditValue: boolean;
+ public currentCanInsert: boolean;
+ public currentCanDelete: boolean;
+
+ public valueTypeEnum = ValueType;
+ public valueSourceEnum = ValueSource;
+ public sourceItems: { name: string, value: string }[] = [];
+ public planOptions = [];
+ public topologyOptions: { name: string, value: string }[] = [];
+ public showValueValue = true;
+ public showValueSource = true;
+ public planValue: any = {};
+
+ constructor(private toscaService: ToscaService) {
+ }
+
+ public ngOnInit(): void {
+ this.initSetting();
+ this.topologyOptions = this.toscaService.getTopologyProperties();
+ this.initSourceItems();
+ this.initPlanValue();
+ this.setValueSource(this.param.valueSource);
+ this.initPlanTreeViewItems(this.planItems);
+ }
+
+ private initSetting():void{
+ this.currentShowLabel = this.setDefaultValue(this.showLabel, true);
+ this.currentShowValue = this.setDefaultValue(this.showValue, true);
+ this.currentCanEditName = this.setDefaultValue(this.canEditName, false);
+ this.currentCanEditValue = this.setDefaultValue(this.canEditValue, true);
+ this.currentCanInsert = this.setDefaultValue(this.canInsert, false);
+ this.currentCanDelete = this.setDefaultValue(this.canDelete, false);
+ }
+
+ private setDefaultValue(param: boolean, value: boolean): boolean {
+ return undefined === param ? value : param;
+ }
+
+ private initSourceItems(): void {
+ this.sourceItems = [];
+ if (this.param.type !== ValueType[ValueType.object] && this.param.type !== ValueType[ValueType.array]) {
+ this.sourceItems = [{
+ name: this.capitalizeFirstLetter(this.param.type),
+ value: this.param.type
+ }];
+ }
+ this.valueSource.forEach(value => {
+ this.sourceItems.push({
+ name: ValueSource[value],
+ value: ValueSource[value]
+ });
+ });
+ }
+
+ private capitalizeFirstLetter(value: string): string {
+ const firstLetter = value.substring(0, 1);
+ const remainedLetter = value.substring(1);
+ return firstLetter.toUpperCase() + remainedLetter;
+ }
+
+ private initPlanValue(): void {
+ if (ValueSource[ValueSource.Plan] === this.param.valueSource) {
+ this.planValue = {id: this.param.value};
+ }
+ }
+
+ private setValueSource(valueSource: string): void {
+ if (ValueSource[ValueSource.Definition] === valueSource) {
+ this.showValueValue = false;
+ } else {
+ this.showValueValue = true;
+ }
+ }
+
+ private initPlanTreeViewItems(planTreeviewItems: PlanTreeviewItem[]): void {
+ this.planOptions = this.getTreeViewChild(planTreeviewItems);
+ }
+
+ private getTreeViewChild(planTreeviewItems: PlanTreeviewItem[]): any[] {
+ let treeviewItems = [];
+ if (undefined == planTreeviewItems || 0 === planTreeviewItems.length) {
+ // todo: debug check if it need [] or undefined.
+ return treeviewItems;
+ }
+ planTreeviewItems.forEach(item => {
+ const treeviewItem = {
+ id: item.value,
+ name: item.name,
+ disabled: false,
+ // !item.canSelect,
+ children: this.getTreeViewChild(item.children)
+ };
+ treeviewItems.push(treeviewItem);
+ });
+ return treeviewItems;
+ }
+
+ public keyChange(key: string) {
+ this.param.name = key;
+ this.paramChange.emit(this.param);
+ }
+
+ private formatValue(value: any) {
+ let result;
+ switch (this.param.valueSource) {
+ case ValueSource[ValueSource.boolean]:
+ result = value === "true" ? true : false;
+ break;
+ case ValueSource[ValueSource.integer]:
+ result = parseInt(value);
+ break;
+ case ValueSource[ValueSource.number]:
+ result = parseFloat(value);
+ break;
+ default:
+ result = value;
+ }
+ return result;
+ }
+
+ public valueChange(value: any) {
+ if (ValueSource[ValueSource.Plan] === this.param.valueSource) {
+ if ('object' === typeof (value)) {
+ this.planValue = value;
+ this.param.value = value.id;
+ } else {
+ this.planValue = {id: ''};
+ this.param.value = '';
+ }
+ } else {
+ this.param.value = this.formatValue(value);
+ }
+ this.paramChange.emit(this.param);
+ }
+
+ public valueSourceChange(valueSource: string) {
+ this.param.valueSource = valueSource;
+ this.setValueSource(valueSource);
+ this.valueChange('');
+ }
+
+ public insertParam(): void {
+ this.insert.emit();
+ }
+
+ public deleteParam(): void {
+ this.delete.emit();
+ }
+}