balibabu
commited on
Commit
·
c4edd97
1
Parent(s):
d3ccaa9
Feat: Add tooltip to question item of ChunkCreatingModal #3873 (#3880)
Browse files### What problem does this PR solve?
Feat: Add tooltip to question item of ChunkCreatingModal #3873
### Type of change
- [x] New Feature (non-breaking change which adds functionality)
- web/src/components/edit-tag/index.less +18 -5
- web/src/components/edit-tag/index.tsx +7 -10
- web/src/locales/en.ts +1 -0
- web/src/locales/zh-traditional.ts +1 -0
- web/src/locales/zh.ts +1 -0
- web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx +11 -6
- web/src/utils/file-util.ts +0 -14
web/src/components/edit-tag/index.less
CHANGED
@@ -1,8 +1,21 @@
|
|
1 |
.tweenGroup {
|
2 |
-
display:
|
3 |
-
:
|
4 |
-
|
5 |
-
|
6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
}
|
8 |
}
|
|
|
1 |
.tweenGroup {
|
2 |
+
display: flex;
|
3 |
+
gap: 8px;
|
4 |
+
flex-wrap: wrap;
|
5 |
+
width: 100%;
|
6 |
+
margin-bottom: 8px;
|
7 |
+
}
|
8 |
+
|
9 |
+
.tag {
|
10 |
+
max-width: 100%;
|
11 |
+
margin: 0;
|
12 |
+
padding: 2px 20px 2px 4px;
|
13 |
+
font-size: 14px;
|
14 |
+
.textEllipsis();
|
15 |
+
position: relative;
|
16 |
+
:global(.ant-tag-close-icon) {
|
17 |
+
position: absolute;
|
18 |
+
top: 7px;
|
19 |
+
right: 4px;
|
20 |
}
|
21 |
}
|
web/src/components/edit-tag/index.tsx
CHANGED
@@ -45,8 +45,10 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
|
|
45 |
};
|
46 |
|
47 |
const forMap = (tag: string) => {
|
48 |
-
|
49 |
<Tag
|
|
|
|
|
50 |
closable
|
51 |
onClose={(e) => {
|
52 |
e.preventDefault();
|
@@ -56,11 +58,6 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
|
|
56 |
{tag}
|
57 |
</Tag>
|
58 |
);
|
59 |
-
return (
|
60 |
-
<span key={tag} style={{ display: 'inline-block' }}>
|
61 |
-
{tagElem}
|
62 |
-
</span>
|
63 |
-
);
|
64 |
};
|
65 |
|
66 |
const tagChild = tags?.map(forMap);
|
@@ -71,8 +68,8 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
|
|
71 |
};
|
72 |
|
73 |
return (
|
74 |
-
|
75 |
-
|
76 |
<TweenOneGroup
|
77 |
className={styles.tweenGroup}
|
78 |
enter={{
|
@@ -91,7 +88,7 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
|
|
91 |
>
|
92 |
{tagChild}
|
93 |
</TweenOneGroup>
|
94 |
-
|
95 |
{inputVisible ? (
|
96 |
<Input
|
97 |
ref={inputRef}
|
@@ -107,7 +104,7 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
|
|
107 |
<PlusOutlined />
|
108 |
</Tag>
|
109 |
)}
|
110 |
-
|
111 |
);
|
112 |
};
|
113 |
|
|
|
45 |
};
|
46 |
|
47 |
const forMap = (tag: string) => {
|
48 |
+
return (
|
49 |
<Tag
|
50 |
+
key={tag}
|
51 |
+
className={styles.tag}
|
52 |
closable
|
53 |
onClose={(e) => {
|
54 |
e.preventDefault();
|
|
|
58 |
{tag}
|
59 |
</Tag>
|
60 |
);
|
|
|
|
|
|
|
|
|
|
|
61 |
};
|
62 |
|
63 |
const tagChild = tags?.map(forMap);
|
|
|
68 |
};
|
69 |
|
70 |
return (
|
71 |
+
<div>
|
72 |
+
{Array.isArray(tagChild) && tagChild.length > 0 && (
|
73 |
<TweenOneGroup
|
74 |
className={styles.tweenGroup}
|
75 |
enter={{
|
|
|
88 |
>
|
89 |
{tagChild}
|
90 |
</TweenOneGroup>
|
91 |
+
)}
|
92 |
{inputVisible ? (
|
93 |
<Input
|
94 |
ref={inputRef}
|
|
|
104 |
<PlusOutlined />
|
105 |
</Tag>
|
106 |
)}
|
107 |
+
</div>
|
108 |
);
|
109 |
};
|
110 |
|
web/src/locales/en.ts
CHANGED
@@ -326,6 +326,7 @@ When you want to search the given knowledge base at first place, set a higher pa
|
|
326 |
graph: 'Knowledge graph',
|
327 |
mind: 'Mind map',
|
328 |
question: 'Question',
|
|
|
329 |
},
|
330 |
chat: {
|
331 |
newConversation: 'New conversation',
|
|
|
326 |
graph: 'Knowledge graph',
|
327 |
mind: 'Mind map',
|
328 |
question: 'Question',
|
329 |
+
questionTip: `If there're given questions, the embedding of the chunk will be based on them.`,
|
330 |
},
|
331 |
chat: {
|
332 |
newConversation: 'New conversation',
|
web/src/locales/zh-traditional.ts
CHANGED
@@ -310,6 +310,7 @@ export default {
|
|
310 |
graph: '知識圖譜',
|
311 |
mind: '心智圖',
|
312 |
question: '問題',
|
|
|
313 |
},
|
314 |
chat: {
|
315 |
newConversation: '新會話',
|
|
|
310 |
graph: '知識圖譜',
|
311 |
mind: '心智圖',
|
312 |
question: '問題',
|
313 |
+
questionTip: `如果存在給定的問題,則區塊的嵌入將基於它們。`,
|
314 |
},
|
315 |
chat: {
|
316 |
newConversation: '新會話',
|
web/src/locales/zh.ts
CHANGED
@@ -327,6 +327,7 @@ export default {
|
|
327 |
graph: '知识图谱',
|
328 |
mind: '思维导图',
|
329 |
question: '问题',
|
|
|
330 |
},
|
331 |
chat: {
|
332 |
newConversation: '新会话',
|
|
|
327 |
graph: '知识图谱',
|
328 |
mind: '思维导图',
|
329 |
question: '问题',
|
330 |
+
questionTip: `如果有给定的问题,则块的嵌入将基于它们。`,
|
331 |
},
|
332 |
chat: {
|
333 |
newConversation: '新会话',
|
web/src/pages/add-knowledge/components/knowledge-chunk/components/chunk-creating-modal/index.tsx
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import EditTag from '@/components/edit-tag';
|
2 |
import { useFetchChunk } from '@/hooks/chunk-hooks';
|
3 |
import { IModalProps } from '@/interfaces/common';
|
4 |
-
import { DeleteOutlined } from '@ant-design/icons';
|
5 |
-
import { Divider, Form, Input, Modal, Space, Switch } from 'antd';
|
6 |
import React, { useEffect, useState } from 'react';
|
7 |
import { useTranslation } from 'react-i18next';
|
8 |
import { useDeleteChunkByIds } from '../../hooks';
|
@@ -41,7 +41,7 @@ const ChunkCreatingModal: React.FC<IModalProps<any> & kFProps> = ({
|
|
41 |
form.setFieldsValue({ content: content_with_weight });
|
42 |
setKeywords(important_kwd);
|
43 |
setQuestion(question_kwd);
|
44 |
-
setChecked(available_int
|
45 |
}
|
46 |
|
47 |
if (!chunkId) {
|
@@ -93,11 +93,16 @@ const ChunkCreatingModal: React.FC<IModalProps<any> & kFProps> = ({
|
|
93 |
</Form.Item>
|
94 |
</Form>
|
95 |
<section>
|
96 |
-
<p className="mb-2">{t('chunk.keyword')}
|
97 |
<EditTag tags={keywords} setTags={setKeywords} />
|
98 |
</section>
|
99 |
-
<section className="
|
100 |
-
<
|
|
|
|
|
|
|
|
|
|
|
101 |
<EditTag tags={question} setTags={setQuestion} />
|
102 |
</section>
|
103 |
{chunkId && (
|
|
|
1 |
import EditTag from '@/components/edit-tag';
|
2 |
import { useFetchChunk } from '@/hooks/chunk-hooks';
|
3 |
import { IModalProps } from '@/interfaces/common';
|
4 |
+
import { DeleteOutlined, QuestionCircleOutlined } from '@ant-design/icons';
|
5 |
+
import { Divider, Form, Input, Modal, Space, Switch, Tooltip } from 'antd';
|
6 |
import React, { useEffect, useState } from 'react';
|
7 |
import { useTranslation } from 'react-i18next';
|
8 |
import { useDeleteChunkByIds } from '../../hooks';
|
|
|
41 |
form.setFieldsValue({ content: content_with_weight });
|
42 |
setKeywords(important_kwd);
|
43 |
setQuestion(question_kwd);
|
44 |
+
setChecked(available_int !== 0);
|
45 |
}
|
46 |
|
47 |
if (!chunkId) {
|
|
|
93 |
</Form.Item>
|
94 |
</Form>
|
95 |
<section>
|
96 |
+
<p className="mb-2">{t('chunk.keyword')} </p>
|
97 |
<EditTag tags={keywords} setTags={setKeywords} />
|
98 |
</section>
|
99 |
+
<section className="mt-4">
|
100 |
+
<div className="flex items-center gap-2 mb-2">
|
101 |
+
<span>{t('chunk.question')}</span>
|
102 |
+
<Tooltip title={t('chunk.questionTip')}>
|
103 |
+
<QuestionCircleOutlined className="text-xs" />
|
104 |
+
</Tooltip>
|
105 |
+
</div>
|
106 |
<EditTag tags={question} setTags={setQuestion} />
|
107 |
</section>
|
108 |
{chunkId && (
|
web/src/utils/file-util.ts
CHANGED
@@ -112,20 +112,6 @@ export const downloadFileFromBlob = (blob: Blob, name?: string) => {
|
|
112 |
window.URL.revokeObjectURL(url);
|
113 |
};
|
114 |
|
115 |
-
export const downloadFile = async ({
|
116 |
-
id,
|
117 |
-
filename,
|
118 |
-
target,
|
119 |
-
}: {
|
120 |
-
id: string;
|
121 |
-
filename?: string;
|
122 |
-
target?: string;
|
123 |
-
}) => {
|
124 |
-
const response = await fileManagerService.getFile({}, id);
|
125 |
-
const blob = new Blob([response.data], { type: response.data.type });
|
126 |
-
downloadFileFromBlob(blob, filename);
|
127 |
-
};
|
128 |
-
|
129 |
export const downloadDocument = async ({
|
130 |
id,
|
131 |
filename,
|
|
|
112 |
window.URL.revokeObjectURL(url);
|
113 |
};
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
export const downloadDocument = async ({
|
116 |
id,
|
117 |
filename,
|