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,32 @@
import type { LeaderboardDriverItem } from '@/lib/view-data/LeaderboardDriverItem';
import { ViewModel } from "../contracts/view-models/ViewModel";
import type { LeaderboardDriverItem } from '../view-data/LeaderboardDriverItem';
import { SkillLevelDisplay } from "../display-objects/SkillLevelDisplay";
import { SkillLevelIconDisplay } from "../display-objects/SkillLevelIconDisplay";
import { WinRateDisplay } from "../display-objects/WinRateDisplay";
import { RatingTrendDisplay } from "../display-objects/RatingTrendDisplay";
export class DriverLeaderboardItemViewModel extends ViewModel {
id: string;
name: string;
rating: number;
skillLevel: string;
nationality: string;
racesCompleted: number;
wins: number;
podiums: number;
rank: number;
avatarUrl: string;
position: number;
private previousRating: number | undefined;
private readonly data: LeaderboardDriverItem;
private readonly previousRating: number | undefined;
constructor(viewData: LeaderboardDriverItem, previousRating?: number) {
constructor(data: LeaderboardDriverItem, previousRating?: number) {
super();
this.id = viewData.id;
this.name = viewData.name;
this.rating = viewData.rating;
this.skillLevel = viewData.skillLevel;
this.nationality = viewData.nationality;
this.racesCompleted = viewData.racesCompleted;
this.wins = viewData.wins;
this.podiums = viewData.podiums;
this.rank = viewData.rank;
this.avatarUrl = viewData.avatarUrl;
this.position = viewData.position;
this.data = data;
this.previousRating = previousRating;
}
get id(): string { return this.data.id; }
get name(): string { return this.data.name; }
get rating(): number { return this.data.rating; }
get skillLevel(): string { return this.data.skillLevel; }
get nationality(): string { return this.data.nationality; }
get racesCompleted(): number { return this.data.racesCompleted; }
get wins(): number { return this.data.wins; }
get podiums(): number { return this.data.podiums; }
get rank(): number { return this.data.rank; }
get avatarUrl(): string { return this.data.avatarUrl; }
get position(): number { return this.data.position; }
/** UI-specific: Skill level color */
get skillLevelColor(): string {
return SkillLevelDisplay.getColor(this.skillLevel);