feat: iteration single run

pull/21369/head
Joel 1 year ago
parent a1495554cc
commit 2ec1c34147

@ -170,11 +170,12 @@ const useLastRun = <T>({
const valuesArr = forms.map((form) => { const valuesArr = forms.map((form) => {
const values: Record<string, boolean> = {} const values: Record<string, boolean> = {}
form.inputs.forEach(({ variable }) => { form.inputs.forEach(({ variable, getVarValueFromDependent }) => {
if(!variable.includes('.') && !singleRunParams?.getDependentVar) const isGetValueFromDependent = getVarValueFromDependent || !variable.includes('.')
if(isGetValueFromDependent && !singleRunParams?.getDependentVar)
return 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) if(!selector || selector.length === 0)
return return
const [nodeId, varName] = selector.slice(0, 2) const [nodeId, varName] = selector.slice(0, 2)

@ -154,8 +154,8 @@ const useOneStepRun = <T>({
runInputDataRef.current = data runInputDataRef.current = data
setRunInputData(data) setRunInputData(data)
}, []) }, [])
const iterationTimes = iteratorInputKey ? runInputData[iteratorInputKey].length : 0 const iterationTimes = iteratorInputKey ? runInputData[iteratorInputKey]?.length : 0
const loopTimes = loopInputKey ? runInputData[loopInputKey].length : 0 const loopTimes = loopInputKey ? runInputData[loopInputKey]?.length : 0
const store = useStoreApi() const store = useStoreApi()
const workflowStore = useWorkflowStore() const workflowStore = useWorkflowStore()

@ -24,6 +24,7 @@ type Params = {
} }
const useSingleRunFormParams = ({ const useSingleRunFormParams = ({
id, id,
payload,
runInputData, runInputData,
toVarInputs, toVarInputs,
setRunInputData, setRunInputData,
@ -121,6 +122,7 @@ const useSingleRunFormParams = ({
variable: iteratorInputKey, variable: iteratorInputKey,
type: InputVarType.iterator, type: InputVarType.iterator,
required: false, required: false,
getVarValueFromDependent: true,
}], }],
values: { [iteratorInputKey]: iterator }, values: { [iteratorInputKey]: iterator },
onChange: (keyValue: Record<string, any>) => setIterator(keyValue[iteratorInputKey]), onChange: (keyValue: Record<string, any>) => setIterator(keyValue[iteratorInputKey]),
@ -129,9 +131,20 @@ const useSingleRunFormParams = ({
}, [inputVarValues, iterator, iteratorInputKey, setInputVarValues, setIterator, t, usedOutVars]) }, [inputVarValues, iterator, iteratorInputKey, setInputVarValues, setIterator, t, usedOutVars])
const nodeInfo = formatTracing(iterationRunResult, t)[0] const nodeInfo = formatTracing(iterationRunResult, t)[0]
const getDependentVars = () => {
return [payload.iterator_selector]
}
const getDependentVar = (variable: string) => {
if(variable === iteratorInputKey)
return payload.iterator_selector
}
return { return {
forms, forms,
nodeInfo, nodeInfo,
getDependentVars,
getDependentVar,
} }
} }

@ -197,6 +197,7 @@ export type InputVar = {
hint?: string hint?: string
options?: string[] options?: string[]
value_selector?: ValueSelector value_selector?: ValueSelector
getVarValueFromDependent?: boolean
} & Partial<UploadFileSetting> } & Partial<UploadFileSetting>
export type ModelConfig = { export type ModelConfig = {

Loading…
Cancel
Save