feat: last run new loading

This commit is contained in:
Joel 2025-04-30 14:47:57 +08:00
parent 6caf6714cd
commit 53f2a12cf7
3 changed files with 23 additions and 12 deletions

View File

@ -316,6 +316,7 @@ const BasePanel: FC<BasePanelProps> = ({
<LastRun
appId={appDetail?.id || ''}
nodeId={id}
canSingleRun={isSupportSingleRun}
runningStatus={runningStatus}
onSingleRunClicked={handleSingleRun}
/>

View File

@ -5,11 +5,12 @@ import type { FC } from 'react'
import React from 'react'
import NoData from './no-data'
import { useLastRun } from '@/service/use-workflow'
import Loading from '@/app/components/base/loading'
import { RiLoader2Line } from '@remixicon/react'
type Props = {
appId: string
nodeId: string
canSingleRun: boolean
runningStatus?: NodeRunningStatus
onSingleRunClicked: () => void
}
@ -17,21 +18,26 @@ type Props = {
const LastRun: FC<Props> = ({
appId,
nodeId,
canSingleRun,
runningStatus,
onSingleRunClicked,
}) => {
const isRunning = runningStatus === NodeRunningStatus.Running
const { data: runResult, isFetching } = useLastRun(appId, nodeId, !isRunning)
if (isFetching)
return <Loading />
if (isFetching) {
return (
<div className='flex h-0 grow flex-col items-center justify-center'>
<RiLoader2Line className='size-4 animate-spin text-text-tertiary' />
</div>)
}
if (isRunning)
return <ResultPanel status='running' showSteps={false} />
if (!runResult) {
return (
<NoData onSingleRun={onSingleRunClicked} />
<NoData canSingleRun={canSingleRun} onSingleRun={onSingleRunClicked} />
)
}
return (

View File

@ -7,10 +7,12 @@ import { RiPlayLine } from '@remixicon/react'
import { useTranslation } from 'react-i18next'
type Props = {
canSingleRun: boolean
onSingleRun: () => void
}
const NoData: FC<Props> = ({
canSingleRun,
onSingleRun,
}) => {
const { t } = useTranslation()
@ -18,14 +20,16 @@ const NoData: FC<Props> = ({
<div className='flex h-0 grow flex-col items-center justify-center'>
<ClockPlay className='h-8 w-8 text-text-quaternary' />
<div className='system-xs-regular my-2 text-text-tertiary'>{t('workflow.debug.noData.description')}</div>
<Button
className='flex'
size='small'
onClick={onSingleRun}
>
<RiPlayLine className='mr-1 h-3.5 w-3.5' />
<div>{t('workflow.debug.noData.runThisNode')}</div>
</Button>
{canSingleRun && (
<Button
className='flex'
size='small'
onClick={onSingleRun}
>
<RiPlayLine className='mr-1 h-3.5 w-3.5' />
<div>{t('workflow.debug.noData.runThisNode')}</div>
</Button>
)}
</div>
)
}