diff --git a/web/src/components/image.tsx b/web/src/components/image.tsx new file mode 100644 index 0000000000000000000000000000000000000000..7cb0689681ed39419c64efcf1d53958ff382bc5b --- /dev/null +++ b/web/src/components/image.tsx @@ -0,0 +1,19 @@ +import { api_host } from '@/utils/api'; + +interface IImage { + id: string; + className: string; +} + +const Image = ({ id, className, ...props }: IImage) => { + return ( + <img + {...props} + src={`${api_host}/document/image/${id}`} + alt="" + className={className} + /> + ); +}; + +export default Image; diff --git a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx index 8936c1d9df201079fa3469161b4002722fdfa79b..89af5283bbace732e5f67626c13c6a95f0df99cf 100644 --- a/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-card/index.tsx @@ -1,7 +1,7 @@ +import Image from '@/components/image'; import { IChunk } from '@/interfaces/database/knowledge'; import { api_host } from '@/utils/api'; import { Card, Checkbox, CheckboxProps, Flex, Popover, Switch } from 'antd'; - import { useState } from 'react'; import styles from './index.less'; @@ -13,22 +13,6 @@ interface IProps { handleCheckboxClick: (chunkId: string, checked: boolean) => void; } -interface IImage { - id: string; - className: string; -} -// Pass onMouseEnter and onMouseLeave to img tag using props -const Image = ({ id, className, ...props }: IImage) => { - return ( - <img - {...props} - src={`${api_host}/document/image/${id}`} - alt="" - className={className} - /> - ); -}; - const ChunkCard = ({ item, checked, diff --git a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx index d6a0da610f0409fc90ab8f8d8b227fb6954ce5e6..db475e22d418fa22c5725df0a6d896795da9b95d 100644 --- a/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-dataset/knowledge-upload-file/index.tsx @@ -28,7 +28,7 @@ import { UploadProps, } from 'antd'; import classNames from 'classnames'; -import { ReactElement, useEffect, useRef, useState } from 'react'; +import { ReactElement, useEffect, useMemo, useRef, useState } from 'react'; import { Nullable } from 'typings'; import { Link, useDispatch, useNavigate, useSelector } from 'umi'; @@ -63,6 +63,24 @@ const UploaderItem = ({ const documentId = file?.response?.id; + const parserList = useMemo(() => { + return parserArray.map((x) => { + const arr = x.split(':'); + return { value: arr[0], label: arr[1] }; + }); + }, [parserArray]); + + const saveParser = (parserId: string) => { + dispatch({ + type: 'kFModel/document_change_parser', + payload: { + parser_id: parserId, + doc_id: documentId, + parser_config: parserConfig, + }, + }); + }; + const onChange = (e: RadioChangeEvent) => { const val = e.target.value; setValue(val); @@ -72,12 +90,12 @@ const UploaderItem = ({ const content = ( <Radio.Group onChange={onChange} value={value}> <Space direction="vertical"> - {parserArray.map( + {parserList.map( ( x, // value is lowercase, key is uppercase ) => ( - <Radio value={x.toLowerCase()} key={x}> - {x} + <Radio value={x.value} key={x.value}> + {x.label} </Radio> ), )} @@ -92,17 +110,6 @@ const UploaderItem = ({ } }; - const saveParser = (parserId: string) => { - dispatch({ - type: 'kFModel/document_change_parser', - payload: { - parser_id: parserId, - doc_id: documentId, - parser_config: parserConfig, - }, - }); - }; - useEffect(() => { setValue(defaultParserId); }, [defaultParserId]); diff --git a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less index 46ef353dc8828c47543703f79237ecb2ed8db118..1059af55083d75ef78515a8c43991dde39c89320 100644 --- a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less +++ b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.less @@ -33,4 +33,11 @@ font-size: 12px; font-weight: 500; } + .image { + width: 100px; + } + .imagePreview { + display: block; + width: 260px; + } } diff --git a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx index dbe7b22aa7fab25635e7ba56785dd3604eda6009..fac22905a324c04bfac9f0ffa5127f52292de9a9 100644 --- a/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx +++ b/web/src/pages/add-knowledge/components/knowledge-testing/testing-result/index.tsx @@ -1,6 +1,15 @@ 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, Space } from 'antd'; +import { + Card, + Collapse, + Flex, + Pagination, + PaginationProps, + Popover, + Space, +} from 'antd'; import { useDispatch, useSelector } from 'umi'; import { TestingModelState } from '../model'; import styles from './index.less'; @@ -92,7 +101,22 @@ const TestingResult = ({ handleTesting }: IProps) => { > {chunks.map((x) => ( <Card key={x.chunk_id} title={<ChunkTitle item={x}></ChunkTitle>}> - <div>{x.content_with_weight}</div> + <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>