diff --git a/pages/fdo/show/[prefix]/[suffix].tsx b/pages/fdo/show/[prefix]/[suffix].tsx index 638036758ebb2a0fd6e2edaad247cd9df08cd8e4..8412158bd4dc5b874112f05e9d7316b3daadd3e5 100644 --- a/pages/fdo/show/[prefix]/[suffix].tsx +++ b/pages/fdo/show/[prefix]/[suffix].tsx @@ -11,6 +11,20 @@ import Box from '@mui/material/Box' import Stack from '@mui/material/Stack' import Chip from '@mui/material/Chip' import Link from '@mui/material/Link' +import StorageIcon from '@mui/icons-material/Storage' +import Paper from '@mui/material/Paper' +import RadioButtonUncheckedIcon from '@mui/icons-material/RadioButtonUnchecked' +import Divider from '@mui/material/Divider' +import MenuList from '@mui/material/MenuList' +import MenuItem from '@mui/material/MenuItem' +import ListItemText from '@mui/material/ListItemText' +import ListItemIcon from '@mui/material/ListItemIcon' +import ContentPaste from '@mui/icons-material/ContentPaste' +import Cloud from '@mui/icons-material/Cloud' +import VerifiedIcon from '@mui/icons-material/Verified' +import ReportIcon from '@mui/icons-material/Report' + +const resolvePid = (pid: string) => `https://hdl.handle.net/${pid}` const ShowFDO = () => { const { params } = useParsed() @@ -27,12 +41,13 @@ const ShowFDO = () => { }) if (isError) { - console.log('error', error) return <ErrorComponent message={t('fdo.show.handle_not_found', 'Handle not found.')} /> } - console.log('show', data) - const handleUrl = `https://hdl.handle.net/${showId}` + const handleUrl = resolvePid(showId) + const dataPid = data?.data?.dataPid + const metadataPid = data?.data?.metadataPid + const profilePid = '21.T11969/141bf451b18a79d0fe66' return ( <Show @@ -40,10 +55,73 @@ const ShowFDO = () => { title={<Typography variant="h5">{ showId }{ !isLoading && (data?.data?.isFdo ? <Chip label="FDO" color="success" variant="outlined" /> : <Chip label="Not an FDO" color="error" variant="outlined" />)}</Typography>} > { isLoading && <Box sx={{ textAlign: 'center' }}><CircularProgress/></Box>} - <Stack> - <Box><Link href={handleUrl}>To Repository</Link></Box> - <Box><Link href={`${handleUrl}?noredirect`}>View Handle Record</Link></Box> - </Stack> + + <Paper sx={{ width: 320, maxWidth: '100%' }}> + <MenuList> + <MenuItem> + <ListItemIcon> + <RadioButtonUncheckedIcon/> + </ListItemIcon> + <ListItemText> + <Link href={`${handleUrl}?noredirect`}>Handle Record</Link> + </ListItemText> + </MenuItem> + <MenuItem> + <ListItemIcon> + <StorageIcon/> + </ListItemIcon> + <ListItemText> + <Link href={handleUrl}>To Repository</Link> + </ListItemText> + </MenuItem> + { data?.data?.isFdo && (<> + <Divider /> + <MenuItem> + <ListItemIcon> + { dataPid + ? <VerifiedIcon color="success"/> + : <ReportIcon color="error"/> + } + </ListItemIcon> + <ListItemText> + { metadataPid + ? <Link href={resolvePid(dataPid)}>Data</Link> + : 'Data not available.' + } + </ListItemText> + </MenuItem> + <MenuItem> + <ListItemIcon> + { metadataPid + ? <VerifiedIcon color="success"/> + : <ReportIcon color="error"/> + } + </ListItemIcon> + <ListItemText> + { metadataPid + ? <Link href={resolvePid(metadataPid)}>Metadata</Link> + : 'Metadata not available.' + } + </ListItemText> + </MenuItem> + <MenuItem> + <ListItemIcon> + { profilePid + ? <VerifiedIcon color="success"/> + : <ReportIcon color="error"/> + } + </ListItemIcon> + <ListItemText> + { profilePid + ? <Link href={resolvePid(profilePid)}>Profile</Link> + : 'Profile not available.' + } + </ListItemText> + </MenuItem> + </>)} + </MenuList> + </Paper> + </Show> ) diff --git a/src/components/fdos/list.tsx b/src/components/fdos/list.tsx index 3e7bd98a4795ef25bfe2aa417756a7f4d4ba4d0a..77b909157d8f620eaff6b542da49570cf3472b3b 100644 --- a/src/components/fdos/list.tsx +++ b/src/components/fdos/list.tsx @@ -1,5 +1,6 @@ -import { IResourceComponentsProps } from '@refinedev/core' +import { useTranslate, IResourceComponentsProps } from '@refinedev/core' import Link from '@mui/material/Link' +import Typography from '@mui/material/Typography' import { List, useDataGrid } from '@refinedev/mui' @@ -28,24 +29,30 @@ const columns: Array<GridColDef<OperationsLogRecord>> = [ return <Link href={`/fdo/show/${params.id}`}>{params.id}</Link> } }, { - field: 'datetime', + field: 'timestamp', headerName: 'Datetime', type: 'string', - width: 120 + width: 240 + }, { + field: 'repository', + headerName: 'Repository', + type: 'string', + width: 180 } ] export const LoggingList: React.FC<IResourceComponentsProps> = () => { + const t = useTranslate(); const { dataGridProps } = useDataGrid<OperationsLogRecord>({ resource: 'fdo' }) const rows = dataGridProps.rows.map((record: OperationsLogRecord, index) => { - return { id: record?.attributes?.fdo?.pid, operation: record?.attributes?.operation } + return { id: record?.attributes?.fdo?.pid, operation: record?.attributes?.operation, timestamp: record?.attributes?.timestamp, repository: record?.attributes?.repositories?.fdo } }) return ( - <List> + <List title={<Typography variant="h5">{t('pages.fdo.list.title', 'FDO Manager Log')}</Typography>}> <DataGrid {...dataGridProps} rows={rows} columns={columns} autoHeight /> </List> ) diff --git a/src/components/profiles/list.tsx b/src/components/profiles/list.tsx index 62e1230fb000e955112dddcad4b4739595aa423a..1793d6f53fd007949e35e5542c4e73efddd23f9b 100644 --- a/src/components/profiles/list.tsx +++ b/src/components/profiles/list.tsx @@ -14,7 +14,7 @@ import IProfile from '../../interfaces/IProfile' const columns: Array<GridColDef<IProfile>> = [ { field: 'id', - headerName: 'ID', + headerName: 'Name', type: 'string', width: 200 }, { @@ -28,9 +28,9 @@ const columns: Array<GridColDef<IProfile>> = [ } }, { field: 'link', - headerName: 'Profile Registry', + headerName: 'Profile PID', type: 'string', - width: 200, + width: 300, renderCell: (params) => { const pid = params?.row.attributes.pid return <Link href={'https://hdl.handle.net/' + pid}>{pid}</Link>