feat: add chunkText to messageText to distinguish table rows and when parsing, the delete and other buttons are set to disabled. (#130)

* feat: when parsing, the delete and other buttons are set to disabled.

* feat: add chunkText to messageText to distinguish table rows
This commit is contained in:
balibabu 2024-03-19 10:20:50 +08:00 committed by GitHub
parent c1734be59d
commit d56c9e7630
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 57 additions and 14 deletions

View File

@ -0,0 +1,3 @@
.iconButton {
padding: 4px 8px;
}

View File

@ -3,6 +3,9 @@ import { IKnowledgeFile } from '@/interfaces/database/knowledge';
import { DeleteOutlined, EditOutlined, ToolOutlined } from '@ant-design/icons';
import { Button, Dropdown, MenuProps, Space, Tooltip } from 'antd';
import { useDispatch } from 'umi';
import { isParserRunning } from '../utils';
import styles from './index.less';
interface IProps {
knowledgeBaseId: string;
@ -17,6 +20,7 @@ const ParsingActionCell = ({
}: IProps) => {
const dispatch = useDispatch();
const documentId = record.id;
const isRunning = isParserRunning(record.run);
const removeDocument = () => {
dispatch({
@ -29,7 +33,9 @@ const ParsingActionCell = ({
};
const onRmDocument = () => {
showDeleteConfirm({ onOk: removeDocument });
if (!isRunning) {
showDeleteConfirm({ onOk: removeDocument });
}
};
const setCurrentRecord = () => {
@ -49,11 +55,13 @@ const ParsingActionCell = ({
};
const showRenameModal = () => {
setCurrentRecord();
dispatch({
type: 'kFModel/setIsShowRenameModal',
payload: true,
});
if (!isRunning) {
setCurrentRecord();
dispatch({
type: 'kFModel/setIsShowRenameModal',
payload: true,
});
}
};
const chunkItems: MenuProps['items'] = [
@ -70,14 +78,38 @@ const ParsingActionCell = ({
];
return (
<Space size={'middle'}>
<Dropdown menu={{ items: chunkItems }} trigger={['click']}>
<ToolOutlined size={20} onClick={setDocumentAndParserId} />
<Space size={0}>
<Dropdown
menu={{ items: chunkItems }}
trigger={['click']}
disabled={isRunning}
>
<Button
type="text"
onClick={setDocumentAndParserId}
className={styles.iconButton}
>
<ToolOutlined size={20} />
</Button>
</Dropdown>
<Tooltip title="Rename">
<EditOutlined size={20} onClick={showRenameModal} />
<Button
type="text"
disabled={isRunning}
onClick={showRenameModal}
className={styles.iconButton}
>
<EditOutlined size={20} />
</Button>
</Tooltip>
<DeleteOutlined size={20} onClick={onRmDocument} />
<Button
type="text"
disabled={isRunning}
onClick={onRmDocument}
className={styles.iconButton}
>
<DeleteOutlined size={20} />
</Button>
</Space>
);
};

View File

@ -6,6 +6,7 @@ import { Badge, DescriptionsProps, Flex, Popover, Space, Tag } from 'antd';
import reactStringReplace from 'react-string-replace';
import { useDispatch } from 'umi';
import { RunningStatus, RunningStatusMap } from '../constant';
import { isParserRunning } from '../utils';
import styles from './index.less';
const iconMap = {
@ -77,7 +78,7 @@ export const ParsingStatusCell = ({ record }: IProps) => {
const text = record.run;
const runningStatus = RunningStatusMap[text];
const isRunning = text === RunningStatus.RUNNING;
const isRunning = isParserRunning(text);
const OperationIcon = iconMap[text];

View File

@ -0,0 +1,6 @@
import { RunningStatus } from './constant';
export const isParserRunning = (text: RunningStatus) => {
const isRunning = text === RunningStatus.RUNNING;
return isRunning;
};

View File

@ -25,6 +25,7 @@
flex-direction: row-reverse;
}
.messageText {
.chunkText();
padding: 0 14px;
background-color: rgba(249, 250, 251, 1);
word-break: break-all;

View File

@ -262,12 +262,12 @@ const ChatContainer = () => {
if (!loading) {
setValue('');
addNewestConversation(value);
sendMessage(value);
sendMessage(value.trim());
}
};
const handleInputChange: ChangeEventHandler<HTMLInputElement> = (e) => {
const value = e.target.value.trim();
const value = e.target.value;
const nextValue = value.replaceAll('\\n', '\n').replaceAll('\\t', '\t');
setValue(nextValue);
};