view data fixes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user