subman-nextjs/src/app/submission/columns.tsx

101 lines
2.4 KiB
TypeScript
Raw Normal View History

2024-06-20 09:39:35 +00:00
"use client"
import { CellContext, ColumnDef, createColumnHelper } from "@tanstack/react-table"
2024-06-26 10:07:03 +00:00
import { ArrowUpDown } from "lucide-react"
2024-06-20 09:39:35 +00:00
import { Button } from "@/components/ui/button"
import { SubComplete } from "./page"
2024-06-22 18:12:05 +00:00
import { actions } from "app/ui/tables/actions"
2024-06-30 21:22:46 +00:00
import { selectCol } from "app/ui/tables/selectColumn"
import EditSubmissionDialog from "./edit"
2024-06-20 09:39:35 +00:00
const EditSubCell = (props: CellContext<any, any>) => {
return <EditSubmissionDialog
stories={props.table.options.meta.stories}
pubs={props.table.options.meta.pubs}
responses={props.table.options.meta.responses}
defaults={props.row.original}
>{
props.getValue() instanceof Date ?
<p className="w-full text-center">
{props.getValue().toLocaleDateString()}
</p>
: <p className="w-full text-left">{props.getValue()}</p>
}</EditSubmissionDialog>
}
2024-06-20 09:39:35 +00:00
export const columns: ColumnDef<SubComplete>[] = [
2024-06-30 21:22:46 +00:00
selectCol,
2024-07-04 16:31:22 +00:00
{
accessorFn: row => {
if (row.story) {
return row.story.title
}
return "RECORD DELETED"
},
id: "story",
header: "Story",
cell: EditSubCell
2024-07-04 16:31:22 +00:00
},
{
accessorFn: row => {
if (row.pub) {
return row.pub.title
}
return "RECORD DELETED"
},
id: "pub",
header: "Publication",
cell: EditSubCell
2024-07-04 16:31:22 +00:00
},
2024-06-20 09:39:35 +00:00
{
accessorFn: row => new Date(row.submitted),
id: "submitted",
header: ({ column }) => {
return (
<Button
variant="ghost"
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
>
Date Submitted
<ArrowUpDown className="ml-2 h-4 w-4" />
</Button>
)
},
enableColumnFilter: false,
sortingFn: "datetime",
cell: EditSubCell
2024-06-20 09:39:35 +00:00
},
{
2024-06-25 10:20:41 +00:00
accessorFn: row => row.responded ? new Date(row.responded) : null,
2024-06-20 09:39:35 +00:00
id: "responded",
header: ({ column }) => {
return (
<Button
variant="ghost"
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
>
Date Responded
<ArrowUpDown className="ml-2 h-4 w-4" />
</Button>
)
},
enableColumnFilter: false,
sortingFn: "datetime",
cell: EditSubCell
2024-06-20 09:39:35 +00:00
},
{
accessorFn: row => {
if (row.response) {
return row.response.response
}
return "RECORD DELETED"
},
id: "response",
header: "Response",
cell: EditSubCell
2024-06-20 09:39:35 +00:00
},
]