mirror of
https://github.com/langgenius/dify.git
synced 2026-04-28 11:56:55 +08:00
feat: parse to right datatype and show parse json error
This commit is contained in:
parent
ff5ab43f9c
commit
b5c212f575
@ -18,12 +18,26 @@ const i18nPrefix = 'workflow.singleRun'
|
|||||||
type BeforeRunFormProps = {
|
type BeforeRunFormProps = {
|
||||||
nodeName: string
|
nodeName: string
|
||||||
onHide: () => void
|
onHide: () => void
|
||||||
onRun: () => void
|
onRun: (submitData: Record<string, any>) => void
|
||||||
onStop: () => void
|
onStop: () => void
|
||||||
runningStatus: NodeRunningStatus
|
runningStatus: NodeRunningStatus
|
||||||
result?: JSX.Element
|
result?: JSX.Element
|
||||||
forms: FormProps[]
|
forms: FormProps[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatValue(value: string | any, type: InputVarType) {
|
||||||
|
if (type === InputVarType.number)
|
||||||
|
return parseFloat(value)
|
||||||
|
if (type === InputVarType.json)
|
||||||
|
return JSON.parse(value)
|
||||||
|
if (type === InputVarType.contexts) {
|
||||||
|
return value.map((item: any) => {
|
||||||
|
return JSON.parse(item)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return value
|
||||||
|
}
|
||||||
const BeforeRunForm: FC<BeforeRunFormProps> = ({
|
const BeforeRunForm: FC<BeforeRunFormProps> = ({
|
||||||
nodeName,
|
nodeName,
|
||||||
onHide,
|
onHide,
|
||||||
@ -55,7 +69,28 @@ const BeforeRunForm: FC<BeforeRunFormProps> = ({
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
onRun()
|
const submitData: Record<string, any> = {}
|
||||||
|
let parseErrorJsonField = ''
|
||||||
|
forms.forEach((form) => {
|
||||||
|
form.inputs.forEach((input) => {
|
||||||
|
try {
|
||||||
|
const value = formatValue(form.values[input.variable], input.type)
|
||||||
|
submitData[input.variable] = value
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
parseErrorJsonField = input.variable
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
if (parseErrorJsonField) {
|
||||||
|
Toast.notify({
|
||||||
|
message: t('workflow.errorMsg.invalidJson', { field: parseErrorJsonField }),
|
||||||
|
type: 'error',
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun(submitData)
|
||||||
}, [forms, onRun, t])
|
}, [forms, onRun, t])
|
||||||
return (
|
return (
|
||||||
<div className='absolute inset-0 z-10 rounded-2xl pt-10' style={{
|
<div className='absolute inset-0 z-10 rounded-2xl pt-10' style={{
|
||||||
|
|||||||
@ -126,15 +126,9 @@ const useOneStepRun = <T>({
|
|||||||
}
|
}
|
||||||
const runningStatus = data._singleRunningStatus || NodeRunningStatus.NotStart
|
const runningStatus = data._singleRunningStatus || NodeRunningStatus.NotStart
|
||||||
const isCompleted = runningStatus === NodeRunningStatus.Succeeded || runningStatus === NodeRunningStatus.Failed
|
const isCompleted = runningStatus === NodeRunningStatus.Succeeded || runningStatus === NodeRunningStatus.Failed
|
||||||
const handleRun = async () => {
|
|
||||||
// const { isValid, errorMessage } = beforeRunCheckValid()
|
const handleRun = async (submitData: Record<string, any>) => {
|
||||||
// if (!isValid) {
|
console.log(submitData)
|
||||||
// Toast.notify({
|
|
||||||
// type: 'error',
|
|
||||||
// message: errorMessage!,
|
|
||||||
// })
|
|
||||||
// return false
|
|
||||||
// }
|
|
||||||
handleNodeDataUpdate({
|
handleNodeDataUpdate({
|
||||||
id,
|
id,
|
||||||
data: {
|
data: {
|
||||||
@ -144,7 +138,7 @@ const useOneStepRun = <T>({
|
|||||||
})
|
})
|
||||||
let res: any
|
let res: any
|
||||||
try {
|
try {
|
||||||
res = await singleNodeRun(appId!, id, { inputs: runInputData }) as any
|
res = await singleNodeRun(appId!, id, { inputs: submitData }) as any
|
||||||
if (res.error)
|
if (res.error)
|
||||||
throw new Error(res.error)
|
throw new Error(res.error)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,7 @@ const translation = {
|
|||||||
},
|
},
|
||||||
errorMsg: {
|
errorMsg: {
|
||||||
fieldRequired: '{{field}} is required',
|
fieldRequired: '{{field}} is required',
|
||||||
|
invalidJson: '{{field}} is invalid JSON',
|
||||||
fields: {
|
fields: {
|
||||||
variable: 'Variable Name',
|
variable: 'Variable Name',
|
||||||
variableValue: 'Variable Value',
|
variableValue: 'Variable Value',
|
||||||
|
|||||||
@ -29,6 +29,7 @@ const translation = {
|
|||||||
},
|
},
|
||||||
errorMsg: {
|
errorMsg: {
|
||||||
fieldRequired: '{{field}} 不能为空',
|
fieldRequired: '{{field}} 不能为空',
|
||||||
|
invalidJson: '{{field}} 是非法的 JSON',
|
||||||
fields: {
|
fields: {
|
||||||
variable: '变量名',
|
variable: '变量名',
|
||||||
variableValue: '变量值',
|
variableValue: '变量值',
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user