diff --git a/src/data/query/keys.ts b/src/data/query/keys.ts index 788da9f..ec61bbd 100644 --- a/src/data/query/keys.ts +++ b/src/data/query/keys.ts @@ -1,31 +1,33 @@ export const qk = { - auth: ["auth"] as const, - session: () => ["auth", "session"] as const, - meProfile: () => ["auth", "meProfile"] as const, + auth: ['auth'] as const, + session: () => ['auth', 'session'] as const, + meProfile: () => ['auth', 'meProfile'] as const, - facultades: () => ["meta", "facultades"] as const, + facultades: () => ['meta', 'facultades'] as const, carreras: (facultadId?: string | null) => - ["meta", "carreras", { facultadId: facultadId ?? null }] as const, + ['meta', 'carreras', { facultadId: facultadId ?? null }] as const, estructurasPlan: (nivel?: string | null) => - ["meta", "estructurasPlan", { nivel: nivel ?? null }] as const, - estructurasAsignatura: () => ["meta", "estructurasAsignatura"] as const, - estadosPlan: () => ["meta", "estadosPlan"] as const, + ['meta', 'estructurasPlan', { nivel: nivel ?? null }] as const, + estructurasAsignatura: () => ['meta', 'estructurasAsignatura'] as const, + estadosPlan: () => ['meta', 'estadosPlan'] as const, - planesList: (filters: unknown) => ["planes", "list", filters] as const, - plan: (planId: string) => ["planes", "detail", planId] as const, - planLineas: (planId: string) => ["planes", planId, "lineas"] as const, - planAsignaturas: (planId: string) => ["planes", planId, "asignaturas"] as const, - planHistorial: (planId: string) => ["planes", planId, "historial"] as const, - planDocumento: (planId: string) => ["planes", planId, "documento"] as const, + planesList: (filters: unknown) => ['planes', 'list', filters] as const, + plan: (planId: string) => ['planes', 'detail', planId] as const, + planLineas: (planId: string) => ['planes', planId, 'lineas'] as const, + planAsignaturas: (planId: string) => + ['planes', planId, 'asignaturas'] as const, + planHistorial: (planId: string) => ['planes', planId, 'historial'] as const, + planDocumento: (planId: string) => ['planes', planId, 'documento'] as const, - asignatura: (asignaturaId: string) => ["asignaturas", "detail", asignaturaId] as const, + asignatura: (asignaturaId: string) => + ['asignaturas', 'detail', asignaturaId] as const, asignaturaBibliografia: (asignaturaId: string) => - ["asignaturas", asignaturaId, "bibliografia"] as const, + ['asignaturas', asignaturaId, 'bibliografia'] as const, asignaturaHistorial: (asignaturaId: string) => - ["asignaturas", asignaturaId, "historial"] as const, + ['asignaturas', asignaturaId, 'historial'] as const, asignaturaDocumento: (asignaturaId: string) => - ["asignaturas", asignaturaId, "documento"] as const, + ['asignaturas', asignaturaId, 'documento'] as const, - tareas: () => ["tareas", "mias"] as const, - notificaciones: () => ["notificaciones", "mias"] as const, -}; + tareas: () => ['tareas', 'mias'] as const, + notificaciones: () => ['notificaciones', 'mias'] as const, +} diff --git a/src/features/asignaturas/nueva/NuevaAsignaturaModalContainer.tsx b/src/features/asignaturas/nueva/NuevaAsignaturaModalContainer.tsx index ba66cb1..e7b9fe0 100644 --- a/src/features/asignaturas/nueva/NuevaAsignaturaModalContainer.tsx +++ b/src/features/asignaturas/nueva/NuevaAsignaturaModalContainer.tsx @@ -12,6 +12,8 @@ import { WizardHeader } from '@/components/asignaturas/wizard/WizardHeader' import { defineStepper } from '@/components/stepper' import { Dialog, DialogContent } from '@/components/ui/dialog' +const auth_get_current_user_role = () => 'JEFE_CARRERA' as const + const Wizard = defineStepper( { id: 'metodo', @@ -24,8 +26,8 @@ const Wizard = defineStepper( description: 'Nombre y estructura', }, { - id: 'configuracion', - title: 'Configuración', + id: 'detalles', + title: 'Detalles', description: 'Detalles según modo', }, { @@ -35,8 +37,6 @@ const Wizard = defineStepper( }, ) -const auth_get_current_user_role = () => 'JEFE_CARRERA' as const - export function NuevaAsignaturaModalContainer({ planId }: { planId: string }) { const navigate = useNavigate() const role = auth_get_current_user_role() @@ -68,57 +68,69 @@ export function NuevaAsignaturaModalContainer({ planId }: { planId: string }) { initialStep={Wizard.utils.getFirst().id} className="flex h-full flex-col" > - {({ methods }) => ( - <> - + {({ methods }) => { + const currentIndex = Wizard.utils.getIndex(methods.current.id) + 1 + const totalSteps = Wizard.steps.length + const nextStep = Wizard.steps[currentIndex] ?? { + title: '', + description: '', + } -
-
- {Wizard.utils.getIndex(methods.current.id) === 0 && ( - - - - )} - {Wizard.utils.getIndex(methods.current.id) === 1 && ( - - - - )} - {Wizard.utils.getIndex(methods.current.id) === 2 && ( - - - - )} - {Wizard.utils.getIndex(methods.current.id) === 3 && ( - - - - )} + return ( + <> + + +
+
+ {Wizard.utils.getIndex(methods.current.id) === 0 && ( + + + + )} + {Wizard.utils.getIndex(methods.current.id) === 1 && ( + + + + )} + {Wizard.utils.getIndex(methods.current.id) === 2 && ( + + + + )} + {Wizard.utils.getIndex(methods.current.id) === 3 && ( + + + + )} +
-
- crearAsignatura(handleClose)} - /> - - )} + crearAsignatura(handleClose)} + /> + + ) + }} )} diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index b69c51b..664da6b 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -12,21 +12,19 @@ import { Route as rootRouteImport } from './routes/__root' import { Route as LoginRouteImport } from './routes/login' import { Route as DashboardRouteImport } from './routes/dashboard' import { Route as IndexRouteImport } from './routes/index' +import { Route as PlanesListaRouteImport } from './routes/planes/_lista' import { Route as DemoTanstackQueryRouteImport } from './routes/demo/tanstack-query' -import { Route as PlanesListaRouteRouteImport } from './routes/planes/_lista/route' import { Route as PlanesListaNuevoRouteImport } from './routes/planes/_lista/nuevo' -import { Route as PlanesPlanIdAsignaturasRouteRouteImport } from './routes/planes/$planId/asignaturas/route' -import { Route as PlanesPlanIdDetalleRouteRouteImport } from './routes/planes/$planId/_detalle/route' +import { Route as PlanesPlanIdDetalleRouteImport } from './routes/planes/$planId/_detalle' import { Route as PlanesPlanIdDetalleIndexRouteImport } from './routes/planes/$planId/_detalle/index' +import { Route as PlanesPlanIdAsignaturasAsignaturaIdRouteImport } from './routes/planes/$planId/asignaturas/$asignaturaId' import { Route as PlanesPlanIdDetalleMapaRouteImport } from './routes/planes/$planId/_detalle/mapa' import { Route as PlanesPlanIdDetalleIaplanRouteImport } from './routes/planes/$planId/_detalle/iaplan' import { Route as PlanesPlanIdDetalleHistorialRouteImport } from './routes/planes/$planId/_detalle/historial' import { Route as PlanesPlanIdDetalleFlujoRouteImport } from './routes/planes/$planId/_detalle/flujo' import { Route as PlanesPlanIdDetalleDocumentoRouteImport } from './routes/planes/$planId/_detalle/documento' -import { Route as PlanesPlanIdDetalleAsignaturasRouteImport } from './routes/planes/$planId/_detalle/asignaturas' -import { Route as PlanesPlanIdAsignaturasListaRouteRouteImport } from './routes/planes/$planId/asignaturas/_lista/route' -import { Route as PlanesPlanIdAsignaturasAsignaturaIdRouteRouteImport } from './routes/planes/$planId/asignaturas/$asignaturaId/route' -import { Route as PlanesPlanIdAsignaturasListaNuevaRouteImport } from './routes/planes/$planId/asignaturas/_lista/nueva' +import { Route as PlanesPlanIdDetalleAsignaturasIndexRouteImport } from './routes/planes/$planId/_detalle/asignaturas/index' +import { Route as PlanesPlanIdDetalleAsignaturasNuevaRouteImport } from './routes/planes/$planId/_detalle/asignaturas/nueva' const LoginRoute = LoginRouteImport.update({ id: '/login', @@ -43,147 +41,133 @@ const IndexRoute = IndexRouteImport.update({ path: '/', getParentRoute: () => rootRouteImport, } as any) +const PlanesListaRoute = PlanesListaRouteImport.update({ + id: '/planes/_lista', + path: '/planes', + getParentRoute: () => rootRouteImport, +} as any) const DemoTanstackQueryRoute = DemoTanstackQueryRouteImport.update({ id: '/demo/tanstack-query', path: '/demo/tanstack-query', getParentRoute: () => rootRouteImport, } as any) -const PlanesListaRouteRoute = PlanesListaRouteRouteImport.update({ - id: '/planes/_lista', - path: '/planes', - getParentRoute: () => rootRouteImport, -} as any) const PlanesListaNuevoRoute = PlanesListaNuevoRouteImport.update({ id: '/nuevo', path: '/nuevo', - getParentRoute: () => PlanesListaRouteRoute, + getParentRoute: () => PlanesListaRoute, +} as any) +const PlanesPlanIdDetalleRoute = PlanesPlanIdDetalleRouteImport.update({ + id: '/planes/$planId/_detalle', + path: '/planes/$planId', + getParentRoute: () => rootRouteImport, } as any) -const PlanesPlanIdAsignaturasRouteRoute = - PlanesPlanIdAsignaturasRouteRouteImport.update({ - id: '/planes/$planId/asignaturas', - path: '/planes/$planId/asignaturas', - getParentRoute: () => rootRouteImport, - } as any) -const PlanesPlanIdDetalleRouteRoute = - PlanesPlanIdDetalleRouteRouteImport.update({ - id: '/planes/$planId/_detalle', - path: '/planes/$planId', - getParentRoute: () => rootRouteImport, - } as any) const PlanesPlanIdDetalleIndexRoute = PlanesPlanIdDetalleIndexRouteImport.update({ id: '/', path: '/', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, + } as any) +const PlanesPlanIdAsignaturasAsignaturaIdRoute = + PlanesPlanIdAsignaturasAsignaturaIdRouteImport.update({ + id: '/planes/$planId/asignaturas/$asignaturaId', + path: '/planes/$planId/asignaturas/$asignaturaId', + getParentRoute: () => rootRouteImport, } as any) const PlanesPlanIdDetalleMapaRoute = PlanesPlanIdDetalleMapaRouteImport.update({ id: '/mapa', path: '/mapa', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) const PlanesPlanIdDetalleIaplanRoute = PlanesPlanIdDetalleIaplanRouteImport.update({ id: '/iaplan', path: '/iaplan', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) const PlanesPlanIdDetalleHistorialRoute = PlanesPlanIdDetalleHistorialRouteImport.update({ id: '/historial', path: '/historial', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) const PlanesPlanIdDetalleFlujoRoute = PlanesPlanIdDetalleFlujoRouteImport.update({ id: '/flujo', path: '/flujo', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) const PlanesPlanIdDetalleDocumentoRoute = PlanesPlanIdDetalleDocumentoRouteImport.update({ id: '/documento', path: '/documento', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) -const PlanesPlanIdDetalleAsignaturasRoute = - PlanesPlanIdDetalleAsignaturasRouteImport.update({ - id: '/asignaturas', - path: '/asignaturas', - getParentRoute: () => PlanesPlanIdDetalleRouteRoute, +const PlanesPlanIdDetalleAsignaturasIndexRoute = + PlanesPlanIdDetalleAsignaturasIndexRouteImport.update({ + id: '/asignaturas/', + path: '/asignaturas/', + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) -const PlanesPlanIdAsignaturasListaRouteRoute = - PlanesPlanIdAsignaturasListaRouteRouteImport.update({ - id: '/_lista', - getParentRoute: () => PlanesPlanIdAsignaturasRouteRoute, - } as any) -const PlanesPlanIdAsignaturasAsignaturaIdRouteRoute = - PlanesPlanIdAsignaturasAsignaturaIdRouteRouteImport.update({ - id: '/$asignaturaId', - path: '/$asignaturaId', - getParentRoute: () => PlanesPlanIdAsignaturasRouteRoute, - } as any) -const PlanesPlanIdAsignaturasListaNuevaRoute = - PlanesPlanIdAsignaturasListaNuevaRouteImport.update({ - id: '/nueva', - path: '/nueva', - getParentRoute: () => PlanesPlanIdAsignaturasListaRouteRoute, +const PlanesPlanIdDetalleAsignaturasNuevaRoute = + PlanesPlanIdDetalleAsignaturasNuevaRouteImport.update({ + id: '/asignaturas/nueva', + path: '/asignaturas/nueva', + getParentRoute: () => PlanesPlanIdDetalleRoute, } as any) export interface FileRoutesByFullPath { '/': typeof IndexRoute '/dashboard': typeof DashboardRoute '/login': typeof LoginRoute - '/planes': typeof PlanesListaRouteRouteWithChildren '/demo/tanstack-query': typeof DemoTanstackQueryRoute - '/planes/$planId': typeof PlanesPlanIdDetalleRouteRouteWithChildren - '/planes/$planId/asignaturas': typeof PlanesPlanIdDetalleAsignaturasRoute + '/planes': typeof PlanesListaRouteWithChildren + '/planes/$planId': typeof PlanesPlanIdDetalleRouteWithChildren '/planes/nuevo': typeof PlanesListaNuevoRoute - '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRouteRoute '/planes/$planId/documento': typeof PlanesPlanIdDetalleDocumentoRoute '/planes/$planId/flujo': typeof PlanesPlanIdDetalleFlujoRoute '/planes/$planId/historial': typeof PlanesPlanIdDetalleHistorialRoute '/planes/$planId/iaplan': typeof PlanesPlanIdDetalleIaplanRoute '/planes/$planId/mapa': typeof PlanesPlanIdDetalleMapaRoute + '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRoute '/planes/$planId/': typeof PlanesPlanIdDetalleIndexRoute - '/planes/$planId/asignaturas/nueva': typeof PlanesPlanIdAsignaturasListaNuevaRoute + '/planes/$planId/asignaturas/nueva': typeof PlanesPlanIdDetalleAsignaturasNuevaRoute + '/planes/$planId/asignaturas/': typeof PlanesPlanIdDetalleAsignaturasIndexRoute } export interface FileRoutesByTo { '/': typeof IndexRoute '/dashboard': typeof DashboardRoute '/login': typeof LoginRoute - '/planes': typeof PlanesListaRouteRouteWithChildren '/demo/tanstack-query': typeof DemoTanstackQueryRoute - '/planes/$planId/asignaturas': typeof PlanesPlanIdDetalleAsignaturasRoute + '/planes': typeof PlanesListaRouteWithChildren '/planes/nuevo': typeof PlanesListaNuevoRoute - '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRouteRoute '/planes/$planId/documento': typeof PlanesPlanIdDetalleDocumentoRoute '/planes/$planId/flujo': typeof PlanesPlanIdDetalleFlujoRoute '/planes/$planId/historial': typeof PlanesPlanIdDetalleHistorialRoute '/planes/$planId/iaplan': typeof PlanesPlanIdDetalleIaplanRoute '/planes/$planId/mapa': typeof PlanesPlanIdDetalleMapaRoute + '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRoute '/planes/$planId': typeof PlanesPlanIdDetalleIndexRoute - '/planes/$planId/asignaturas/nueva': typeof PlanesPlanIdAsignaturasListaNuevaRoute + '/planes/$planId/asignaturas/nueva': typeof PlanesPlanIdDetalleAsignaturasNuevaRoute + '/planes/$planId/asignaturas': typeof PlanesPlanIdDetalleAsignaturasIndexRoute } export interface FileRoutesById { __root__: typeof rootRouteImport '/': typeof IndexRoute '/dashboard': typeof DashboardRoute '/login': typeof LoginRoute - '/planes/_lista': typeof PlanesListaRouteRouteWithChildren '/demo/tanstack-query': typeof DemoTanstackQueryRoute - '/planes/$planId/_detalle': typeof PlanesPlanIdDetalleRouteRouteWithChildren - '/planes/$planId/asignaturas': typeof PlanesPlanIdAsignaturasRouteRouteWithChildren + '/planes/_lista': typeof PlanesListaRouteWithChildren + '/planes/$planId/_detalle': typeof PlanesPlanIdDetalleRouteWithChildren '/planes/_lista/nuevo': typeof PlanesListaNuevoRoute - '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRouteRoute - '/planes/$planId/asignaturas/_lista': typeof PlanesPlanIdAsignaturasListaRouteRouteWithChildren - '/planes/$planId/_detalle/asignaturas': typeof PlanesPlanIdDetalleAsignaturasRoute '/planes/$planId/_detalle/documento': typeof PlanesPlanIdDetalleDocumentoRoute '/planes/$planId/_detalle/flujo': typeof PlanesPlanIdDetalleFlujoRoute '/planes/$planId/_detalle/historial': typeof PlanesPlanIdDetalleHistorialRoute '/planes/$planId/_detalle/iaplan': typeof PlanesPlanIdDetalleIaplanRoute '/planes/$planId/_detalle/mapa': typeof PlanesPlanIdDetalleMapaRoute + '/planes/$planId/asignaturas/$asignaturaId': typeof PlanesPlanIdAsignaturasAsignaturaIdRoute '/planes/$planId/_detalle/': typeof PlanesPlanIdDetalleIndexRoute - '/planes/$planId/asignaturas/_lista/nueva': typeof PlanesPlanIdAsignaturasListaNuevaRoute + '/planes/$planId/_detalle/asignaturas/nueva': typeof PlanesPlanIdDetalleAsignaturasNuevaRoute + '/planes/$planId/_detalle/asignaturas/': typeof PlanesPlanIdDetalleAsignaturasIndexRoute } export interface FileRouteTypes { fileRoutesByFullPath: FileRoutesByFullPath @@ -191,66 +175,64 @@ export interface FileRouteTypes { | '/' | '/dashboard' | '/login' - | '/planes' | '/demo/tanstack-query' + | '/planes' | '/planes/$planId' - | '/planes/$planId/asignaturas' | '/planes/nuevo' - | '/planes/$planId/asignaturas/$asignaturaId' | '/planes/$planId/documento' | '/planes/$planId/flujo' | '/planes/$planId/historial' | '/planes/$planId/iaplan' | '/planes/$planId/mapa' + | '/planes/$planId/asignaturas/$asignaturaId' | '/planes/$planId/' | '/planes/$planId/asignaturas/nueva' + | '/planes/$planId/asignaturas/' fileRoutesByTo: FileRoutesByTo to: | '/' | '/dashboard' | '/login' - | '/planes' | '/demo/tanstack-query' - | '/planes/$planId/asignaturas' + | '/planes' | '/planes/nuevo' - | '/planes/$planId/asignaturas/$asignaturaId' | '/planes/$planId/documento' | '/planes/$planId/flujo' | '/planes/$planId/historial' | '/planes/$planId/iaplan' | '/planes/$planId/mapa' + | '/planes/$planId/asignaturas/$asignaturaId' | '/planes/$planId' | '/planes/$planId/asignaturas/nueva' + | '/planes/$planId/asignaturas' id: | '__root__' | '/' | '/dashboard' | '/login' - | '/planes/_lista' | '/demo/tanstack-query' + | '/planes/_lista' | '/planes/$planId/_detalle' - | '/planes/$planId/asignaturas' | '/planes/_lista/nuevo' - | '/planes/$planId/asignaturas/$asignaturaId' - | '/planes/$planId/asignaturas/_lista' - | '/planes/$planId/_detalle/asignaturas' | '/planes/$planId/_detalle/documento' | '/planes/$planId/_detalle/flujo' | '/planes/$planId/_detalle/historial' | '/planes/$planId/_detalle/iaplan' | '/planes/$planId/_detalle/mapa' + | '/planes/$planId/asignaturas/$asignaturaId' | '/planes/$planId/_detalle/' - | '/planes/$planId/asignaturas/_lista/nueva' + | '/planes/$planId/_detalle/asignaturas/nueva' + | '/planes/$planId/_detalle/asignaturas/' fileRoutesById: FileRoutesById } export interface RootRouteChildren { IndexRoute: typeof IndexRoute DashboardRoute: typeof DashboardRoute LoginRoute: typeof LoginRoute - PlanesListaRouteRoute: typeof PlanesListaRouteRouteWithChildren DemoTanstackQueryRoute: typeof DemoTanstackQueryRoute - PlanesPlanIdDetalleRouteRoute: typeof PlanesPlanIdDetalleRouteRouteWithChildren - PlanesPlanIdAsignaturasRouteRoute: typeof PlanesPlanIdAsignaturasRouteRouteWithChildren + PlanesListaRoute: typeof PlanesListaRouteWithChildren + PlanesPlanIdDetalleRoute: typeof PlanesPlanIdDetalleRouteWithChildren + PlanesPlanIdAsignaturasAsignaturaIdRoute: typeof PlanesPlanIdAsignaturasAsignaturaIdRoute } declare module '@tanstack/react-router' { @@ -276,6 +258,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof IndexRouteImport parentRoute: typeof rootRouteImport } + '/planes/_lista': { + id: '/planes/_lista' + path: '/planes' + fullPath: '/planes' + preLoaderRoute: typeof PlanesListaRouteImport + parentRoute: typeof rootRouteImport + } '/demo/tanstack-query': { id: '/demo/tanstack-query' path: '/demo/tanstack-query' @@ -283,32 +272,18 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof DemoTanstackQueryRouteImport parentRoute: typeof rootRouteImport } - '/planes/_lista': { - id: '/planes/_lista' - path: '/planes' - fullPath: '/planes' - preLoaderRoute: typeof PlanesListaRouteRouteImport - parentRoute: typeof rootRouteImport - } '/planes/_lista/nuevo': { id: '/planes/_lista/nuevo' path: '/nuevo' fullPath: '/planes/nuevo' preLoaderRoute: typeof PlanesListaNuevoRouteImport - parentRoute: typeof PlanesListaRouteRoute - } - '/planes/$planId/asignaturas': { - id: '/planes/$planId/asignaturas' - path: '/planes/$planId/asignaturas' - fullPath: '/planes/$planId/asignaturas' - preLoaderRoute: typeof PlanesPlanIdAsignaturasRouteRouteImport - parentRoute: typeof rootRouteImport + parentRoute: typeof PlanesListaRoute } '/planes/$planId/_detalle': { id: '/planes/$planId/_detalle' path: '/planes/$planId' fullPath: '/planes/$planId' - preLoaderRoute: typeof PlanesPlanIdDetalleRouteRouteImport + preLoaderRoute: typeof PlanesPlanIdDetalleRouteImport parentRoute: typeof rootRouteImport } '/planes/$planId/_detalle/': { @@ -316,153 +291,115 @@ declare module '@tanstack/react-router' { path: '/' fullPath: '/planes/$planId/' preLoaderRoute: typeof PlanesPlanIdDetalleIndexRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute + } + '/planes/$planId/asignaturas/$asignaturaId': { + id: '/planes/$planId/asignaturas/$asignaturaId' + path: '/planes/$planId/asignaturas/$asignaturaId' + fullPath: '/planes/$planId/asignaturas/$asignaturaId' + preLoaderRoute: typeof PlanesPlanIdAsignaturasAsignaturaIdRouteImport + parentRoute: typeof rootRouteImport } '/planes/$planId/_detalle/mapa': { id: '/planes/$planId/_detalle/mapa' path: '/mapa' fullPath: '/planes/$planId/mapa' preLoaderRoute: typeof PlanesPlanIdDetalleMapaRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute } '/planes/$planId/_detalle/iaplan': { id: '/planes/$planId/_detalle/iaplan' path: '/iaplan' fullPath: '/planes/$planId/iaplan' preLoaderRoute: typeof PlanesPlanIdDetalleIaplanRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute } '/planes/$planId/_detalle/historial': { id: '/planes/$planId/_detalle/historial' path: '/historial' fullPath: '/planes/$planId/historial' preLoaderRoute: typeof PlanesPlanIdDetalleHistorialRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute } '/planes/$planId/_detalle/flujo': { id: '/planes/$planId/_detalle/flujo' path: '/flujo' fullPath: '/planes/$planId/flujo' preLoaderRoute: typeof PlanesPlanIdDetalleFlujoRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute } '/planes/$planId/_detalle/documento': { id: '/planes/$planId/_detalle/documento' path: '/documento' fullPath: '/planes/$planId/documento' preLoaderRoute: typeof PlanesPlanIdDetalleDocumentoRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + parentRoute: typeof PlanesPlanIdDetalleRoute } - '/planes/$planId/_detalle/asignaturas': { - id: '/planes/$planId/_detalle/asignaturas' + '/planes/$planId/_detalle/asignaturas/': { + id: '/planes/$planId/_detalle/asignaturas/' path: '/asignaturas' - fullPath: '/planes/$planId/asignaturas' - preLoaderRoute: typeof PlanesPlanIdDetalleAsignaturasRouteImport - parentRoute: typeof PlanesPlanIdDetalleRouteRoute + fullPath: '/planes/$planId/asignaturas/' + preLoaderRoute: typeof PlanesPlanIdDetalleAsignaturasIndexRouteImport + parentRoute: typeof PlanesPlanIdDetalleRoute } - '/planes/$planId/asignaturas/_lista': { - id: '/planes/$planId/asignaturas/_lista' - path: '' - fullPath: '/planes/$planId/asignaturas' - preLoaderRoute: typeof PlanesPlanIdAsignaturasListaRouteRouteImport - parentRoute: typeof PlanesPlanIdAsignaturasRouteRoute - } - '/planes/$planId/asignaturas/$asignaturaId': { - id: '/planes/$planId/asignaturas/$asignaturaId' - path: '/$asignaturaId' - fullPath: '/planes/$planId/asignaturas/$asignaturaId' - preLoaderRoute: typeof PlanesPlanIdAsignaturasAsignaturaIdRouteRouteImport - parentRoute: typeof PlanesPlanIdAsignaturasRouteRoute - } - '/planes/$planId/asignaturas/_lista/nueva': { - id: '/planes/$planId/asignaturas/_lista/nueva' - path: '/nueva' + '/planes/$planId/_detalle/asignaturas/nueva': { + id: '/planes/$planId/_detalle/asignaturas/nueva' + path: '/asignaturas/nueva' fullPath: '/planes/$planId/asignaturas/nueva' - preLoaderRoute: typeof PlanesPlanIdAsignaturasListaNuevaRouteImport - parentRoute: typeof PlanesPlanIdAsignaturasListaRouteRoute + preLoaderRoute: typeof PlanesPlanIdDetalleAsignaturasNuevaRouteImport + parentRoute: typeof PlanesPlanIdDetalleRoute } } } -interface PlanesListaRouteRouteChildren { +interface PlanesListaRouteChildren { PlanesListaNuevoRoute: typeof PlanesListaNuevoRoute } -const PlanesListaRouteRouteChildren: PlanesListaRouteRouteChildren = { +const PlanesListaRouteChildren: PlanesListaRouteChildren = { PlanesListaNuevoRoute: PlanesListaNuevoRoute, } -const PlanesListaRouteRouteWithChildren = - PlanesListaRouteRoute._addFileChildren(PlanesListaRouteRouteChildren) +const PlanesListaRouteWithChildren = PlanesListaRoute._addFileChildren( + PlanesListaRouteChildren, +) -interface PlanesPlanIdDetalleRouteRouteChildren { - PlanesPlanIdDetalleAsignaturasRoute: typeof PlanesPlanIdDetalleAsignaturasRoute +interface PlanesPlanIdDetalleRouteChildren { PlanesPlanIdDetalleDocumentoRoute: typeof PlanesPlanIdDetalleDocumentoRoute PlanesPlanIdDetalleFlujoRoute: typeof PlanesPlanIdDetalleFlujoRoute PlanesPlanIdDetalleHistorialRoute: typeof PlanesPlanIdDetalleHistorialRoute PlanesPlanIdDetalleIaplanRoute: typeof PlanesPlanIdDetalleIaplanRoute PlanesPlanIdDetalleMapaRoute: typeof PlanesPlanIdDetalleMapaRoute PlanesPlanIdDetalleIndexRoute: typeof PlanesPlanIdDetalleIndexRoute + PlanesPlanIdDetalleAsignaturasNuevaRoute: typeof PlanesPlanIdDetalleAsignaturasNuevaRoute + PlanesPlanIdDetalleAsignaturasIndexRoute: typeof PlanesPlanIdDetalleAsignaturasIndexRoute } -const PlanesPlanIdDetalleRouteRouteChildren: PlanesPlanIdDetalleRouteRouteChildren = - { - PlanesPlanIdDetalleAsignaturasRoute: PlanesPlanIdDetalleAsignaturasRoute, - PlanesPlanIdDetalleDocumentoRoute: PlanesPlanIdDetalleDocumentoRoute, - PlanesPlanIdDetalleFlujoRoute: PlanesPlanIdDetalleFlujoRoute, - PlanesPlanIdDetalleHistorialRoute: PlanesPlanIdDetalleHistorialRoute, - PlanesPlanIdDetalleIaplanRoute: PlanesPlanIdDetalleIaplanRoute, - PlanesPlanIdDetalleMapaRoute: PlanesPlanIdDetalleMapaRoute, - PlanesPlanIdDetalleIndexRoute: PlanesPlanIdDetalleIndexRoute, - } - -const PlanesPlanIdDetalleRouteRouteWithChildren = - PlanesPlanIdDetalleRouteRoute._addFileChildren( - PlanesPlanIdDetalleRouteRouteChildren, - ) - -interface PlanesPlanIdAsignaturasListaRouteRouteChildren { - PlanesPlanIdAsignaturasListaNuevaRoute: typeof PlanesPlanIdAsignaturasListaNuevaRoute +const PlanesPlanIdDetalleRouteChildren: PlanesPlanIdDetalleRouteChildren = { + PlanesPlanIdDetalleDocumentoRoute: PlanesPlanIdDetalleDocumentoRoute, + PlanesPlanIdDetalleFlujoRoute: PlanesPlanIdDetalleFlujoRoute, + PlanesPlanIdDetalleHistorialRoute: PlanesPlanIdDetalleHistorialRoute, + PlanesPlanIdDetalleIaplanRoute: PlanesPlanIdDetalleIaplanRoute, + PlanesPlanIdDetalleMapaRoute: PlanesPlanIdDetalleMapaRoute, + PlanesPlanIdDetalleIndexRoute: PlanesPlanIdDetalleIndexRoute, + PlanesPlanIdDetalleAsignaturasNuevaRoute: + PlanesPlanIdDetalleAsignaturasNuevaRoute, + PlanesPlanIdDetalleAsignaturasIndexRoute: + PlanesPlanIdDetalleAsignaturasIndexRoute, } -const PlanesPlanIdAsignaturasListaRouteRouteChildren: PlanesPlanIdAsignaturasListaRouteRouteChildren = - { - PlanesPlanIdAsignaturasListaNuevaRoute: - PlanesPlanIdAsignaturasListaNuevaRoute, - } - -const PlanesPlanIdAsignaturasListaRouteRouteWithChildren = - PlanesPlanIdAsignaturasListaRouteRoute._addFileChildren( - PlanesPlanIdAsignaturasListaRouteRouteChildren, - ) - -interface PlanesPlanIdAsignaturasRouteRouteChildren { - PlanesPlanIdAsignaturasAsignaturaIdRouteRoute: typeof PlanesPlanIdAsignaturasAsignaturaIdRouteRoute - PlanesPlanIdAsignaturasListaRouteRoute: typeof PlanesPlanIdAsignaturasListaRouteRouteWithChildren -} - -const PlanesPlanIdAsignaturasRouteRouteChildren: PlanesPlanIdAsignaturasRouteRouteChildren = - { - PlanesPlanIdAsignaturasAsignaturaIdRouteRoute: - PlanesPlanIdAsignaturasAsignaturaIdRouteRoute, - PlanesPlanIdAsignaturasListaRouteRoute: - PlanesPlanIdAsignaturasListaRouteRouteWithChildren, - } - -const PlanesPlanIdAsignaturasRouteRouteWithChildren = - PlanesPlanIdAsignaturasRouteRoute._addFileChildren( - PlanesPlanIdAsignaturasRouteRouteChildren, - ) +const PlanesPlanIdDetalleRouteWithChildren = + PlanesPlanIdDetalleRoute._addFileChildren(PlanesPlanIdDetalleRouteChildren) const rootRouteChildren: RootRouteChildren = { IndexRoute: IndexRoute, DashboardRoute: DashboardRoute, LoginRoute: LoginRoute, - PlanesListaRouteRoute: PlanesListaRouteRouteWithChildren, DemoTanstackQueryRoute: DemoTanstackQueryRoute, - PlanesPlanIdDetalleRouteRoute: PlanesPlanIdDetalleRouteRouteWithChildren, - PlanesPlanIdAsignaturasRouteRoute: - PlanesPlanIdAsignaturasRouteRouteWithChildren, + PlanesListaRoute: PlanesListaRouteWithChildren, + PlanesPlanIdDetalleRoute: PlanesPlanIdDetalleRouteWithChildren, + PlanesPlanIdAsignaturasAsignaturaIdRoute: + PlanesPlanIdAsignaturasAsignaturaIdRoute, } export const routeTree = rootRouteImport ._addFileChildren(rootRouteChildren) diff --git a/src/routes/planes/$planId/_detalle/route.tsx b/src/routes/planes/$planId/_detalle.tsx similarity index 99% rename from src/routes/planes/$planId/_detalle/route.tsx rename to src/routes/planes/$planId/_detalle.tsx index bd774ee..372909e 100644 --- a/src/routes/planes/$planId/_detalle/route.tsx +++ b/src/routes/planes/$planId/_detalle.tsx @@ -35,6 +35,8 @@ export const Route = createFileRoute('/planes/$planId/_detalle')({ } catch (e: any) { // PGRST116: The result contains 0 rows if (e?.code === 'PGRST116') { + console.log('not found on', Route.path) + throw notFound() } throw e diff --git a/src/routes/planes/$planId/_detalle/asignaturas.tsx b/src/routes/planes/$planId/_detalle/asignaturas/index.tsx similarity index 95% rename from src/routes/planes/$planId/_detalle/asignaturas.tsx rename to src/routes/planes/$planId/_detalle/asignaturas/index.tsx index 0128351..d2fbc59 100644 --- a/src/routes/planes/$planId/_detalle/asignaturas.tsx +++ b/src/routes/planes/$planId/_detalle/asignaturas/index.tsx @@ -131,7 +131,17 @@ function AsignaturasPage() { -
diff --git a/src/routes/planes/$planId/asignaturas/_lista/nueva.tsx b/src/routes/planes/$planId/_detalle/asignaturas/nueva.tsx similarity index 80% rename from src/routes/planes/$planId/asignaturas/_lista/nueva.tsx rename to src/routes/planes/$planId/_detalle/asignaturas/nueva.tsx index e5c797b..51dedb2 100644 --- a/src/routes/planes/$planId/asignaturas/_lista/nueva.tsx +++ b/src/routes/planes/$planId/_detalle/asignaturas/nueva.tsx @@ -3,12 +3,13 @@ import { createFileRoute } from '@tanstack/react-router' import { NuevaAsignaturaModalContainer } from '@/features/asignaturas/nueva/NuevaAsignaturaModalContainer' export const Route = createFileRoute( - '/planes/$planId/asignaturas/_lista/nueva', + '/planes/$planId/_detalle/asignaturas/nueva', )({ component: NuevaAsignaturaModal, }) function NuevaAsignaturaModal() { const { planId } = Route.useParams() + console.log('planId desde nueva', planId) return } diff --git a/src/routes/planes/$planId/asignaturas/$asignaturaId.tsx b/src/routes/planes/$planId/asignaturas/$asignaturaId.tsx new file mode 100644 index 0000000..6a9a5d6 --- /dev/null +++ b/src/routes/planes/$planId/asignaturas/$asignaturaId.tsx @@ -0,0 +1,44 @@ +import { createFileRoute, notFound } from '@tanstack/react-router' + +import MateriaDetailPage from '@/components/asignaturas/detalle/MateriaDetailPage' +import { NotFoundPage } from '@/components/ui/NotFoundPage' +import { subjects_get } from '@/data/api/subjects.api' +import { qk } from '@/data/query/keys' + +export const Route = createFileRoute( + '/planes/$planId/asignaturas/$asignaturaId', +)({ + loader: async ({ context: { queryClient }, params: { asignaturaId } }) => { + try { + await queryClient.ensureQueryData({ + queryKey: qk.asignatura(asignaturaId), + queryFn: () => subjects_get(asignaturaId), + }) + } catch (e: any) { + // PGRST116: The result contains 0 rows (Supabase Single response error) + if (e?.code === 'PGRST116') { + throw notFound() + } + throw e + } + }, + notFoundComponent: () => { + return ( + + ) + }, + component: RouteComponent, +}) + +function RouteComponent() { + // const { planId, asignaturaId } = Route.useParams() + + return ( +
+ +
+ ) +} diff --git a/src/routes/planes/$planId/asignaturas/$asignaturaId/route.tsx b/src/routes/planes/$planId/asignaturas/$asignaturaId/route.tsx deleted file mode 100644 index cc36bf7..0000000 --- a/src/routes/planes/$planId/asignaturas/$asignaturaId/route.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import AsignaturaDetailPage from '@/components/asignaturas/detalle/AsignaturaDetailPage' -import { createFileRoute } from '@tanstack/react-router' - -export const Route = createFileRoute( - '/planes/$planId/asignaturas/$asignaturaId', -)({ - component: RouteComponent, -}) - -function RouteComponent() { - //const { planId, asignaturaId } = Route.useParams() - - return ( -
- -
- ) -} diff --git a/src/routes/planes/$planId/asignaturas/_lista/route.tsx b/src/routes/planes/$planId/asignaturas/_lista/route.tsx deleted file mode 100644 index 980020f..0000000 --- a/src/routes/planes/$planId/asignaturas/_lista/route.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { createFileRoute, Outlet } from '@tanstack/react-router' - -export const Route = createFileRoute('/planes/$planId/asignaturas/_lista')({ - component: RouteComponent, -}) - -function RouteComponent() { - return ( -
-
-

Asignaturas

- -
-
- ) -} diff --git a/src/routes/planes/$planId/asignaturas/route.tsx b/src/routes/planes/$planId/asignaturas/route.tsx deleted file mode 100644 index 88a1ef2..0000000 --- a/src/routes/planes/$planId/asignaturas/route.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { createFileRoute, Outlet, notFound } from '@tanstack/react-router' - -import { NotFoundPage } from '@/components/ui/NotFoundPage' -import { plans_get } from '@/data/api/plans.api' -import { qk } from '@/data/query/keys' - -export const Route = createFileRoute('/planes/$planId/asignaturas')({ - loader: async ({ context: { queryClient }, params: { planId } }) => { - try { - await queryClient.ensureQueryData({ - queryKey: qk.plan(planId), - queryFn: () => plans_get(planId), - }) - } catch (e: any) { - if (e?.code === 'PGRST116') { - throw notFound() - } - throw e - } - }, - notFoundComponent: () => { - return ( - - ) - }, - component: AsignaturasLayout, -}) - -function AsignaturasLayout() { - return -} diff --git a/src/routes/planes/_lista/route.tsx b/src/routes/planes/_lista.tsx similarity index 98% rename from src/routes/planes/_lista/route.tsx rename to src/routes/planes/_lista.tsx index 944f6ac..f58283c 100644 --- a/src/routes/planes/_lista/route.tsx +++ b/src/routes/planes/_lista.tsx @@ -125,7 +125,11 @@ function RouteComponent() {