Fixed a typo in the records

This commit is contained in:
Tiago Ribeiro
2024-11-26 15:04:24 +00:00
parent 39ff336af5
commit 9faf82ee9c
5 changed files with 95 additions and 67 deletions

View File

@@ -1,51 +1,51 @@
import {useEffect, useState} from "react";
import {useRouter} from "next/router";
import { useEffect, useState } from "react";
import { useRouter } from "next/router";
import axios from "axios";
import {Tab} from "@headlessui/react";
import {AiOutlineFileSearch} from "react-icons/ai";
import {MdOutlinePlaylistAddCheckCircle, MdOutlineSelfImprovement} from "react-icons/md";
import {BsChatLeftDots} from "react-icons/bs";
import { Tab } from "@headlessui/react";
import { AiOutlineFileSearch } from "react-icons/ai";
import { MdOutlinePlaylistAddCheckCircle, MdOutlineSelfImprovement } from "react-icons/md";
import { BsChatLeftDots } from "react-icons/bs";
import Button from "@/components/Low/Button";
import clsx from "clsx";
import Exercise from "@/training/Exercise";
import TrainingScore from "@/training/TrainingScore";
import {ITrainingContent, ITrainingTip} from "@/training/TrainingInterfaces";
import { ITrainingContent, ITrainingTip } from "@/training/TrainingInterfaces";
import formatTip from "@/training/FormatTip";
import {Stat, User} from "@/interfaces/user";
import { Stat, User } from "@/interfaces/user";
import Head from "next/head";
import Layout from "@/components/High/Layout";
import {ToastContainer} from "react-toastify";
import {withIronSessionSsr} from "iron-session/next";
import {shouldRedirectHome} from "@/utils/navigation.disabled";
import {sessionOptions} from "@/lib/session";
import { ToastContainer } from "react-toastify";
import { withIronSessionSsr } from "iron-session/next";
import { shouldRedirectHome } from "@/utils/navigation.disabled";
import { sessionOptions } from "@/lib/session";
import qs from "qs";
import StatsGridItem from "@/components/Medium/StatGridItem";
import useExamStore from "@/stores/examStore";
import {usePDFDownload} from "@/hooks/usePDFDownload";
import { usePDFDownload } from "@/hooks/usePDFDownload";
import useAssignments from "@/hooks/useAssignments";
import useUsers from "@/hooks/useUsers";
import Dropdown from "@/components/Dropdown";
import InfiniteCarousel from "@/components/InfiniteCarousel";
import {LuExternalLink} from "react-icons/lu";
import {uniqBy} from "lodash";
import {getExamById} from "@/utils/exams";
import {convertToUserSolutions} from "@/utils/stats";
import {sortByModule} from "@/utils/moduleUtils";
import { LuExternalLink } from "react-icons/lu";
import { uniqBy } from "lodash";
import { getExamById } from "@/utils/exams";
import { convertToUserSolutions } from "@/utils/stats";
import { sortByModule } from "@/utils/moduleUtils";
import { requestUser } from "@/utils/api";
import { redirect, serialize } from "@/utils";
export const getServerSideProps = withIronSessionSsr(async ({req, res}) => {
export const getServerSideProps = withIronSessionSsr(async ({ req, res }) => {
const user = await requestUser(req, res)
if (!user) return redirect("/login")
if (shouldRedirectHome(user)) redirect("/")
return {
props: serialize({user}),
props: serialize({ user }),
};
}, sessionOptions);
const TrainingContent: React.FC<{user: User}> = ({user}) => {
const TrainingContent: React.FC<{ user: User }> = ({ user }) => {
// Record stuff
const setExams = useExamStore((state) => state.setExams);
const setShowSolutions = useExamStore((state) => state.setShowSolutions);
@@ -59,11 +59,11 @@ const TrainingContent: React.FC<{user: User}> = ({user}) => {
const [loading, setLoading] = useState(true);
const [trainingTips, setTrainingTips] = useState<ITrainingTip[]>([]);
const [currentTipIndex, setCurrentTipIndex] = useState(0);
const {assignments} = useAssignments({});
const {users} = useUsers();
const { assignments } = useAssignments({});
const { users } = useUsers();
const router = useRouter();
const {id} = router.query;
const { id } = router.query;
useEffect(() => {
const fetchTrainingContent = async () => {
@@ -84,14 +84,14 @@ const TrainingContent: React.FC<{user: User}> = ({user}) => {
return statResponse.data;
}),
);
return {...exam, stats};
return { ...exam, stats };
}),
),
};
const tips = await axios.get<ITrainingTip[]>("/api/training/walkthrough", {
params: {ids: trainingContent.tip_ids},
paramsSerializer: (params) => qs.stringify(params, {arrayFormat: "repeat"}),
params: { ids: trainingContent.tip_ids },
paramsSerializer: (params) => qs.stringify(params, { arrayFormat: "repeat" }),
});
const processedTips = tips.data.map(formatTip);
@@ -121,7 +121,7 @@ const TrainingContent: React.FC<{user: User}> = ({user}) => {
return getExamById(stat.module, stat.exam);
});
const {timeSpent, inactivity} = stats[0];
const { timeSpent, inactivity } = stats[0];
Promise.all(examPromises).then((exams) => {
if (exams.every((x) => !!x)) {
@@ -177,6 +177,7 @@ const TrainingContent: React.FC<{user: User}> = ({user}) => {
{trainingContent.exams.map((exam, examIndex) => (
<StatsGridItem
key={`exam-${examIndex}`}
gradingSystems={[]}
width="380px"
height="150px"
examNumber={examIndex + 1}
@@ -252,7 +253,7 @@ const TrainingContent: React.FC<{user: User}> = ({user}) => {
{trainingContent.weak_areas.map((x, index) => (
<Tab
key={index}
className={({selected}) =>
className={({ selected }) =>
clsx(
"text-[#53B2F9] pb-2 border-b-2",
"focus:outline-none",