diff options
author | 2018-07-24 17:34:04 +0300 | |
---|---|---|
committer | 2018-07-25 11:39:10 +0300 | |
commit | a52d50e788792a63e97a9176ab319d53db7a2853 (patch) | |
tree | b1c2222cacf4b8192aea16d1e0315b1f005c5347 /deprecated-workflow-designer/sdc-workflow-designer-ui/src/app/components/parameter | |
parent | 3c2665debb400aef7f0ed9e235698d2ff9f859db (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')
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(); + } +} |