@@ -190,35 +202,35 @@ const ReadingGeneration = () => {
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-reading focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-reading",
)
}>
- Passage 1
+ Passage 1 {part1 && }
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-reading focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-reading",
)
}>
- Passage 2
+ Passage 2 {part2 && }
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-reading/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-reading focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-reading",
)
}>
- Passage 3
+ Passage 3 {part3 && }
diff --git a/src/pages/(generation)/SpeakingGeneration.tsx b/src/pages/(generation)/SpeakingGeneration.tsx
index acb72548..9c1d60b4 100644
--- a/src/pages/(generation)/SpeakingGeneration.tsx
+++ b/src/pages/(generation)/SpeakingGeneration.tsx
@@ -9,7 +9,7 @@ import axios from "axios";
import clsx from "clsx";
import {useRouter} from "next/router";
import {useState} from "react";
-import {BsArrowRepeat} from "react-icons/bs";
+import {BsArrowRepeat, BsCheck} from "react-icons/bs";
import {toast} from "react-toastify";
const PartTab = ({part, index, setPart}: {part?: SpeakingPart; index: number; setPart: (part?: SpeakingPart) => void}) => {
@@ -114,7 +114,14 @@ const SpeakingGeneration = () => {
setIsLoading(true);
axios
- .post(`/api/exam/speaking/generate/speaking`, {exercises: [part1, part2, part3].filter((x) => !!x), minTimer})
+ .post(`/api/exam/speaking/generate/speaking`, {
+ exercises: [
+ {...part1, type: "1"},
+ {...part2, type: "2"},
+ {...part3, type: "3"},
+ ].filter((x) => !!x),
+ minTimer,
+ })
.then((result) => {
playSound("sent");
console.log(`Generated Exam ID: ${result.data.id}`);
@@ -152,7 +159,13 @@ const SpeakingGeneration = () => {
<>
- setMinTimer(parseInt(e))} value={minTimer} className="max-w-[300px]" />
+ setMinTimer(parseInt(e) < 15 ? 15 : parseInt(e))}
+ value={minTimer}
+ className="max-w-[300px]"
+ />
@@ -160,35 +173,35 @@ const SpeakingGeneration = () => {
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-speaking focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-speaking",
)
}>
- Task 1
+ Task 1 {part1 && }
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-speaking focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-speaking",
)
}>
- Task 2
+ Task 2 {part2 && }
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-speaking/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-speaking focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-speaking",
)
}>
- Task 3
+ Task 3 {part3 && }
diff --git a/src/pages/(generation)/WritingGeneration.tsx b/src/pages/(generation)/WritingGeneration.tsx
index 023644d1..734f3455 100644
--- a/src/pages/(generation)/WritingGeneration.tsx
+++ b/src/pages/(generation)/WritingGeneration.tsx
@@ -7,8 +7,8 @@ import {Tab} from "@headlessui/react";
import axios from "axios";
import clsx from "clsx";
import {useRouter} from "next/router";
-import {useState} from "react";
-import {BsArrowRepeat} from "react-icons/bs";
+import {useEffect, useState} from "react";
+import {BsArrowRepeat, BsCheck} from "react-icons/bs";
import {toast} from "react-toastify";
import {v4} from "uuid";
@@ -72,6 +72,12 @@ const WritingGeneration = () => {
const [isLoading, setIsLoading] = useState(false);
const [resultingExam, setResultingExam] = useState();
+ useEffect(() => {
+ const task1Timer = task1 ? 20 : 0;
+ const task2Timer = task2 ? 40 : 0;
+ setMinTimer(task1Timer > 0 || task2Timer > 0 ? task1Timer + task2Timer : 20);
+ }, [task1, task2]);
+
const router = useRouter();
const setExams = useExamStore((state) => state.setExams);
@@ -161,7 +167,13 @@ const WritingGeneration = () => {
<>
- setMinTimer(parseInt(e))} value={minTimer} className="max-w-[300px]" />
+ setMinTimer(parseInt(e) < 15 ? 15 : parseInt(e))}
+ value={minTimer}
+ className="max-w-[300px]"
+ />
@@ -169,24 +181,24 @@ const WritingGeneration = () => {
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-writing/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-writing/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-writing focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-writing",
)
}>
- Task 1
+ Task 1 {task1 && }
clsx(
- "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-writing/70",
+ "w-full rounded-lg py-2.5 text-sm font-medium leading-5 text-ielts-writing/70 flex gap-2 items-center justify-center",
"ring-white ring-opacity-60 ring-offset-2 ring-offset-ielts-writing focus:outline-none focus:ring-2",
"transition duration-300 ease-in-out",
selected ? "bg-white shadow" : "text-blue-100 hover:bg-white/[0.12] hover:text-ielts-writing",
)
}>
- Task 2
+ Task 2 {task2 && }