From 768c84f171db850b149faa799144116ab9ca473a Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Sun, 13 Jul 2025 00:30:46 -0700 Subject: [PATCH] Sticky headers fix, added Heliports --- apps/hub/app/(app)/admin/event/page.tsx | 1 + .../app/(app)/admin/heliport/[id]/page.tsx | 13 ++ .../(app)/admin/heliport/_components/Form.tsx | 151 ++++++++++++++++++ apps/hub/app/(app)/admin/heliport/action.ts | 17 ++ apps/hub/app/(app)/admin/heliport/layout.tsx | 19 +++ .../hub/app/(app)/admin/heliport/new/page.tsx | 5 + apps/hub/app/(app)/admin/heliport/page.tsx | 63 ++++++++ apps/hub/app/(app)/admin/keyword/page.tsx | 1 + apps/hub/app/(app)/admin/penalty/page.tsx | 1 + apps/hub/app/(app)/admin/report/page.tsx | 1 + apps/hub/app/(app)/admin/station/page.tsx | 1 + .../admin/user/[id]/_components/forms.tsx | 19 ++- apps/hub/app/(app)/admin/user/[id]/page.tsx | 1 + apps/hub/app/(app)/admin/user/page.tsx | 1 + apps/hub/app/_components/Nav.tsx | 5 + apps/hub/app/_components/PaginatedTable.tsx | 49 +++--- .../database/prisma/schema/heliports.prisma | 25 +++ .../20250713055334_add_heliport/migration.sql | 18 +++ .../migration.sql | 2 + .../migration.sql | 11 ++ .../migration.sql | 10 ++ .../migration.sql | 10 ++ .../20250713061644_add_fir/migration.sql | 8 + .../migration.sql | 14 ++ .../migration.sql | 5 + .../migration.sql | 2 + packages/database/prisma/schema/user.prisma | 1 + 27 files changed, 432 insertions(+), 22 deletions(-) create mode 100644 apps/hub/app/(app)/admin/heliport/[id]/page.tsx create mode 100644 apps/hub/app/(app)/admin/heliport/_components/Form.tsx create mode 100644 apps/hub/app/(app)/admin/heliport/action.ts create mode 100644 apps/hub/app/(app)/admin/heliport/layout.tsx create mode 100644 apps/hub/app/(app)/admin/heliport/new/page.tsx create mode 100644 apps/hub/app/(app)/admin/heliport/page.tsx create mode 100644 packages/database/prisma/schema/heliports.prisma create mode 100644 packages/database/prisma/schema/migrations/20250713055334_add_heliport/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713055611_add_heliport_permission/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713060749_add_heliport_type/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713061133_missing_heliport_fields/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713061423_unify_heliport_name/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713061644_add_fir/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713062014_rebaname_helipad_enum/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713062559_helipad_fields_optional/migration.sql create mode 100644 packages/database/prisma/schema/migrations/20250713063038_mountain_enum_type/migration.sql diff --git a/apps/hub/app/(app)/admin/event/page.tsx b/apps/hub/app/(app)/admin/event/page.tsx index cf3a0448..078295ae 100644 --- a/apps/hub/app/(app)/admin/event/page.tsx +++ b/apps/hub/app/(app)/admin/event/page.tsx @@ -9,6 +9,7 @@ export default function Page() { return ( <> }) { + const { id } = await params; + const heliport = await prisma.heliport.findUnique({ + where: { + id: parseInt(id), + }, + }); + if (!heliport) return
Heliport not found
; + return ; +} diff --git a/apps/hub/app/(app)/admin/heliport/_components/Form.tsx b/apps/hub/app/(app)/admin/heliport/_components/Form.tsx new file mode 100644 index 00000000..93893c55 --- /dev/null +++ b/apps/hub/app/(app)/admin/heliport/_components/Form.tsx @@ -0,0 +1,151 @@ +"use client"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { HeliportOptionalDefaultsSchema } from "@repo/db/zod"; +import { useForm } from "react-hook-form"; +import { Heliport, HeliportType } from "@repo/db"; +import { FileText, LocateIcon } from "lucide-react"; +import { Input } from "../../../../_components/ui/Input"; +import { useState } from "react"; +import { deleteHeliport, upsertHeliport } from "../action"; +import { Button } from "../../../../_components/ui/Button"; +import { redirect } from "next/navigation"; + +export const HeliportForm = ({ heliport }: { heliport?: Heliport }) => { + const form = useForm({ + resolver: zodResolver(HeliportOptionalDefaultsSchema), + defaultValues: heliport, + }); + const [loading, setLoading] = useState(false); + const [deleteLoading, setDeleteLoading] = useState(false); + return ( + <> +
{ + setLoading(true); + await upsertHeliport(values, heliport?.id); + setLoading(false); + if (!heliport) redirect(`/admin/Heliport`); + })} + className="flex flex-wrap gap-3" + > +
+
+

+ Allgemeines +

+ + + + + + + +