balibabu
fix: fixed the issue that the prompt word for registering an account is not in English and fixed the issue where the last message would keep loading if the backend reported an error during chat and fixed the issue where the next button would float above the file list on the file upload page (#133)
7043f18
raw
history blame
3.76 kB
import { ReactComponent as SelectedFilesCollapseIcon } from '@/assets/svg/selected-files-collapse.svg';
import Image from '@/components/image';
import { ITestingChunk } from '@/interfaces/database/knowledge';
import {
Card,
Collapse,
Flex,
Pagination,
PaginationProps,
Popover,
Space,
} from 'antd';
import { useDispatch, useSelector } from 'umi';
import { TestingModelState } from '../model';
import styles from './index.less';
import SelectFiles from './select-files';
const similarityList: Array<{ field: keyof ITestingChunk; label: string }> = [
{ field: 'similarity', label: 'Hybrid Similarity' },
{ field: 'term_similarity', label: 'Term Similarity' },
{ field: 'vector_similarity', label: 'Vector Similarity' },
];
const ChunkTitle = ({ item }: { item: ITestingChunk }) => {
return (
<Flex gap={10}>
{similarityList.map((x) => (
<Space key={x.field}>
<span className={styles.similarityCircle}>
{((item[x.field] as number) * 100).toFixed(2)}
</span>
<span className={styles.similarityText}>{x.label}</span>
</Space>
))}
</Flex>
);
};
interface IProps {
handleTesting: () => Promise<any>;
}
const TestingResult = ({ handleTesting }: IProps) => {
const {
documents,
chunks,
total,
pagination,
selectedDocumentIds,
}: TestingModelState = useSelector((state: any) => state.testingModel);
const dispatch = useDispatch();
const onChange: PaginationProps['onChange'] = (pageNumber, pageSize) => {
console.log('Page: ', pageNumber, pageSize);
dispatch({
type: 'testingModel/setPagination',
payload: { current: pageNumber, pageSize },
});
handleTesting();
};
return (
<section className={styles.testingResultWrapper}>
<Collapse
expandIcon={() => (
<SelectedFilesCollapseIcon></SelectedFilesCollapseIcon>
)}
className={styles.selectFilesCollapse}
items={[
{
key: '1',
label: (
<Flex
justify={'space-between'}
align="center"
className={styles.selectFilesTitle}
>
<span>
{selectedDocumentIds?.length ?? 0}/{documents.length} Files
Selected
</span>
<Space size={52}>
<b>Hits</b>
<b>View</b>
</Space>
</Flex>
),
children: (
<div>
<SelectFiles handleTesting={handleTesting}></SelectFiles>
</div>
),
},
]}
/>
<Flex
gap={'large'}
vertical
flex={1}
className={styles.selectFilesCollapse}
>
{chunks.map((x) => (
<Card key={x.chunk_id} title={<ChunkTitle item={x}></ChunkTitle>}>
<Flex gap={'middle'}>
{x.img_id && (
<Popover
placement="topRight"
content={
<Image
id={x.img_id}
className={styles.imagePreview}
></Image>
}
>
<Image id={x.img_id} className={styles.image}></Image>
</Popover>
)}
<div>{x.content_with_weight}</div>
</Flex>
</Card>
))}
</Flex>
<Pagination
size={'small'}
showQuickJumper
current={pagination.current}
pageSize={pagination.pageSize}
total={total}
showSizeChanger
onChange={onChange}
/>
</section>
);
};
export default TestingResult;