Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 42 additions & 24 deletions frontend/src/components/metadata/DisplayListenerMetadata.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useEffect } from "react";
import { Grid } from "@mui/material";
import { Box, Grid } from "@mui/material";
import { useDispatch, useSelector } from "react-redux";
import { RootState } from "../../types/data";
import {
Expand Down Expand Up @@ -104,29 +104,47 @@ export const DisplayListenerMetadata = (props: MetadataType) => {
metadataList = publicFileMetadataList;
else if (resourceType === "dataset" && publicView)
metadataList = publicDatasetMetadataList;
return (
<Grid container spacing={2}>
{metadataList.map((metadata, idx) => {
if (metadata.agent.listener !== null) {
return (
<Grid item xs={12} key={idx}>
<Card>
<CardContent>
<ListenerMetadataEntry
agent={metadata.agent}
content={metadata.content}
context={metadata.context}
context_url={metadata.context_url}
created={metadata.created}
/>
</CardContent>
</Card>
</Grid>
);
}
})}
</Grid>
);
let hasAgentMetadata = false;
metadataList.map((metadata, idx) => {
if (metadata.agent.listener !== null) {
hasAgentMetadata = true;
}
});
if (hasAgentMetadata) {
return (
<Grid container spacing={2}>
{metadataList.map((metadata, idx) => {
if (metadata.agent.listener !== null) {
return (
<Grid item xs={12} key={idx}>
<Card>
<CardContent>
<ListenerMetadataEntry
agent={metadata.agent}
content={metadata.content}
context={metadata.context}
context_url={metadata.context_url}
created={metadata.created}
/>
</CardContent>
</Card>
</Grid>
);
}
})}
</Grid>
);
} else {
return (
<Box textAlign="left">
<p>
Currently there is no machine metadata. This means either no
listeners are enabled for this resource, or that this resource
has not been submitted to any listeners.
</p>
</Box>
);
}
})()}
</>
);
Expand Down
142 changes: 81 additions & 61 deletions frontend/src/components/metadata/DisplayMetadata.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useEffect } from "react";
import { Box, Grid, Typography } from "@mui/material";
import { Box, Button, Grid, Typography } from "@mui/material";
import { metadataConfig } from "../../metadata.config";
import { useDispatch, useSelector } from "react-redux";
import { RootState } from "../../types/data";
Expand Down Expand Up @@ -120,69 +120,89 @@ export const DisplayMetadata = (props: MetadataType) => {
metadataList = publicDatasetMetadataList;
if (publicView) currentMetadataDefList = publicMetadataDefinitionList;
else currentMetadataDefList = metadataDefinitionList;

return currentMetadataDefList.map((metadataDef) => {
return metadataList.map((metadata, idx) => {
if (metadataDef.name === metadata.definition) {
return (
<Box className="inputGroup" key={idx}>
<Typography variant="h6">{metadata.definition}</Typography>
<Typography variant="subtitle2">
{metadata.description}
</Typography>
{
// construct metadata using its definition
metadataDef.fields.map((field, idxx) => {
return React.cloneElement(
metadataConfig[field.widgetType ?? "NA"] ??
metadataConfig["NA"],
{
widgetName: metadataDef.name,
fieldName: field.name,
options: field.config.options ?? [],
updateMetadata: updateMetadata,
initialReadOnly: true,
resourceId: resourceId,
content: metadata.content ?? null,
metadataId: metadata.id ?? null,
isRequired: field.required,
key: idxx,
datasetRole: datasetRole,
frozen: about.frozen,
frozenVersionNum: about.frozen_version_num,
}
);
})
}
<Grid container spacing={2}>
<Grid item xs={11} sm={11} md={11} lg={11} xl={11}>
<Agent
created={metadata.created}
agent={metadata.agent}
/>
<FrozenWrapper
frozen={about.frozen}
frozenVersionNum={about.frozen_version_num}
>
<AuthWrapper
currRole={datasetRole.role}
allowedRoles={["owner", "editor", "uploader"]}
let hasUserMetadata = false;
metadataList.map((metadata, idx) => {
if (metadata.agent.listener === null) {
hasUserMetadata = true;
}
});
if (hasUserMetadata) {
return currentMetadataDefList.map((metadataDef) => {
return metadataList.map((metadata, idx) => {
if (metadataDef.name === metadata.definition) {
return (
<Box className="inputGroup" key={idx}>
<Typography variant="h6">{metadata.definition}</Typography>
<Typography variant="subtitle2">
{metadata.description}
</Typography>
{
// construct metadata using its definition
metadataDef.fields.map((field, idxx) => {
return React.cloneElement(
metadataConfig[field.widgetType ?? "NA"] ??
metadataConfig["NA"],
{
widgetName: metadataDef.name,
fieldName: field.name,
options: field.config.options ?? [],
updateMetadata: updateMetadata,
initialReadOnly: true,
resourceId: resourceId,
content: metadata.content ?? null,
metadataId: metadata.id ?? null,
isRequired: field.required,
key: idxx,
datasetRole: datasetRole,
frozen: about.frozen,
frozenVersionNum: about.frozen_version_num,
}
);
})
}
<Grid container spacing={2}>
<Grid item xs={11} sm={11} md={11} lg={11} xl={11}>
<Agent
created={metadata.created}
agent={metadata.agent}
/>
<FrozenWrapper
frozen={about.frozen}
frozenVersionNum={about.frozen_version_num}
>
<MetadataDeleteButton
metadataId={metadata.id ?? null}
deleteMetadata={deleteMetadata}
resourceId={resourceId}
widgetName={metadataDef.name}
/>
</AuthWrapper>
</FrozenWrapper>
<AuthWrapper
currRole={datasetRole.role}
allowedRoles={["owner", "editor", "uploader"]}
>
<MetadataDeleteButton
metadataId={metadata.id ?? null}
deleteMetadata={deleteMetadata}
resourceId={resourceId}
widgetName={metadataDef.name}
/>
</AuthWrapper>
</FrozenWrapper>
</Grid>
</Grid>
</Grid>
</Box>
);
}
</Box>
);
}
});
});
});
} else {
return (
<Box textAlign="left">
<p>
Currently there is no user metadata provided for this resource.
To start adding some click on the Add metadata button. User
metadata is metadata about the dataset added by any user who has
write permission to the dataset. The list of available field is
defined by the administrators of the system. If you would like
to add a new entry please contact one of the administrators.
</p>
</Box>
);
}
})()}
</>
);
Expand Down