website refactor
This commit is contained in:
@@ -1,16 +1,5 @@
|
||||
export interface DriverProfileDriverSummaryViewModel {
|
||||
id: string;
|
||||
name: string;
|
||||
country: string;
|
||||
avatarUrl: string;
|
||||
iracingId: string | null;
|
||||
joinedAt: string;
|
||||
rating: number | null;
|
||||
globalRank: number | null;
|
||||
consistency: number | null;
|
||||
bio: string | null;
|
||||
totalDrivers: number | null;
|
||||
}
|
||||
import { DriverProfileDriverSummaryViewModel } from "./DriverProfileDriverSummaryViewModel";
|
||||
export type { DriverProfileDriverSummaryViewModel };
|
||||
|
||||
export interface DriverProfileStatsViewModel {
|
||||
totalRaces: number;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import { DriverViewModel as SharedDriverViewModel } from "./DriverViewModel";
|
||||
import { RaceViewModel as SharedRaceViewModel } from "./RaceViewModel";
|
||||
|
||||
/**
|
||||
* League Detail View Model
|
||||
*
|
||||
@@ -5,13 +8,13 @@
|
||||
*/
|
||||
export class LeagueDetailViewModel {
|
||||
league: LeagueViewModel;
|
||||
drivers: DriverViewModel[];
|
||||
races: RaceViewModel[];
|
||||
drivers: SharedDriverViewModel[];
|
||||
races: SharedRaceViewModel[];
|
||||
|
||||
constructor(data: { league: unknown; drivers: unknown[]; races: unknown[] }) {
|
||||
this.league = new LeagueViewModel(data.league);
|
||||
this.drivers = data.drivers.map(driver => new DriverViewModel(driver));
|
||||
this.races = data.races.map(race => new RaceViewModel(race));
|
||||
this.drivers = data.drivers.map(driver => new SharedDriverViewModel(driver as any));
|
||||
this.races = data.races.map(race => new SharedRaceViewModel(race as any));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,55 +99,3 @@ export class LeagueViewModel {
|
||||
return configs[this.tier];
|
||||
}
|
||||
}
|
||||
|
||||
export class DriverViewModel {
|
||||
id: string;
|
||||
name: string;
|
||||
country: string;
|
||||
position: number;
|
||||
races: number;
|
||||
impressions: number;
|
||||
team: string;
|
||||
|
||||
constructor(data: unknown) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const d = data as any;
|
||||
this.id = d.id;
|
||||
this.name = d.name;
|
||||
this.country = d.country;
|
||||
this.position = d.position;
|
||||
this.races = d.races;
|
||||
this.impressions = d.impressions;
|
||||
this.team = d.team;
|
||||
}
|
||||
|
||||
get formattedImpressions(): string {
|
||||
return this.impressions.toLocaleString();
|
||||
}
|
||||
}
|
||||
|
||||
export class RaceViewModel {
|
||||
id: string;
|
||||
name: string;
|
||||
date: Date;
|
||||
views: number;
|
||||
status: 'upcoming' | 'completed';
|
||||
|
||||
constructor(data: unknown) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const d = data as any;
|
||||
this.id = d.id;
|
||||
this.name = d.name;
|
||||
this.date = new Date(d.date);
|
||||
this.views = d.views;
|
||||
this.status = d.status;
|
||||
}
|
||||
|
||||
get formattedDate(): string {
|
||||
return this.date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
||||
}
|
||||
|
||||
get formattedViews(): string {
|
||||
return this.views.toLocaleString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user