| import type { FC } from 'react' |
| import React from 'react' |
| import { useTranslation } from 'react-i18next' |
| import { SegmentIndexTag } from '../documents/detail/completed' |
| import s from '../documents/detail/completed/style.module.css' |
| import cn from '@/utils/classnames' |
| import type { SegmentDetailModel } from '@/models/datasets' |
| import Divider from '@/app/components/base/divider' |
|
|
| type IHitDetailProps = { |
| segInfo?: Partial<SegmentDetailModel> & { id: string } |
| } |
|
|
| const HitDetail: FC<IHitDetailProps> = ({ segInfo }) => { |
| const { t } = useTranslation() |
|
|
| const renderContent = () => { |
| if (segInfo?.answer) { |
| return ( |
| <> |
| <div className='mt-2 mb-1 text-xs font-medium text-gray-500'>QUESTION</div> |
| <div className='mb-4 text-md text-gray-800'>{segInfo.content}</div> |
| <div className='mb-1 text-xs font-medium text-gray-500'>ANSWER</div> |
| <div className='text-md text-gray-800'>{segInfo.answer}</div> |
| </> |
| ) |
| } |
|
|
| return <div className='mb-4 text-md text-gray-800 h-full'>{segInfo?.content}</div> |
| } |
|
|
| return ( |
| segInfo?.id === 'external' |
| ? <div className='w-full overflow-x-auto px-2'> |
| <div className={s.segModalContent}>{renderContent()}</div> |
| </div> |
| : <div className='overflow-x-auto'> |
| <div className="flex items-center"> |
| <SegmentIndexTag |
| positionId={segInfo?.position || ''} |
| className="w-fit mr-6" |
| /> |
| <div className={cn(s.commonIcon, s.typeSquareIcon)} /> |
| <span className={cn('mr-6', s.numberInfo)}> |
| {segInfo?.word_count} {t('datasetDocuments.segment.characters')} |
| </span> |
| <div className={cn(s.commonIcon, s.targetIcon)} /> |
| <span className={s.numberInfo}> |
| {segInfo?.hit_count} {t('datasetDocuments.segment.hitCount')} |
| </span> |
| </div> |
| <Divider /> |
| <div className={s.segModalContent}>{renderContent()}</div> |
| <div className={s.keywordTitle}> |
| {t('datasetDocuments.segment.keywords')} |
| </div> |
| <div className={s.keywordWrapper}> |
| {!segInfo?.keywords?.length |
| ? '-' |
| : segInfo?.keywords?.map((word, index) => { |
| return <div key={index} className={s.keyword}>{word}</div> |
| })} |
| </div> |
| </div> |
| ) |
| } |
|
|
| export default HitDetail |
|
|