25 lines
785 B
TypeScript
25 lines
785 B
TypeScript
import { ViewModel } from "../contracts/view-models/ViewModel";
|
|
import type { LeagueMembershipsViewData } from "../view-data/LeagueMembershipsViewData";
|
|
import { LeagueMemberViewModel } from './LeagueMemberViewModel';
|
|
|
|
export class LeagueMembershipsViewModel extends ViewModel {
|
|
private readonly data: LeagueMembershipsViewData;
|
|
readonly memberships: LeagueMemberViewModel[];
|
|
|
|
constructor(data: LeagueMembershipsViewData) {
|
|
super();
|
|
this.data = data;
|
|
this.memberships = data.memberships.map((m) => new LeagueMemberViewModel(m));
|
|
}
|
|
|
|
/** UI-specific: Number of members */
|
|
get memberCount(): number {
|
|
return this.memberships.length;
|
|
}
|
|
|
|
/** UI-specific: Whether the league has members */
|
|
get hasMembers(): boolean {
|
|
return this.memberCount > 0;
|
|
}
|
|
}
|