From 73c88598e7972b2a2b9b7a478d639adb0dcb1bc8 Mon Sep 17 00:00:00 2001 From: mehedi-hasan Date: Sun, 5 May 2024 21:36:03 +0600 Subject: [PATCH] feat: edit evaluation page --- .../dashboard/evaluations/add/page.tsx | 10 +++- .../dashboard/evaluations/edit/[id]/page.tsx | 49 +++++++++++++++++++ src/components/commits-table/cell-action.tsx | 15 +++--- src/components/evaluation-form.tsx | 43 +++++++++++----- .../evaluations-table/cell-action.tsx | 15 +++--- 5 files changed, 104 insertions(+), 28 deletions(-) create mode 100644 src/app/(dashboard)/dashboard/evaluations/edit/[id]/page.tsx diff --git a/src/app/(dashboard)/dashboard/evaluations/add/page.tsx b/src/app/(dashboard)/dashboard/evaluations/add/page.tsx index 1ba2ff3..d0961dd 100644 --- a/src/app/(dashboard)/dashboard/evaluations/add/page.tsx +++ b/src/app/(dashboard)/dashboard/evaluations/add/page.tsx @@ -1,8 +1,10 @@ +"use client" + import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; import { Separator } from "@/components/ui/separator"; import Breadcrumb from "@/components/breadcrumb"; -import AddEvaluationForm from "@/components/evaluation-form"; +import EvaluationForm from "@/components/evaluation-form"; const breadcrumbItems = [ { title: "Dashboard", link: "/dashboard" }, @@ -25,7 +27,11 @@ export default function Page() { - + {}} + btn1_content="Create" + btn2_content="Create and add another" + /> diff --git a/src/app/(dashboard)/dashboard/evaluations/edit/[id]/page.tsx b/src/app/(dashboard)/dashboard/evaluations/edit/[id]/page.tsx new file mode 100644 index 0000000..b8fd13d --- /dev/null +++ b/src/app/(dashboard)/dashboard/evaluations/edit/[id]/page.tsx @@ -0,0 +1,49 @@ +"use client"; + +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { ScrollArea, ScrollBar } from "@/components/ui/scroll-area"; +import { Separator } from "@/components/ui/separator"; +import Breadcrumb from "@/components/breadcrumb"; +import EvaluationForm from "@/components/evaluation-form"; +import { Evaluation } from "@/types/evaluation"; +import { dummyEvaluations } from "@/constants/data"; + +const breadcrumbItems = [ + { title: "Dashboard", link: "/dashboard" }, + { title: "Evaluation", link: "/dashboard/evaluations" }, + { title: "Edit" }, +]; + +export default function Page({ params }: { params: { id: string } }) { + const evaluation = dummyEvaluations.find( + (evaluation) => evaluation.id === +params.id + ); + + return ( + +
+ +
+ + + + Edit Evaluation + + + + + + {}} + btn1_content="Save and continue editing" + btn2_content="Save changes" + /> + + +
+ +
+
+ ); +} diff --git a/src/components/commits-table/cell-action.tsx b/src/components/commits-table/cell-action.tsx index 5ccdcaf..c6b945f 100644 --- a/src/components/commits-table/cell-action.tsx +++ b/src/components/commits-table/cell-action.tsx @@ -16,6 +16,7 @@ import { EvaluationStart } from "@/types/evaluation-start"; import { Skill } from "@/types/skill"; import { Edit, GitCommit, MoreHorizontal, Trash } from "lucide-react"; +import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; @@ -51,13 +52,13 @@ export const CellAction: React.FC = ({ data }) => { Actions - - // router.push(`#`) - // } - > - Edit + + + Edit + ; -// This can come from your database or API. -const defaultValues: Partial = { - status: "", - uploadTime: "", - uploaderAccount: "", - developerUser: "", +// const defaultValues: Partial = { +// status: "", +// uploadTime: "", +// uploaderAccount: "", +// developerUser: "", +// }; + +type Props = { + evaluation?: Evaluation; + onSubmit: () => void; + btn1_content: string; + btn2_content: string; }; -export default function AddEvaluationForm() { +export default function EvaluationForm({ + evaluation, + onSubmit: onFormSubmit, + btn1_content, + btn2_content, +}: Props) { const [isStatusPopoverOpen, setIsStatusPopoverOpen] = useState(false); const [isUploaderPopoverOpen, setIsUploaderPopoverOpen] = useState(false); const [isDeveloperPopoverOpen, setIsDeveloperPopoverOpen] = useState(false); const form = useForm({ resolver: zodResolver(displayFormSchema), - defaultValues, + defaultValues: { + status: evaluation?.status || "", + uploadTime: evaluation?.uploadTime || "", + uploaderAccount: evaluation?.uploaderAccount || "", + developerUser: evaluation?.developerUser || "", + }, }); function onSubmit(data: DisplayFormValues) { @@ -92,6 +109,8 @@ export default function AddEvaluationForm() { ), }); + + onFormSubmit(); } return ( @@ -312,10 +331,10 @@ export default function AddEvaluationForm() {
diff --git a/src/components/evaluations-table/cell-action.tsx b/src/components/evaluations-table/cell-action.tsx index 9ebf732..9b2d8c4 100644 --- a/src/components/evaluations-table/cell-action.tsx +++ b/src/components/evaluations-table/cell-action.tsx @@ -15,6 +15,7 @@ import { EvaluationStart } from "@/types/evaluation-start"; import { Skill } from "@/types/skill"; import { Edit, GitCommit, MoreHorizontal, Trash } from "lucide-react"; +import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; @@ -50,13 +51,13 @@ export const CellAction: React.FC = ({ data }) => { Actions - - // router.push(`#`) - // } - > - Edit + + + Edit +