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}
+
{
@@ -129,14 +130,14 @@ export const AppRoutes = (): JSX.Element => {
}
/>
- {/**/}
- {/* */}
- {/* */}
- {/* }*/}
- {/*/>*/}
+
+
+
+ }
+ />