Improved a tiny bit of the performance with Student Dashboard

This commit is contained in:
Tiago Ribeiro
2024-08-30 11:56:35 +01:00
parent fef5bf44de
commit 0b88d6bcd1
2 changed files with 11 additions and 8 deletions

View File

@@ -30,11 +30,11 @@ import {toast} from "react-toastify";
interface Props { interface Props {
user: User; user: User;
users: User[];
linkedCorporate?: CorporateUser | MasterCorporateUser; linkedCorporate?: CorporateUser | MasterCorporateUser;
} }
export default function StudentDashboard({user, linkedCorporate}: Props) { export default function StudentDashboard({user, users, linkedCorporate}: Props) {
const {users} = useUsers();
const {gradingSystem} = useGradingSystem(); const {gradingSystem} = useGradingSystem();
const {data: stats} = useFilterRecordsByUser<Stat[]>(user.id, !user?.id); const {data: stats} = useFilterRecordsByUser<Stat[]>(user.id, !user?.id);
const {assignments, isLoading: isAssignmentsLoading, reload: reloadAssignments} = useAssignments({assignees: user?.id}); const {assignments, isLoading: isAssignmentsLoading, reload: reloadAssignments} = useAssignments({assignees: user?.id});

View File

@@ -29,11 +29,12 @@ import MasterCorporateDashboard from "@/dashboards/MasterCorporate";
import PaymentDue from "./(status)/PaymentDue"; import PaymentDue from "./(status)/PaymentDue";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import {PayPalScriptProvider} from "@paypal/react-paypal-js"; import {PayPalScriptProvider} from "@paypal/react-paypal-js";
import {CorporateUser, MasterCorporateUser, Type, userTypes} from "@/interfaces/user"; import {CorporateUser, MasterCorporateUser, Type, User, userTypes} from "@/interfaces/user";
import Select from "react-select"; import Select from "react-select";
import {USER_TYPE_LABELS} from "@/resources/user"; import {USER_TYPE_LABELS} from "@/resources/user";
import {checkAccess, getTypesOfUser} from "@/utils/permissions"; import {checkAccess, getTypesOfUser} from "@/utils/permissions";
import {getUserCorporate} from "@/utils/groups.be"; import {getUserCorporate} from "@/utils/groups.be";
import {getUsers} from "@/utils/users.be";
export const getServerSideProps = withIronSessionSsr(async ({req, res}) => { export const getServerSideProps = withIronSessionSsr(async ({req, res}) => {
const user = req.session.user; const user = req.session.user;
@@ -55,19 +56,21 @@ export const getServerSideProps = withIronSessionSsr(async ({req, res}) => {
} }
const linkedCorporate = (await getUserCorporate(user.id)) || null; const linkedCorporate = (await getUserCorporate(user.id)) || null;
const users = await getUsers();
return { return {
props: {user, envVariables, linkedCorporate}, props: {user, envVariables, linkedCorporate, users},
}; };
}, sessionOptions); }, sessionOptions);
interface Props { interface Props {
user: any; user: User;
envVariables: {[key: string]: string}; envVariables: {[key: string]: string};
linkedCorporate?: CorporateUser | MasterCorporateUser; linkedCorporate?: CorporateUser | MasterCorporateUser;
users: User[];
} }
export default function Home({linkedCorporate}: Props) { export default function Home({users, linkedCorporate}: Props) {
const [showDiagnostics, setShowDiagnostics] = useState(false); const [showDiagnostics, setShowDiagnostics] = useState(false);
const [showDemographicInput, setShowDemographicInput] = useState(false); const [showDemographicInput, setShowDemographicInput] = useState(false);
const [selectedScreen, setSelectedScreen] = useState<Type>("admin"); const [selectedScreen, setSelectedScreen] = useState<Type>("admin");
@@ -173,7 +176,7 @@ export default function Home({linkedCorporate}: Props) {
<ToastContainer /> <ToastContainer />
{user && ( {user && (
<Layout user={user}> <Layout user={user}>
{checkAccess(user, ["student"]) && <StudentDashboard linkedCorporate={linkedCorporate} user={user} />} {checkAccess(user, ["student"]) && <StudentDashboard users={users} linkedCorporate={linkedCorporate} user={user} />}
{checkAccess(user, ["teacher"]) && <TeacherDashboard linkedCorporate={linkedCorporate} user={user} />} {checkAccess(user, ["teacher"]) && <TeacherDashboard linkedCorporate={linkedCorporate} user={user} />}
{checkAccess(user, ["corporate"]) && <CorporateDashboard linkedCorporate={linkedCorporate} user={user as CorporateUser} />} {checkAccess(user, ["corporate"]) && <CorporateDashboard linkedCorporate={linkedCorporate} user={user as CorporateUser} />}
{checkAccess(user, ["mastercorporate"]) && <MasterCorporateDashboard user={user as MasterCorporateUser} />} {checkAccess(user, ["mastercorporate"]) && <MasterCorporateDashboard user={user as MasterCorporateUser} />}
@@ -193,7 +196,7 @@ export default function Home({linkedCorporate}: Props) {
onChange={(value) => (value ? setSelectedScreen(value.value) : setSelectedScreen("admin"))} onChange={(value) => (value ? setSelectedScreen(value.value) : setSelectedScreen("admin"))}
/> />
{selectedScreen === "student" && <StudentDashboard linkedCorporate={linkedCorporate} user={user} />} {selectedScreen === "student" && <StudentDashboard users={users} linkedCorporate={linkedCorporate} user={user} />}
{selectedScreen === "teacher" && <TeacherDashboard linkedCorporate={linkedCorporate} user={user} />} {selectedScreen === "teacher" && <TeacherDashboard linkedCorporate={linkedCorporate} user={user} />}
{selectedScreen === "corporate" && ( {selectedScreen === "corporate" && (
<CorporateDashboard linkedCorporate={linkedCorporate} user={user as unknown as CorporateUser} /> <CorporateDashboard linkedCorporate={linkedCorporate} user={user as unknown as CorporateUser} />