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: + '
' + + '" + + '
' + + "{{keyword}}" + + "
" + + '
' + + "{{theme}}" + + "
" + + '" + + "
", + }, ]; };