website refactor

This commit is contained in:
2026-01-14 02:02:24 +01:00
parent 8d7c709e0c
commit 4522d41aef
291 changed files with 12763 additions and 9309 deletions

View File

@@ -2,24 +2,15 @@
import { useRouter } from 'next/navigation';
import LeaderboardsTemplate from '@/templates/LeaderboardsTemplate';
import type { DriverLeaderboardViewModel } from '@/lib/view-models/DriverLeaderboardViewModel';
import type { TeamSummaryViewModel } from '@/lib/view-models/TeamSummaryViewModel';
import type { LeaderboardsViewData } from '@/lib/view-data/LeaderboardsViewData';
interface LeaderboardsPageData {
drivers: DriverLeaderboardViewModel | null;
teams: TeamSummaryViewModel[] | null;
}
export function LeaderboardsPageWrapper({ data }: { data: LeaderboardsPageData | null }) {
export function LeaderboardsPageWrapper({ data }: { data: LeaderboardsViewData | null }) {
const router = useRouter();
if (!data || (!data.drivers && !data.teams)) {
return null;
}
const drivers = data.drivers?.drivers || [];
const teams = data.teams || [];
const handleDriverClick = (driverId: string) => {
router.push(`/drivers/${driverId}`);
};
@@ -36,14 +27,34 @@ export function LeaderboardsPageWrapper({ data }: { data: LeaderboardsPageData |
router.push('/teams/leaderboard');
};
return (
<LeaderboardsTemplate
drivers={drivers}
teams={teams}
onDriverClick={handleDriverClick}
onTeamClick={handleTeamClick}
onNavigateToDrivers={handleNavigateToDrivers}
onNavigateToTeams={handleNavigateToTeams}
/>
);
// Transform ViewData to template props
const templateData = {
drivers: data.drivers.map(d => ({
id: d.id,
name: d.name,
rating: d.rating,
skillLevel: d.skillLevel,
nationality: d.nationality,
wins: d.wins,
rank: d.rank,
avatarUrl: d.avatarUrl,
position: d.position,
})),
teams: data.teams.map(t => ({
id: t.id,
name: t.name,
tag: t.tag,
memberCount: t.memberCount,
category: t.category,
totalWins: t.totalWins,
logoUrl: t.logoUrl,
position: t.position,
})),
onDriverClick: handleDriverClick,
onTeamClick: handleTeamClick,
onNavigateToDrivers: handleNavigateToDrivers,
onNavigateToTeams: handleNavigateToTeams,
};
return <LeaderboardsTemplate {...templateData} />;
}