From bbd85733b8b24a9abc00aa2ace9745ba10f21da3 Mon Sep 17 00:00:00 2001 From: zhaoying Date: Fri, 17 Apr 2026 20:41:23 +0800 Subject: [PATCH] fix(web): if-else port position --- .../Workflow/components/Nodes/ConditionNode.tsx | 2 +- web/src/views/Workflow/utils.ts | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/web/src/views/Workflow/components/Nodes/ConditionNode.tsx b/web/src/views/Workflow/components/Nodes/ConditionNode.tsx index 5e62775d..9cd1309e 100644 --- a/web/src/views/Workflow/components/Nodes/ConditionNode.tsx +++ b/web/src/views/Workflow/components/Nodes/ConditionNode.tsx @@ -109,7 +109,7 @@ const ConditionNode: ReactShapeConfig['component'] = ({ node }) => { } {expression.sub_variable_condition?.conditions?.length > 0 && expression.sub_variable_condition?.conditions.every(isSubExprSet) - ?
+ ?
{expression.sub_variable_condition?.conditions.map((sub: any, sIndex: number) => (
{expression.sub_variable_condition?.conditions.length > 1 && sIndex > 0 &&
{expression.sub_variable_condition?.logical_operator?.toLocaleUpperCase()}
} diff --git a/web/src/views/Workflow/utils.ts b/web/src/views/Workflow/utils.ts index 429be70d..bd81b6eb 100644 --- a/web/src/views/Workflow/utils.ts +++ b/web/src/views/Workflow/utils.ts @@ -2,7 +2,7 @@ * @Author: ZhaoYing * @Date: 2026-03-24 15:07:49 * @Last Modified by: ZhaoYing - * @Last Modified time: 2026-04-17 19:13:22 + * @Last Modified time: 2026-04-17 20:40:47 */ import { portItemArgsY, conditionNodePortItemArgsY, conditionNodeHeight } from './constant' @@ -91,6 +91,7 @@ export const getConditionNodeCasePortY = (cases: any[], caseIndex: number) => { let portItemArgsYNum = 0; for (let i = 0; i < caseIndex; i++) { + const notHasSub = cases[i]?.expressions?.filter((e: any) => !e?.sub_variable_condition?.conditions || e?.sub_variable_condition?.conditions.length <1).length const n = cases[i]?.expressions?.length || 0; let casePortItemArgsYNum = n + 1; // Add extra y for expressions with all sub_variable_condition set @@ -110,11 +111,16 @@ export const getConditionNodeCasePortY = (cases: any[], caseIndex: number) => { cases[i]?.expressions?.forEach((e: any) => { const subs = e?.sub_variable_condition?.conditions; if (subs?.length && subs.every(isSubExprSet) && subs.length > 1) { - extraExprs += subs.length; - } else if (!subs && n > 2) { - extraExprs += n - 2; - } + extraExprs += subs.length + 2; + } }); + + console.log('extraExprs notHasSub', notHasSub) + if (notHasSub > 3) { + extraExprs += n - 2 + notHasSub/4; + } else { + extraExprs += n - 2 + notHasSub/4 + } } }