74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
"use client";
|
|
import { DatabaseBackupIcon } from "lucide-react";
|
|
import { PaginatedTable } from "../../../_components/PaginatedTable";
|
|
import Link from "next/link";
|
|
import { ColumnDef } from "@tanstack/react-table";
|
|
import { Heliport, Prisma } from "@repo/db";
|
|
|
|
const page = () => {
|
|
return (
|
|
<>
|
|
<PaginatedTable
|
|
stickyHeaders
|
|
prismaModel="heliport"
|
|
getFilter={(searchTerm) =>
|
|
({
|
|
OR: [
|
|
{ siteName: { contains: searchTerm, mode: "insensitive" } },
|
|
{ info: { contains: searchTerm, mode: "insensitive" } },
|
|
{ hospital: { contains: searchTerm, mode: "insensitive" } },
|
|
{ designator: { contains: searchTerm, mode: "insensitive" } },
|
|
],
|
|
}) as Prisma.HeliportWhereInput
|
|
}
|
|
showSearch
|
|
columns={
|
|
[
|
|
{
|
|
header: "Typ",
|
|
accessorKey: "type",
|
|
},
|
|
{
|
|
accessorKey: "designator",
|
|
header: "Designator",
|
|
},
|
|
{
|
|
header: "Name",
|
|
accessorKey: "siteName",
|
|
},
|
|
{
|
|
header: "Name (21 zeichen)",
|
|
accessorKey: "siteNameSub21",
|
|
},
|
|
|
|
{
|
|
header: "Aktionen",
|
|
cell: ({ row }) => (
|
|
<div className="flex items-center gap-1">
|
|
<Link href={`/admin/heliport/${row.original.id}`}>
|
|
<button className="btn btn-sm">Edit</button>
|
|
</Link>
|
|
</div>
|
|
),
|
|
},
|
|
] as ColumnDef<Heliport>[]
|
|
}
|
|
leftOfSearch={
|
|
<span className="flex items-center gap-2">
|
|
<DatabaseBackupIcon className="h-5 w-5" /> Heliports
|
|
</span>
|
|
}
|
|
rightOfSearch={
|
|
<p className="flex items-center justify-between gap-2 text-left text-2xl font-semibold">
|
|
<Link href={"/admin/heliport/new"}>
|
|
<button className="btn btn-sm btn-outline btn-primary">Erstellen</button>
|
|
</Link>
|
|
</p>
|
|
}
|
|
/>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default page;
|