feat: assingner support single run

pull/21369/head
Joel 12 months ago
parent 9271774e67
commit 3ea24fc3c1

@ -18,6 +18,8 @@ import useDocExtractorSingleRunFormParams from '@/app/components/workflow/nodes/
import useLoopSingleRunFormParams from '@/app/components/workflow/nodes/loop/use-single-run-form-params'
import useIfElseSingleRunFormParams from '@/app/components/workflow/nodes/if-else/use-single-run-form-params'
import useVariableAggregatorSingleRunFormParams from '@/app/components/workflow/nodes/variable-assigner/use-single-run-form-params'
import useVariableAssignerSingleRunFormParams from '@/app/components/workflow/nodes/assigner/use-single-run-form-params'
import useToolGetDataForCheckMore from '@/app/components/workflow/nodes/tool/use-get-data-for-check-more'
import { VALUE_SELECTOR_DELIMITER as DELIMITER } from '@/config'
@ -45,12 +47,12 @@ const singleRunFormParamsHooks: Record<BlockEnum, any> = {
[BlockEnum.Start]: useStartSingleRunFormParams,
[BlockEnum.IfElse]: useIfElseSingleRunFormParams,
[BlockEnum.VariableAggregator]: useVariableAggregatorSingleRunFormParams,
[BlockEnum.Assigner]: useVariableAssignerSingleRunFormParams,
[BlockEnum.VariableAssigner]: undefined,
[BlockEnum.End]: undefined,
[BlockEnum.Answer]: undefined,
[BlockEnum.VariableAssigner]: undefined,
[BlockEnum.ListFilter]: undefined,
[BlockEnum.IterationStart]: undefined,
[BlockEnum.Assigner]: undefined,
[BlockEnum.LoopStart]: undefined,
[BlockEnum.LoopEnd]: undefined,
}

@ -30,3 +30,5 @@ export type AssignerNodeType = CommonNodeType & {
version?: '1' | '2'
items: AssignerNodeOperation[]
}
export const writeModeTypesNum = [WriteMode.increment, WriteMode.decrement, WriteMode.multiply, WriteMode.divide]

@ -5,6 +5,7 @@ import { VarType } from '../../types'
import type { ValueSelector, Var } from '../../types'
import { WriteMode } from './types'
import type { AssignerNodeOperation, AssignerNodeType } from './types'
import { writeModeTypesNum } from './types'
import { useGetAvailableVars } from './hooks'
import { convertV1ToV2 } from './utils'
import useNodeCrud from '@/app/components/workflow/nodes/_base/hooks/use-node-crud'
@ -71,7 +72,6 @@ const useConfig = (id: string, rawPayload: AssignerNodeType) => {
const writeModeTypesArr = [WriteMode.overwrite, WriteMode.clear, WriteMode.append, WriteMode.extend, WriteMode.removeFirst, WriteMode.removeLast]
const writeModeTypes = [WriteMode.overwrite, WriteMode.clear, WriteMode.set]
const writeModeTypesNum = [WriteMode.increment, WriteMode.decrement, WriteMode.multiply, WriteMode.divide]
const getToAssignedVarType = useCallback((assignedVarType: VarType, write_mode: WriteMode) => {
if (write_mode === WriteMode.overwrite || write_mode === WriteMode.increment || write_mode === WriteMode.decrement

@ -0,0 +1,56 @@
import type { MutableRefObject } from 'react'
import type { InputVar, ValueSelector, Variable } from '@/app/components/workflow/types'
import { useMemo } from 'react'
import useNodeCrud from '../_base/hooks/use-node-crud'
import { type AssignerNodeType, WriteMode } from './types'
import { writeModeTypesNum } from './types'
type Params = {
id: string,
payload: AssignerNodeType,
runInputData: Record<string, any>
runInputDataRef: MutableRefObject<Record<string, any>>
getInputVars: (textList: string[]) => InputVar[]
setRunInputData: (data: Record<string, any>) => void
toVarInputs: (variables: Variable[]) => InputVar[]
varSelectorsToVarInputs: (variables: ValueSelector[]) => InputVar[]
}
const useSingleRunFormParams = ({
id,
payload,
runInputData,
setRunInputData,
varSelectorsToVarInputs,
}: Params) => {
const { inputs } = useNodeCrud<AssignerNodeType>(id, payload)
const vars = inputs.items.filter((item) => {
return item.operation !== WriteMode.clear && item.operation !== WriteMode.set
&& item.operation !== WriteMode.removeFirst && item.operation !== WriteMode.removeLast
&& !writeModeTypesNum.includes(item.operation)
}).map(item => item.value as ValueSelector)
console.log(vars)
const forms = useMemo(() => {
const varInputs = varSelectorsToVarInputs(vars)
return [
{
inputs: varInputs,
values: runInputData,
onChange: setRunInputData,
},
]
}, [runInputData, setRunInputData, varSelectorsToVarInputs, vars])
const getDependentVars = () => {
return vars
}
return {
forms,
getDependentVars,
}
}
export default useSingleRunFormParams

@ -35,6 +35,7 @@ export const canRunBySingle = (nodeType: BlockEnum) => {
|| nodeType === BlockEnum.Start
|| nodeType === BlockEnum.IfElse
|| nodeType === BlockEnum.VariableAggregator
|| nodeType === BlockEnum.Assigner
}
type ConnectedSourceOrTargetNodesChange = {

Loading…
Cancel
Save