diff --git a/frontend/src/components/metadata/MetadataDefinitionEntry.tsx b/frontend/src/components/metadata/MetadataDefinitionEntry.tsx new file mode 100644 index 000000000..fd83e81f2 --- /dev/null +++ b/frontend/src/components/metadata/MetadataDefinitionEntry.tsx @@ -0,0 +1,156 @@ +import React, { useEffect, useState } from "react"; +import { Box, Button, Grid, Link } from "@mui/material"; +import Layout from "../Layout"; +import { useDispatch, useSelector } from "react-redux"; +import Typography from "@mui/material/Typography"; +import { useParams } from "react-router-dom"; +import { MainBreadcrumbs } from "../navigation/BreadCrumb"; +import { ErrorModal } from "../errors/ErrorModal"; +import ReactJson from "react-json-view"; +import { fetchMetadataDefinition as fetchMetadataDefinitionAction } from "../../actions/metadata"; +import { RootState } from "../../types/data"; +import DeleteMetadataDefinitionModal from "./DeleteMetadataDefinitionModal"; +import DeleteIcon from "@mui/icons-material/Delete"; + +export function MetadataDefinitionEntry() { + // path parameter + const { metadataDefinitionId } = useParams<{ + metadataDefinitionId?: string; + }>(); + + // Redux connect equivalent + const dispatch = useDispatch(); + const fetchMetadataDefinition = (metadataDefinitionId: string | undefined) => + dispatch(fetchMetadataDefinitionAction(metadataDefinitionId)); + const metadataDefinition = useSelector( + (state: RootState) => state.metadata.metadataDefinition + ); + + const [ + deleteMetadataDefinitionConfirmOpen, + setDeleteMetadataDefinitionConfirmOpen, + ] = useState(false); + + // component did mount + useEffect(() => { + fetchMetadataDefinition(metadataDefinitionId); + }, []); + + // Error msg dialog + const [errorOpen, setErrorOpen] = useState(false); + + // for breadcrumb + const paths = [ + { + name: "Metadata Definitions", + url: "/metadata-definitions", + }, + { + name: metadataDefinition.name, + url: `/metadata-definitions/${metadataDefinition.id}`, + }, + ]; + + return ( + + {/*Error Message dialogue*/} + + {/*breadcrumb*/} + + + + + + + {/*Header & menus*/} + + + + + + {metadataDefinition.name !== undefined + ? metadataDefinition.name + : "Not found"} + + + + {metadataDefinition.description !== undefined + ? metadataDefinition.description + : ""} + + + Creator: + {metadataDefinition.creator !== undefined && + metadataDefinition.creator.email !== undefined ? ( + + {metadataDefinition.creator.email} + + ) : ( + <> + )} + + + + + {/*Buttons*/} + + + + + + + ); +} diff --git a/frontend/src/components/metadata/MetadataDefinitions.tsx b/frontend/src/components/metadata/MetadataDefinitions.tsx index a0367c632..a841af8dc 100644 --- a/frontend/src/components/metadata/MetadataDefinitions.tsx +++ b/frontend/src/components/metadata/MetadataDefinitions.tsx @@ -32,6 +32,7 @@ import { ErrorModal } from "../errors/ErrorModal"; import { CreateMetadataDefinition } from "./CreateMetadataDefinition"; import DeleteIcon from "@mui/icons-material/Delete"; import DeleteMetadataDefinitionModal from "./DeleteMetadataDefinitionModal"; +import { Link } from "react-router-dom"; export function MetadataDefinitions() { // Redux connect equivalent @@ -240,14 +241,12 @@ export function MetadataDefinitions() { sx={{ "&:last-child td, &:last-child th": { border: 0 } }} > - {/*TODO write individual metadata definition page*/} - {/**/} - {/* {mdd.name}*/} - {/**/} - {mdd.name} + { @@ -129,14 +130,14 @@ export const AppRoutes = (): JSX.Element => { } /> - {/**/} - {/* */} - {/* */} - {/* }*/} - {/*/>*/} + + + + } + />