11'use client' ;
22
3- import { ReactNode , useEffect , useState } from 'react' ;
4- import Link from 'next/link' ;
5- import { useParams , usePathname , useRouter } from 'next/navigation' ;
63import { graphql } from '@/gql' ;
74import { UpdateDatasetInput } from '@/gql/generated/graphql' ;
85import { useMutation , useQuery } from '@tanstack/react-query' ;
6+ import { useParams , usePathname , useRouter } from 'next/navigation' ;
97import {
10- Button ,
11- Divider ,
12- Form ,
13- FormLayout ,
14- Icon ,
15- Input ,
168 Tab ,
179 TabList ,
1810 Tabs ,
19- Text ,
20- toast ,
11+ toast
2112} from 'opub-ui' ;
13+ import { ReactNode , useEffect , useState } from 'react' ;
2214
2315import { GraphQL } from '@/lib/api' ;
24- import { Icons } from '@/components/icons' ;
16+ import TitleBar from '../../../../components/title-bar' ;
17+ import { useDatasetEditStatus } from '../context' ;
2518
2619const datasetQueryDoc : any = graphql ( `
2720 query datasetTitleQuery($filters: DatasetFilter) {
@@ -57,7 +50,7 @@ interface LayoutProps {
5750 params : { id : string } ;
5851}
5952
60- const layoutList = [ 'metadata' , 'access' , 'charts' , ' resources', 'publish' ] ;
53+ const layoutList = [ 'metadata' , 'resources' , 'publish' ] ;
6154
6255export function EditLayout ( { children, params } : LayoutProps ) {
6356 // const { data } = useQuery([`dataset_layout_${params.id}`], () =>
@@ -117,6 +110,8 @@ export function EditLayout({ children, params }: LayoutProps) {
117110 return pathName . indexOf ( v ) >= 0 ;
118111 } ) ;
119112
113+ const { status, setStatus } = useDatasetEditStatus ( ) ;
114+
120115 // if not from the layoutList, return children
121116 if ( ! pathItem ) {
122117 return < > { children } </ > ;
@@ -127,13 +122,21 @@ export function EditLayout({ children, params }: LayoutProps) {
127122 { getDatasetTitleRes . isLoading ? (
128123 < > </ >
129124 ) : (
130- < Header
131- dataset = { getDatasetTitleRes ?. data ?. datasets [ 0 ] }
132- orgId = { routerParams . entitySlug }
133- saveTitle = { updateDatasetTitleMutation . mutate }
134- editMode = { editMode }
135- setEditMode = { setEditMode }
136- entityType = { routerParams . entityType }
125+ < TitleBar
126+ label = { 'DATASET NAME' }
127+ title = { getDatasetTitleRes ?. data ?. datasets [ 0 ] ?. title }
128+ goBackURL = { `/dashboard/${ routerParams . entityType } /${ routerParams . entitySlug } /dataset` }
129+ onSave = { ( val ) =>
130+ updateDatasetTitleMutation . mutate ( {
131+ updateDatasetInput : {
132+ dataset : routerParams . id ,
133+ title : val ,
134+ } ,
135+ } )
136+ }
137+ loading = { updateDatasetTitleMutation . isLoading }
138+ status = { status }
139+ setStatus = { setStatus }
137140 />
138141 ) }
139142 < div className = "lg:flex-column mt-4 flex flex-col" >
@@ -153,96 +156,6 @@ export function EditLayout({ children, params }: LayoutProps) {
153156 ) ;
154157}
155158
156- const Header = ( {
157- dataset,
158- orgId,
159- saveTitle,
160- editMode,
161- setEditMode,
162- entityType,
163- } : any ) => {
164- return (
165- < >
166- < div className = "mb-3 flex flex-wrap-reverse items-center justify-between gap-4 md:gap-4 lg:flex-nowrap lg:gap-12" >
167- { ! editMode ? (
168- < div className = "flex items-center gap-4" >
169- < Text variant = "headingSm" color = "subdued" >
170- DATASET NAME : < b > { dataset ?. title } </ b >
171- </ Text >
172- < Button
173- kind = "tertiary"
174- icon = {
175- < Icon source = { Icons . pencil } size = { 16 } color = "interactive" />
176- }
177- onClick = { ( ) => setEditMode ( true ) }
178- >
179- edit
180- </ Button >
181- </ div >
182- ) : (
183- < div className = "flex-grow" >
184- < Form
185- onSubmit = { ( values : any ) =>
186- saveTitle ( {
187- updateDatasetInput : {
188- dataset : dataset . id ,
189- title : values . title ,
190- description : '' ,
191- tags : [ ] ,
192- } ,
193- } )
194- }
195- >
196- < FormLayout >
197- < div className = "flex flex-wrap items-center gap-4" >
198- < Text variant = "headingSm" color = "subdued" >
199- DATASET NAME :
200- </ Text >
201- < div className = "flex-grow" >
202- < Input
203- name = "title"
204- labelHidden
205- label = "Datset Title"
206- defaultValue = {
207- dataset ?. title !== ''
208- ? dataset ?. title
209- : `Untitled - ${ new Date (
210- dataset ?. created
211- ) . toLocaleDateString ( 'en-IN' , {
212- month : 'long' ,
213- day : 'numeric' ,
214- year : 'numeric' ,
215- } ) } `
216- }
217- />
218- </ div >
219- < div className = "flex flex-row gap-4" >
220- < Button submit kind = "primary" >
221- Save
222- </ Button >
223-
224- < Button kind = "tertiary" onClick = { ( ) => setEditMode ( false ) } >
225- Cancel
226- </ Button >
227- </ div >
228- </ div >
229- </ FormLayout >
230- </ Form >
231- </ div >
232- ) }
233-
234- < Link href = { `/dashboard/${ entityType } /${ orgId } /dataset` } >
235- < Text className = "flex gap-1" color = "interactive" >
236- Go back to Drafts{ ' ' }
237- < Icon source = { Icons . cross } size = { 20 } color = "interactive" />
238- </ Text >
239- </ Link >
240- </ div >
241- < Divider />
242- </ >
243- ) ;
244- } ;
245-
246159const Navigation = ( {
247160 id,
248161 pathItem,
@@ -258,7 +171,13 @@ const Navigation = ({
258171
259172 let links = [
260173 {
261- label : 'Resources' ,
174+ label : 'Metadata' ,
175+ id : 'metadata' ,
176+ url : `/dashboard/${ entityType } /${ organization } /dataset/${ id } /edit/metadata` ,
177+ // selected: pathItem === 'metadata',
178+ } ,
179+ {
180+ label : 'Data Files' ,
262181 id : 'resources' ,
263182 url : `/dashboard/${ entityType } /${ organization } /dataset/${ id } /edit/resources` ,
264183 // selected: pathItem === 'resources',
@@ -273,18 +192,13 @@ const Navigation = ({
273192 } ,
274193 ]
275194 : [ ] ) ,
276- {
277- label : 'Charts' ,
278- id : 'charts' ,
279- url : `/dashboard/${ entityType } /${ organization } /dataset/${ id } /edit/charts?type=list` ,
280- // selected: pathItem === 'charts',
281- } ,
282- {
283- label : 'Metadata' ,
284- id : 'metadata' ,
285- url : `/dashboard/${ entityType } /${ organization } /dataset/${ id } /edit/metadata` ,
286- // selected: pathItem === 'metadata',
287- } ,
195+ // {
196+ // label: 'Charts',
197+ // id: 'charts',
198+ // url: `/dashboard/${entityType}/${organization}/dataset/${id}/edit/charts?type=list`,
199+ // // selected: pathItem === 'charts',
200+ // },
201+
288202 {
289203 label : 'Publish' ,
290204 id : 'publish' ,
0 commit comments