Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
赵月辉
/
fastgpt-migrated
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Unverified
Commit
9d29b471
authored
Jun 24, 2024
by
Finley Ge
Committed by
GitHub
Jun 24, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: dataset fe adjusting (#1833)
parent
4a33e04a
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
287 additions
and
230 deletions
+287
-230
projects/app/src/pages/api/core/dataset/list.ts
+15
-2
projects/app/src/pages/dataset/list/component/List.tsx
+22
-212
projects/app/src/pages/dataset/list/context.tsx
+54
-9
projects/app/src/pages/dataset/list/index.tsx
+194
-5
projects/app/src/web/core/dataset/api.ts
+2
-2
No files found.
projects/app/src/pages/api/core/dataset/list.ts
View file @
9d29b471
...
...
@@ -11,11 +11,12 @@ import {
ReadPermissionVal
}
from
'@fastgpt/global/support/permission/constant'
;
import
{
MongoResourcePermission
}
from
'@fastgpt/service/support/permission/schema'
;
import
{
parseParentIdInMongo
}
from
'@fastgpt/global/common/parentFolder/utils'
;
import
{
DatasetDefaultPermission
}
from
'@fastgpt/global/support/permission/dataset/constant'
;
import
{
ParentIdType
}
from
'@fastgpt/global/common/parentFolder/type'
;
import
{
parseParentIdInMongo
}
from
'@fastgpt/global/common/parentFolder/utils'
;
async
function
handler
(
req
:
NextApiRequest
)
{
const
{
parentId
,
type
}
=
req
.
query
as
{
parentId
?:
string
;
type
?:
DatasetTypeEnum
};
const
{
parentId
,
type
}
=
req
.
body
as
{
parentId
:
ParentIdType
;
type
?:
DatasetTypeEnum
};
// 凭证校验
const
{
teamId
,
...
...
@@ -27,6 +28,18 @@ async function handler(req: NextApiRequest) {
authApiKey
:
true
,
per
:
ReadPermissionVal
});
console
.
log
(
'parentId'
,
parentId
,
'type'
,
type
,
'teamId'
,
teamId
,
'tmbId'
,
tmbId
,
'tmbPer'
,
tmbPer
);
const
[
myDatasets
,
rpList
]
=
await
Promise
.
all
([
MongoDataset
.
find
({
...
...
projects/app/src/pages/dataset/list/component/List.tsx
View file @
9d29b471
import
React
,
{
useMemo
,
useRef
,
useState
}
from
'react'
;
import
{
delDatasetById
,
getDatasetById
,
putDatasetById
,
postCreateDataset
}
from
'@/web/core/dataset/api'
;
import
{
EditFolderFormType
}
from
'@fastgpt/web/components/common/MyModal/EditFolderModal'
;
import
{
FolderImgUrl
}
from
'@fastgpt/global/common/file/image/constants'
;
import
{
useUserStore
}
from
'@/web/support/user/useUserStore'
;
import
{
putDatasetById
}
from
'@/web/core/dataset/api'
;
import
{
useDatasetStore
}
from
'@/web/core/dataset/store/dataset'
;
import
{
FolderIcon
}
from
'@fastgpt/global/common/file/image/constants'
;
import
{
Box
,
Flex
,
Grid
,
Button
,
Image
,
useDisclosure
}
from
'@chakra-ui/react'
;
import
{
Box
,
Flex
,
Grid
}
from
'@chakra-ui/react'
;
import
{
DatasetTypeEnum
,
DatasetTypeMap
}
from
'@fastgpt/global/core/dataset/constants'
;
import
MyMenu
from
'@fastgpt/web/components/common/MyMenu'
;
import
MyIcon
from
'@fastgpt/web/components/common/Icon'
;
...
...
@@ -19,7 +10,7 @@ import PermissionIconText from '@/components/support/permission/IconText';
import
DatasetTypeTag
from
'@/components/core/dataset/DatasetTypeTag'
;
import
Avatar
from
'@/components/Avatar'
;
import
{
useConfirm
}
from
'@fastgpt/web/hooks/useConfirm'
;
import
{
useRequest
,
useRequest2
}
from
'@fastgpt/web/hooks/useRequest'
;
import
{
useRequest
}
from
'@fastgpt/web/hooks/useRequest'
;
import
{
DatasetItemType
}
from
'@fastgpt/global/core/dataset/type'
;
import
{
useSystemStore
}
from
'@/web/common/system/useSystemStore'
;
import
{
useToast
}
from
'@fastgpt/web/hooks/useToast'
;
...
...
@@ -27,7 +18,6 @@ import { checkTeamExportDatasetLimit } from '@/web/support/user/team/api';
import
{
downloadFetch
}
from
'@/web/common/system/utils'
;
import
MyTooltip
from
'@fastgpt/web/components/common/MyTooltip'
;
import
dynamic
from
'next/dynamic'
;
import
{
EditResourceInfoFormType
}
from
'@/components/common/Modal/EditResourceModal'
;
import
{
useContextSelector
}
from
'use-context-selector'
;
import
{
DatasetContext
}
from
'../context'
;
import
{
...
...
@@ -40,37 +30,28 @@ import {
getCollaboratorList
,
postUpdateDatasetCollaborators
}
from
'@/web/core/dataset/api/collaborator'
;
import
FolderSlideCard
from
'@/components/common/folder/SlideCard'
;
import
EmptyTip
from
'@fastgpt/web/components/common/EmptyTip'
;
import
{
useFolderDrag
}
from
'@/components/common/folder/useFolderDrag'
;
import
MyBox
from
'@fastgpt/web/components/common/MyBox'
;
import
{
useI18n
}
from
'@/web/context/I18n'
;
import
{
useTranslation
}
from
'react-i18next'
;
import
{
AddIcon
}
from
'@chakra-ui/icons'
;
const
CreateModal
=
dynamic
(()
=>
import
(
'./CreateModal'
));
const
EditFolderModal
=
dynamic
(
()
=>
import
(
'@fastgpt/web/components/common/MyModal/EditFolderModal'
)
);
function
List
()
{
const
{
setLoading
,
isPc
}
=
useSystemStore
();
const
{
setLoading
}
=
useSystemStore
();
const
{
toast
}
=
useToast
();
const
{
t
}
=
useTranslation
();
const
{
commonT
}
=
useI18n
();
const
{
refetchDatasets
,
setMoveDatasetId
,
refetchPaths
}
=
useContextSelector
(
DatasetContext
,
(
v
)
=>
v
);
const
[
editPerDatasetIndex
,
setEditPerDatasetIndex
]
=
useState
<
number
>
();
const
{
myDatasets
,
loadMyDatasets
,
setMyDatasets
}
=
useDatasetStore
();
const
{
userInfo
}
=
useUserStore
();
const
{
isOpen
:
isOpenCreateModal
,
onOpen
:
onOpenCreateModal
,
onClose
:
onCloseCreateModal
}
=
useDisclosure
();
refetchDatasets
,
setMoveDatasetId
,
refetchPaths
,
refetchFolderDetail
,
editedDataset
,
setEditedDataset
,
onDelDataset
}
=
useContextSelector
(
DatasetContext
,
(
v
)
=>
v
);
const
[
editPerDatasetIndex
,
setEditPerDatasetIndex
]
=
useState
<
number
>
();
const
{
myDatasets
,
loadMyDatasets
}
=
useDatasetStore
();
const
{
getBoxProps
}
=
useFolderDrag
({
activeStyles
:
{
...
...
@@ -98,14 +79,6 @@ function List() {
const
{
parentId
=
null
}
=
router
.
query
as
{
parentId
?:
string
|
null
};
const
{
data
:
folderDetail
,
runAsync
:
refetchFolderDetail
}
=
useRequest2
(
()
=>
(
parentId
?
getDatasetById
(
parentId
)
:
Promise
.
resolve
(
undefined
)),
{
manual
:
false
,
refreshDeps
:
[
parentId
,
myDatasets
]
}
);
const
{
mutate
:
exportDataset
}
=
useRequest
({
mutationFn
:
async
(
dataset
:
DatasetItemType
)
=>
{
setLoading
(
true
);
...
...
@@ -128,25 +101,7 @@ function List() {
errorToast
:
t
(
'dataset.Export Dataset Limit Error'
)
});
const
{
mutate
:
onDelDataset
}
=
useRequest
({
mutationFn
:
async
(
id
:
string
)
=>
{
setLoading
(
true
);
await
delDatasetById
(
id
);
return
id
;
},
onSuccess
(
id
:
string
)
{
setMyDatasets
(
myDatasets
.
filter
((
item
)
=>
item
.
_id
!==
id
));
router
.
push
(
'/dataset/list'
);
},
onSettled
()
{
setLoading
(
false
);
},
successToast
:
t
(
'common.Delete Success'
),
errorToast
:
t
(
'dataset.Delete Dataset Error'
)
});
const
EditResourceModal
=
dynamic
(()
=>
import
(
'@/components/common/Modal/EditResourceModal'
));
const
[
editedDataset
,
setEditedDataset
]
=
useState
<
EditResourceInfoFormType
>
();
const
DeleteTipsMap
=
useRef
({
[
DatasetTypeEnum
.
folder
]:
t
(
'dataset.deleteFolderTips'
),
...
...
@@ -173,23 +128,18 @@ function List() {
const
onClickDeleteDataset
=
(
id
:
string
)
=>
{
openConfirm
(
()
=>
onDelDataset
(
id
),
()
=>
onDelDataset
(
id
).
then
(()
=>
{
refetchPaths
();
refetchDatasets
();
}),
undefined
,
DeleteTipsMap
.
current
[
DatasetTypeEnum
.
dataset
]
)();
};
const
[
editFolderData
,
setEditFolderData
]
=
useState
<
EditFolderFormType
>
();
return
(
<>
<
Flex
{
...
(
parentId
?
{
px
:
'8'
}
:
{})}
>
{
formatDatasets
.
length
>
0
&&
(
<
Grid
flexGrow=
{
1
}
...
...
@@ -290,7 +240,7 @@ function List() {
children
:
[
{
icon
:
'edit'
,
label
:
'编辑信息'
,
label
:
commonT
(
'dataset.Edit Info'
)
,
onClick
:
()
=>
setEditedDataset
({
id
:
dataset
.
_id
,
...
...
@@ -305,7 +255,7 @@ function List() {
onClick
:
()
=>
setMoveDatasetId
(
dataset
.
_id
)
},
...(
dataset
.
type
!=
=
DatasetTypeEnum
.
folder
...(
dataset
.
type
!
=
DatasetTypeEnum
.
folder
?
[
{
icon
:
'export'
,
...
...
@@ -327,17 +277,6 @@ function List() {
:
[])
]
},
{
children
:
[
{
icon
:
'export'
,
label
:
t
(
'Export'
),
onClick
:
()
=>
{
exportDataset
(
dataset
);
}
}
]
},
...(
dataset
.
permission
.
hasManagePer
?
[
{
...
...
@@ -395,100 +334,6 @@ function List() {
{
myDatasets
.
length
===
0
&&
(
<
EmptyTip
pt=
{
'35vh'
}
text=
{
t
(
'core.dataset.Empty Dataset Tips'
)
}
flexGrow=
"1"
></
EmptyTip
>
)
}
{
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
}
]
}
]
}
/>
)
}
{
!!
folderDetail
&&
isPc
&&
(
<
Box
pt=
{
[
4
,
6
]
}
ml=
{
[
4
,
6
]
}
>
<
FolderSlideCard
refreshDeps=
{
[
folderDetail
.
_id
]
}
name=
{
folderDetail
.
name
}
intro=
{
folderDetail
.
intro
}
onEdit=
{
()
=>
{
setEditedDataset
({
id
:
folderDetail
.
_id
,
name
:
folderDetail
.
name
,
intro
:
folderDetail
.
intro
});
}
}
onMove=
{
()
=>
setMoveDatasetId
(
folderDetail
.
_id
)
}
deleteTip=
{
t
(
'dataset.deleteFolderTips'
)
}
onDelete=
{
()
=>
onDelDataset
(
folderDetail
.
_id
)
}
defaultPer=
{
{
value
:
folderDetail
.
defaultPermission
,
defaultValue
:
DatasetDefaultPermission
,
onChange
:
(
e
)
=>
{
return
putDatasetById
({
id
:
folderDetail
.
_id
,
defaultPermission
:
e
});
}
}
}
managePer=
{
{
permission
:
folderDetail
.
permission
,
onGetCollaboratorList
:
()
=>
getCollaboratorList
(
folderDetail
.
_id
),
permissionList
:
DatasetPermissionList
,
onUpdateCollaborators
:
({
tmbIds
,
permission
}:
{
tmbIds
:
string
[];
permission
:
number
;
})
=>
{
return
postUpdateDatasetCollaborators
({
tmbIds
,
permission
,
datasetId
:
folderDetail
.
_id
});
},
onDelOneCollaborator
:
(
tmbId
:
string
)
=>
deleteDatasetCollaborators
({
datasetId
:
folderDetail
.
_id
,
tmbId
})
}
}
/>
</
Box
>
)
}
</
Flex
>
<
ConfirmModal
/>
{
editedDataset
&&
(
<
EditResourceModal
...
...
@@ -551,42 +396,7 @@ function List() {
onClose=
{
()
=>
setEditPerDatasetIndex
(
undefined
)
}
/>
)
}
{
!!
editFolderData
&&
(
<
EditFolderModal
onClose=
{
()
=>
setEditFolderData
(
undefined
)
}
onCreate=
{
async
({
name
})
=>
{
try
{
await
postCreateDataset
({
parentId
:
parentId
||
undefined
,
name
,
type
:
DatasetTypeEnum
.
folder
,
avatar
:
FolderImgUrl
,
intro
:
''
});
refetchDatasets
();
refetchPaths
();
}
catch
(
error
)
{
return
Promise
.
reject
(
error
);
}
}
}
onEdit=
{
async
({
name
,
intro
,
id
})
=>
{
try
{
await
putDatasetById
({
id
,
name
,
intro
});
refetchDatasets
();
refetchPaths
();
}
catch
(
error
)
{
return
Promise
.
reject
(
error
);
}
}
}
/>
)
}
{
isOpenCreateModal
&&
(
<
CreateModal
onClose=
{
onCloseCreateModal
}
parentId=
{
parentId
||
undefined
}
/>
)
}
<
ConfirmModal
/>
</>
);
}
...
...
projects/app/src/pages/dataset/list/context.tsx
View file @
9d29b471
import
{
getDatasetPaths
,
putDatasetById
}
from
'@/web/core/dataset/api'
;
import
{
getDatasetPaths
,
putDatasetById
,
getDatasets
,
getDatasetById
,
delDatasetById
}
from
'@/web/core/dataset/api'
;
import
{
useDatasetStore
}
from
'@/web/core/dataset/store/dataset'
;
import
{
GetResourceFolderListProps
,
...
...
@@ -9,18 +15,28 @@ import { useRouter } from 'next/router';
import
React
,
{
useCallback
,
useState
}
from
'react'
;
import
{
createContext
}
from
'use-context-selector'
;
import
{
useI18n
}
from
'@/web/context/I18n'
;
import
{
useRequest2
}
from
'@fastgpt/web/hooks/useRequest'
;
import
{
useRequest
,
useRequest
2
}
from
'@fastgpt/web/hooks/useRequest'
;
import
{
DatasetUpdateBody
}
from
'@fastgpt/global/core/dataset/api'
;
import
dynamic
from
'next/dynamic'
;
import
{
DatasetTypeEnum
}
from
'@fastgpt/global/core/dataset/constants'
;
import
{
DatasetItemType
}
from
'@fastgpt/global/core/dataset/type'
;
import
{
EditResourceInfoFormType
}
from
'@/components/common/Modal/EditResourceModal'
;
import
{
useSystemStore
}
from
'@/web/common/system/useSystemStore'
;
import
{
useTranslation
}
from
'react-i18next'
;
const
MoveModal
=
dynamic
(()
=>
import
(
'@/components/common/folder/MoveModal'
));
export
type
DatasetContextType
=
{
refetchDatasets
:
()
=>
void
;
refetchPaths
:
()
=>
void
;
refetchFolderDetail
:
()
=>
void
;
isFetchingDatasets
:
boolean
;
setMoveDatasetId
:
(
id
:
string
)
=>
void
;
paths
:
ParentTreePathItemType
[];
folderDetail
?:
DatasetItemType
;
editedDataset
?:
EditResourceInfoFormType
;
setEditedDataset
:
(
data
?:
EditResourceInfoFormType
)
=>
void
;
onDelDataset
:
(
id
:
string
)
=>
Promise
<
void
>
;
};
export
const
DatasetContext
=
createContext
<
DatasetContextType
>
({
...
...
@@ -28,22 +44,39 @@ export const DatasetContext = createContext<DatasetContextType>({
isFetchingDatasets
:
false
,
setMoveDatasetId
:
()
=>
{},
refetchPaths
:
()
=>
{},
paths
:
[]
paths
:
[],
refetchFolderDetail
:
()
=>
{},
folderDetail
:
{}
as
any
,
editedDataset
:
{}
as
any
,
setEditedDataset
:
()
=>
{},
onDelDataset
:
()
=>
Promise
.
resolve
()
});
function
DatasetContextProvider
({
children
}:
{
children
:
React
.
ReactNode
})
{
const
router
=
useRouter
();
const
{
commonT
}
=
useI18n
();
const
{
t
}
=
useTranslation
();
const
{
parentId
=
null
}
=
router
.
query
as
{
parentId
?:
string
|
null
};
const
{
loadMyDatasets
}
=
useDatasetStore
();
const
{
myDatasets
,
loadMyDatasets
}
=
useDatasetStore
();
const
getDatasetFolderList
=
useCallback
(
async
({
parentId
}:
GetResourceFolderListProps
)
=>
{
const
res
=
await
getDatasetPaths
(
parentId
);
const
{
data
:
folderDetail
,
runAsync
:
refetchFolderDetail
}
=
useRequest2
(
()
=>
(
parentId
?
getDatasetById
(
parentId
)
:
Promise
.
resolve
(
undefined
)),
{
manual
:
false
,
refreshDeps
:
[
parentId
,
myDatasets
]
}
);
const
getDatasetFolderList
=
useCallback
(({
parentId
}:
GetResourceFolderListProps
)
=>
{
return
getDatasets
({
parentId
,
type
:
DatasetTypeEnum
.
folder
}).
then
((
res
)
=>
{
return
res
.
map
((
item
)
=>
({
id
:
item
.
parentI
d
,
name
:
item
.
parentN
ame
id
:
item
.
_i
d
,
name
:
item
.
n
ame
}));
});
},
[]);
const
{
data
:
paths
=
[],
runAsync
:
refetchPaths
}
=
useRequest2
(
...
...
@@ -82,12 +115,24 @@ function DatasetContextProvider({ children }: { children: React.ReactNode }) {
[
moveDatasetId
,
onUpdateDataset
]
);
const
[
editedDataset
,
setEditedDataset
]
=
useState
<
EditResourceInfoFormType
>
();
const
{
runAsync
:
onDelDataset
}
=
useRequest2
(
delDatasetById
,
{
successToast
:
t
(
'common.Delete Success'
),
errorToast
:
t
(
'dataset.Delete Dataset Error'
)
});
const
contextValue
=
{
refetchDatasets
,
isFetchingDatasets
,
setMoveDatasetId
,
paths
,
refetchPaths
refetchPaths
,
refetchFolderDetail
,
folderDetail
,
editedDataset
,
setEditedDataset
,
onDelDataset
};
return
(
...
...
projects/app/src/pages/dataset/list/index.tsx
View file @
9d29b471
import
React
from
'react'
;
import
{
Box
,
Flex
,
Image
}
from
'@chakra-ui/react'
;
import
React
,
{
useState
}
from
'react'
;
import
{
Box
,
Flex
,
Image
,
Button
,
useDisclosure
}
from
'@chakra-ui/react'
;
import
{
useRouter
}
from
'next/router'
;
import
PageContainer
from
'@/components/PageContainer'
;
import
{
useTranslation
}
from
'next-i18next'
;
...
...
@@ -10,21 +10,69 @@ import List from './component/List';
import
{
DatasetContext
}
from
'./context'
;
import
DatasetContextProvider
from
'./context'
;
import
{
useContextSelector
}
from
'use-context-selector'
;
import
MyMenu
from
'@fastgpt/web/components/common/MyMenu'
;
import
{
AddIcon
}
from
'@chakra-ui/icons'
;
import
{
useUserStore
}
from
'@/web/support/user/useUserStore'
;
import
MyIcon
from
'@fastgpt/web/components/common/Icon'
;
import
{
FolderIcon
,
FolderImgUrl
}
from
'@fastgpt/global/common/file/image/constants'
;
import
{
EditFolderFormType
}
from
'@fastgpt/web/components/common/MyModal/EditFolderModal'
;
import
dynamic
from
'next/dynamic'
;
import
{
postCreateDataset
,
putDatasetById
}
from
'@/web/core/dataset/api'
;
import
{
DatasetTypeEnum
}
from
'@fastgpt/global/core/dataset/constants'
;
import
FolderSlideCard
from
'@/components/common/folder/SlideCard'
;
import
{
useSystemStore
}
from
'@/web/common/system/useSystemStore'
;
import
{
DatasetDefaultPermission
,
DatasetPermissionList
}
from
'@fastgpt/global/support/permission/dataset/constant'
;
import
{
postUpdateDatasetCollaborators
,
deleteDatasetCollaborators
,
getCollaboratorList
}
from
'@/web/core/dataset/api/collaborator'
;
const
EditFolderModal
=
dynamic
(
()
=>
import
(
'@fastgpt/web/components/common/MyModal/EditFolderModal'
)
);
const
CreateModal
=
dynamic
(()
=>
import
(
'./component/CreateModal'
));
const
Dataset
=
()
=>
{
const
{
isPc
}
=
useSystemStore
();
const
{
t
}
=
useTranslation
();
const
router
=
useRouter
();
const
{
parentId
}
=
router
.
query
as
{
parentId
:
string
};
const
{
myDatasets
}
=
useDatasetStore
();
const
{
paths
,
isFetchingDatasets
}
=
useContextSelector
(
DatasetContext
,
(
v
)
=>
v
);
const
{
paths
,
isFetchingDatasets
,
refetchPaths
,
refetchDatasets
,
folderDetail
,
setEditedDataset
,
setMoveDatasetId
,
onDelDataset
}
=
useContextSelector
(
DatasetContext
,
(
v
)
=>
v
);
const
{
userInfo
}
=
useUserStore
();
const
[
editFolderData
,
setEditFolderData
]
=
useState
<
EditFolderFormType
>
();
const
{
isOpen
:
isOpenCreateModal
,
onOpen
:
onOpenCreateModal
,
onClose
:
onCloseCreateModal
}
=
useDisclosure
();
return
(
<
PageContainer
isLoading=
{
myDatasets
.
length
===
0
&&
isFetchingDatasets
}
insertProps=
{
{
px
:
[
5
,
'48px'
]
}
}
>
<
Flex
pt=
{
[
4
,
'30px'
]
}
alignItems=
{
'center'
}
justifyContent=
{
'space-between'
}
>
{
/* url path */
}
<
Flex
pt=
{
[
8
,
10
]
}
pr=
{
folderDetail
?
[
4
,
6
]
:
[
4
,
10
]
}
>
<
Flex
flexGrow=
{
1
}
flexDirection=
"column"
>
<
Flex
alignItems=
{
'center'
}
justifyContent=
{
'space-between'
}
>
<
ParentPaths
paths=
{
paths
}
FirstPathDom=
{
...
...
@@ -43,8 +91,149 @@ const Dataset = () => {
});
}
}
/>
{
userInfo
?.
team
?.
permission
.
hasWritePer
&&
(
<
MyMenu
offset=
{
[
-
30
,
5
]
}
width=
{
120
}
Button=
{
<
Button
variant=
{
'primary'
}
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
>
<
Box
flexGrow=
{
1
}
>
<
List
/>
</
Box
>
</
Flex
>
{
!!
folderDetail
&&
isPc
&&
(
<
Box
ml=
"6"
>
<
FolderSlideCard
refreshDeps=
{
[
folderDetail
.
_id
]
}
name=
{
folderDetail
.
name
}
intro=
{
folderDetail
.
intro
}
onEdit=
{
()
=>
{
setEditedDataset
({
id
:
folderDetail
.
_id
,
name
:
folderDetail
.
name
,
intro
:
folderDetail
.
intro
});
}
}
onMove=
{
()
=>
setMoveDatasetId
(
folderDetail
.
_id
)
}
deleteTip=
{
t
(
'dataset.deleteFolderTips'
)
}
onDelete=
{
()
=>
onDelDataset
(
folderDetail
.
_id
).
then
(()
=>
{
router
.
replace
({
query
:
{
...
router
.
query
,
parentId
:
folderDetail
.
parentId
}
});
})
}
defaultPer=
{
{
value
:
folderDetail
.
defaultPermission
,
defaultValue
:
DatasetDefaultPermission
,
onChange
:
(
e
)
=>
{
return
putDatasetById
({
id
:
folderDetail
.
_id
,
defaultPermission
:
e
});
}
}
}
managePer=
{
{
permission
:
folderDetail
.
permission
,
onGetCollaboratorList
:
()
=>
getCollaboratorList
(
folderDetail
.
_id
),
permissionList
:
DatasetPermissionList
,
onUpdateCollaborators
:
({
tmbIds
,
permission
}:
{
tmbIds
:
string
[];
permission
:
number
;
})
=>
{
return
postUpdateDatasetCollaborators
({
tmbIds
,
permission
,
datasetId
:
folderDetail
.
_id
});
},
onDelOneCollaborator
:
(
tmbId
:
string
)
=>
deleteDatasetCollaborators
({
datasetId
:
folderDetail
.
_id
,
tmbId
})
}
}
/>
</
Box
>
)
}
</
Flex
>
{
!!
editFolderData
&&
(
<
EditFolderModal
onClose=
{
()
=>
setEditFolderData
(
undefined
)
}
onCreate=
{
async
({
name
})
=>
{
try
{
await
postCreateDataset
({
parentId
:
parentId
||
undefined
,
name
,
type
:
DatasetTypeEnum
.
folder
,
avatar
:
FolderImgUrl
,
intro
:
''
});
refetchDatasets
();
refetchPaths
();
}
catch
(
error
)
{
return
Promise
.
reject
(
error
);
}
}
}
onEdit=
{
async
({
name
,
intro
,
id
})
=>
{
try
{
await
putDatasetById
({
id
,
name
,
intro
});
refetchDatasets
();
refetchPaths
();
}
catch
(
error
)
{
return
Promise
.
reject
(
error
);
}
}
}
/>
)
}
{
isOpenCreateModal
&&
(
<
CreateModal
onClose=
{
onCloseCreateModal
}
parentId=
{
parentId
||
undefined
}
/>
)
}
</
PageContainer
>
);
};
...
...
projects/app/src/web/core/dataset/api.ts
View file @
9d29b471
...
...
@@ -51,8 +51,8 @@ import type {
import
type
{
readCollectionSourceResponse
}
from
'@/pages/api/core/dataset/collection/read'
;
/* ======================== dataset ======================= */
export
const
getDatasets
=
(
data
:
{
parentId
?:
string
;
type
?:
DatasetTypeEnum
})
=>
GE
T
<
DatasetListItemType
[]
>
(
`/core/dataset/list`
,
data
);
export
const
getDatasets
=
(
data
:
{
parentId
?:
ParentIdType
;
type
?:
DatasetTypeEnum
})
=>
POS
T
<
DatasetListItemType
[]
>
(
`/core/dataset/list`
,
data
);
/**
* get type=dataset list
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment