diff --git a/apps/backend/src/routers/public/portal/divisions/schedule.ts b/apps/backend/src/routers/public/portal/divisions/schedule.ts index e8eea167..b77401e4 100644 --- a/apps/backend/src/routers/public/portal/divisions/schedule.ts +++ b/apps/backend/src/routers/public/portal/divisions/schedule.ts @@ -8,9 +8,9 @@ import { PortalActivity, PortalSchedule, RobotGameMatch } from '@lems/types'; const router = express.Router({ mergeParams: true }); router.get('/', (req: Request, res: Response) => { - const generalActivities: Array> = (req.division.schedule ?? []).map( - ({ name, startTime }) => ({ type: 'general', name, time: startTime }) - ); + const generalActivities: Array> = (req.division.schedule ?? []) + .filter(activity => activity.showOnDashboard) + .map(({ name, startTime }) => ({ type: 'general', name, time: startTime })); res.json(generalActivities); }); @@ -37,7 +37,6 @@ router.get( const columns = rooms.map(room => ({ id: String(room._id), name: room.name })); - // Group sessions by scheduled time, sort array by rooms const rows = {}; for (const session of sessions) { diff --git a/apps/portal/lib/api.ts b/apps/portal/lib/api.ts index 7236db94..bc66d186 100644 --- a/apps/portal/lib/api.ts +++ b/apps/portal/lib/api.ts @@ -97,7 +97,7 @@ export const fetchScoreboard = async (eventId: string) => { return { scoreboard, stage: field.stage }; }; -export const fetchSchedule = async (eventId: string, type: 'field' | 'judging') => { - const schedule = await apiFetch(`/events/${eventId}/schedule/${type}`); +export const fetchGeneralSchedule = async (eventId: string) => { + const schedule = await apiFetch(`/events/${eventId}/schedule`); return schedule; }; diff --git a/apps/portal/pages/events/[id]/schedule/general.tsx b/apps/portal/pages/events/[id]/schedule/general.tsx index e69de29b..6c6ddb0f 100644 --- a/apps/portal/pages/events/[id]/schedule/general.tsx +++ b/apps/portal/pages/events/[id]/schedule/general.tsx @@ -0,0 +1,47 @@ +import { GetServerSideProps, GetServerSidePropsContext, NextPage } from 'next'; +import dayjs from 'dayjs'; +import { Typography, Container, Stack, Divider, Paper } from '@mui/material'; +import { PortalActivity, PortalEvent, RobotGameMatchStage } from '@lems/types'; +import { fetchEvent, fetchGeneralSchedule } from '../../../../lib/api'; +import StyledEventSubtitle from '../../../../components/events/styled-event-subtitle'; + +interface Props { + event: PortalEvent; + schedule: PortalActivity<'general'>[]; +} + +const Page: NextPage = ({ event, schedule }) => { + return ( + + לוח זמנים כללי + + + {schedule.length === 0 && אין לוח זמנים כללי} + {schedule.map((activity, index) => ( + } + > + + {dayjs(activity.time).format('HH:mm')} + + {activity.name} + + ))} + + + ); +}; + +export const getServerSideProps: GetServerSideProps = async (ctx: GetServerSidePropsContext) => { + const eventId = ctx.params?.id as string; + + const { event } = await fetchEvent(eventId); + const schedule = await fetchGeneralSchedule(eventId); + return { props: { event, schedule } }; +}; + +export default Page;