Dataset frontend style adjusting (#1820)

* feat: dataset controllers

feat: dataset schema

fix: add missing type to dataset schema
Signed-off-by: FinleyGe <m13203533462@163.com>

* chore: use new auth method

Signed-off-by: FinleyGe <m13203533462@163.com>

* feat: finish the dataset permission

fix: ts errors
Signed-off-by: FinleyGe <m13203533462@163.com>

* chore: adjust the code

* chore: adjust the code

* chore: dataset fe adjusting

* fix: double delete confirm

---------

Signed-off-by: FinleyGe <m13203533462@163.com>
This commit is contained in:
Finley Ge
2024-06-24 14:58:44 +08:00
committed by GitHub
parent a9ab9ebe8e
commit 4a33e04a08
11 changed files with 12200 additions and 9324 deletions

View File

@@ -1,55 +1,32 @@
import React from 'react';
import { Box, Flex, useDisclosure, Image, Button } from '@chakra-ui/react';
import { Box, Flex, Image } from '@chakra-ui/react';
import { useRouter } from 'next/router';
import PageContainer from '@/components/PageContainer';
import { AddIcon } from '@chakra-ui/icons';
import { postCreateDataset } from '@/web/core/dataset/api';
import { useTranslation } from 'next-i18next';
import MyIcon from '@fastgpt/web/components/common/Icon';
import { serviceSideProps } from '@/web/common/utils/i18n';
import dynamic from 'next/dynamic';
import { DatasetTypeEnum } from '@fastgpt/global/core/dataset/constants';
import { FolderImgUrl, FolderIcon } from '@fastgpt/global/common/file/image/constants';
import MyMenu from '@fastgpt/web/components/common/MyMenu';
import EditFolderModal, { useEditFolder } from '../component/EditFolderModal';
import { useUserStore } from '@/web/support/user/useUserStore';
import ParentPaths from '@/components/common/ParentPaths';
import ParentPaths from '@/components/common/folder/Path';
import { useDatasetStore } from '@/web/core/dataset/store/dataset';
import List from './component/List';
import { DatasetContext } from './context';
import DatasetContextProvider from './context';
import { useContextSelector } from 'use-context-selector';
const CreateModal = dynamic(() => import('./component/CreateModal'), { ssr: false });
const Dataset = () => {
const { t } = useTranslation();
const router = useRouter();
const { userInfo } = useUserStore();
const { myDatasets } = useDatasetStore();
const { parentId } = router.query as { parentId: string };
const {
isOpen: isOpenCreateModal,
onOpen: onOpenCreateModal,
onClose: onCloseCreateModal
} = useDisclosure();
const { editFolderData, setEditFolderData } = useEditFolder();
const { paths, refetch, isFetching } = useContextSelector(DatasetContext, (v) => v);
const { paths, isFetchingDatasets } = useContextSelector(DatasetContext, (v) => v);
return (
<PageContainer
isLoading={myDatasets.length === 0 && isFetching}
isLoading={myDatasets.length === 0 && isFetchingDatasets}
insertProps={{ px: [5, '48px'] }}
>
<Flex pt={[4, '30px']} alignItems={'center'} justifyContent={'space-between'}>
{/* url path */}
<ParentPaths
paths={paths.map((path) => ({
parentId: path.parentId,
parentName: path.parentName
}))}
paths={paths}
FirstPathDom={
<Flex flex={1} alignItems={'center'}>
<Image src={'/imgs/workflow/db.png'} alt={''} mr={2} h={'24px'} />
@@ -66,68 +43,8 @@ const Dataset = () => {
});
}}
/>
{/* create icon */}
{userInfo?.team?.permission.hasWritePer && (
<MyMenu
offset={[-30, 5]}
width={120}
Button={
<Button variant={'primaryOutline'} px={0}>
<Flex alignItems={'center'} px={'20px'}>
<AddIcon mr={2} />
<Box>{t('common.Create New')}</Box>
</Flex>
</Button>
}
menuList={[
{
children: [
{
label: (
<Flex>
<MyIcon name={FolderIcon} w={'20px'} mr={1} />
{t('Folder')}
</Flex>
),
onClick: () => setEditFolderData({})
},
{
label: (
<Flex>
<Image src={'/imgs/workflow/db.png'} alt={''} w={'20px'} mr={1} />
{t('core.dataset.Dataset')}
</Flex>
),
onClick: onOpenCreateModal
}
]
}
]}
/>
)}
</Flex>
<List />
{isOpenCreateModal && <CreateModal onClose={onCloseCreateModal} parentId={parentId} />}
{!!editFolderData && (
<EditFolderModal
onClose={() => setEditFolderData(undefined)}
editCallback={async (name) => {
try {
await postCreateDataset({
parentId,
name,
type: DatasetTypeEnum.folder,
avatar: FolderImgUrl,
intro: ''
});
refetch();
} catch (error) {
return Promise.reject(error);
}
}}
isEdit={false}
/>
)}
</PageContainer>
);
};