summaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/app/components
diff options
context:
space:
mode:
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/components')
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/properties.component.html1
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html44
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts113
3 files changed, 158 insertions, 0 deletions
diff --git a/sdc-workflow-designer-ui/src/app/components/property/properties.component.html b/sdc-workflow-designer-ui/src/app/components/property/properties.component.html
index d7a8500d..2ca5c690 100644
--- a/sdc-workflow-designer-ui/src/app/components/property/properties.component.html
+++ b/sdc-workflow-designer-ui/src/app/components/property/properties.component.html
@@ -40,4 +40,5 @@
<!-- TODO add property for different node types -->
<b4t-start-event-parameters *ngIf="'startEvent' == node.type" [node]="node"></b4t-start-event-parameters>
+ <b4t-rest-task *ngIf="node.type == 'restTask'" [node]="node"></b4t-rest-task>
</div>
diff --git a/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html b/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html
new file mode 100644
index 00000000..75422581
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.html
@@ -0,0 +1,44 @@
+<!--
+/*******************************************************************************
+ * 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">Service</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="selectedMicroservice"
+ (ngModelChange)="serviceChanged($event)">
+ <option *ngFor="let microservice of microservices" [ngValue]=microservice>{{getText4Microservice(microservice)}}</option>
+ </select>
+ </div>
+</div>
+
+<div class="form-group row">
+ <label class="col-md-3 form-control-label text-md-right">Path</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="node.url"
+ (ngModelChange)="urlChanged($event)">
+ <option *ngFor="let interface of restInterfaces" value="{{interface}}">{{interface}}</option>
+ </select>
+ </div>
+</div>
+
+<div class="form-group row">
+ <label class="col-md-3 form-control-label text-md-right">Method</label>
+ <div class="col-md-9">
+ <select class="form-control" [ngModel]="node.method"
+ (ngModelChange)="methodChanged($event)">
+ <option *ngFor="let operation of restOperations" value="{{operation}}">{{operation}}</option>
+ </select>
+ </div>
+</div>
+<hr>
diff --git a/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts b/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts
new file mode 100644
index 00000000..654d19b9
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * 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, OnInit } from '@angular/core';
+import { Subscription } from 'rxjs/Subscription';
+
+import { Swagger, SwaggerMethod, SwaggerParameter, SwaggerResponse } from '../../../model/swagger';
+import { ValueSource } from '../../../model/value-source.enum';
+import { ValueType } from '../../../model/value-type.enum';
+import { RestTask } from '../../../model/workflow/rest-task';
+import { BroadcastService } from '../../../services/broadcast.service';
+import { WorkflowConfigService } from '../../../services/workflow-config.service';
+import { Microservice } from "../../../model/workflow/microservice";
+
+@Component({
+ selector: 'b4t-rest-task',
+ templateUrl: 'rest-task.component.html',
+})
+export class RestTaskComponent implements AfterViewInit, OnInit {
+ @Input() public node: RestTask;
+ public swaggerJson: any = {};
+ public restInterfaces: any[];
+ public restOperations: any = [];
+ public microservices: Microservice[];
+ public selectedMicroservice: Microservice;
+ private swagger: Swagger;
+
+ constructor(private broadcastService: BroadcastService,
+ private configService: WorkflowConfigService) { }
+
+ ngOnInit(): void {
+ this.microservices = this.configService.getMicroservices();
+ this.selectedMicroservice = this.microservices.find(service =>
+ (this.node.serviceName === service.name && this.node.serviceVersion === service.version));
+ }
+ public ngAfterViewInit() {
+ setTimeout(() => {
+ this.loadInterfaces();
+ }, 0);
+ }
+
+ public getText4Microservice(microservice: Microservice): string {
+ return `${microservice.name} [${microservice.version}] `;
+ }
+
+ public serviceChanged(service: Microservice) {
+ this.selectedMicroservice = service;
+ this.node.serviceName = service.name;
+ this.node.serviceVersion = service.version;
+ this.urlChanged('');
+ this.loadInterfaces();
+ }
+
+ public urlChanged(url: string) {
+ this.node.url = url;
+
+ this.node.consumes = [];
+ this.node.produces = [];
+ this.methodChanged('');
+
+ this.loadOperations();
+ }
+
+ public methodChanged(method: string) {
+ this.node.method = method;
+
+ this.node.parameters = [];
+ this.node.responses = [];
+
+ this.updateMethodInfo();
+ }
+
+
+ private loadInterfaces() {
+ if (this.node.serviceName && this.node.serviceVersion) {
+ this.swagger = this.configService.getSwaggerInfo(this.node.serviceName, this.node.serviceVersion);
+
+ if (this.swagger) {
+ this.restInterfaces = [];
+ for (const key of Object.keys(this.swagger.paths)) {
+ this.restInterfaces.push(key);
+ }
+ this.loadOperations();
+ } else {
+ // TODO error handler
+ }
+ }
+ }
+
+ private loadOperations() {
+ if (this.node.url) {
+ const swaggerPath: any = this.swagger.paths[this.node.url];
+
+ this.restOperations = [];
+ for (const key of Object.keys(swaggerPath)) {
+ this.restOperations.push(key);
+ }
+ }
+ }
+
+ private updateMethodInfo() {
+ // TODO update parameters
+ console.log('rest task updated');
+ }
+}