diff --git a/app/routes/leagues.adp.$.tsx b/app/routes/leagues.adp.$.tsx index c19a71d..51d6914 100644 --- a/app/routes/leagues.adp.$.tsx +++ b/app/routes/leagues.adp.$.tsx @@ -1,11 +1,13 @@ import type { LoaderFunctionArgs } from '@remix-run/node'; import clsx from 'clsx'; import { typedjson, useTypedLoaderData } from 'remix-typedjson'; +import GoBox from '~/components/ui/GoBox'; import { getAverageDraftPositionByYear } from '~/models/draftpick.server'; import { getLeaguesByYear } from '~/models/league.server'; import type { Player } from '~/models/players.server'; import { getPlayersByIDs } from '~/models/players.server'; import { getCurrentSeason } from '~/models/season.server'; +import { FIRST_YEAR } from '~/utils/constants'; export const loader = async ({ params }: LoaderFunctionArgs) => { let currentSeason = await getCurrentSeason(); @@ -13,10 +15,12 @@ export const loader = async ({ params }: LoaderFunctionArgs) => { throw new Error('No active season currently'); } - const year = - params['*'] === '' - ? currentSeason.year - : Number.parseInt(params['*'] || ''); + const yearParam = params['*']; + const year = !yearParam ? currentSeason.year : Number.parseInt(yearParam); + + if (isNaN(year)) { + throw new Error('Invalid year parameter'); + } const leagueCount = (await getLeaguesByYear(year)).filter( league => league.isDrafted, @@ -45,11 +49,22 @@ export const loader = async ({ params }: LoaderFunctionArgs) => { } } adp.sort((a, b) => a._avg.pickNumber! - b._avg.pickNumber!); - return typedjson({ adp, playersMap, year }); + return typedjson({ adp, playersMap, year, maxYear: currentSeason.year }); }; export default function ADP() { - const { adp, playersMap, year } = useTypedLoaderData(); + const { adp, playersMap, year, maxYear } = + useTypedLoaderData(); + + const yearArray = Array.from( + { length: maxYear - FIRST_YEAR + 1 }, + (_, i) => FIRST_YEAR + i, + ) + .reverse() + .map(yearNumber => ({ + label: `${yearNumber}`, + url: `/leagues/adp/${yearNumber}`, + })); // We do this because tailwind HATES dynamic class names const rankColors: Record = { @@ -63,6 +78,9 @@ export default function ADP() { return (

{year} Server ADP

+
+ +
{adp.length === 0 ? (
To be loaded once leagues have started drafting.
) : ( @@ -91,7 +109,7 @@ export default function ADP() {