aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts')
-rw-r--r--sdc-workflow-designer-ui/src/app/components/property/rest-task/rest-task.component.ts93
1 files changed, 25 insertions, 68 deletions
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
index d0c92dfd..eb1c81bd 100644
--- 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
@@ -9,91 +9,61 @@
* Contributors:
* ZTE - initial API and implementation and/or initial documentation
*******************************************************************************/
-import { AfterViewInit, Component, Input, OnInit } from '@angular/core';
+import { Component, Input, OnInit } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
+import { PlanTreeviewItem } from '../../../model/plan-treeview-item';
import { Swagger, SwaggerMethod, SwaggerParameter, SwaggerResponse } from '../../../model/swagger';
import { ValueSource } from '../../../model/value-source.enum';
import { ValueType } from '../../../model/value-type.enum';
+import { RestParameter } from '../../../model/workflow/rest-parameter';
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";
-import { WorkflowUtil } from "../../../util/workflow-util";
-import { RestParameter } from "../../../model/workflow/rest-parameter";
-import { PlanTreeviewItem } from "../../../model/plan-treeview-item";
+import { RestService } from '../../../services/rest.service';
+import { WorkflowUtil } from '../../../util/workflow-util';
@Component({
selector: 'b4t-rest-task',
templateUrl: 'rest-task.component.html',
})
-export class RestTaskComponent implements AfterViewInit, OnInit {
+export class RestTaskComponent implements OnInit {
@Input() public node: RestTask;
@Input() public planItems: PlanTreeviewItem[];
-
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();
- this.notifyTaskChanged();
- }, 0);
- }
-
- private notifyTaskChanged() {
- this.broadcastService.broadcast(this.broadcastService.nodeTaskChange, this.node);
- }
+ constructor(private broadcastService: BroadcastService, public restService: RestService) { }
- public getText4Microservice(microservice: Microservice): string {
- return `${microservice.name} [${microservice.version}] `;
+ public ngOnInit() {
+ this.loadInterfaces();
}
- public serviceChanged(service: Microservice) {
- this.selectedMicroservice = service;
- this.node.serviceName = service.name;
- this.node.serviceVersion = service.version;
- this.urlChanged('');
+ public serviceChanged(configId: string) {
+ this.node.restConfigId = configId;
+ this.pathChanged('');
this.loadInterfaces();
}
- public urlChanged(url: string) {
- this.node.url = url;
-
+ public pathChanged(path: string) {
+ this.node.path = path;
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();
-
- this.notifyTaskChanged();
}
-
private loadInterfaces() {
- if (this.node.serviceName && this.node.serviceVersion) {
- this.swagger = this.configService.getSwaggerInfo(this.node.serviceName, this.node.serviceVersion);
+ if (this.node.restConfigId) {
+ this.swagger = this.restService.getSwaggerInfo(this.node.restConfigId);
if (this.swagger) {
this.restInterfaces = [];
@@ -101,15 +71,13 @@ export class RestTaskComponent implements AfterViewInit, OnInit {
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];
+ if (this.node.path) {
+ const swaggerPath: any = this.swagger.paths[this.node.path];
this.restOperations = [];
for (const key of Object.keys(swaggerPath)) {
@@ -120,34 +88,23 @@ export class RestTaskComponent implements AfterViewInit, OnInit {
private updateMethodInfo() {
if (this.node.method) {
- const path: any = this.swagger.paths[this.node.url];
+ const path: any = this.swagger.paths[this.node.path];
const method: SwaggerMethod = path[this.node.method];
this.node.consumes = WorkflowUtil.deepClone(method.consumes);
this.node.produces = WorkflowUtil.deepClone(method.produces);
- // request parameters
+ let tempParameters: RestParameter[] = [];
method.parameters.forEach(param => {
const nodeParam = new RestParameter(param.name, '', ValueSource[ValueSource.String],
- param.type, param.position, param.schema);
- this.node.parameters.push(nodeParam);
+ ValueType[ValueType.String], param.position, param.schema, param.required);
+ tempParameters.push(WorkflowUtil.deepClone(nodeParam));
});
+ this.node.parameters = tempParameters;
- // response parameters
- const responseParams = this.getResponseParameters(method.responses);
+ const responseParams = this.restService.getResponseParameters(
+ this.swagger, this.node.path, this.node.method);
this.node.responses = responseParams.map(param => WorkflowUtil.deepClone(param));
}
}
-
- private getResponseParameters(responses: any) {
- let response: SwaggerResponse = null;
-
- for (const key of Object.keys(responses)) {
- if (key.startsWith('20')) {
- response = responses[key];
- }
- }
-
- return [response];
- }
}