diff --git a/features/entryscape/dataset-series-page/index.tsx b/features/entryscape/dataset-series-page/index.tsx
index c0d7e41f..913af313 100644
--- a/features/entryscape/dataset-series-page/index.tsx
+++ b/features/entryscape/dataset-series-page/index.tsx
@@ -1,4 +1,5 @@
import { Entry } from "@entryscape/entrystore-js";
+import Link from "next/link";
import { useRouter } from "next/router";
import useTranslation from "next-translate/useTranslation";
import { FC, useContext, useEffect, useMemo } from "react";
@@ -8,6 +9,7 @@ import { Container } from "@/components/layout/container";
import { Heading } from "@/components/typography/heading";
import { createSearchProviderSettings } from "@/features/search/search-page/search-page-entryscape/search-page-provider-settings";
import { SearchResults } from "@/features/search/search-results";
+import { useEntryScapeBlocks } from "@/hooks/use-entry-scape-blocks";
import { EntrystoreContext } from "@/providers/entrystore-provider";
import SearchProvider, {
SearchContext,
@@ -38,11 +40,21 @@ const SearchTrigger: FC<{ search: SearchContextData; entry: Entry }> = ({
export const DatasetSeriesPage: FC = () => {
const { pathname } = useRouter() || {};
- const { env, setBreadcrumb } = useContext(SettingsContext);
+ const { env, setBreadcrumb, iconSize } = useContext(SettingsContext);
const entry = useContext(EntrystoreContext);
const { t, lang } = useTranslation();
const router = useRouter();
+ useEntryScapeBlocks({
+ entrystoreBase: entry.entrystore.getBaseURI(),
+ env: entry.env,
+ lang,
+ iconSize,
+ pageType: "dataset",
+ context: entry.context,
+ esId: entry.esId,
+ });
+
useEffect(() => {
setBreadcrumb?.({
name: entry.title,
@@ -97,18 +109,118 @@ export const DatasetSeriesPage: FC = () => {
-
-
+
+ {/* Left column - Search results */}
+
+
+ {/* Right column - About and Catalog */}
+
+ {/* About dataset series - wrapper */}
+
+
+ {t("pages|dataset-series$about-dataset-serie")}
+
+
+
+ {/* About dataset series */}
+
+
+
+
+ {/* Catalog information wrapper */}
+
+
+ {t("pages|datasetpage$catalog")}
+
+
+ {entry.mqaCatalog && (
+
+
+ {t("pages|datasetpage$mqa-catalog")}
+
+
+ {entry.mqaCatalog.title}
+
+
+ )}
+
+
+ {/* Catalog */}
+
+
+
+
+ {/* Download formats */}
+ {entry.downloadFormats &&
+ entry.downloadFormats?.length > 0 && (
+
+
+ {t("pages|datasetpage$download_link")}
+
+
+ {entry.downloadFormats.map(
+ ({ title, url }, idx) => (
+
+ {title}
+
+ ),
+ )}
+
+
+ )}
+
+
+
+ {/* End right column */}
diff --git a/locales/en/pages.json b/locales/en/pages.json
index 763d85e4..0e457ec1 100644
--- a/locales/en/pages.json
+++ b/locales/en/pages.json
@@ -55,7 +55,8 @@
"api": "About API"
},
"dataset-series": {
- "data-serie": "Dataset serie"
+ "data-serie": "Dataset serie",
+ "about-dataset-serie": "About dataset serie"
},
"datasetpage": {
"about-dataset": "About dataset",
diff --git a/locales/sv/pages.json b/locales/sv/pages.json
index cfc3a427..7587926d 100644
--- a/locales/sv/pages.json
+++ b/locales/sv/pages.json
@@ -55,7 +55,8 @@
"api": "Om API"
},
"dataset-series": {
- "data-serie": "Datamängdsserie"
+ "data-serie": "Datamängdsserie",
+ "about-dataset-serie": "Om datamängdsserie"
},
"datasetpage": {
"about-dataset": "Om datamängd",
diff --git a/providers/entrystore-provider/index.tsx b/providers/entrystore-provider/index.tsx
index 91edde28..f93acc32 100644
--- a/providers/entrystore-provider/index.tsx
+++ b/providers/entrystore-provider/index.tsx
@@ -231,8 +231,24 @@ export const EntrystoreProvider: FC = ({
};
}
- case "dataset-series":
- return {};
+ case "dataset-series": {
+ // Fetch all data in parallel for dataset-series
+ const [keywords, formats, mqa, contact] = await Promise.all([
+ entrystoreService.getKeywords(entry),
+ entrystoreService.getDownloadFormats(
+ entry.getEntryInfo().getMetadataURI(),
+ ),
+ entrystoreService.getRelatedMQA(entry),
+ entrystoreService.getContactInfo(metadata),
+ ]);
+
+ return {
+ keywords,
+ downloadFormats: formats,
+ mqaCatalog: mqa,
+ contact,
+ };
+ }
case "dataservice":
return {};
diff --git a/utilities/entryscape/blocks/datasets.ts b/utilities/entryscape/blocks/datasets.ts
index 17f668b5..4e118c33 100644
--- a/utilities/entryscape/blocks/datasets.ts
+++ b/utilities/entryscape/blocks/datasets.ts
@@ -206,6 +206,29 @@ export const datasetBlocks = (
" " +
"",
},
+ {
+ block: "aboutDatasetSeries",
+ extends: "template",
+ template:
+ '' +
+ '
' +
+ '{{viewMetadata template="dcat:DatasetSeries" filterpredicates="' +
+ filterAllExceptContactAndLandingPage.join(",") +
+ '"}}' +
+ "
" +
+ '
' +
+ "{{keyword}}" +
+ "
" +
+ '
' +
+ "{{theme}}" +
+ "
" +
+ '
' +
+ '{{viewMetadata template="dcat:DatasetSeries" filterpredicates="' +
+ filterContactAndLandingPage.join(",") +
+ '"}}' +
+ "
" +
+ "
",
+ },
];
};