Selaa lähdekoodia

fix: text-generation webapp file form (#10578)

tags/0.11.2
zxhlyh 11 kuukautta sitten
vanhempi
commit
b77628c458
No account linked to committer's email address

+ 2
- 0
web/app/components/share/text-generation/index.tsx Näytä tiedosto

const [isCallBatchAPI, setIsCallBatchAPI] = useState(false) const [isCallBatchAPI, setIsCallBatchAPI] = useState(false)
const isInBatchTab = currentTab === 'batch' const isInBatchTab = currentTab === 'batch'
const [inputs, setInputs] = useState<Record<string, any>>({}) const [inputs, setInputs] = useState<Record<string, any>>({})
const inputsRef = useRef(inputs)
const [appId, setAppId] = useState<string>('') const [appId, setAppId] = useState<string>('')
const [siteInfo, setSiteInfo] = useState<SiteInfo | null>(null) const [siteInfo, setSiteInfo] = useState<SiteInfo | null>(null)
const [canReplaceLogo, setCanReplaceLogo] = useState<boolean>(false) const [canReplaceLogo, setCanReplaceLogo] = useState<boolean>(false)
<RunOnce <RunOnce
siteInfo={siteInfo} siteInfo={siteInfo}
inputs={inputs} inputs={inputs}
inputsRef={inputsRef}
onInputsChange={setInputs} onInputsChange={setInputs}
promptConfig={promptConfig} promptConfig={promptConfig}
onSend={handleSend} onSend={handleSend}

+ 14
- 7
web/app/components/share/text-generation/run-once/index.tsx Näytä tiedosto

import type { FC, FormEvent } from 'react' import type { FC, FormEvent } from 'react'
import React from 'react'
import React, { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { import {
PlayIcon, PlayIcon,
siteInfo: SiteInfo siteInfo: SiteInfo
promptConfig: PromptConfig promptConfig: PromptConfig
inputs: Record<string, any> inputs: Record<string, any>
inputsRef: React.MutableRefObject<Record<string, any>>
onInputsChange: (inputs: Record<string, any>) => void onInputsChange: (inputs: Record<string, any>) => void
onSend: () => void onSend: () => void
visionConfig: VisionSettings visionConfig: VisionSettings
const RunOnce: FC<IRunOnceProps> = ({ const RunOnce: FC<IRunOnceProps> = ({
promptConfig, promptConfig,
inputs, inputs,
inputsRef,
onInputsChange, onInputsChange,
onSend, onSend,
visionConfig, visionConfig,
onSend() onSend()
} }


const handleInputsChange = useCallback((newInputs: Record<string, any>) => {
onInputsChange(newInputs)
inputsRef.current = newInputs
}, [onInputsChange, inputsRef])

return ( return (
<div className=""> <div className="">
<section> <section>
<Select <Select
className='w-full' className='w-full'
defaultValue={inputs[item.key]} defaultValue={inputs[item.key]}
onSelect={(i) => { onInputsChange({ ...inputs, [item.key]: i.value }) }}
onSelect={(i) => { handleInputsChange({ ...inputsRef.current, [item.key]: i.value }) }}
items={(item.options || []).map(i => ({ name: i, value: i }))} items={(item.options || []).map(i => ({ name: i, value: i }))}
allowSearch={false} allowSearch={false}
bgClassName='bg-gray-50' bgClassName='bg-gray-50'
className="block w-full p-2 text-gray-900 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 " className="block w-full p-2 text-gray-900 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 "
placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`} placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`}
value={inputs[item.key]} value={inputs[item.key]}
onChange={(e) => { onInputsChange({ ...inputs, [item.key]: e.target.value }) }}
onChange={(e) => { handleInputsChange({ ...inputsRef.current, [item.key]: e.target.value }) }}
maxLength={item.max_length || DEFAULT_VALUE_MAX_LEN} maxLength={item.max_length || DEFAULT_VALUE_MAX_LEN}
/> />
)} )}
className='h-[104px] sm:text-xs' className='h-[104px] sm:text-xs'
placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`} placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`}
value={inputs[item.key]} value={inputs[item.key]}
onChange={(e) => { onInputsChange({ ...inputs, [item.key]: e.target.value }) }}
onChange={(e) => { handleInputsChange({ ...inputsRef.current, [item.key]: e.target.value }) }}
/> />
)} )}
{item.type === 'number' && ( {item.type === 'number' && (
className="block w-full p-2 text-gray-900 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 " className="block w-full p-2 text-gray-900 border border-gray-300 rounded-lg bg-gray-50 sm:text-xs focus:ring-blue-500 focus:border-blue-500 "
placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`} placeholder={`${item.name}${!item.required ? `(${t('appDebug.variableTable.optional')})` : ''}`}
value={inputs[item.key]} value={inputs[item.key]}
onChange={(e) => { onInputsChange({ ...inputs, [item.key]: e.target.value }) }}
onChange={(e) => { handleInputsChange({ ...inputsRef.current, [item.key]: e.target.value }) }}
/> />
)} )}
{item.type === 'file' && ( {item.type === 'file' && (
<FileUploaderInAttachmentWrapper <FileUploaderInAttachmentWrapper
onChange={(files) => { onInputsChange({ ...inputs, [item.key]: getProcessedFiles(files)[0] }) }}
onChange={(files) => { handleInputsChange({ ...inputsRef.current, [item.key]: getProcessedFiles(files)[0] }) }}
fileConfig={{ fileConfig={{
...item.config, ...item.config,
fileUploadConfig: (visionConfig as any).fileUploadConfig, fileUploadConfig: (visionConfig as any).fileUploadConfig,
)} )}
{item.type === 'file-list' && ( {item.type === 'file-list' && (
<FileUploaderInAttachmentWrapper <FileUploaderInAttachmentWrapper
onChange={(files) => { onInputsChange({ ...inputs, [item.key]: getProcessedFiles(files) }) }}
onChange={(files) => { handleInputsChange({ ...inputsRef.current, [item.key]: getProcessedFiles(files) }) }}
fileConfig={{ fileConfig={{
...item.config, ...item.config,
fileUploadConfig: (visionConfig as any).fileUploadConfig, fileUploadConfig: (visionConfig as any).fileUploadConfig,

Loading…
Peruuta
Tallenna