37 lines
881 B
TypeScript
37 lines
881 B
TypeScript
/**
|
|
* Driver view model
|
|
* UI representation of a driver
|
|
*
|
|
* Note: No matching generated DTO available yet
|
|
*/
|
|
export class DriverViewModel {
|
|
id: string;
|
|
name: string;
|
|
avatarUrl?: string;
|
|
iracingId?: string;
|
|
rating?: number;
|
|
|
|
constructor(dto: {
|
|
id: string;
|
|
name: string;
|
|
avatarUrl?: string;
|
|
iracingId?: string;
|
|
rating?: number;
|
|
}) {
|
|
this.id = dto.id;
|
|
this.name = dto.name;
|
|
if (dto.avatarUrl !== undefined) this.avatarUrl = dto.avatarUrl;
|
|
if (dto.iracingId !== undefined) this.iracingId = dto.iracingId;
|
|
if (dto.rating !== undefined) this.rating = dto.rating;
|
|
}
|
|
|
|
/** UI-specific: Whether driver has an iRacing ID */
|
|
get hasIracingId(): boolean {
|
|
return !!this.iracingId;
|
|
}
|
|
|
|
/** UI-specific: Formatted rating */
|
|
get formattedRating(): string {
|
|
return this.rating ? this.rating.toFixed(0) : 'Unrated';
|
|
}
|
|
} |