mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-07-23 20:26:15 +00:00
Co-authored-by: Fangyin Cheng <staneyffer@gmail.com> Co-authored-by: 谨欣 <echo.cmy@antgroup.com> Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com> Co-authored-by: yanzhiyong <932374019@qq.com>
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import { ChatContentContext } from '@/pages/chat';
|
|
import { ControlOutlined } from '@ant-design/icons';
|
|
import { InputNumber, Popover, Slider, Tooltip } from 'antd';
|
|
import React, { memo, useContext, useMemo } from 'react';
|
|
import { useTranslation } from 'react-i18next';
|
|
|
|
const Temperature: React.FC<{ temperatureValue: any; setTemperatureValue: any }> = ({
|
|
temperatureValue,
|
|
setTemperatureValue,
|
|
}) => {
|
|
const { appInfo } = useContext(ChatContentContext);
|
|
|
|
const { t } = useTranslation();
|
|
|
|
// 左边工具栏动态可用key
|
|
const paramKey: string[] = useMemo(() => {
|
|
return appInfo.param_need?.map(i => i.type) || [];
|
|
}, [appInfo.param_need]);
|
|
|
|
if (!paramKey.includes('temperature')) {
|
|
return (
|
|
<Tooltip title={t('temperature_tip')}>
|
|
<div className='flex w-8 h-8 items-center justify-center rounded-md hover:bg-[rgb(221,221,221,0.6)] cursor-pointer'>
|
|
<ControlOutlined className='text-xl cursor-not-allowed opacity-30' />
|
|
</div>
|
|
</Tooltip>
|
|
);
|
|
}
|
|
|
|
// temperature变化;
|
|
const onChange = (value: any) => {
|
|
if (isNaN(value)) {
|
|
return;
|
|
}
|
|
setTemperatureValue(value);
|
|
};
|
|
|
|
return (
|
|
<div className='flex items-center'>
|
|
<Popover
|
|
arrow={false}
|
|
trigger={['click']}
|
|
placement='topLeft'
|
|
content={() => (
|
|
<div className='flex items-center gap-2'>
|
|
<Slider
|
|
className='w-20'
|
|
min={0}
|
|
max={1}
|
|
step={0.1}
|
|
onChange={onChange}
|
|
value={typeof temperatureValue === 'number' ? temperatureValue : 0}
|
|
/>
|
|
<InputNumber
|
|
size='small'
|
|
className='w-14'
|
|
min={0}
|
|
max={1}
|
|
step={0.1}
|
|
onChange={onChange}
|
|
value={temperatureValue}
|
|
/>
|
|
</div>
|
|
)}
|
|
>
|
|
<Tooltip title={t('temperature')} placement='bottom' arrow={false}>
|
|
<div className='flex w-8 h-8 items-center justify-center rounded-md hover:bg-[rgb(221,221,221,0.6)] cursor-pointer'>
|
|
<ControlOutlined />
|
|
</div>
|
|
</Tooltip>
|
|
</Popover>
|
|
<span className='text-sm ml-2'>{temperatureValue}</span>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default memo(Temperature);
|