From 883c47bdce6a3c1a25434512d58c7ed2bf4edbdb Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Sun, 16 Feb 2025 13:10:03 +0100 Subject: [PATCH] added User edit --- apps/hub/app/(app)/admin/user/[id]/page.tsx | 22 +++++++++++++++++ .../app/(app)/admin/{users => user}/page.tsx | 6 ++--- apps/hub/app/_components/PaginatedTable.tsx | 9 ++++++- apps/hub/app/_components/Table.tsx | 24 ++++++++++++++++++- apps/hub/app/_components/ui/Nav.tsx | 2 +- 5 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 apps/hub/app/(app)/admin/user/[id]/page.tsx rename apps/hub/app/(app)/admin/{users => user}/page.tsx (87%) diff --git a/apps/hub/app/(app)/admin/user/[id]/page.tsx b/apps/hub/app/(app)/admin/user/[id]/page.tsx new file mode 100644 index 00000000..19f0a092 --- /dev/null +++ b/apps/hub/app/(app)/admin/user/[id]/page.tsx @@ -0,0 +1,22 @@ +import { PrismaClient } from '@repo/db'; + +export default async ({ params }: { params: Promise<{ id: string }> }) => { + const prisma = new PrismaClient(); + const { id } = await params; + + const user = await prisma.user.findUnique({ + where: { + id: id, + }, + }); + console.log(user); + return ( +
+

+ {user?.firstname} {user?.lastname} +

+

{user?.email}

+ {/* TODO: Hier Nutzerdaten bearbeiten */} +
+ ); +}; diff --git a/apps/hub/app/(app)/admin/users/page.tsx b/apps/hub/app/(app)/admin/user/page.tsx similarity index 87% rename from apps/hub/app/(app)/admin/users/page.tsx rename to apps/hub/app/(app)/admin/user/page.tsx index 14d0a87c..b6a9b4a2 100644 --- a/apps/hub/app/(app)/admin/users/page.tsx +++ b/apps/hub/app/(app)/admin/user/page.tsx @@ -1,8 +1,10 @@ +import Link from 'next/link'; import { PaginatedTable } from '../../../_components/PaginatedTable'; export default async () => { return ( { header: 'Email', accessorKey: 'email', }, - { - header: 'Role', - accessorKey: 'role', - }, ]} /> ); diff --git a/apps/hub/app/_components/PaginatedTable.tsx b/apps/hub/app/_components/PaginatedTable.tsx index bc54e3b8..9b23ec4b 100644 --- a/apps/hub/app/_components/PaginatedTable.tsx +++ b/apps/hub/app/_components/PaginatedTable.tsx @@ -8,11 +8,13 @@ interface PaginatedTableProps extends Omit, 'data'> { prismaModel: keyof PrismaClient; rowsPerPage?: number; + showEditButton?: boolean; } export function PaginatedTable({ prismaModel, rowsPerPage = 10, + showEditButton = false, ...restProps }: PaginatedTableProps) { const [data, setData] = useState([]); @@ -30,7 +32,12 @@ export function PaginatedTable({ return (
- + { data: TData[]; columns: ColumnDef[]; + showEditButton?: boolean; + prismaModel?: keyof PrismaClient; } export default function SortableTable({ data, columns, + prismaModel, + showEditButton, }: SortableTableProps) { const [sorting, setSorting] = useState([]); const table = useReactTable({ data, - columns, + columns: showEditButton + ? [ + ...columns, + { + header: 'Actions', + cell: ({ row }) => ( +
+ + + +
+ ), + }, + ] + : columns, getCoreRowModel: getCoreRowModel(), getSortedRowModel: getSortedRowModel(), onSortingChange: setSorting, diff --git a/apps/hub/app/_components/ui/Nav.tsx b/apps/hub/app/_components/ui/Nav.tsx index 3c74ba35..1e800aad 100644 --- a/apps/hub/app/_components/ui/Nav.tsx +++ b/apps/hub/app/_components/ui/Nav.tsx @@ -29,7 +29,7 @@ export const VerticalNav = () => {
  • - User + User