balibabu commited on
Commit
6eec14a
·
1 Parent(s): 9c1ae34

feat: Wrap the searched chunk with a Popover #2247 (#2398)

Browse files

### What problem does this PR solve?

feat: Wrap the searched chunk with a Popover #2247

### Type of change

- [x] New Feature (non-breaking change which adds functionality)

web/src/components/highlight-markdown/index.tsx CHANGED
@@ -1,3 +1,4 @@
 
1
  import Markdown from 'react-markdown';
2
  import SyntaxHighlighter from 'react-syntax-highlighter';
3
  import rehypeRaw from 'rehype-raw';
@@ -7,14 +8,16 @@ import styles from './index.less';
7
 
8
  const HightLightMarkdown = ({
9
  children,
 
10
  }: {
11
  children: string | null | undefined;
 
12
  }) => {
13
  return (
14
  <Markdown
15
  remarkPlugins={[remarkGfm]}
16
  rehypePlugins={[rehypeRaw]}
17
- className={styles.text}
18
  components={
19
  {
20
  code(props: any) {
 
1
+ import classNames from 'classnames';
2
  import Markdown from 'react-markdown';
3
  import SyntaxHighlighter from 'react-syntax-highlighter';
4
  import rehypeRaw from 'rehype-raw';
 
8
 
9
  const HightLightMarkdown = ({
10
  children,
11
+ className,
12
  }: {
13
  children: string | null | undefined;
14
+ className?: string;
15
  }) => {
16
  return (
17
  <Markdown
18
  remarkPlugins={[remarkGfm]}
19
  rehypePlugins={[rehypeRaw]}
20
+ className={classNames(styles.text, className)}
21
  components={
22
  {
23
  code(props: any) {
web/src/components/image/index.less CHANGED
@@ -1,5 +1,10 @@
 
 
 
 
 
1
  .image {
2
- width: 100px;
3
  object-fit: contain;
4
  }
5
 
 
1
+ .primitiveImg {
2
+ display: inline-block;
3
+ max-height: 100px;
4
+ }
5
+
6
  .image {
7
+ max-width: 100px;
8
  object-fit: contain;
9
  }
10
 
web/src/components/image/index.tsx CHANGED
@@ -1,5 +1,6 @@
1
  import { api_host } from '@/utils/api';
2
  import { Popover } from 'antd';
 
3
 
4
  import styles from './index.less';
5
 
@@ -14,7 +15,7 @@ const Image = ({ id, className, ...props }: IImage) => {
14
  {...props}
15
  src={`${api_host}/document/image/${id}`}
16
  alt=""
17
- className={className}
18
  />
19
  );
20
  };
 
1
  import { api_host } from '@/utils/api';
2
  import { Popover } from 'antd';
3
+ import classNames from 'classnames';
4
 
5
  import styles from './index.less';
6
 
 
15
  {...props}
16
  src={`${api_host}/document/image/${id}`}
17
  alt=""
18
+ className={classNames(styles.primitiveImg, className)}
19
  />
20
  );
21
  };
web/src/locales/en.ts CHANGED
@@ -431,6 +431,7 @@ The above is the content you need to summarize.`,
431
  tts: 'Text to speech',
432
  ttsTip:
433
  'To play the voice using voice conversion, please select TTS (speech conversion model) in the settings first.',
 
434
  },
435
  setting: {
436
  profile: 'Profile',
 
431
  tts: 'Text to speech',
432
  ttsTip:
433
  'To play the voice using voice conversion, please select TTS (speech conversion model) in the settings first.',
434
+ relatedQuestion: 'Related question',
435
  },
436
  setting: {
437
  profile: 'Profile',
web/src/locales/zh-traditional.ts CHANGED
@@ -400,6 +400,7 @@ export default {
400
  read: '朗讀內容',
401
  tts: '文字轉語音',
402
  ttsTip: '是否用語音轉換播放語音,請先在設定裡面選擇TTS(語音轉換模型)。',
 
403
  },
404
  setting: {
405
  profile: '概述',
@@ -832,7 +833,7 @@ export default {
832
  wenCai: '問財',
833
  queryType: '查詢類型',
834
  wenCaiDescription:
835
- '該組件可用於獲取廣泛的金融領域的信息,包括但不限於股票、基金等...',
836
  wenCaiQueryTypeOptions: {
837
  stock: '股票',
838
  zhishu: '指數',
 
400
  read: '朗讀內容',
401
  tts: '文字轉語音',
402
  ttsTip: '是否用語音轉換播放語音,請先在設定裡面選擇TTS(語音轉換模型)。',
403
+ relatedQuestion: '相關問題',
404
  },
405
  setting: {
406
  profile: '概述',
 
833
  wenCai: '問財',
834
  queryType: '查詢類型',
835
  wenCaiDescription:
836
+ '該組件可用於獲取廣泛的金融領域的o息,包括但不限於股票、基金等...',
837
  wenCaiQueryTypeOptions: {
838
  stock: '股票',
839
  zhishu: '指數',
web/src/locales/zh.ts CHANGED
@@ -417,6 +417,7 @@ export default {
417
  read: '朗读内容',
418
  tts: '文本转语音',
419
  ttsTip: '是否用语音转换播放语音,请先在设置里面选择TTS(语音转换模型)。',
 
420
  },
421
  setting: {
422
  profile: '概要',
 
417
  read: '朗读内容',
418
  tts: '文本转语音',
419
  ttsTip: '是否用语音转换播放语音,请先在设置里面选择TTS(语音转换模型)。',
420
+ relatedQuestion: '相关问题',
421
  },
422
  setting: {
423
  profile: '概要',
web/src/pages/search/index.less CHANGED
@@ -168,3 +168,9 @@
168
  background-position: 200% center;
169
  }
170
  }
 
 
 
 
 
 
 
168
  background-position: 200% center;
169
  }
170
  }
171
+
172
+ .popupMarkdown {
173
+ width: 60vw;
174
+ max-height: 40vh;
175
+ overflow: auto;
176
+ }
web/src/pages/search/index.tsx CHANGED
@@ -19,6 +19,7 @@ import {
19
  List,
20
  Pagination,
21
  PaginationProps,
 
22
  Skeleton,
23
  Space,
24
  Tag,
@@ -150,9 +151,21 @@ const SearchPage = () => {
150
  <ImageWithPopover
151
  id={item.img_id}
152
  ></ImageWithPopover>
153
- <HightLightMarkdown>
154
- {item.highlight}
155
- </HightLightMarkdown>
 
 
 
 
 
 
 
 
 
 
 
 
156
  </Space>
157
  </Card>
158
  </List.Item>
@@ -160,7 +173,7 @@ const SearchPage = () => {
160
  />
161
  )}
162
  {relatedQuestions?.length > 0 && (
163
- <Card>
164
  <Flex wrap="wrap" gap={'10px 0'}>
165
  {relatedQuestions?.map((x, idx) => (
166
  <Tag
 
19
  List,
20
  Pagination,
21
  PaginationProps,
22
+ Popover,
23
  Skeleton,
24
  Space,
25
  Tag,
 
151
  <ImageWithPopover
152
  id={item.img_id}
153
  ></ImageWithPopover>
154
+ <Popover
155
+ content={
156
+ <div className={styles.popupMarkdown}>
157
+ <HightLightMarkdown>
158
+ {item.content_with_weight}
159
+ </HightLightMarkdown>
160
+ </div>
161
+ }
162
+ >
163
+ <div>
164
+ <HightLightMarkdown>
165
+ {item.highlight}
166
+ </HightLightMarkdown>
167
+ </div>
168
+ </Popover>
169
  </Space>
170
  </Card>
171
  </List.Item>
 
173
  />
174
  )}
175
  {relatedQuestions?.length > 0 && (
176
+ <Card title={t('chat.relatedQuestion')}>
177
  <Flex wrap="wrap" gap={'10px 0'}>
178
  {relatedQuestions?.map((x, idx) => (
179
  <Tag