mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 10:53:02 +00:00 
			
		
		
		
	 7709d9df20
			
		
	
	
		7709d9df20
		
			
		
	
	
	
	
		
			
			Co-authored-by: NFish <douxc512@gmail.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: twwu <twwu@dify.ai> Co-authored-by: jZonG <jzongcode@gmail.com>
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 'use client'
 | |
| import type { FC } from 'react'
 | |
| import { useTranslation } from 'react-i18next'
 | |
| import { ImageIndentLeft } from '@/app/components/base/icons/src/vender/line/editor'
 | |
| import { Markdown } from '@/app/components/base/markdown'
 | |
| import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
 | |
| import StatusContainer from '@/app/components/workflow/run/status-container'
 | |
| import { FileList } from '@/app/components/base/file-uploader'
 | |
| 
 | |
| type ResultTextProps = {
 | |
|   isRunning?: boolean
 | |
|   outputs?: any
 | |
|   error?: string
 | |
|   onClick?: () => void
 | |
|   allFiles?: any[]
 | |
| }
 | |
| 
 | |
| const ResultText: FC<ResultTextProps> = ({
 | |
|   isRunning,
 | |
|   outputs,
 | |
|   error,
 | |
|   onClick,
 | |
|   allFiles,
 | |
| }) => {
 | |
|   const { t } = useTranslation()
 | |
|   return (
 | |
|     <div className='bg-background-section-burn'>
 | |
|       {isRunning && !outputs && (
 | |
|         <div className='pl-[26px] pt-4'>
 | |
|           <LoadingAnim type='text' />
 | |
|         </div>
 | |
|       )}
 | |
|       {!isRunning && error && (
 | |
|         <div className='px-4 py-2'>
 | |
|           <StatusContainer status='failed'>
 | |
|             {error}
 | |
|           </StatusContainer>
 | |
|         </div>
 | |
|       )}
 | |
|       {!isRunning && !outputs && !error && !allFiles?.length && (
 | |
|         <div className='mt-[120px] flex flex-col items-center px-4 py-2 text-[13px] leading-[18px] text-gray-500'>
 | |
|           <ImageIndentLeft className='h-6 w-6 text-gray-400' />
 | |
|           <div className='mr-2'>{t('runLog.resultEmpty.title')}</div>
 | |
|           <div>
 | |
|             {t('runLog.resultEmpty.tipLeft')}
 | |
|             <span onClick={onClick} className='cursor-pointer text-primary-600'>{t('runLog.resultEmpty.link')}</span>
 | |
|             {t('runLog.resultEmpty.tipRight')}
 | |
|           </div>
 | |
|         </div>
 | |
|       )}
 | |
|       {(outputs || !!allFiles?.length) && (
 | |
|         <>
 | |
|           {outputs && (
 | |
|             <div className='px-4 py-2'>
 | |
|               <Markdown content={outputs} />
 | |
|             </div>
 | |
|           )}
 | |
|           {!!allFiles?.length && allFiles.map(item => (
 | |
|             <div key={item.varName} className='system-xs-regular flex flex-col gap-1 px-4 py-2'>
 | |
|               <div className='py-1 text-text-tertiary '>{item.varName}</div>
 | |
|               <FileList
 | |
|                 files={item.list}
 | |
|                 showDeleteAction={false}
 | |
|                 showDownloadAction
 | |
|                 canPreview
 | |
|               />
 | |
|             </div>
 | |
|           ))}
 | |
|         </>
 | |
|       )}
 | |
|     </div>
 | |
|   )
 | |
| }
 | |
| 
 | |
| export default ResultText
 |