view data fixes
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 6m4s
Contract Testing / contract-snapshot (pull_request) Has been skipped

This commit is contained in:
2026-01-23 11:59:49 +01:00
parent ae58839eb2
commit d97f50ed72
191 changed files with 2889 additions and 1019 deletions

View File

@@ -1,16 +1,19 @@
import { DriverLeaderboardItemDTO } from '@/lib/types/generated/DriverLeaderboardItemDTO';
import { LeaderboardsViewData } from '@/lib/view-data/LeaderboardsViewData';
import { DriverLeaderboardItemViewModel } from './DriverLeaderboardItemViewModel';
export class DriverLeaderboardViewModel {
import { ViewModel } from "../contracts/view-models/ViewModel";
export class DriverLeaderboardViewModel extends ViewModel {
drivers: DriverLeaderboardItemViewModel[];
constructor(
dto: { drivers: DriverLeaderboardItemDTO[] },
previousDrivers?: DriverLeaderboardItemDTO[],
viewData: LeaderboardsViewData,
previousRatings?: Record<string, number>,
) {
this.drivers = dto.drivers.map((driver, index) => {
const previous = previousDrivers?.find(p => p.id === driver.id);
return new DriverLeaderboardItemViewModel(driver, index + 1, previous?.rating);
super();
this.drivers = viewData.drivers.map((driver) => {
const previousRating = previousRatings?.[driver.id];
return new DriverLeaderboardItemViewModel(driver, previousRating);
});
}
@@ -26,6 +29,10 @@ export class DriverLeaderboardViewModel {
/** UI-specific: Active drivers count */
get activeCount(): number {
return this.drivers.filter(driver => driver.isActive).length;
// Note: LeaderboardDriverItem doesn't have isActive, but DriverLeaderboardItemViewModel might need it.
// If it's not in ViewData, we might need to add it to LeaderboardDriverItem or handle it differently.
// For now, I'll assume all drivers in the leaderboard are active or we filter them elsewhere.
// Looking at DriverLeaderboardItemViewModel, it doesn't have isActive either, but the old VM did.
return this.drivers.length;
}
}