mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-16 02:28:18 +08:00
Fix: operation postion of answer in logs (#8411)
Co-authored-by: Yi <yxiaoisme@gmail.com>
This commit is contained in:
parent
5b18e851d2
commit
032dd93b2f
@ -73,7 +73,7 @@ const CacheCtrlBtn: FC<Props> = ({
|
|||||||
setShowModal(false)
|
setShowModal(false)
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className={cn(className, 'inline-block')}>
|
<div className={cn('inline-block', className)}>
|
||||||
<div className='inline-flex p-0.5 space-x-0.5 rounded-lg bg-white border border-gray-100 shadow-md text-gray-500 cursor-pointer'>
|
<div className='inline-flex p-0.5 space-x-0.5 rounded-lg bg-white border border-gray-100 shadow-md text-gray-500 cursor-pointer'>
|
||||||
{cached
|
{cached
|
||||||
? (
|
? (
|
||||||
@ -101,7 +101,6 @@ const CacheCtrlBtn: FC<Props> = ({
|
|||||||
? (
|
? (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
popupContent={t('appDebug.feature.annotation.add')}
|
popupContent={t('appDebug.feature.annotation.add')}
|
||||||
needsDelay
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className='p-1 rounded-md hover:bg-[#EEF4FF] hover:text-[#444CE7] cursor-pointer'
|
className='p-1 rounded-md hover:bg-[#EEF4FF] hover:text-[#444CE7] cursor-pointer'
|
||||||
@ -115,7 +114,6 @@ const CacheCtrlBtn: FC<Props> = ({
|
|||||||
}
|
}
|
||||||
<Tooltip
|
<Tooltip
|
||||||
popupContent={t('appDebug.feature.annotation.edit')}
|
popupContent={t('appDebug.feature.annotation.edit')}
|
||||||
needsDelay
|
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className='p-1 cursor-pointer rounded-md hover:bg-black/5'
|
className='p-1 cursor-pointer rounded-md hover:bg-black/5'
|
||||||
|
@ -338,7 +338,7 @@ function DetailPanel<T extends ChatConversationFullDetailResponse | CompletionCo
|
|||||||
return (
|
return (
|
||||||
<div ref={ref} className='rounded-xl border-[0.5px] border-gray-200 h-full flex flex-col overflow-auto'>
|
<div ref={ref} className='rounded-xl border-[0.5px] border-gray-200 h-full flex flex-col overflow-auto'>
|
||||||
{/* Panel Header */}
|
{/* Panel Header */}
|
||||||
<div className='border-b border-gray-100 py-4 px-6 flex items-center justify-between'>
|
<div className='border-b border-gray-100 py-4 px-6 flex items-center justify-between bg-components-panel-bg'>
|
||||||
<div>
|
<div>
|
||||||
<div className='text-gray-500 text-[10px] leading-[14px]'>{isChatMode ? t('appLog.detail.conversationId') : t('appLog.detail.time')}</div>
|
<div className='text-gray-500 text-[10px] leading-[14px]'>{isChatMode ? t('appLog.detail.conversationId') : t('appLog.detail.time')}</div>
|
||||||
{isChatMode && (
|
{isChatMode && (
|
||||||
@ -725,7 +725,7 @@ const ConversationList: FC<IConversationList> = ({ logs, appDetail, onRefresh })
|
|||||||
onClose={onCloseDrawer}
|
onClose={onCloseDrawer}
|
||||||
mask={isMobile}
|
mask={isMobile}
|
||||||
footer={null}
|
footer={null}
|
||||||
panelClassname='mt-16 mx-2 sm:mr-2 mb-4 !p-0 !max-w-[640px] rounded-xl'
|
panelClassname='mt-16 mx-2 sm:mr-2 mb-4 !p-0 !max-w-[640px] rounded-xl bg-background-gradient-bg-fill-chat-bg-1'
|
||||||
>
|
>
|
||||||
<DrawerContext.Provider value={{
|
<DrawerContext.Provider value={{
|
||||||
onClose: onCloseDrawer,
|
onClose: onCloseDrawer,
|
||||||
|
@ -8,7 +8,6 @@ import type {
|
|||||||
ChatConfig,
|
ChatConfig,
|
||||||
ChatItem,
|
ChatItem,
|
||||||
} from '../../types'
|
} from '../../types'
|
||||||
import { useChatContext } from '../context'
|
|
||||||
import Operation from './operation'
|
import Operation from './operation'
|
||||||
import AgentContent from './agent-content'
|
import AgentContent from './agent-content'
|
||||||
import BasicContent from './basic-content'
|
import BasicContent from './basic-content'
|
||||||
@ -16,13 +15,13 @@ import SuggestedQuestions from './suggested-questions'
|
|||||||
import More from './more'
|
import More from './more'
|
||||||
import WorkflowProcess from './workflow-process'
|
import WorkflowProcess from './workflow-process'
|
||||||
import { AnswerTriangle } from '@/app/components/base/icons/src/vender/solid/general'
|
import { AnswerTriangle } from '@/app/components/base/icons/src/vender/solid/general'
|
||||||
import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
|
|
||||||
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
||||||
import Citation from '@/app/components/base/chat/chat/citation'
|
import Citation from '@/app/components/base/chat/chat/citation'
|
||||||
import { EditTitle } from '@/app/components/app/annotation/edit-annotation-modal/edit-item'
|
import { EditTitle } from '@/app/components/app/annotation/edit-annotation-modal/edit-item'
|
||||||
import type { Emoji } from '@/app/components/tools/types'
|
import type { Emoji } from '@/app/components/tools/types'
|
||||||
import type { AppData } from '@/models/share'
|
import type { AppData } from '@/models/share'
|
||||||
import AnswerIcon from '@/app/components/base/answer-icon'
|
import AnswerIcon from '@/app/components/base/answer-icon'
|
||||||
|
import cn from '@/utils/classnames'
|
||||||
|
|
||||||
type AnswerProps = {
|
type AnswerProps = {
|
||||||
item: ChatItem
|
item: ChatItem
|
||||||
@ -61,26 +60,24 @@ const Answer: FC<AnswerProps> = ({
|
|||||||
} = item
|
} = item
|
||||||
const hasAgentThoughts = !!agent_thoughts?.length
|
const hasAgentThoughts = !!agent_thoughts?.length
|
||||||
|
|
||||||
const [containerWidth] = useState(0)
|
const [containerWidth, setContainerWidth] = useState(0)
|
||||||
const [contentWidth, setContentWidth] = useState(0)
|
const [contentWidth, setContentWidth] = useState(0)
|
||||||
const containerRef = useRef<HTMLDivElement>(null)
|
const containerRef = useRef<HTMLDivElement>(null)
|
||||||
const contentRef = useRef<HTMLDivElement>(null)
|
const contentRef = useRef<HTMLDivElement>(null)
|
||||||
|
|
||||||
const {
|
const getContainerWidth = () => {
|
||||||
config: chatContextConfig,
|
if (containerRef.current)
|
||||||
} = useChatContext()
|
setContainerWidth(containerRef.current?.clientWidth + 16)
|
||||||
|
}
|
||||||
|
useEffect(() => {
|
||||||
|
getContainerWidth()
|
||||||
|
}, [])
|
||||||
|
|
||||||
const voiceRef = useRef(chatContextConfig?.text_to_speech?.voice)
|
|
||||||
const getContentWidth = () => {
|
const getContentWidth = () => {
|
||||||
if (contentRef.current)
|
if (contentRef.current)
|
||||||
setContentWidth(contentRef.current?.clientWidth)
|
setContentWidth(contentRef.current?.clientWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
voiceRef.current = chatContextConfig?.text_to_speech?.voice
|
|
||||||
}
|
|
||||||
, [chatContextConfig?.text_to_speech?.voice])
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!responding)
|
if (!responding)
|
||||||
getContentWidth()
|
getContentWidth()
|
||||||
@ -89,36 +86,20 @@ const Answer: FC<AnswerProps> = ({
|
|||||||
return (
|
return (
|
||||||
<div className='flex mb-2 last:mb-0'>
|
<div className='flex mb-2 last:mb-0'>
|
||||||
<div className='shrink-0 relative w-10 h-10'>
|
<div className='shrink-0 relative w-10 h-10'>
|
||||||
{
|
{answerIcon || <AnswerIcon />}
|
||||||
answerIcon || <AnswerIcon />
|
{responding && (
|
||||||
}
|
|
||||||
{
|
|
||||||
responding && (
|
|
||||||
<div className='absolute -top-[3px] -left-[3px] pl-[6px] flex items-center w-4 h-4 bg-white rounded-full shadow-xs border-[0.5px] border-gray-50'>
|
<div className='absolute -top-[3px] -left-[3px] pl-[6px] flex items-center w-4 h-4 bg-white rounded-full shadow-xs border-[0.5px] border-gray-50'>
|
||||||
<LoadingAnim type='avatar' />
|
<LoadingAnim type='avatar' />
|
||||||
</div>
|
</div>
|
||||||
)
|
)}
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
<div className='chat-answer-container group grow w-0 ml-4' ref={containerRef}>
|
<div className='chat-answer-container group grow w-0 ml-4' ref={containerRef}>
|
||||||
<div className={`group relative pr-10 ${chatAnswerContainerInner}`}>
|
<div className={cn('group relative pr-10', chatAnswerContainerInner)}>
|
||||||
<AnswerTriangle className='absolute -left-2 top-0 w-2 h-3 text-gray-100' />
|
<AnswerTriangle className='absolute -left-2 top-0 w-2 h-3 text-gray-100' />
|
||||||
<div
|
<div
|
||||||
ref={contentRef}
|
ref={contentRef}
|
||||||
className={`
|
className={cn('relative inline-block px-4 py-3 max-w-full bg-gray-100 rounded-b-2xl rounded-tr-2xl text-sm text-gray-900', workflowProcess && 'w-full')}
|
||||||
relative inline-block px-4 py-3 max-w-full bg-gray-100 rounded-b-2xl rounded-tr-2xl text-sm text-gray-900
|
|
||||||
${workflowProcess && 'w-full'}
|
|
||||||
`}
|
|
||||||
>
|
>
|
||||||
{annotation?.id && (
|
|
||||||
<div
|
|
||||||
className='absolute -top-3.5 -right-3.5 box-border flex items-center justify-center h-7 w-7 p-0.5 rounded-lg bg-white cursor-pointer text-[#444CE7] shadow-md group-hover:hidden'
|
|
||||||
>
|
|
||||||
<div className='p-1 rounded-lg bg-[#EEF4FF] '>
|
|
||||||
<MessageFast className='w-4 h-4' />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{
|
{
|
||||||
!responding && (
|
!responding && (
|
||||||
<Operation
|
<Operation
|
||||||
|
@ -149,7 +149,7 @@ const Operation: FC<OperationProps> = ({
|
|||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
{
|
{
|
||||||
!positionRight && annotation?.id && (
|
annotation?.id && (
|
||||||
<div
|
<div
|
||||||
className='relative box-border flex items-center justify-center h-7 w-7 p-0.5 rounded-lg bg-white cursor-pointer text-[#444CE7] shadow-md group-hover:hidden'
|
className='relative box-border flex items-center justify-center h-7 w-7 p-0.5 rounded-lg bg-white cursor-pointer text-[#444CE7] shadow-md group-hover:hidden'
|
||||||
>
|
>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user