feat: support copy run text result in debug panel in workflow (#4300)

This commit is contained in:
Joel
2024-05-11 16:59:17 +08:00
committed by GitHub
parent c01c95d77f
commit 4af00e4a45
3 changed files with 52 additions and 24 deletions

View File

@@ -6,6 +6,7 @@ import {
} from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next'
import copy from 'copy-to-clipboard'
import ResultText from '../run/result-text'
import ResultPanel from '../run/result-panel'
import TracingPanel from '../run/tracing-panel'
@@ -16,9 +17,12 @@ import { useStore } from '../store'
import {
WorkflowRunningStatus,
} from '../types'
import { SimpleBtn } from '../../app/text-generate/item'
import Toast from '../../base/toast'
import InputsPanel from './inputs-panel'
import Loading from '@/app/components/base/loading'
import { XClose } from '@/app/components/base/icons/src/vender/line/general'
import { Clipboard } from '@/app/components/base/icons/src/vender/line/files'
const WorkflowPreview = () => {
const { t } = useTranslation()
@@ -108,12 +112,28 @@ const WorkflowPreview = () => {
<InputsPanel onRun={() => switchTab('RESULT')} />
)}
{currentTab === 'RESULT' && (
<ResultText
isRunning={workflowRunningData?.result?.status === WorkflowRunningStatus.Running || !workflowRunningData?.result}
outputs={workflowRunningData?.resultText}
error={workflowRunningData?.result?.error}
onClick={() => switchTab('DETAIL')}
/>
<>
<ResultText
isRunning={workflowRunningData?.result?.status === WorkflowRunningStatus.Running || !workflowRunningData?.result}
outputs={workflowRunningData?.resultText}
error={workflowRunningData?.result?.error}
onClick={() => switchTab('DETAIL')}
/>
<SimpleBtn
isDisabled={workflowRunningData?.result.status !== WorkflowRunningStatus.Succeeded}
className={cn('ml-4 mb-4 inline-flex space-x-1')}
onClick={() => {
const content = workflowRunningData?.resultText
if (typeof content === 'string')
copy(content)
else
copy(JSON.stringify(content))
Toast.notify({ type: 'success', message: t('common.actionMsg.copySuccessfully') })
}}>
<Clipboard className='w-3.5 h-3.5' />
<div>{t('common.operation.copy')}</div>
</SimpleBtn>
</>
)}
{currentTab === 'DETAIL' && (
<ResultPanel
@@ -143,6 +163,7 @@ const WorkflowPreview = () => {
<Loading />
</div>
)}
</div>
</div>
</div>