diff --git a/frontends/dnet-is-application/src/app/common/is.model.ts b/frontends/dnet-is-application/src/app/common/is.model.ts index 555e8514..76df1892 100644 --- a/frontends/dnet-is-application/src/app/common/is.model.ts +++ b/frontends/dnet-is-application/src/app/common/is.model.ts @@ -232,6 +232,14 @@ export interface WfConf { userParams: Map } +export interface WfParam { + name: string, + description?: string, + type?: string, + defaultValue?: any, + required: boolean +} + export interface WfSubscription { // TODO } diff --git a/frontends/dnet-is-application/src/app/wf-confs/wf-conf-dialog.html b/frontends/dnet-is-application/src/app/wf-confs/wf-conf-dialog.html index 82d94f7e..c74b0286 100644 --- a/frontends/dnet-is-application/src/app/wf-confs/wf-conf-dialog.html +++ b/frontends/dnet-is-application/src/app/wf-confs/wf-conf-dialog.html @@ -8,7 +8,9 @@ Choose Workflow Workflow - + + {{i.name}} ({{i.subtype}}) + This field is required @@ -44,7 +46,16 @@
- + + {{p.name}} + + + + true + false + + Invalid value +
diff --git a/frontends/dnet-is-application/src/app/wf-confs/wf-confs.component.ts b/frontends/dnet-is-application/src/app/wf-confs/wf-confs.component.ts index d3042423..47f30c39 100644 --- a/frontends/dnet-is-application/src/app/wf-confs/wf-confs.component.ts +++ b/frontends/dnet-is-application/src/app/wf-confs/wf-confs.component.ts @@ -1,8 +1,10 @@ +import { JsonPipe } from '@angular/common'; import { Component, Inject, OnInit, SecurityContext } from '@angular/core'; -import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms'; import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSelectChange } from '@angular/material/select'; import { ActivatedRoute, Router } from '@angular/router'; -import { KeyValue, WfConf, WfSection } from '../common/is.model'; +import { KeyValue, SimpleResource, WfConf, WfParam, WfSection } from '../common/is.model'; import { ISService } from '../common/is.service'; import { ResMetadataDialog } from '../resources/resources.component'; @@ -78,13 +80,16 @@ export class WfConfsComponent implements OnInit { templateUrl: 'wf-conf-dialog.html', styleUrls: ['./wf-confs.component.css'] }) -export class WfConfDialog { + +export class WfConfDialog implements OnInit { + + wfTemplates: SimpleResource[] = []; + wfParameters: WfParam[] = []; wfConfFormStep1 = new FormGroup({ workflow: new FormControl('', [Validators.required]), }); - wfConfFormStep2 = new FormGroup({ name: new FormControl('', [Validators.required]), //details: Map, @@ -120,6 +125,32 @@ export class WfConfDialog { this.wfConfFormStep4.get('cronExpression')?.setValue(data.cronExpression); this.wfConfFormStep4.get('cronMinInterval')?.setValue(data.cronMinInterval); } + ngOnInit(): void { + this.service.loadSimpleResources("wf_template", (data: SimpleResource[]) => this.wfTemplates = data); + } + + onChangeWfTemplate(e: MatSelectChange): void { + this.service.loadSimpleResourceContent(e.value, (data: any) => { + console.log(data); + if (data.parameters) { + this.wfParameters = data.parameters; + } else { + this.wfParameters = JSON.parse(data).parameters; + } + + + console.log(this.wfParameters); + + this.wfConfFormStep3.controls = {}; + + this.wfParameters.forEach(p => { + let validations: ValidatorFn[] = []; + if (p.required) { validations.push(Validators.required); } + if (p.type == 'number') { validations.push(Validators.pattern('^[0-9]*$')); } + this.wfConfFormStep3.addControl(p.name, new FormControl('', validations)); + }) + }); + } onSubmit(): void { const conf = Object.assign({}, this.data, this.wfConfFormStep1.value, this.wfConfFormStep2.value, this.wfConfFormStep3.value, this.wfConfFormStep4.value);