view data fixes

This commit is contained in:
2026-01-23 15:30:23 +01:00
parent e22033be38
commit f8099f04bc
213 changed files with 3466 additions and 3003 deletions

View File

@@ -1,41 +1,29 @@
import { ViewModel } from "../contracts/view-models/ViewModel";
import { RaceDetailEntryViewModel } from './RaceDetailEntryViewModel';
import { RaceDetailUserResultViewModel } from './RaceDetailUserResultViewModel';
import { RaceDetailsRaceViewModel } from './RaceDetailsRaceViewModel';
import { RaceDetailsLeagueViewModel } from './RaceDetailsLeagueViewModel';
import { RaceDetailsRegistrationViewModel } from './RaceDetailsRegistrationViewModel';
import type { RaceDetailsViewData } from "../view-data/RaceDetailsViewData";
import { ViewModel } from "../contracts/view-models/ViewModel";
export class RaceDetailsViewModel extends ViewModel {
private readonly data: RaceDetailsViewData;
readonly race: RaceDetailsRaceViewModel | null;
readonly league: RaceDetailsLeagueViewModel | null;
readonly entryList: RaceDetailEntryViewModel[];
readonly registration: RaceDetailsRegistrationViewModel;
readonly userResult: RaceDetailUserResultViewModel | null;
export type RaceDetailsRaceViewModel = ViewModel & {
id: string;
track: string;
car: string;
scheduledAt: string;
status: string;
sessionType: string;
};
constructor(data: RaceDetailsViewData) {
super();
this.data = data;
this.race = data.race ? new RaceDetailsRaceViewModel(data.race) : null;
this.league = data.league ? new RaceDetailsLeagueViewModel(data.league) : null;
this.entryList = data.entryList.map(e => new RaceDetailEntryViewModel(e));
this.registration = new RaceDetailsRegistrationViewModel(data.registration);
this.userResult = data.userResult ? new RaceDetailUserResultViewModel(data.userResult) : null;
}
import { ViewModel } from "../contracts/view-models/ViewModel";
export type RaceDetailsLeagueViewModel = ViewModel & {
id: string;
name: string;
description?: string | null;
settings?: unknown;
};
import { ViewModel } from "../contracts/view-models/ViewModel";
export type RaceDetailsRegistrationViewModel = ViewModel & {
canRegister: boolean;
isUserRegistered: boolean;
};
import { ViewModel } from "../contracts/view-models/ViewModel";
export type RaceDetailsViewModel = ViewModel & {
race: RaceDetailsRaceViewModel | null;
league: RaceDetailsLeagueViewModel | null;
entryList: RaceDetailEntryViewModel[];
registration: RaceDetailsRegistrationViewModel;
userResult: RaceDetailUserResultViewModel | null;
canReopenRace: boolean;
error?: string;
};
get canReopenRace(): boolean { return this.data.canReopenRace; }
get error(): string | undefined { return this.data.error; }
}