aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/app/components/property/node-template
diff options
context:
space:
mode:
authorLvbo163 <lv.bo163@zte.com.cn>2018-01-11 19:13:03 +0800
committerLvbo163 <lv.bo163@zte.com.cn>2018-01-11 19:13:03 +0800
commitf093dcdbc4012a64c11a293052afbc74d84c8c5a (patch)
tree519bfc5640253be40a25a1dde2f071a350331f9e /sdc-workflow-designer-ui/src/app/components/property/node-template
parent761b385b2a0a6dbec10717e6d94f1cd1e04bb2ef (diff)
add backend service
add data access interfaces for template data Issue-ID: SDC-905 Change-Id: Ie632b00dbc6ede01b0ee8a3c7abdbbc1f476f1e4 Signed-off-by: Lvbo163 <lv.bo163@zte.com.cn>
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/components/property/node-template')
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html49
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts132
2 files changed, 181 insertions, 0 deletions
diff --git a/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html b/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html
new file mode 100644
index 00000000..5768c0b5
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.html
@@ -0,0 +1,49 @@
+<!--
+/**
+ * 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 class="form-group row">
+ <label class="col-md-3 form-control-label text-md-right">{{'WORKFLOW.TOSCA_NODE' | translate}}</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="node.template.id"
+ (ngModelChange)="node.template.id=$event; nodeTemplateChanged();">
+ <option *ngFor="let template of nodeTemplates" value="{{template.id}}">{{template.name}}</option>
+ </select>
+ </div>
+</div>
+
+<div class="form-group row">
+ <label class="col-md-3 form-control-label text-md-right">{{'WORKFLOW.TOSCA_INTERFACE' | translate}}</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="node.nodeInterface"
+ (ngModelChange)="nodeInterfaceChanged($event);">
+ <option *ngFor="let interface of nodeInterfaces" value="{{interface}}">{{interface}}</option>
+ </select>
+ </div>
+</div>
+
+<div class="form-group row">
+ <label class="col-md-3 form-control-label text-md-right">{{'WORKFLOW.TOSCA_OPERATION' | translate}}</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="node.operation"
+ (ngModelChange)="nodeOperationChanged($event)">
+ <option *ngFor="let operation of nodeOperations" value="{{operation}}">{{operation}}</option>
+ </select>
+ </div>
+</div>
+<hr>
+
+<b4t-parameter *ngFor="let input of node.input" [param]="input" [valueSource]= "inputSources" [planItems]="planItems"></b4t-parameter>
+<hr *ngIf="0 < node.input.length">
+<b4t-parameter *ngFor="let output of node.output" [param]="output" [valueSource]= "outputSources" [planItems]="planItems"></b4t-parameter>
+
diff --git a/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts b/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts
new file mode 100644
index 00000000..5d7339d0
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/app/components/property/node-template/node-template.component.ts
@@ -0,0 +1,132 @@
+/**
+ * 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 { AfterViewInit, Component, Input } from '@angular/core';
+import { Subscription } from '../../../../../node_modules/rxjs/Subscription.d';
+
+import { PlanTreeviewItem } from '../../../model/plan-treeview-item';
+import { NodeTemplate } from '../../../model/topology/node-template';
+import { ValueSource } from '../../../model/value-source.enum';
+import { Parameter } from '../../../model/workflow/parameter';
+import { ToscaNodeTask } from '../../../model/workflow/tosca-node-task';
+import { BroadcastService } from '../../../services/broadcast.service';
+import { DataService } from '../../../services/data/data.service';
+
+/**
+ * node template component provides operations about tosca modules which saved in winery.
+ * This component will be used in the property component while the corresponding workflow node is calling the node template's operation
+ */
+@Component({
+ selector: 'b4t-node-template',
+ templateUrl: 'node-template.component.html',
+})
+export class NodeTemplateComponent implements AfterViewInit {
+ @Input() public node: ToscaNodeTask;
+ @Input() public planItems: PlanTreeviewItem[];
+
+ public inputSources: ValueSource[] = [ValueSource.String, ValueSource.Variable, ValueSource.Topology, ValueSource.Plan];
+ public outputSources: ValueSource[] = [ValueSource.Topology, ValueSource.Plan];
+ public nodeInterfaces: string[] = [];
+ public nodeOperations: any[] = [];
+ public nodeTemplates: NodeTemplate[] = [];
+
+ constructor(private dataService: DataService) {
+ }
+
+ public ngAfterViewInit() {
+ this.dataService.loadNodeTemplates()
+ .subscribe(nodeTemplates => this.nodeTemplates = nodeTemplates);
+
+ this.loadInterfaces();
+ this.loadOperations();
+ }
+
+ public nodeTemplateChanged() {
+ this.setTemplateNamespace();
+
+ this.nodeInterfaceChanged('');
+
+ this.loadInterfaces();
+ }
+
+ public nodeInterfaceChanged(newInterface: string) {
+ this.node.nodeInterface = newInterface;
+
+ this.nodeOperationChanged('');
+
+ this.loadOperations();
+ }
+
+ public nodeOperationChanged(operation: string) {
+ this.node.operation = operation;
+
+ this.node.input = [];
+ this.node.output = [];
+
+ this.loadParameters();
+ }
+
+ private setTemplateNamespace() {
+ const nodeTemplate = this.nodeTemplates.find(
+ tmpNodeTemplate => tmpNodeTemplate.id === this.node.template.id);
+
+ if (nodeTemplate) {
+ this.node.template.namespace = nodeTemplate.namespace;
+ this.node.template.type = nodeTemplate.type;
+ }
+ }
+
+ private loadInterfaces() {
+ if (this.node.template.id) {
+ this.dataService.loadNodeTemplateInterfaces(this.node.template)
+ .subscribe(interfaces => {
+ this.nodeInterfaces = interfaces;
+ });
+ } else {
+ this.nodeInterfaces = [];
+ }
+ }
+
+ private loadOperations() {
+ if (this.node.nodeInterface) {
+ this.nodeOperations = [];
+ this.dataService.loadNodeTemplateOperations(
+ this.node.template,
+ this.node.nodeInterface)
+ .subscribe(operations => this.nodeOperations = operations);
+ } else {
+ this.nodeOperations = [];
+ }
+ }
+
+ private loadParameters() {
+ if (this.node.operation) {
+ this.dataService.loadNodeTemplateOperationParameter(
+ this.node.template,
+ this.node.nodeInterface,
+ this.node.operation)
+ .subscribe(params => {
+ this.node.input = [];
+ this.node.output = [];
+
+ params.input.forEach(param => {
+ const p = new Parameter(param, '', ValueSource[ValueSource.String]);
+ this.node.input.push(p);
+ });
+
+ params.output.forEach(param => {
+ const p = new Parameter(param, '', ValueSource[ValueSource.Definition]);
+ this.node.output.push(p);
+ });
+ });
+ }
+ }
+}