From f6040e09dafedff88b724044344fdaf2f5f82912 Mon Sep 17 00:00:00 2001 From: Ewan Lyon Date: Sun, 5 May 2024 20:10:24 +1000 Subject: [PATCH] schedule key fixes and style tweaks, fix login autocompletes --- apps/nextjs/pages/[event]/schedule.tsx | 93 ++++++++++--------- apps/nextjs/pages/signin.tsx | 4 +- apps/nextjs/pages/signup.tsx | 2 +- apps/nextjs/styles/Schedule.event.module.scss | 42 +++++---- 4 files changed, 76 insertions(+), 65 deletions(-) diff --git a/apps/nextjs/pages/[event]/schedule.tsx b/apps/nextjs/pages/[event]/schedule.tsx index af8fab3..849617f 100644 --- a/apps/nextjs/pages/[event]/schedule.tsx +++ b/apps/nextjs/pages/[event]/schedule.tsx @@ -383,7 +383,8 @@ export default function EventSchedule({ event }: EventScheduleProps) { if (dayElement != null) { dayElement.scrollIntoView({ behavior: "smooth", block: "start" }); } - }}> + }} + key={day}> {format(date, "EEEE")}
{format(date, "LLL d")} @@ -459,7 +460,7 @@ function getAllDays(runs: Run[], eventTimezone: string, showLocalTime: boolean) } } - const sortedDays = days.sort((a, b) => { + days.sort((a, b) => { const dateA = new Date(a); const dateB = new Date(b); return dateA.getTime() - dateB.getTime(); @@ -527,9 +528,10 @@ function generateRunItems(
{runDays.map(({ day, runs }, i) => { let yesterdayRunTime = 0; + let yesterdaysFinalRun; if (i != 0) { - const yesterdaysFinalRun = runDays[i - 1].runs.at(-1); + yesterdaysFinalRun = runDays[i - 1].runs.at(-1); if (yesterdaysFinalRun) { const endOfYesterdayRun = addSeconds( @@ -565,20 +567,26 @@ function generateRunItems(
- {yesterdayRunTime > 0 && ( + {/* {yesterdayRunTime > 0 && yesterdaysFinalRun && ( - )} + )} */} {runs.map((run, i) => { let width = (Math.max(runEstimateToSeconds(run.estimate), 300) / totalSeconds) * 100; if (i == runs.length - 1) { // If the run goes to the next day, subtract the overlap + const runScheduledTime = new Date( + new Date(run.scheduledTime).toLocaleString("en", { + timeZone: settings.showLocalTime ? eventTimezone : undefined, + }), + ); - const runScheduledTime = new Date(run.scheduledTime); const finalRunEndTime = addSeconds( runScheduledTime, runEstimateToSeconds(run.estimate), @@ -589,11 +597,10 @@ function generateRunItems( runScheduledTime.getMonth(), runScheduledTime.getDate(), ); - nextDay.setDate(nextDay.getDate() + 1); if (nextDay.getDate() === finalRunEndTime.getDate()) { - const overlapTime = nextDay.getTime() - finalRunEndTime.getTime(); + const overlapTime = finalRunEndTime.getTime() - nextDay.getTime(); const overlapSeconds = overlapTime / 1000; width = ((runEstimateToSeconds(run.estimate) - overlapSeconds) / totalSeconds) * @@ -601,7 +608,14 @@ function generateRunItems( } } - return ; + return ( + + ); })}
@@ -647,45 +661,31 @@ interface RunItemProps { } // Runner parsing -function runnerParsing(runnersArray: Run["runners"]) { - if (runnersArray.length == 0) { - return <>???; +function runnerParsing(runnersArray: Run["runners"], key?: string) { + if (runnersArray.length === 0) { + return ???; } - return ( -
- {runnersArray.map((runner, i) => { - const { username } = runner; - // If only one name or second last in the list to not include a comma - if (runnersArray.length === 1 || i === runnersArray.length - 2) { - return ( - - {username} - - ); - } + const runners = runnersArray.map((runner, i) => { + const { username } = runner; + return ( + + {username} + + ); + }); - // End of names - if (i === runnersArray.length - 1) { - return ( - <> - and - - {username} - - - ); - } + const lastRunner = runners.pop(); - return ( + return ( +
+ {runners.length > 0 && + runners.reduce((prev, curr) => ( <> - - {username} - - , + {prev}, {curr} - ); - })} + ))}{" "} + {runners.length > 0 && "and"} {lastRunner}
); } @@ -779,7 +779,7 @@ const RunItem: React.FC = (props: RunItemProps) => {
- {run.runners.length > 0 ? runnerParsing(run.runners) : run.racer} + {run.runners.length > 0 ? runnerParsing(run.runners, run.id) : run.racer} @@ -798,7 +798,10 @@ const RunItem: React.FC = (props: RunItemProps) => { Incentives {run.donationIncentiveObject?.map((incentive) => ( - + {incentive.title} ))} @@ -820,7 +823,7 @@ const RunVisualiser = ({ run, proportion, block }: { run: Run; proportion: numbe

{run.category}

- {run.runners.length > 0 ? runnerParsing(run.runners) : run.racer} + {run.runners.length > 0 ? runnerParsing(run.runners, `vis-run-${run.id}`) : run.racer}

} diff --git a/apps/nextjs/pages/signin.tsx b/apps/nextjs/pages/signin.tsx index 89cabe8..be65576 100644 --- a/apps/nextjs/pages/signin.tsx +++ b/apps/nextjs/pages/signin.tsx @@ -76,6 +76,7 @@ export const SignInPage: React.FC = () => { { setEmail(event.target.value); @@ -85,7 +86,8 @@ export const SignInPage: React.FC = () => { { diff --git a/apps/nextjs/pages/signup.tsx b/apps/nextjs/pages/signup.tsx index 6682568..1069535 100644 --- a/apps/nextjs/pages/signup.tsx +++ b/apps/nextjs/pages/signup.tsx @@ -91,7 +91,7 @@ export default function SignUpPage() { label="Password" type="password" helperText="Minimum 8 characters" - autoComplete="password" + autoComplete="new-password" />