From fcdcc14b85d9e58bbd77e12a42a5afe3e074daaa Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 23:52:41 +0100 Subject: [PATCH] fix: created components for voting page --- components/custom/gradingForm.tsx | 76 +++++++++++++++++++++++++++++++ components/custom/index.ts | 3 ++ components/custom/testCard.tsx | 32 +++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 components/custom/gradingForm.tsx create mode 100644 components/custom/index.ts create mode 100644 components/custom/testCard.tsx diff --git a/components/custom/gradingForm.tsx b/components/custom/gradingForm.tsx new file mode 100644 index 0000000..a59e47f --- /dev/null +++ b/components/custom/gradingForm.tsx @@ -0,0 +1,76 @@ +'use client'; + +import { useRouter } from 'next/navigation'; +import { useState } from 'react'; + +export function GradingForm({ password, data }: { password: string; data: any }) { + const [grade, setGrade] = useState(0); + const [hasVoted, setHasVoted] = useState(false); + const router = useRouter(); + + async function handleSubmit(event: React.FormEvent) { + event.preventDefault(); + + const response = await fetch('/api/grade', { + method: 'POST', + body: JSON.stringify({ grade, key: password, testId: data.id }), + }); + const json = await response.json(); + if (response.status == 200) { + setHasVoted(true); + } else { + alert(json.message); + } + } + + if (data.vote.hasVoted || hasVoted) { + return ( +
+

Vous avez déjà voté, merci !

+

{'Vous avez mis ' + (data.vote.hasVoted ? data.vote.grade : grade) + ' !'}

+
+ ); + } + + return ( +
+

Cliquer sur la note à la fin de la présentation :

+
+ setGrade(1)}> + +

+ setGrade(1.5)}> + +

+ setGrade(2)}> + +

+ setGrade(2.5)}> + +

+ setGrade(3)}> + +

+ setGrade(3.5)}> + +

+ setGrade(4)}> + +

+ setGrade(4.5)}> + +

+ setGrade(5)}> + +

+ setGrade(5.5)}> + +

+ setGrade(6)}> + +

+ +
+
+ ); +} diff --git a/components/custom/index.ts b/components/custom/index.ts new file mode 100644 index 0000000..778de2a --- /dev/null +++ b/components/custom/index.ts @@ -0,0 +1,3 @@ +export { DayCard as DayCard } from './dayCard'; +export { TestCard as TestCard } from './testCard'; +export { GradingForm } from "./gradingForm"; \ No newline at end of file diff --git a/components/custom/testCard.tsx b/components/custom/testCard.tsx new file mode 100644 index 0000000..84e2b3e --- /dev/null +++ b/components/custom/testCard.tsx @@ -0,0 +1,32 @@ +'use client'; + +export function TestCard({ data, error, isLoading }: { data: any; error: any; isLoading: boolean }) { + if (isLoading) + return ( +
+

Aujourd'hui

+

Chargement...

+
+ ); + if (error) + return ( +
+

Aujourd'hui

+

Une erreur est survenue, merci d'essayer dans quelques minutes

+
+ ); + if (data.status == 404) + return ( +
+

{"Aujourd'hui " + new Date().toLocaleDateString()}

+

Pas de test prévu pour aujourd'hui

+
+ ); + + return ( +
+

{"Aujourd'hui " + new Date(data.testOn).toLocaleDateString()}

+

{data.testOf.firstName + ' ' + data.testOf.lastName}

+
+ ); +}