Skip to content

Commit 95c56ed

Browse files
committed
add datasets assigned to usecase
1 parent 3c4ce0f commit 95c56ed

File tree

1 file changed

+63
-10
lines changed
  • app/[locale]/(user)/usecases/[useCaseSlug]

1 file changed

+63
-10
lines changed

app/[locale]/(user)/usecases/[useCaseSlug]/page.tsx

Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
'use client';
22

3-
import React, { useState } from 'react';
43
import { useParams } from 'next/navigation';
54
import { graphql } from '@/gql';
6-
import { TypeUseCase } from '@/gql/generated/graphql';
5+
import { TypeDataset, TypeUseCase } from '@/gql/generated/graphql';
76
import { useQuery } from '@tanstack/react-query';
8-
import { Spinner } from 'opub-ui';
7+
import { Card, Spinner, Text } from 'opub-ui';
98

109
import { GraphQL } from '@/lib/api';
1110
import BreadCrumbs from '@/components/BreadCrumbs';
1211
import PrimaryDetails from '../components/Details';
1312
import Metadata from '../components/Metadata';
13+
import { Icons } from '@/components/icons';
14+
import { formatDate } from '@/lib/utils';
15+
import { Loading } from '@/components/loading';
1416

1517
const UseCasedetails: any = graphql(`
1618
query UseCasedetails($pk: ID!) {
@@ -82,7 +84,6 @@ const UseCasedetails: any = graphql(`
8284

8385
const UseCaseDetailPage = () => {
8486
const params = useParams();
85-
console.log(params.useCaseSlug);
8687
const {
8788
data: UseCaseDetails,
8889
isLoading,
@@ -102,12 +103,13 @@ const UseCaseDetailPage = () => {
102103
refetchOnReconnect: true,
103104
}
104105
);
106+
const datasets = UseCaseDetails?.useCase?.datasets || []; // Fallback to an empty array
105107

106108
return (
107109
<div>
108110
{isLoading ? (
109111
<div className=" flex justify-center p-10">
110-
<Spinner />
112+
<Loading />
111113
</div>
112114
) : (
113115
<>
@@ -118,12 +120,63 @@ const UseCaseDetailPage = () => {
118120
{ href: '#', label: UseCaseDetails?.useCase?.title || '' },
119121
]}
120122
/>
121-
<div className="flex flex-row bg-surfaceDefault ">
122-
<div className="w-full border-r-2 border-solid border-greyExtralight p-8 lg:w-3/4 lg:p-10">
123-
<PrimaryDetails data={UseCaseDetails} isLoading={isLoading} />
123+
<div className=" bg-onSurfaceDefault">
124+
<div className="flex flex-row">
125+
<div className="w-full border-r-2 border-solid border-greyExtralight p-8 lg:w-3/4 lg:p-10">
126+
<PrimaryDetails data={UseCaseDetails} isLoading={isLoading} />
127+
</div>
128+
<div className="hidden lg:block lg:w-1/4">
129+
<Metadata data={UseCaseDetails} />
130+
</div>
124131
</div>
125-
<div className="hidden lg:block lg:w-1/4">
126-
<Metadata data={UseCaseDetails} />
132+
<div className="p-8 lg:p-14">
133+
<div className=" flex flex-col gap-1">
134+
<Text variant="heading3xl">Datasets in this Use Case</Text>
135+
<Text variant="headingLg" fontWeight="regular">
136+
All Datasets related to this Use Case
137+
</Text>
138+
</div>
139+
<div className="grid w-full grid-cols-1 gap-6 pt-10 md:grid-cols-2 lg:grid-cols-3">
140+
{datasets.length > 0 &&
141+
datasets.map(
142+
(dataset: TypeDataset) => (
143+
<Card
144+
key={dataset.id}
145+
title={dataset.title}
146+
variation={'collapsed'}
147+
iconColor={'warning'}
148+
metadataContent={[
149+
{
150+
icon: Icons.calendar,
151+
label: 'Date',
152+
value: formatDate(dataset.modified),
153+
},
154+
{
155+
icon: Icons.download,
156+
label: 'Download',
157+
value: dataset.downloadCount.toString(),
158+
},
159+
{
160+
icon: Icons.globe,
161+
label: 'Geography',
162+
value: dataset.metadata?.find(
163+
(meta: any) => meta.metadataItem?.label === 'Geography'
164+
)?.value || '',
165+
},
166+
]}
167+
href={`/datasets/${dataset.id}`}
168+
footerContent={[
169+
{
170+
icon: `/Sectors/${dataset.sectors[0].name}.svg`,
171+
label: 'Sectors',
172+
},
173+
{ icon: '/fallback.svg', label: 'Published by' },
174+
]}
175+
description={dataset.description || ''}
176+
/>
177+
)
178+
)}
179+
</div>
127180
</div>
128181
</div>
129182
</>

0 commit comments

Comments
 (0)