Skip to content

Commit f997289

Browse files
authored
1069 show message when no metadata is present (#1112)
* pre-commit run * run pre commit * pre-commit * precommit * changing alignment. using 'resource' instead of 'dataset' in message * remove unused import
1 parent 1db2333 commit f997289

File tree

2 files changed

+123
-85
lines changed

2 files changed

+123
-85
lines changed

frontend/src/components/metadata/DisplayListenerMetadata.tsx

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useEffect } from "react";
2-
import { Grid } from "@mui/material";
2+
import { Box, Grid } from "@mui/material";
33
import { useDispatch, useSelector } from "react-redux";
44
import { RootState } from "../../types/data";
55
import {
@@ -104,29 +104,47 @@ export const DisplayListenerMetadata = (props: MetadataType) => {
104104
metadataList = publicFileMetadataList;
105105
else if (resourceType === "dataset" && publicView)
106106
metadataList = publicDatasetMetadataList;
107-
return (
108-
<Grid container spacing={2}>
109-
{metadataList.map((metadata, idx) => {
110-
if (metadata.agent.listener !== null) {
111-
return (
112-
<Grid item xs={12} key={idx}>
113-
<Card>
114-
<CardContent>
115-
<ListenerMetadataEntry
116-
agent={metadata.agent}
117-
content={metadata.content}
118-
context={metadata.context}
119-
context_url={metadata.context_url}
120-
created={metadata.created}
121-
/>
122-
</CardContent>
123-
</Card>
124-
</Grid>
125-
);
126-
}
127-
})}
128-
</Grid>
129-
);
107+
let hasAgentMetadata = false;
108+
metadataList.map((metadata, idx) => {
109+
if (metadata.agent.listener !== null) {
110+
hasAgentMetadata = true;
111+
}
112+
});
113+
if (hasAgentMetadata) {
114+
return (
115+
<Grid container spacing={2}>
116+
{metadataList.map((metadata, idx) => {
117+
if (metadata.agent.listener !== null) {
118+
return (
119+
<Grid item xs={12} key={idx}>
120+
<Card>
121+
<CardContent>
122+
<ListenerMetadataEntry
123+
agent={metadata.agent}
124+
content={metadata.content}
125+
context={metadata.context}
126+
context_url={metadata.context_url}
127+
created={metadata.created}
128+
/>
129+
</CardContent>
130+
</Card>
131+
</Grid>
132+
);
133+
}
134+
})}
135+
</Grid>
136+
);
137+
} else {
138+
return (
139+
<Box textAlign="left">
140+
<p>
141+
Currently there is no machine metadata. This means either no
142+
listeners are enabled for this resource, or that this resource
143+
has not been submitted to any listeners.
144+
</p>
145+
</Box>
146+
);
147+
}
130148
})()}
131149
</>
132150
);

frontend/src/components/metadata/DisplayMetadata.tsx

Lines changed: 81 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useEffect } from "react";
2-
import { Box, Grid, Typography } from "@mui/material";
2+
import { Box, Button, Grid, Typography } from "@mui/material";
33
import { metadataConfig } from "../../metadata.config";
44
import { useDispatch, useSelector } from "react-redux";
55
import { RootState } from "../../types/data";
@@ -120,69 +120,89 @@ export const DisplayMetadata = (props: MetadataType) => {
120120
metadataList = publicDatasetMetadataList;
121121
if (publicView) currentMetadataDefList = publicMetadataDefinitionList;
122122
else currentMetadataDefList = metadataDefinitionList;
123-
124-
return currentMetadataDefList.map((metadataDef) => {
125-
return metadataList.map((metadata, idx) => {
126-
if (metadataDef.name === metadata.definition) {
127-
return (
128-
<Box className="inputGroup" key={idx}>
129-
<Typography variant="h6">{metadata.definition}</Typography>
130-
<Typography variant="subtitle2">
131-
{metadata.description}
132-
</Typography>
133-
{
134-
// construct metadata using its definition
135-
metadataDef.fields.map((field, idxx) => {
136-
return React.cloneElement(
137-
metadataConfig[field.widgetType ?? "NA"] ??
138-
metadataConfig["NA"],
139-
{
140-
widgetName: metadataDef.name,
141-
fieldName: field.name,
142-
options: field.config.options ?? [],
143-
updateMetadata: updateMetadata,
144-
initialReadOnly: true,
145-
resourceId: resourceId,
146-
content: metadata.content ?? null,
147-
metadataId: metadata.id ?? null,
148-
isRequired: field.required,
149-
key: idxx,
150-
datasetRole: datasetRole,
151-
frozen: about.frozen,
152-
frozenVersionNum: about.frozen_version_num,
153-
}
154-
);
155-
})
156-
}
157-
<Grid container spacing={2}>
158-
<Grid item xs={11} sm={11} md={11} lg={11} xl={11}>
159-
<Agent
160-
created={metadata.created}
161-
agent={metadata.agent}
162-
/>
163-
<FrozenWrapper
164-
frozen={about.frozen}
165-
frozenVersionNum={about.frozen_version_num}
166-
>
167-
<AuthWrapper
168-
currRole={datasetRole.role}
169-
allowedRoles={["owner", "editor", "uploader"]}
123+
let hasUserMetadata = false;
124+
metadataList.map((metadata, idx) => {
125+
if (metadata.agent.listener === null) {
126+
hasUserMetadata = true;
127+
}
128+
});
129+
if (hasUserMetadata) {
130+
return currentMetadataDefList.map((metadataDef) => {
131+
return metadataList.map((metadata, idx) => {
132+
if (metadataDef.name === metadata.definition) {
133+
return (
134+
<Box className="inputGroup" key={idx}>
135+
<Typography variant="h6">{metadata.definition}</Typography>
136+
<Typography variant="subtitle2">
137+
{metadata.description}
138+
</Typography>
139+
{
140+
// construct metadata using its definition
141+
metadataDef.fields.map((field, idxx) => {
142+
return React.cloneElement(
143+
metadataConfig[field.widgetType ?? "NA"] ??
144+
metadataConfig["NA"],
145+
{
146+
widgetName: metadataDef.name,
147+
fieldName: field.name,
148+
options: field.config.options ?? [],
149+
updateMetadata: updateMetadata,
150+
initialReadOnly: true,
151+
resourceId: resourceId,
152+
content: metadata.content ?? null,
153+
metadataId: metadata.id ?? null,
154+
isRequired: field.required,
155+
key: idxx,
156+
datasetRole: datasetRole,
157+
frozen: about.frozen,
158+
frozenVersionNum: about.frozen_version_num,
159+
}
160+
);
161+
})
162+
}
163+
<Grid container spacing={2}>
164+
<Grid item xs={11} sm={11} md={11} lg={11} xl={11}>
165+
<Agent
166+
created={metadata.created}
167+
agent={metadata.agent}
168+
/>
169+
<FrozenWrapper
170+
frozen={about.frozen}
171+
frozenVersionNum={about.frozen_version_num}
170172
>
171-
<MetadataDeleteButton
172-
metadataId={metadata.id ?? null}
173-
deleteMetadata={deleteMetadata}
174-
resourceId={resourceId}
175-
widgetName={metadataDef.name}
176-
/>
177-
</AuthWrapper>
178-
</FrozenWrapper>
173+
<AuthWrapper
174+
currRole={datasetRole.role}
175+
allowedRoles={["owner", "editor", "uploader"]}
176+
>
177+
<MetadataDeleteButton
178+
metadataId={metadata.id ?? null}
179+
deleteMetadata={deleteMetadata}
180+
resourceId={resourceId}
181+
widgetName={metadataDef.name}
182+
/>
183+
</AuthWrapper>
184+
</FrozenWrapper>
185+
</Grid>
179186
</Grid>
180-
</Grid>
181-
</Box>
182-
);
183-
}
187+
</Box>
188+
);
189+
}
190+
});
184191
});
185-
});
192+
} else {
193+
return (
194+
<Box textAlign="left">
195+
<p>
196+
Currently there is no user metadata provided for this resource.
197+
To start adding some click on the Add metadata button. User
198+
metadata is metadata about the dataset added by any user who has
199+
write permission to the dataset. The list of available field is
200+
defined by the administrators of the system. If you would like
201+
to add a new entry please contact one of the administrators.
202+
</p>
203+
</Box>
204+
);
205+
}
186206
})()}
187207
</>
188208
);

0 commit comments

Comments
 (0)