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

122 lines
3.6 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-09-24 11:32:26 +00:00
import { ArrowUpDown, BookText, CalendarMinus, CalendarPlus, MessageCircleReply, NotepadText } from "lucide-react"
2024-06-20 09:39:35 +00:00
import { Button } from "@/components/ui/button"
import { SubComplete } from "./page"
2024-06-30 21:22:46 +00:00
import { selectCol } from "app/ui/tables/selectColumn"
2024-07-24 20:41:46 +00:00
import TitleContainer from "app/ui/titleContainer"
2024-09-24 11:32:26 +00:00
import { CalendarArrowUp } from "lucide"
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",
2024-09-24 11:32:26 +00:00
header: () => (
<>
<span className="hidden md:block">Story</span>
<NotepadText className="block md:hidden" />
</>
),
2024-07-24 20:41:46 +00:00
cell: (props: CellContext<any, any>) => (<TitleContainer>{props.getValue()}</TitleContainer>)
2024-07-04 16:31:22 +00:00
},
{
accessorFn: row => {
if (row.pub) {
return row.pub.title
}
return "RECORD DELETED"
},
id: "pub",
2024-09-24 11:32:26 +00:00
header: () => (
<>
<span className="hidden md:block">Publication</span>
<BookText className="block md:hidden" />
</>
),
2024-07-24 20:41:46 +00:00
cell: (props: CellContext<any, any>) => (<TitleContainer>{props.getValue()}</TitleContainer>)
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"
2024-09-24 11:32:26 +00:00
className="p-0"
2024-06-20 09:39:35 +00:00
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
>
2024-09-24 11:32:26 +00:00
<span className="hidden md:block"> Date Submitted </span>
<CalendarPlus className="block md:hidden" />
<ArrowUpDown className="ml-2 h-4 w-4 hidden md:block" />
2024-06-20 09:39:35 +00:00
</Button>
)
},
enableColumnFilter: false,
sortingFn: "datetime",
2024-09-24 11:32:26 +00:00
cell: (props: CellContext<any, any>) => (
<p className="w-full text-center text-xs md:text-sm">{props.getValue().toLocaleDateString('ES', {
day: 'numeric',
month: 'numeric',
year: '2-digit'
})}</p>
)
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"
2024-09-24 11:32:26 +00:00
className="p-0"
2024-06-20 09:39:35 +00:00
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
>
2024-09-24 11:32:26 +00:00
<span className="hidden md:block"> Date Responded </span>
<CalendarMinus className="block md:hidden" />
<ArrowUpDown className="ml-2 h-4 w-4 hidden md:block" />
2024-06-20 09:39:35 +00:00
</Button>
)
},
enableColumnFilter: false,
sortingFn: "datetime",
2024-09-24 11:32:26 +00:00
cell: (props: CellContext<any, any>) => (<p className="w-full text-center text-xs md:text-sm">{props.getValue()?.toLocaleDateString('ES', {
day: 'numeric',
month: 'numeric',
year: '2-digit'
})}</p>)
2024-06-20 09:39:35 +00:00
},
{
accessorFn: row => {
if (row.response) {
return row.response.response
}
return "RECORD DELETED"
},
id: "response",
2024-09-24 11:32:26 +00:00
header: ({ column }) => {
return (
<Button
variant="ghost"
className="p-0"
onClick={() => column.toggleSorting(column.getIsSorted() === "asc")}
>
<span className="hidden md:block"> Response </span>
<MessageCircleReply className="block md:hidden" />
<ArrowUpDown className="ml-2 h-4 w-4 hidden md:block" />
</Button>
)
},
cell: (props: CellContext<any, any>) => (<p className="w-full text-center text-xs md:text-sm">{props.getValue()}</p>)
2024-06-20 09:39:35 +00:00
},
]