Feat: Add tooltip to question item of ChunkCreatingModal #3873 (#3880)

### 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)
This commit is contained in:
balibabu 2024-12-05 17:03:20 +08:00 committed by GitHub
parent 1f0a153d0e
commit 3a0e9f9263
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 39 additions and 35 deletions

View File

@ -1,8 +1,21 @@
.tweenGroup {
display: inline-block;
:global(.ant-tag) {
margin-bottom: 8px;
font-size: 14px;
padding: 2px 8px;
display: flex;
gap: 8px;
flex-wrap: wrap;
width: 100%;
margin-bottom: 8px;
}
.tag {
max-width: 100%;
margin: 0;
padding: 2px 20px 2px 4px;
font-size: 14px;
.textEllipsis();
position: relative;
:global(.ant-tag-close-icon) {
position: absolute;
top: 7px;
right: 4px;
}
}

View File

@ -45,8 +45,10 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
};
const forMap = (tag: string) => {
const tagElem = (
return (
<Tag
key={tag}
className={styles.tag}
closable
onClose={(e) => {
e.preventDefault();
@ -56,11 +58,6 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
{tag}
</Tag>
);
return (
<span key={tag} style={{ display: 'inline-block' }}>
{tagElem}
</span>
);
};
const tagChild = tags?.map(forMap);
@ -71,8 +68,8 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
};
return (
<>
<span>
<div>
{Array.isArray(tagChild) && tagChild.length > 0 && (
<TweenOneGroup
className={styles.tweenGroup}
enter={{
@ -91,7 +88,7 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
>
{tagChild}
</TweenOneGroup>
</span>
)}
{inputVisible ? (
<Input
ref={inputRef}
@ -107,7 +104,7 @@ const EditTag = ({ tags, setTags }: EditTagsProps) => {
<PlusOutlined />
</Tag>
)}
</>
</div>
);
};

View File

@ -326,6 +326,7 @@ When you want to search the given knowledge base at first place, set a higher pa
graph: 'Knowledge graph',
mind: 'Mind map',
question: 'Question',
questionTip: `If there're given questions, the embedding of the chunk will be based on them.`,
},
chat: {
newConversation: 'New conversation',

View File

@ -310,6 +310,7 @@ export default {
graph: '知識圖譜',
mind: '心智圖',
question: '問題',
questionTip: `如果存在給定的問題,則區塊的嵌入將基於它們。`,
},
chat: {
newConversation: '新會話',

View File

@ -327,6 +327,7 @@ export default {
graph: '知识图谱',
mind: '思维导图',
question: '问题',
questionTip: `如果有给定的问题,则块的嵌入将基于它们。`,
},
chat: {
newConversation: '新会话',

View File

@ -1,8 +1,8 @@
import EditTag from '@/components/edit-tag';
import { useFetchChunk } from '@/hooks/chunk-hooks';
import { IModalProps } from '@/interfaces/common';
import { DeleteOutlined } from '@ant-design/icons';
import { Divider, Form, Input, Modal, Space, Switch } from 'antd';
import { DeleteOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { Divider, Form, Input, Modal, Space, Switch, Tooltip } from 'antd';
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { useDeleteChunkByIds } from '../../hooks';
@ -41,7 +41,7 @@ const ChunkCreatingModal: React.FC<IModalProps<any> & kFProps> = ({
form.setFieldsValue({ content: content_with_weight });
setKeywords(important_kwd);
setQuestion(question_kwd);
setChecked(available_int === 1);
setChecked(available_int !== 0);
}
if (!chunkId) {
@ -93,11 +93,16 @@ const ChunkCreatingModal: React.FC<IModalProps<any> & kFProps> = ({
</Form.Item>
</Form>
<section>
<p className="mb-2">{t('chunk.keyword')} *</p>
<p className="mb-2">{t('chunk.keyword')} </p>
<EditTag tags={keywords} setTags={setKeywords} />
</section>
<section className="pt-2">
<p className="mb-2">{t('chunk.question')} *</p>
<section className="mt-4">
<div className="flex items-center gap-2 mb-2">
<span>{t('chunk.question')}</span>
<Tooltip title={t('chunk.questionTip')}>
<QuestionCircleOutlined className="text-xs" />
</Tooltip>
</div>
<EditTag tags={question} setTags={setQuestion} />
</section>
{chunkId && (

View File

@ -112,20 +112,6 @@ export const downloadFileFromBlob = (blob: Blob, name?: string) => {
window.URL.revokeObjectURL(url);
};
export const downloadFile = async ({
id,
filename,
target,
}: {
id: string;
filename?: string;
target?: string;
}) => {
const response = await fileManagerService.getFile({}, id);
const blob = new Blob([response.data], { type: response.data.type });
downloadFileFromBlob(blob, filename);
};
export const downloadDocument = async ({
id,
filename,