@@ -6,7 +6,9 @@ import { useQuery } from '@tanstack/react-query';
66import { Spinner } from 'opub-ui' ;
77
88import { GraphQL } from '@/lib/api' ;
9+ import { generateJsonLd } from '@/lib/utils' ;
910import BreadCrumbs from '@/components/BreadCrumbs' ;
11+ import JsonLd from '@/components/JsonLd' ;
1012import Details from './components/Details' ;
1113import Metadata from './components/Metadata' ;
1214import PrimaryData from './components/PrimaryData' ;
@@ -74,49 +76,60 @@ export default function DatasetDetailsPage({
7476} ) {
7577 const Datasetdetails : { data : any ; isLoading : any } = useQuery (
7678 [ `details_${ datasetId } ` ] ,
77- ( ) =>
78- GraphQL (
79- datasetQuery ,
80- { } ,
81- { datasetId : datasetId }
82- )
79+ ( ) => GraphQL ( datasetQuery , { } , { datasetId : datasetId } )
8380 ) ;
8481
82+ const jsonLd = generateJsonLd ( {
83+ '@context' : 'https://schema.org' ,
84+ '@type' : 'Dataset' ,
85+ name : Datasetdetails ?. data ?. getDataset ?. title ,
86+ url : `${ process . env . NEXT_PUBLIC_PLATFORM_URL } /datasets/${ datasetId } ` ,
87+ description : Datasetdetails ?. data ?. getDataset ?. description ,
88+ publisher : {
89+ '@type' : 'Organization' ,
90+ name : 'CivicDataSpace' ,
91+ url : `${ process . env . NEXT_PUBLIC_PLATFORM_URL } /datasets` ,
92+ } ,
93+ } ) ;
94+
8595 return (
86- < main className = " bg-surfaceDefault" >
87- < BreadCrumbs
88- data = { [
89- { href : '/' , label : 'Home' } ,
90- { href : '/datasets' , label : 'Dataset Listing' } ,
91- { href : '#' , label : 'Dataset Details' } ,
92- ] }
93- />
94- < div className = "flex" >
95- < div className = "w-full gap-10 border-r-2 border-solid border-greyExtralight p-6 lg:w-3/4 lg:p-10" >
96- { Datasetdetails . isLoading ? (
97- < div className = " mt-8 flex justify-center" >
98- < Spinner />
99- </ div >
100- ) : (
101- < PrimaryData
102- data = { Datasetdetails ?. data ?. getDataset }
103- isLoading = { Datasetdetails . isLoading }
104- />
105- ) }
106- < Details />
107- < Resources />
108- < SimilarDatasets />
109- </ div >
110- < div className = " hidden w-1/4 gap-10 px-7 py-10 lg:block" >
111- { Datasetdetails . isLoading ? (
112- < div className = " mt-8 flex justify-center" >
113- < Spinner />
114- </ div >
115- ) : (
116- < Metadata data = { Datasetdetails ?. data ?. getDataset } />
117- ) }
96+ < >
97+ < JsonLd json = { jsonLd } />
98+ < main className = " bg-surfaceDefault" >
99+ < BreadCrumbs
100+ data = { [
101+ { href : '/' , label : 'Home' } ,
102+ { href : '/datasets' , label : 'Dataset Listing' } ,
103+ { href : '#' , label : 'Dataset Details' } ,
104+ ] }
105+ />
106+ < div className = "flex" >
107+ < div className = "w-full gap-10 border-r-2 border-solid border-greyExtralight p-6 lg:w-3/4 lg:p-10" >
108+ { Datasetdetails . isLoading ? (
109+ < div className = " mt-8 flex justify-center" >
110+ < Spinner />
111+ </ div >
112+ ) : (
113+ < PrimaryData
114+ data = { Datasetdetails ?. data ?. getDataset }
115+ isLoading = { Datasetdetails . isLoading }
116+ />
117+ ) }
118+ < Details />
119+ < Resources />
120+ < SimilarDatasets />
121+ </ div >
122+ < div className = " hidden w-1/4 gap-10 px-7 py-10 lg:block" >
123+ { Datasetdetails . isLoading ? (
124+ < div className = " mt-8 flex justify-center" >
125+ < Spinner />
126+ </ div >
127+ ) : (
128+ < Metadata data = { Datasetdetails ?. data ?. getDataset } />
129+ ) }
130+ </ div >
118131 </ div >
119- </ div >
120- </ main >
132+ </ main >
133+ </ >
121134 ) ;
122135}
0 commit comments