mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-02 22:07:31 +08:00
Feat: Add an update button to the graph page of the dataset. (#17571)
### Summary Feat: Add an update button to the graph page of the dataset.
This commit is contained in:
114
web/src/components/generate-log-button.tsx
Normal file
114
web/src/components/generate-log-button.tsx
Normal file
@@ -0,0 +1,114 @@
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Modal } from '@/components/ui/modal/modal';
|
||||
import { GenerateType, GenerateTypeMap } from '@/constants/knowledge';
|
||||
import { useUnBindTask } from '@/hooks/use-dataset-generate';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { formatDate } from '@/utils/date';
|
||||
import { lowerFirst } from 'lodash';
|
||||
import { Trash2 } from 'lucide-react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export type IGenerateLogButtonProps = {
|
||||
finish_at: string;
|
||||
task_id: string;
|
||||
};
|
||||
|
||||
export type IGenerateLogProps = IGenerateLogButtonProps & {
|
||||
id?: string;
|
||||
status: 0 | 1;
|
||||
message?: string;
|
||||
created_at?: string;
|
||||
updated_at?: string;
|
||||
type?: GenerateType;
|
||||
className?: string;
|
||||
onDelete?: () => void;
|
||||
};
|
||||
|
||||
export function GenerateLogButton(props: IGenerateLogProps) {
|
||||
const { t } = useTranslation();
|
||||
const { message, finish_at, type, onDelete } = props;
|
||||
|
||||
const { handleUnbindTask } = useUnBindTask();
|
||||
|
||||
const handleDeleteFunc = async () => {
|
||||
const data = await handleUnbindTask({
|
||||
type: GenerateTypeMap[type as GenerateType],
|
||||
});
|
||||
Modal.destroy();
|
||||
if (data.code === 0) {
|
||||
onDelete?.();
|
||||
}
|
||||
};
|
||||
|
||||
const typeLabel = type
|
||||
? t(`knowledgeDetails.${lowerFirst(type)}`)
|
||||
: t('knowledgeDetails.raptor');
|
||||
|
||||
const handleDelete = () => {
|
||||
Modal.show({
|
||||
visible: true,
|
||||
className: '!w-[560px]',
|
||||
title: t('common.delete') + ' ' + typeLabel,
|
||||
children: (
|
||||
<div
|
||||
className="text-sm text-text-secondary"
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: t('knowledgeConfiguration.deleteGenerateModalContent', {
|
||||
type: typeLabel,
|
||||
}),
|
||||
}}
|
||||
></div>
|
||||
),
|
||||
onVisibleChange: () => {
|
||||
Modal.destroy();
|
||||
},
|
||||
footer: (
|
||||
<div className="flex justify-end gap-2">
|
||||
<Button
|
||||
type="button"
|
||||
variant={'outline'}
|
||||
onClick={() => Modal.destroy()}
|
||||
>
|
||||
{t('dataflowParser.changeStepModalCancelText')}
|
||||
</Button>
|
||||
<Button
|
||||
type="button"
|
||||
variant={'secondary'}
|
||||
className="!bg-state-error text-text-primary"
|
||||
onClick={() => {
|
||||
handleDeleteFunc();
|
||||
}}
|
||||
>
|
||||
{t('common.delete')}
|
||||
</Button>
|
||||
</div>
|
||||
),
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
className={cn('flex bg-bg-card rounded-md py-1 px-3', props.className)}
|
||||
>
|
||||
<div className="flex items-center justify-between w-full">
|
||||
{finish_at && (
|
||||
<>
|
||||
<div>
|
||||
{message || t('knowledgeDetails.generatedOn')}
|
||||
{formatDate(finish_at)}
|
||||
</div>
|
||||
<Trash2
|
||||
size={14}
|
||||
className="cursor-pointer"
|
||||
onClick={(e) => {
|
||||
handleDelete();
|
||||
e.stopPropagation();
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
{!finish_at && <div>{t('knowledgeDetails.notGenerated')}</div>}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,19 +1,18 @@
|
||||
import { FormLayout } from '@/constants/form';
|
||||
import { DocumentParserType } from '@/constants/knowledge';
|
||||
import { DocumentParserType, GenerateType } from '@/constants/knowledge';
|
||||
import { useTranslate } from '@/hooks/common-hooks';
|
||||
import { cn } from '@/lib/utils';
|
||||
import { useKnowledgeBaseContext } from '@/pages/dataset/contexts/knowledge-base-context';
|
||||
import { LLMModelItem } from '@/pages/dataset/dataset-setting/configuration/common-item';
|
||||
import { GenerateType } from '@/pages/dataset/dataset/generate-button/constants';
|
||||
import {
|
||||
GenerateLogButton,
|
||||
IGenerateLogButtonProps,
|
||||
} from '@/pages/dataset/dataset/generate-button/generate-log-button';
|
||||
import { upperFirst } from 'lodash';
|
||||
import { useCallback, useMemo } from 'react';
|
||||
import { useFormContext, useWatch } from 'react-hook-form';
|
||||
import { EntityTypesFormField } from '../entity-types-form-field';
|
||||
import { FormContainer } from '../form-container';
|
||||
import {
|
||||
GenerateLogButton,
|
||||
IGenerateLogButtonProps,
|
||||
} from '../generate-log-button';
|
||||
import { SliderInputFormField } from '../slider-input-form-field';
|
||||
import {
|
||||
FormControl,
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
import { FormLayout } from '@/constants/form';
|
||||
import { DocumentParserType } from '@/constants/knowledge';
|
||||
import { DocumentParserType, GenerateType } from '@/constants/knowledge';
|
||||
import { useTranslate } from '@/hooks/common-hooks';
|
||||
import { GenerateType } from '@/pages/dataset/dataset/generate-button/constants';
|
||||
import {
|
||||
GenerateLogButton,
|
||||
IGenerateLogButtonProps,
|
||||
} from '@/pages/dataset/dataset/generate-button/generate-log-button';
|
||||
import random from 'lodash/random';
|
||||
import { Shuffle } from 'lucide-react';
|
||||
import { useCallback, useEffect, useMemo } from 'react';
|
||||
import { useFormContext, useWatch } from 'react-hook-form';
|
||||
import {
|
||||
GenerateLogButton,
|
||||
IGenerateLogButtonProps,
|
||||
} from '../generate-log-button';
|
||||
import { SliderInputFormField } from '../slider-input-form-field';
|
||||
import {
|
||||
FormControl,
|
||||
|
||||
Reference in New Issue
Block a user