feat: handle limit tool var type

This commit is contained in:
Joel 2024-03-25 15:00:36 +08:00
parent 2ebd8d9fdc
commit acd0e22b9e
4 changed files with 22 additions and 4 deletions

View File

@ -18,6 +18,7 @@ export const toolParametersToFormSchemas = (parameters: ToolParameter[]) => {
...parameter,
variable: parameter.name,
type: toType(parameter.type),
_type: parameter.type,
show_on: [],
options: parameter.options?.map((option) => {
return {

View File

@ -16,6 +16,7 @@ type Props = {
schema: CredentialFormSchema[]
value: ToolVarInput[]
onChange: (value: ToolVarInput[]) => void
onOpen?: (index: number) => void
isSupportConstantValue?: boolean
filterVar?: (payload: Var, valueSelector: ValueSelector) => boolean
}
@ -26,6 +27,7 @@ const InputVarList: FC<Props> = ({
schema,
value,
onChange,
onOpen = () => { },
isSupportConstantValue,
filterVar,
}) => {
@ -67,6 +69,9 @@ const InputVarList: FC<Props> = ({
}
}, [value, onChange, isSupportConstantValue])
const handleOpen = useCallback((index: number) => {
return () => onOpen(index)
}, [onOpen])
return (
<div className='space-y-3'>
{
@ -76,7 +81,7 @@ const InputVarList: FC<Props> = ({
type,
required,
tooltip,
}) => {
}, index) => {
const varInput = keyValues[variable]
return (
<div key={variable} className='space-y-1'>
@ -91,6 +96,7 @@ const InputVarList: FC<Props> = ({
nodeId={nodeId}
value={varInput?.variable_type === VarKindType.static ? (varInput?.value || '') : (varInput?.value_selector || [])}
onChange={handleChange(variable)}
onOpen={handleOpen(index)}
isSupportConstantValue={isSupportConstantValue}
defaultVarKindType={varInput?.variable_type}
filterVar={filterVar}

View File

@ -28,6 +28,7 @@ const Panel: FC<NodePanelProps<ToolNodeType>> = ({
inputs,
toolInputVarSchema,
setInputVar,
handleOnVarOpen,
filterVar,
toolSettingSchema,
toolSettingValue,
@ -83,6 +84,7 @@ const Panel: FC<NodePanelProps<ToolNodeType>> = ({
onChange={setInputVar}
filterVar={filterVar}
isSupportConstantValue
onOpen={handleOnVarOpen}
/>
</Field>
)}

View File

@ -101,11 +101,19 @@ const useConfig = (id: string, payload: ToolNodeType) => {
})
}, [inputs, setInputs])
// TODO: dynamic setting as the current var type
const filterVar = useCallback((varPayload: Var) => {
return varPayload.type !== VarVarType.arrayFile
const [currVarIndex, setCurrVarIndex] = useState(-1)
const currVarType = toolInputVarSchema[currVarIndex]?._type
const handleOnVarOpen = useCallback((index: number) => {
setCurrVarIndex(index)
}, [])
const filterVar = useCallback((varPayload: Var) => {
if (currVarType)
return varPayload.type === currVarType
return varPayload.type !== VarVarType.arrayFile
}, [currVarType])
const isLoading = currTool && (isBuiltIn ? !currCollection : false)
// single run
@ -170,6 +178,7 @@ const useConfig = (id: string, payload: ToolNodeType) => {
setToolSettingValue,
toolInputVarSchema,
setInputVar,
handleOnVarOpen,
filterVar,
currCollection,
isShowAuthBtn,