diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts index be1fd19308..366e59077b 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts @@ -170,11 +170,12 @@ const useLastRun = ({ const valuesArr = forms.map((form) => { const values: Record = {} - form.inputs.forEach(({ variable }) => { - if(!variable.includes('.') && !singleRunParams?.getDependentVar) + form.inputs.forEach(({ variable, getVarValueFromDependent }) => { + const isGetValueFromDependent = getVarValueFromDependent || !variable.includes('.') + if(isGetValueFromDependent && !singleRunParams?.getDependentVar) return - const selector = !variable.includes('.') ? (singleRunParams?.getDependentVar(variable) || []) : variable.slice(1, -1).split('.') + const selector = isGetValueFromDependent ? (singleRunParams?.getDependentVar(variable) || []) : variable.slice(1, -1).split('.') if(!selector || selector.length === 0) return const [nodeId, varName] = selector.slice(0, 2) diff --git a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts index 2dfe834b5b..fb4229b92d 100644 --- a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts +++ b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts @@ -154,8 +154,8 @@ const useOneStepRun = ({ runInputDataRef.current = data setRunInputData(data) }, []) - const iterationTimes = iteratorInputKey ? runInputData[iteratorInputKey].length : 0 - const loopTimes = loopInputKey ? runInputData[loopInputKey].length : 0 + const iterationTimes = iteratorInputKey ? runInputData[iteratorInputKey]?.length : 0 + const loopTimes = loopInputKey ? runInputData[loopInputKey]?.length : 0 const store = useStoreApi() const workflowStore = useWorkflowStore() diff --git a/web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts b/web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts index 4381b9884d..ff686921c4 100644 --- a/web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts +++ b/web/app/components/workflow/nodes/iteration/use-single-run-form-params.ts @@ -24,6 +24,7 @@ type Params = { } const useSingleRunFormParams = ({ id, + payload, runInputData, toVarInputs, setRunInputData, @@ -121,6 +122,7 @@ const useSingleRunFormParams = ({ variable: iteratorInputKey, type: InputVarType.iterator, required: false, + getVarValueFromDependent: true, }], values: { [iteratorInputKey]: iterator }, onChange: (keyValue: Record) => setIterator(keyValue[iteratorInputKey]), @@ -129,9 +131,20 @@ const useSingleRunFormParams = ({ }, [inputVarValues, iterator, iteratorInputKey, setInputVarValues, setIterator, t, usedOutVars]) const nodeInfo = formatTracing(iterationRunResult, t)[0] + + const getDependentVars = () => { + return [payload.iterator_selector] + } + const getDependentVar = (variable: string) => { + if(variable === iteratorInputKey) + return payload.iterator_selector + } + return { forms, nodeInfo, + getDependentVars, + getDependentVar, } } diff --git a/web/app/components/workflow/types.ts b/web/app/components/workflow/types.ts index 8fe41ae89f..72b01c63cb 100644 --- a/web/app/components/workflow/types.ts +++ b/web/app/components/workflow/types.ts @@ -197,6 +197,7 @@ export type InputVar = { hint?: string options?: string[] value_selector?: ValueSelector + getVarValueFromDependent?: boolean } & Partial export type ModelConfig = {