Skip to content

Commit ee36c90

Browse files
authored
Merge pull request #15 from datopian/feat/metadata-fields-on-dataset-page
Add metadata fields to dataset page
2 parents fb1eb8f + 29097be commit ee36c90

6 files changed

Lines changed: 63 additions & 58 deletions

File tree

messages/en.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"activityStream": "Activity Stream",
3535
"code": "Code",
3636
"created": "Created",
37-
"updated": "Updated",
37+
"updated": "Last updated",
3838
"lastModified":"Last modified",
3939
"version": "Version",
4040
"license": "License",
@@ -61,7 +61,8 @@
6161
"readLess": "Read less",
6262
"error" : "Something went wrong.",
6363
"skipToContent": "Skip to main content",
64-
"reset": "Reset"
64+
"reset": "Reset",
65+
"visit" : "Visit"
6566
},
6667

6768
"Dataset": {
@@ -142,6 +143,10 @@
142143
"updateFrequency" : "Update frequency",
143144
"documentation" : "Documentation",
144145
"temporalCoverageStart": "Temporal coverage start",
145-
"temporalCoverageEnd": "Temporal coverage end"
146+
"temporalCoverageEnd": "Temporal coverage end",
147+
"landingPage" : "Landing page",
148+
"contactPoint" : "Contact point",
149+
"issued" : "Issued",
150+
"conformsTo" : "Conforms to"
146151
}
147152
}

messages/sv.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@
6161
"readLess": "Läs mindre",
6262
"error": "Något gick fel.",
6363
"skipToContent": "Hoppa till huvudinnehåll",
64-
"reset": "Återställ"
64+
"reset": "Återställ",
65+
"visit": "Besök"
6566
},
6667

6768
"Dataset": {
@@ -142,6 +143,10 @@
142143
"updateFrequency": "Uppdateringsfrekvens",
143144
"documentation": "Dokumentation",
144145
"temporalCoverageStart": "Tidsperiod – start",
145-
"temporalCoverageEnd": "Tidsperiod – slut"
146+
"temporalCoverageEnd": "Tidsperiod – slut",
147+
"landingPage": "Landningssida",
148+
"contactPoint": "Kontaktpunkt",
149+
"issued": "Utfärdad",
150+
"conformsTo": "Överensstämmer med"
146151
}
147152
}

src/app/[locale]/[org]/[dataset]/page.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,7 @@ export default async function DatasetPage({ params }: DatasetPageProps) {
8383
dataset.metadata_modified ?? "",
8484
"dd/MM/yyyy, hh:mm:ss"
8585
),
86-
},
87-
{
88-
title: t("Common.created"),
89-
value: formatDate(
90-
dataset.metadata_created ?? "",
91-
"dd/MM/yyyy, hh:mm:ss"
92-
),
93-
},
86+
}
9487
]}
9588
>
9689
<Container className="py-12">

src/components/layout/Page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export default function Page({
5959
{((metadata && metadata.length > 0) ||
6060
(actions && actions.length > 0)) && (
6161
<div className="flex flex-col gap-5 md:flex-row md:gap-10 w-full">
62-
<div className="flex flex-col lg:flex-row lg:items-center flex-wrap gap-x-4 gap-y-2 text-gray-600 text-sm">
62+
<div className="flex flex-col lg:flex-row lg:items-center flex-wrap gap-x-4 gap-y-2 text-gray-600 text">
6363
{metadata?.map((data, i) => (
6464
<div key={`${data.value}-${i}`}>
6565
<span className="font-medium">{data.title}</span>{" "}

src/components/package/dataset/DatasetInfo.tsx

Lines changed: 45 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,29 @@ import ListItem from "@/components/ui/list-item";
33
import { updateFrequencyValues } from "@/lib/utils";
44
import React from "react";
55
import { getTranslations } from "next-intl/server";
6+
import Link from "next/link";
7+
import { ExternalLink } from "lucide-react";
8+
import { formatDate } from "date-fns";
69

710
export default async function DatasetInfo({ dataset }: { dataset: Dataset }) {
811
const t = await getTranslations();
12+
const landingPage = dataset.extras?.find(
13+
(field) => field.key.toLowerCase() === "landing_page",
14+
)?.value;
915
const authorName = dataset.extras?.find(
10-
(field) => field.key.toLowerCase() === "contact_point_name"
16+
(field) => field.key.toLowerCase() === "contact_point_name",
1117
)?.value;
1218
const authorEmail = dataset.extras?.find(
13-
(field) => field.key.toLowerCase() === "contact_point_email"
14-
)?.value;
15-
const documentation = dataset.extras?.find(
16-
(field) => field.key.toLowerCase() === "documentation"
19+
(field) => field.key.toLowerCase() === "contact_point_email",
1720
)?.value;
18-
const temporalStart = dataset.extras?.find(
19-
(field) => field.key.toLowerCase() === "temporal_start"
21+
const issued = dataset.extras?.find(
22+
(field) => field.key.toLowerCase() === "issued",
2023
)?.value;
21-
const temporalEnd = dataset.extras?.find(
22-
(field) => field.key.toLowerCase() === "temporal_end"
24+
const conformsTo = dataset.extras?.find(
25+
(field) => field.key.toLowerCase() === "conforms_to",
2326
)?.value;
2427
const updateFrequency = dataset.extras?.find(
25-
(field) => field.key.toLowerCase() === "frequency"
28+
(field) => field.key.toLowerCase() === "frequency",
2629
)?.value;
2730
const updateFrequencyCode = updateFrequency?.split("/").pop()?.trim();
2831
const updateFrequencyLabel =
@@ -31,52 +34,51 @@ export default async function DatasetInfo({ dataset }: { dataset: Dataset }) {
3134
updateFrequencyCode as keyof typeof updateFrequencyValues
3235
]
3336
: "";
34-
3537
return (
3638
<div className="divide-y ">
37-
<ListItem title={t("Metadata.author")}>
39+
<ListItem title={t("Common.organization")}>
40+
{dataset.organization.title}
41+
</ListItem>
42+
<ListItem title={t("Metadata.updateFrequency")}>
43+
{updateFrequencyLabel || "--"}
44+
</ListItem>
45+
<ListItem title={t("Metadata.landingPage")}>
46+
{landingPage ? (
47+
<Link
48+
className="underline text-theme-green hover:text-theme-green-900 flex items-center justify-end gap-2"
49+
href={landingPage}
50+
target="_blank"
51+
>
52+
{t("Common.visit")} <ExternalLink size={16}/>
53+
</Link>
54+
) : (
55+
"--"
56+
)}
57+
</ListItem>
58+
<ListItem title={t("Metadata.contactPoint")}>
3859
{authorEmail ? (
3960
<a
4061
href={`mailto:${authorEmail}`}
4162
className="underline text-theme-green"
4263
>
43-
{authorName}
64+
{authorName || authorEmail}
4465
</a>
4566
) : (
46-
authorName||"--"
67+
authorName || "--"
4768
)}
4869
</ListItem>
49-
<ListItem title={t("Metadata.updateFrequency")}>
50-
{updateFrequencyLabel||"--"}
51-
</ListItem>
52-
<ListItem title={t("Metadata.documentation")}>
53-
{documentation|| "--"}
54-
</ListItem>
55-
<ListItem title={t("Metadata.temporalCoverageStart")}>
56-
{temporalStart||"--"}
70+
<ListItem title={t("Metadata.issued")}>
71+
{issued ? formatDate(issued ?? "", "dd/MM/yyy") : "--"}
5772
</ListItem>
58-
<ListItem title={t("Metadata.temporalCoverageEnd")}>
59-
{temporalEnd||"--"}
60-
</ListItem>
61-
{/*
62-
<ListItem title={t("Common.updated")}>
63-
{formatDate(dataset.metadata_modified ?? "", "dd/MM/yyy, hh:ss")}
64-
</ListItem>
65-
<ListItem title={t("Common.created")}>
66-
{formatDate(dataset.metadata_created ?? "", "dd/MM/yyy, hh:ss")}
73+
<ListItem title={t("Metadata.conformsTo")}>
74+
{conformsTo ? <Link
75+
className="underline text-theme-green hover:text-theme-green-900 flex items-center justify-end gap-2"
76+
href={conformsTo}
77+
target="_blank"
78+
>
79+
{t("Common.visit")} <ExternalLink size={16}/>
80+
</Link> : "--"}
6781
</ListItem>
68-
<ListItem title={t("Common.groups")}>
69-
{dataset.groups?.map((g, i) => (
70-
<React.Fragment key={g.id}>
71-
<Link className="underline " href={`/search?groups=${g.name}`}>
72-
{g.display_name}
73-
</Link>
74-
{i < (dataset?.groups ?? [])?.length - 1 ? ", " : ""}
75-
</React.Fragment>
76-
))}
77-
</ListItem>*/}
78-
79-
8082
</div>
8183
);
8284
}

src/components/ui/list-item.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default function ListItem({
1212
className={`py-2 sm:py-4 flex flex-col md:flex-row md:gap-4 min-h-[65px]`}
1313
>
1414
<span className="w-full max-w-[140px] font-semibold text-[#444444]">{title}</span>
15-
{children && <div className="md:text-end w-full">{children}</div>}
15+
{children && <div className="md:text-end w-full break-all">{children}</div>}
1616
</div>
1717
);
1818
}

0 commit comments

Comments
 (0)