import { jsxs, jsx } from "react/jsx-runtime"; import { B as Badge } from "./badge-J-zeQvMg.js"; import { B as Button } from "./button-CdJZJLGw.js"; import { D as DropdownMenu, a as DropdownMenuTrigger, b as DropdownMenuContent, c as DropdownMenuItem } from "./dropdown-menu-msun3TP8.js"; import { g as getQueryParams } from "./route-DlE7FdTW.js"; import { c as cn } from "./utils-DLCPGU0v.js"; import { usePage, router, Link } from "@inertiajs/react"; import { ChevronsUpDown } from "lucide-react"; import { useState } from "react"; import "@radix-ui/react-slot"; import "class-variance-authority"; import "@radix-ui/react-dropdown-menu"; import "clsx"; import "tailwind-merge"; const ExamAttemptTableColumn = () => { const page = usePage(); const urlParams = getQueryParams(page.url); const statuses = ["all", "in_progress", "completed", "abandoned", "submitted"]; const [reviewAttemptId, setReviewAttemptId] = useState(null); return [ // { // accessorKey: 'attempt_number', // header: ({ column }) => { // return ( //
// //
// ); // }, // cell: ({ row }) => ( //
//

Attempt #{row.getValue('attempt_number')}

//
// ), // }, { accessorKey: "user", header: ({ column }) => { return /* @__PURE__ */ jsx("div", { className: "flex items-center pl-4", children: /* @__PURE__ */ jsx("span", { children: "Student" }) }); }, cell: ({ row }) => /* @__PURE__ */ jsxs("div", { className: "py-1 pl-4", children: [ /* @__PURE__ */ jsx("p", { className: "font-medium", children: row.original.user.name }), /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: row.original.user.email }) ] }) }, { accessorKey: "start_time", header: "Started At", cell: ({ row }) => /* @__PURE__ */ jsxs("div", { className: "py-1", children: [ /* @__PURE__ */ jsx("p", { className: "text-sm", children: new Date(row.getValue("start_time")).toLocaleDateString() }), /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: new Date(row.getValue("start_time")).toLocaleTimeString() }) ] }) }, { accessorKey: "end_time", header: "Completed At", cell: ({ row }) => { const endTime = row.getValue("end_time"); return endTime ? /* @__PURE__ */ jsxs("div", { className: "py-1", children: [ /* @__PURE__ */ jsx("p", { className: "text-sm", children: new Date(endTime).toLocaleDateString() }), /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", children: new Date(endTime).toLocaleTimeString() }) ] }) : /* @__PURE__ */ jsx("div", { className: "py-1 text-center", children: "--" }); } }, // { // accessorKey: 'duration_minutes', // header: () =>
Duration
, // cell: ({ row }) => { // const duration = row.getValue('duration_minutes') as number | undefined; // return ( //
// {duration ? ( // // {Math.floor(duration / 60)}h {duration % 60}m // // ) : ( // '--' // )} //
// ); // }, // }, { accessorKey: "status", header: ({ column }) => /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [ /* @__PURE__ */ jsx(DropdownMenuTrigger, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsxs(Button, { variant: "ghost", className: "text-muted-foreground capitalize", children: [ /* @__PURE__ */ jsx("span", { children: urlParams["status"] ?? "Status" }), /* @__PURE__ */ jsx(ChevronsUpDown, { className: "h-3 w-3 text-gray-700" }) ] }) }), /* @__PURE__ */ jsx(DropdownMenuContent, { align: "center", className: "min-w-[120px]", children: statuses.map((status) => /* @__PURE__ */ jsx( DropdownMenuItem, { onClick: () => router.get( route("exams.edit", { ...urlParams, status }) ), className: cn("cursor-pointer text-center capitalize", urlParams["status"] === status && "bg-gray-100"), children: status.replace("_", " ") }, status )) }) ] }) }), cell: ({ row }) => { const status = row.getValue("status"); const variant = status === "completed" ? "default" : status === "in_progress" ? "secondary" : "destructive"; return /* @__PURE__ */ jsx("div", { className: "flex justify-center py-1", children: /* @__PURE__ */ jsx(Badge, { variant, className: "capitalize", children: status.replace("_", " ") }) }); } }, { accessorKey: "obtained_marks", header: () => /* @__PURE__ */ jsx("div", { className: "text-center", children: "Score" }), cell: ({ row }) => /* @__PURE__ */ jsxs("div", { className: "py-1 text-center", children: [ /* @__PURE__ */ jsxs("p", { className: "font-semibold", children: [ row.getValue("obtained_marks"), "/", row.original.total_marks ] }), /* @__PURE__ */ jsxs("p", { className: "text-muted-foreground text-xs", children: [ row.original.percentage, "%" ] }) ] }) }, { accessorKey: "correct_answers", header: () => /* @__PURE__ */ jsx("div", { className: "text-center", children: "Answers" }), cell: ({ row }) => /* @__PURE__ */ jsx("div", { className: "py-1 text-center", children: /* @__PURE__ */ jsxs("p", { className: "text-sm", children: [ /* @__PURE__ */ jsx("span", { className: "text-green-600", children: row.getValue("correct_answers") }), " /", " ", /* @__PURE__ */ jsx("span", { className: "text-red-600", children: row.original.incorrect_answers }) ] }) }) }, // { // accessorKey: 'is_passed', // header: () =>
Result
, // cell: ({ row }) => { // const isPassed = row.getValue('is_passed') as boolean; // return ( //
// {row.original.status === 'completed' ? ( // // {isPassed ? 'Passed' : 'Failed'} // // ) : ( // -- // )} //
// ); // }, // }, { id: "actions", header: () => /* @__PURE__ */ jsx("div", { className: "pr-4 text-end", children: "Actions" }), cell: ({ row }) => { const attempt = row.original; attempt.status === "submitted"; attempt.status === "completed"; return /* @__PURE__ */ jsx("div", { className: "flex justify-end gap-2 py-1 pr-4", children: /* @__PURE__ */ jsx(Button, { asChild: true, variant: "default", className: "h-8", title: "Review & Grade Attempt", children: /* @__PURE__ */ jsx(Link, { href: route("exams.edit", { exam: attempt.exam_id, ...urlParams, review: attempt.id }), children: "Review" }) }) }); } } ]; }; export { ExamAttemptTableColumn as default };