From 7c46712cd0d5256cbd231b68883f18cdc14f2f95 Mon Sep 17 00:00:00 2001 From: Hofstetter Benjamin Date: Thu, 18 Sep 2025 17:24:46 +0200 Subject: [PATCH 1/3] Breadcrumbs are not working with SSR on Distribution Page Fixes #31 --- .../datasets/[datasetId]/distribution/[distributionId].vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue b/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue index a865159..650d758 100644 --- a/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue +++ b/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue @@ -44,9 +44,10 @@ const distribution = computed(() => { return dists }) +const firstBreadcrumb = await homePageBreadcrumb(locale) -const breadcrumbs = [ - await homePageBreadcrumb(locale), +const breadcrumbs = computed(()=> [ + firstBreadcrumb, { title: t('message.header.navigation.datasets'), path: '/datasets', @@ -61,7 +62,7 @@ const breadcrumbs = [ { title: distribution.value?.title } -] +]) useSeoMeta({ title: `${distribution.value?.title} | ${resultEnhanced.value?.getTitle} | ${t('message.header.navigation.datasets')} | opendata.swiss`, From 3ee419e0be2d4701af6b1f77be1429c07bd326a0 Mon Sep 17 00:00:00 2001 From: Hofstetter Benjamin Date: Fri, 19 Sep 2025 10:04:07 +0200 Subject: [PATCH 2/3] Breadcrumbs are not working with SSR on Distribution Page Fixes #31 --- .../distribution/[distributionId].vue | 52 ++++++++++----- ...-dataset-breadcrumb-from-session-stoage.ts | 29 +++++++++ .../ui/pages/datasets/[datasetId]/index.vue | 65 ++++++++++++++----- opendata.swiss/ui/pages/datasets/index.vue | 24 ++++--- 4 files changed, 127 insertions(+), 43 deletions(-) create mode 100644 opendata.swiss/ui/pages/datasets/[datasetId]/get-dataset-breadcrumb-from-session-stoage.ts diff --git a/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue b/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue index 650d758..0cdccb7 100644 --- a/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue +++ b/opendata.swiss/ui/pages/datasets/[datasetId]/distribution/[distributionId].vue @@ -13,6 +13,7 @@ import OdsDownloadList from '../../../../app/components/distribution/OdsDownload import OdsRelativeDateToggle from '../../../../app/components/OdsRelativeDateToggle.vue'; import { DcatApChV2DatasetAdapter } from '../../../../app/components/dataset-detail/model/dcat-ap-ch-v2-dataset-adapter.js' import { useSeoMeta } from 'nuxt/app'; +import { getDatasetBreadcrumbFromSessionStorage } from '../get-dataset-breadcrumb-from-session-stoage.js'; const { locale, t } = useI18n(); @@ -45,24 +46,37 @@ const distribution = computed(() => { }) const firstBreadcrumb = await homePageBreadcrumb(locale) - -const breadcrumbs = computed(()=> [ - firstBreadcrumb, - { - title: t('message.header.navigation.datasets'), - path: '/datasets', - }, - { - title: resultEnhanced.value?.getTitle, - path: { - name: 'datasets-datasetId', - params: { datasetId: datasetId.value }, - }, - }, - { - title: distribution.value?.title +const storedBreadcrumbs = import.meta.client ? getDatasetBreadcrumbFromSessionStorage(datasetId.value) : null; + +const breadcrumbs = computed(()=>{ + const bc = [] + if (storedBreadcrumbs && import.meta.client) { + bc.push(...storedBreadcrumbs) + bc.push({ + title: distribution.value?.title + }) + } + else { + bc.push(firstBreadcrumb) + bc.push({ + title: t('message.header.navigation.datasets'), + path: '/datasets', + }, + { + title: resultEnhanced.value?.getTitle, + path: { + name: 'datasets-datasetId', + params: { datasetId: datasetId.value }, + }, + }, + { + title: distribution.value?.title + } + ) } -]) + return bc +}) + useSeoMeta({ title: `${distribution.value?.title} | ${resultEnhanced.value?.getTitle} | ${t('message.header.navigation.datasets')} | opendata.swiss`, @@ -74,7 +88,9 @@ await suspense()