From afa91fca52dea5bd8bd91264a74b210048209122 Mon Sep 17 00:00:00 2001 From: Daniel Huang Date: Fri, 7 Nov 2025 22:52:39 -0500 Subject: [PATCH 1/3] render applications --- .../components/ApplicationTables/index.tsx | 51 +++++++++++++------ .../individualApplication.tsx | 6 ++- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/apps/frontend/src/features/applications/components/ApplicationTables/index.tsx b/apps/frontend/src/features/applications/components/ApplicationTables/index.tsx index 50598994..d614da96 100644 --- a/apps/frontend/src/features/applications/components/ApplicationTables/index.tsx +++ b/apps/frontend/src/features/applications/components/ApplicationTables/index.tsx @@ -1,7 +1,7 @@ import { useState } from 'react'; import { DataGrid, GridRowParams } from '@mui/x-data-grid'; import { useNavigate } from 'react-router-dom'; -import { Container, Typography, Stack } from '@mui/material'; +import { Container, Typography, Stack, Box } from '@mui/material'; import { ApplicationRow, @@ -20,12 +20,14 @@ import { useApplicationData } from '@shared/hooks/useApplicationData'; export function ApplicationTable() { const navigate = useNavigate(); const { token: accessToken } = useLoginContext(); - const { data } = useApplicationData(accessToken); + const { data, isLoading, error } = useApplicationData(accessToken); const [allRecruiters] = useState([]); const handleRowClick = (params: GridRowParams) => { navigate(`/applications/${params.row.userId}`); }; + const showEmpty = !isLoading && !error && data.length === 0; + return ( @@ -38,19 +40,38 @@ export function ApplicationTable() { Database | {getCurrentSemester()} {getCurrentYear()} Recruitment Cycle - + {showEmpty ? ( + + + There are no applications at this time + + + ) : ( + + )} ); } diff --git a/apps/frontend/src/features/applications/components/ApplicationTables/individualApplication.tsx b/apps/frontend/src/features/applications/components/ApplicationTables/individualApplication.tsx index ba9115e5..66dd213e 100644 --- a/apps/frontend/src/features/applications/components/ApplicationTables/individualApplication.tsx +++ b/apps/frontend/src/features/applications/components/ApplicationTables/individualApplication.tsx @@ -303,7 +303,9 @@ const IndividualApplicationDetails = ({ {isAdmin ? ( ) : ( @@ -514,4 +516,4 @@ const IndividualApplicationDetails = ({ ); }; -export default IndividualApplicationDetails; \ No newline at end of file +export default IndividualApplicationDetails; From a62fb334890eb39ad02568469fde42ded5f9c10c Mon Sep 17 00:00:00 2001 From: Daniel Huang Date: Fri, 7 Nov 2025 23:13:24 -0500 Subject: [PATCH 2/3] application data --- .../src/shared/hooks/useApplicationData.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/apps/frontend/src/shared/hooks/useApplicationData.ts b/apps/frontend/src/shared/hooks/useApplicationData.ts index 19364b37..42a120d7 100644 --- a/apps/frontend/src/shared/hooks/useApplicationData.ts +++ b/apps/frontend/src/shared/hooks/useApplicationData.ts @@ -23,6 +23,30 @@ export const useApplicationData = (accessToken: string) => { try { setIsLoading(true); setError(null); + // Local dev override: force empty applications without DB changes. + // Usage: + // 1. Add ?empty=1 to the URL OR + // 2. Run: localStorage.setItem('forceEmptyApps','1') in dev console and refresh. + // Disable: remove query param or localStorage key. + if (typeof window !== 'undefined') { + const hostname = window.location.hostname; + const isLocal = hostname === 'localhost' || hostname === '127.0.0.1'; + if (isLocal) { + const params = new URLSearchParams(window.location.search); + const forceParam = params.get('empty'); + const forceStorage = window.localStorage.getItem('forceEmptyApps'); + if ( + forceParam === '1' || + forceParam === 'true' || + forceStorage === '1' || + forceStorage === 'true' + ) { + setData([]); + setIsLoading(false); + return; + } + } + } const applications = await apiClient.getAllApplications(accessToken); // Each application needs an id for the DataGrid to work From 5898885cfb7bfaa47dbd75317181a376d76fd6e6 Mon Sep 17 00:00:00 2001 From: Daniel Huang Date: Fri, 7 Nov 2025 23:15:43 -0500 Subject: [PATCH 3/3] newest changes --- .../src/shared/hooks/useApplicationData.ts | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/apps/frontend/src/shared/hooks/useApplicationData.ts b/apps/frontend/src/shared/hooks/useApplicationData.ts index 42a120d7..19364b37 100644 --- a/apps/frontend/src/shared/hooks/useApplicationData.ts +++ b/apps/frontend/src/shared/hooks/useApplicationData.ts @@ -23,30 +23,6 @@ export const useApplicationData = (accessToken: string) => { try { setIsLoading(true); setError(null); - // Local dev override: force empty applications without DB changes. - // Usage: - // 1. Add ?empty=1 to the URL OR - // 2. Run: localStorage.setItem('forceEmptyApps','1') in dev console and refresh. - // Disable: remove query param or localStorage key. - if (typeof window !== 'undefined') { - const hostname = window.location.hostname; - const isLocal = hostname === 'localhost' || hostname === '127.0.0.1'; - if (isLocal) { - const params = new URLSearchParams(window.location.search); - const forceParam = params.get('empty'); - const forceStorage = window.localStorage.getItem('forceEmptyApps'); - if ( - forceParam === '1' || - forceParam === 'true' || - forceStorage === '1' || - forceStorage === 'true' - ) { - setData([]); - setIsLoading(false); - return; - } - } - } const applications = await apiClient.getAllApplications(accessToken); // Each application needs an id for the DataGrid to work