Files
gridpilot.gg/apps/website/lib/view-data/RaceDetailViewData.ts
Marc Mintel 18133aef4c
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m42s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-22 23:40:38 +01:00

61 lines
1.2 KiB
TypeScript

/**
* Race Detail View Data
*
* ViewData for the race detail page template.
* JSON-serializable, template-ready data structure.
*/
import { ViewData } from "../contracts/view-data/ViewData";
export interface RaceDetailEntry {
id: string;
name: string;
avatarUrl: string;
country: string;
rating?: number;
isCurrentUser: boolean;
}
export interface RaceDetailUserResult {
position: number;
startPosition: number;
positionChange: number;
incidents: number;
isClean: boolean;
isPodium: boolean;
ratingChange?: number;
}
export interface RaceDetailLeague {
id: string;
name: string;
description?: string;
settings: {
maxDrivers: number;
qualifyingFormat: string;
};
}
export interface RaceDetailRace {
id: string;
track: string;
car: string;
scheduledAt: string;
status: 'scheduled' | 'running' | 'completed' | 'cancelled';
sessionType: string;
}
export interface RaceDetailRegistration {
isUserRegistered: boolean;
canRegister: boolean;
}
export interface RaceDetailViewData extends ViewData {
race: RaceDetailRace;
league?: RaceDetailLeague;
entryList: RaceDetailEntry[];
registration: RaceDetailRegistration;
userResult?: RaceDetailUserResult;
canReopenRace: boolean;
}