diff --git a/web/app/components/workflow/nodes/variable-assigner/default.ts b/web/app/components/workflow/nodes/variable-assigner/default.ts index 49e497e2c9..60c7c27969 100644 --- a/web/app/components/workflow/nodes/variable-assigner/default.ts +++ b/web/app/components/workflow/nodes/variable-assigner/default.ts @@ -22,16 +22,33 @@ const nodeDefault: NodeDefault = { }, checkValid(payload: VariableAssignerNodeType, t: any) { let errorMessages = '' - const { variables } = payload - if (!variables || variables.length === 0) - errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) }) - if (!errorMessages) { + const { variables, advanced_settings } = payload + const { group_enabled = false, groups = [] } = advanced_settings || {} + // enable group + const validateVariables = (variables: any[], field: string) => { variables.forEach((variable) => { if (!variable || variable.length === 0) - errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.variableValue`) }) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(field) }) }) } + if (group_enabled) { + if (!groups || groups.length === 0) { + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) }) + } + else if (!errorMessages) { + groups.forEach((group) => { + validateVariables(group.variables || [], `${i18nPrefix}.errorMsg.fields.variableValue`) + }) + } + } + else { + if (!variables || variables.length === 0) + errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) }) + else if (!errorMessages) + validateVariables(variables, `${i18nPrefix}.errorMsg.fields.variableValue`) + } + return { isValid: !errorMessages, errorMessage: errorMessages,