From 5614700b7bd466aeae8a175ca586a1ff47981430 Mon Sep 17 00:00:00 2001 From: Basanth Jenu H B Date: Mon, 7 Dec 2020 22:54:32 +0530 Subject: [PATCH] feat(ui): Add parameter value enum support to the UI. Fixes #4192 (#4365) Signed-off-by: basanthjenuhb --- .../components/submit-workflow-panel.tsx | 63 +++++++++++++------ ui/src/models/workflows.ts | 4 ++ 2 files changed, 49 insertions(+), 18 deletions(-) diff --git a/ui/src/app/workflows/components/submit-workflow-panel.tsx b/ui/src/app/workflows/components/submit-workflow-panel.tsx index fe0f100c7e7e..8e84c0d32e1a 100644 --- a/ui/src/app/workflows/components/submit-workflow-panel.tsx +++ b/ui/src/app/workflows/components/submit-workflow-panel.tsx @@ -57,24 +57,11 @@ export class SubmitWorkflowPanel extends React.Component { {this.state.parameters.length > 0 ? ( <> - {this.state.parameters.map(parameter => ( -

- -

+ {this.state.parameters.map((parameter, index) => ( +
+ + {(parameter.enum && this.displaySelectFieldForEnumValues(parameter)) || this.displayInputFieldForSingleValue(parameter)} +
))} ) : ( @@ -98,6 +85,46 @@ export class SubmitWorkflowPanel extends React.Component { ); } + private displaySelectFieldForEnumValues(parameter: Parameter) { + return ( + { + this.setState({ + parameters: this.state.parameters.map(p => ({ + name: p.name, + value: p.name === parameter.name ? event.target.value : p.value, + enum: p.enum + })) + }); + }} + /> + ); + } + private submit() { services.workflows .submit(this.props.kind, this.props.name, this.props.namespace, { diff --git a/ui/src/models/workflows.ts b/ui/src/models/workflows.ts index b9432293080b..77f5a2f0ade2 100644 --- a/ui/src/models/workflows.ts +++ b/ui/src/models/workflows.ts @@ -100,6 +100,10 @@ export interface Parameter { * ValueFrom is the source for the output parameter's value */ valueFrom?: ValueFrom; + /** + * Enum holds a list of string values to choose from, for the actual value of the parameter + */ + enum?: Array; } /**