From beb130bdeeea80306c479228f829612bb924fc99 Mon Sep 17 00:00:00 2001 From: Enzo Murayama Date: Wed, 10 Dec 2025 08:19:59 -0300 Subject: [PATCH 1/4] refactor: course page buttons --- src/pages/Course/Course.tsx | 81 +++++++++++++++++++++++-------------- 1 file changed, 50 insertions(+), 31 deletions(-) diff --git a/src/pages/Course/Course.tsx b/src/pages/Course/Course.tsx index d3d26a9..6aed380 100644 --- a/src/pages/Course/Course.tsx +++ b/src/pages/Course/Course.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { useParams } from 'react-router-dom'; +import { useNavigate, useParams } from 'react-router-dom'; import { fetchAllQuizes, fetchUserQuizProgress } from '@/services/api/quiz'; import { fetchCourse, exportCourseGrades } from '@/services/api/course'; import { Quiz } from '@/interfaces/Quiz'; @@ -16,6 +16,8 @@ import ExercisesGroup from '@/components/course/ExercisesGroup'; import PostThreadCourse from '@/components/course/PostThreadCourse'; import NewPostForm from '@/components/course/NewPostForm'; import ReplyForm from '@/components/course/ReplyForm'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faPencil } from '@fortawesome/free-solid-svg-icons'; export default function Course() { const [Quizes, setQuizes] = useState([]); @@ -30,6 +32,8 @@ export default function Course() { const { user, isLoading: isAuthLoading } = useAuth(); const [isExporting, setIsExporting] = useState(false); + const navigate = useNavigate(); + const topLevelPosts = posts.filter(p => p.id_parent === null); const replies = posts.filter(p => p.id_parent !== null); const getRepliesForPost = (postId: string) => { @@ -211,32 +215,8 @@ export default function Course() { )} -
- {isUserTheCourseTeacher && ( - <> - - - - )} +
+
@@ -244,10 +224,49 @@ export default function Course() {
{/* Seção de Questionários */}
-
-

- Questionários -

+
+
+
+

+ Questionários +

+
+ + {user?.role === 2 && + + } +
+ +
+ {isUserTheCourseTeacher && ( + <> + + + + )} +
From 520176269ca1b0d5612e788d50b1b39d0adc6360 Mon Sep 17 00:00:00 2001 From: Enzo Murayama Date: Wed, 10 Dec 2025 08:23:46 -0300 Subject: [PATCH 2/4] refactor: update message shown when no quizzes are available --- src/components/course/ExercisesGroup.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/course/ExercisesGroup.tsx b/src/components/course/ExercisesGroup.tsx index a46695b..41cd22c 100644 --- a/src/components/course/ExercisesGroup.tsx +++ b/src/components/course/ExercisesGroup.tsx @@ -100,8 +100,8 @@ export default function ExercisesGroup({itens} : ExercisesGroupProps) { // Mostrar loading enquanto não há dados de status if (Object.keys(quizStatusMap).length === 0) { return ( -
- Carregando quizzes... +
+ Nenhum quiz encontrado...
) } From 25f6c2ca2da93012d77206fff06e86aa6872a6e1 Mon Sep 17 00:00:00 2001 From: Enzo Murayama Date: Mon, 15 Dec 2025 22:28:48 -0300 Subject: [PATCH 3/4] feat: create quiz page --- src/App.tsx | 2 + src/pages/Course/Course.tsx | 4 +- src/pages/Professor/CreateQuiz.tsx | 78 ++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 src/pages/Professor/CreateQuiz.tsx diff --git a/src/App.tsx b/src/App.tsx index 6f7f6d6..dd6c3e8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -22,6 +22,7 @@ import Quiz from './pages/Quizzes/Quiz' import QuizTries from './pages/Quizzes/QuizTries' import Waveform from './pages/Quizzes/Waveform' import CreateCourse from './pages/Professor/CreateCourse' +import CreateQuiz from './pages/Professor/CreateQuiz' export default function App() { return ( @@ -47,6 +48,7 @@ export default function App() { } /> } /> } /> + } /> {/* } /> */} {/* } /> */} {/* } /> */} diff --git a/src/pages/Course/Course.tsx b/src/pages/Course/Course.tsx index 6aed380..ff3160b 100644 --- a/src/pages/Course/Course.tsx +++ b/src/pages/Course/Course.tsx @@ -224,7 +224,7 @@ export default function Course() {
{/* Seção de Questionários */}
-
+

@@ -233,7 +233,7 @@ export default function Course() {

{user?.role === 2 && - diff --git a/src/pages/Professor/CreateQuiz.tsx b/src/pages/Professor/CreateQuiz.tsx new file mode 100644 index 0000000..39535dd --- /dev/null +++ b/src/pages/Professor/CreateQuiz.tsx @@ -0,0 +1,78 @@ +import Footer from '@/components/footer/Footer' +import Header from '@/components/header/Header' +import { useState } from 'react' +import { useParams } from 'react-router-dom'; + +export default function CreateQuiz() { + const { courseId } = useParams(); + + const [form, setForm] = useState({ + idCourse: courseId, + name: '', + description: '', + maxAttempts: 1, + }) + + return ( +
+
+ +
+

+ Criar Quiz +

+

+ Cadastre um novo quiz para este curso. Depois, adicione as perguntas! +

+ +
+
+

Nome do Quiz

+ setForm({ ...form, name: e.target.value })} + placeholder="Quiz 1 - Introdução" + /> +
+ +
+

Descrição

+