view models

This commit is contained in:
2025-12-18 00:08:47 +01:00
parent f7a56a92ce
commit 7c449af311
56 changed files with 2594 additions and 206 deletions

View File

@@ -1,22 +1,31 @@
import { DriverLeaderboardItemDto } from '../dtos';
import { DriverLeaderboardItemDTO } from '../types/generated/DriverLeaderboardItemDTO';
export class DriverLeaderboardItemViewModel implements DriverLeaderboardItemDto {
export class DriverLeaderboardItemViewModel implements DriverLeaderboardItemDTO {
id: string;
name: string;
avatarUrl?: string;
rating: number;
wins: number;
races: number;
skillLevel: string;
isActive: boolean;
nationality: string;
racesCompleted: number;
wins: number;
podiums: number;
isActive: boolean;
rank: number;
position: number;
private previousRating?: number;
constructor(dto: DriverLeaderboardItemDto, position: number, previousRating?: number) {
Object.assign(this, dto);
constructor(dto: DriverLeaderboardItemDTO, position: number, previousRating?: number) {
this.id = dto.id;
this.name = dto.name;
this.rating = dto.rating;
this.skillLevel = dto.skillLevel;
this.nationality = dto.nationality;
this.racesCompleted = dto.racesCompleted;
this.wins = dto.wins;
this.podiums = dto.podiums;
this.isActive = dto.isActive;
this.rank = dto.rank;
this.position = position;
this.previousRating = previousRating;
}
@@ -45,7 +54,7 @@ export class DriverLeaderboardItemViewModel implements DriverLeaderboardItemDto
/** UI-specific: Win rate */
get winRate(): number {
return this.races > 0 ? (this.wins / this.races) * 100 : 0;
return this.racesCompleted > 0 ? (this.wins / this.racesCompleted) * 100 : 0;
}
/** UI-specific: Formatted win rate */