diff --git a/web/app/components/workflow/nodes/end/default.ts b/web/app/components/workflow/nodes/end/default.ts index 1dcea4535c..881c16986b 100644 --- a/web/app/components/workflow/nodes/end/default.ts +++ b/web/app/components/workflow/nodes/end/default.ts @@ -13,10 +13,27 @@ const nodeDefault: NodeDefault = { defaultValue: { outputs: [], }, - checkValid() { + checkValid(payload: EndNodeType, t: any) { + const outputs = payload.outputs || [] + + let errorMessage = '' + if (!outputs.length) { + errorMessage = t('workflow.errorMsg.fieldRequired', { field: t('workflow.nodes.end.output.variable') }) + } + else { + const invalidOutput = outputs.find((output) => { + const variableName = output.variable?.trim() + const hasSelector = Array.isArray(output.value_selector) && output.value_selector.length > 0 + return !variableName || !hasSelector + }) + + if (invalidOutput) + errorMessage = t('workflow.errorMsg.fieldRequired', { field: t('workflow.nodes.end.output.variable') }) + } + return { - isValid: true, - errorMessage: '', + isValid: !errorMessage, + errorMessage, } }, } diff --git a/web/app/components/workflow/nodes/end/panel.tsx b/web/app/components/workflow/nodes/end/panel.tsx index 2ad90ff5ac..420280d7c5 100644 --- a/web/app/components/workflow/nodes/end/panel.tsx +++ b/web/app/components/workflow/nodes/end/panel.tsx @@ -30,6 +30,7 @@ const Panel: FC> = ({ : undefined }