import Navbar from "@/components/Navbar"; import SingleDatasetChart from "@/components/UserResultChart"; import useStats from "@/hooks/useStats"; import useUsers from "@/hooks/useUsers"; import {User} from "@/interfaces/user"; import {sessionOptions} from "@/lib/session"; import {formatExerciseAverageScoreStats, formatExerciseTotalStats, formatModuleAverageScoreStats, formatModuleTotalStats} from "@/utils/stats"; import {withIronSessionSsr} from "iron-session/next"; import Head from "next/head"; import {AutoComplete} from "primereact/autocomplete"; import {Divider} from "primereact/divider"; import {useEffect, useState} from "react"; import chartColors from "@/constants/chartColors.json"; import {shuffle} from "lodash"; export const getServerSideProps = withIronSessionSsr(({req, res}) => { const user = req.session.user; if (!user) { res.setHeader("location", "/login"); res.statusCode = 302; res.end(); return { props: { user: null, }, }; } return { props: {user: req.session.user}, }; }, sessionOptions); export default function Stats({user}: {user: User}) { const [autocompleteValue, setAutocompleteValue] = useState(user.name); const [selectedUser, setSelectedUser] = useState(); const [items, setItems] = useState([]); const {users, isLoading} = useUsers(); const {stats, isLoading: isStatsLoading} = useStats(selectedUser?.id); const search = (event: {query: string}) => { setItems(event.query ? users.filter((x) => x.name.startsWith(event.query)) : users); }; return ( <> IELTS GPT | Stats
{!isLoading && user.type !== "student" && ( setAutocompleteValue(e.target.value)} completeMethod={search} onSelect={(e) => setSelectedUser(e.value)} dropdown /> )}
Module Statistics
{!isStatsLoading && stats && ( <>
)}
Exam Statistics
{!isStatsLoading && stats && ( <>
)}
); }