@@ -20,6 +20,7 @@ import {
2020} from 'opub-ui' ;
2121
2222import { GraphQL } from '@/lib/api' ;
23+ import { formatDate } from '@/lib/utils' ;
2324import { Icons } from '@/components/icons' ;
2425
2526const UseCaseDetails : any = graphql ( `
@@ -37,6 +38,10 @@ const UseCaseDetails: any = graphql(`
3738 datasets {
3839 title
3940 id
41+ categories {
42+ name
43+ }
44+ modified
4045 }
4146 contactEmail
4247 status
@@ -102,11 +107,20 @@ const Publish = () => {
102107 errorType : 'critical' ,
103108 } ,
104109
105- // {
106- // name: 'Assign',
107- // data: UseCaseData.data.useCases,
108- // error: '',
109- // },
110+ {
111+ name : 'Assign' ,
112+ data : UseCaseData ?. data ?. useCases [ 0 ] ?. datasets ,
113+ error :
114+ UseCaseData . data && UseCaseData . data ?. useCases [ 0 ] ?. datasets . length === 0
115+ ? 'No datasets assigned. Please assign to continue.'
116+ : '' ,
117+ } ,
118+ ] ;
119+
120+ const columns = [
121+ { accessorKey : 'title' , header : 'Title' } ,
122+ { accessorKey : 'category' , header : 'Category' } ,
123+ { accessorKey : 'modified' , header : 'Last Modified' } ,
110124 ] ;
111125
112126 const PrimaryDetails = [
@@ -128,6 +142,17 @@ const Publish = () => {
128142 } ,
129143 ] ;
130144
145+ const generateTableData = ( list : Array < any > ) => {
146+ return list . map ( ( item ) => {
147+ return {
148+ title : item . title ,
149+ id : item . id ,
150+ category : item . categories [ 0 ] ?. name ,
151+ modified : formatDate ( item . modified ) ,
152+ } ;
153+ } ) ;
154+ } ;
155+
131156 return (
132157 < >
133158 < div className = " w-full py-6" >
@@ -178,36 +203,48 @@ const Publish = () => {
178203 } }
179204 >
180205 < div className = " py-4" >
181- < div className = "flex flex-col gap-4 px-8 py-4" >
182- { PrimaryDetails . map (
183- ( item , index ) =>
184- item . value && (
185- < div
186- className = "flex flex-wrap gap-2"
187- key = { index }
188- >
189- < Text
190- className = "lg:basis-1/6"
191- variant = "bodyMd"
192- >
193- { item . label } :
194- </ Text >
195- < Text
196- variant = "bodyMd"
197- className = "lg:basis-4/5"
206+ { item . name === 'Assign' ? (
207+ < Table
208+ columns = { columns }
209+ rows = { generateTableData ( item . data ) }
210+ hideFooter
211+ />
212+ ) : (
213+ < div className = "flex flex-col gap-4 px-8 py-4" >
214+ { PrimaryDetails . map (
215+ ( item , index ) =>
216+ item . value && (
217+ < div
218+ className = "flex flex-wrap gap-2"
219+ key = { index }
198220 >
199- { item . value }
200- </ Text >
201- </ div >
202- )
203- ) }
204- </ div >
221+ < Text
222+ className = "lg:basis-1/6"
223+ variant = "bodyMd"
224+ >
225+ { item . label } :
226+ </ Text >
227+ < Text
228+ variant = "bodyMd"
229+ className = "lg:basis-4/5"
230+ >
231+ { item . value }
232+ </ Text >
233+ </ div >
234+ )
235+ ) }
236+ </ div >
237+ ) }
205238 </ div >
206239 </ AccordionContent >
207240 </ AccordionItem >
208241 </ Accordion >
209242 ) ) }
210- < Button className = "m-auto w-fit" onClick = { ( ) => mutate ( ) } >
243+ < Button
244+ className = "m-auto w-fit"
245+ onClick = { ( ) => mutate ( ) }
246+ disabled = { UseCaseData ?. data ?. useCases [ 0 ] ?. datasets . length <= 0 }
247+ >
211248 Publish
212249 </ Button >
213250 </ >
0 commit comments