do to formatters
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import { DateFormatter } from "@/lib/formatters/DateFormatter";
|
||||
import { UserRoleFormatter } from "@/lib/formatters/UserRoleFormatter";
|
||||
import { UserStatusFormatter } from "@/lib/formatters/UserStatusFormatter";
|
||||
import type { AdminUserViewData } from '@/lib/view-data/AdminUserViewData';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { UserStatusDisplay } from "@/lib/display-objects/UserStatusDisplay";
|
||||
import { UserRoleDisplay } from "@/lib/display-objects/UserRoleDisplay";
|
||||
import { DateDisplay } from "@/lib/display-objects/DateDisplay";
|
||||
|
||||
/**
|
||||
* AdminUserViewModel
|
||||
@@ -31,28 +31,28 @@ export class AdminUserViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Role badges using Display Object */
|
||||
get roleBadges(): string[] {
|
||||
return this.roles.map(role => UserRoleDisplay.roleLabel(role));
|
||||
return this.roles.map(role => UserRoleFormatter.roleLabel(role));
|
||||
}
|
||||
|
||||
/** UI-specific: Status badge label using Display Object */
|
||||
get statusBadgeLabel(): string {
|
||||
return UserStatusDisplay.statusLabel(this.status);
|
||||
return UserStatusFormatter.statusLabel(this.status);
|
||||
}
|
||||
|
||||
/** UI-specific: Status badge variant using Display Object */
|
||||
get statusBadgeVariant(): string {
|
||||
return UserStatusDisplay.statusVariant(this.status);
|
||||
return UserStatusFormatter.statusVariant(this.status);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted last login date */
|
||||
get lastLoginFormatted(): string {
|
||||
return this.lastLoginAt
|
||||
? DateDisplay.formatShort(this.lastLoginAt)
|
||||
? DateFormatter.formatShort(this.lastLoginAt)
|
||||
: 'Never';
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted creation date */
|
||||
get createdAtFormatted(): string {
|
||||
return DateDisplay.formatShort(this.createdAt);
|
||||
return DateFormatter.formatShort(this.createdAt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
*
|
||||
* Accepts AnalyticsMetricsViewData as input and produces UI-ready data.
|
||||
*/
|
||||
import { AnalyticsMetricsViewData } from "../view-data/AnalyticsMetricsViewData";
|
||||
import { DurationFormatter } from "@/lib/formatters/DurationFormatter";
|
||||
import { NumberFormatter } from "@/lib/formatters/NumberFormatter";
|
||||
import { PercentFormatter } from "@/lib/formatters/PercentFormatter";
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { NumberDisplay } from "@/lib/display-objects/NumberDisplay";
|
||||
import { DurationDisplay } from "@/lib/display-objects/DurationDisplay";
|
||||
import { PercentDisplay } from "@/lib/display-objects/PercentDisplay";
|
||||
import { AnalyticsMetricsViewData } from "../view-data/AnalyticsMetricsViewData";
|
||||
|
||||
export class AnalyticsMetricsViewModel extends ViewModel {
|
||||
private readonly data: AnalyticsMetricsViewData;
|
||||
@@ -25,21 +25,21 @@ export class AnalyticsMetricsViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted page views */
|
||||
get formattedPageViews(): string {
|
||||
return NumberDisplay.format(this.pageViews);
|
||||
return NumberFormatter.format(this.pageViews);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted unique visitors */
|
||||
get formattedUniqueVisitors(): string {
|
||||
return NumberDisplay.format(this.uniqueVisitors);
|
||||
return NumberFormatter.format(this.uniqueVisitors);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted session duration */
|
||||
get formattedSessionDuration(): string {
|
||||
return DurationDisplay.formatSeconds(this.averageSessionDuration);
|
||||
return DurationFormatter.formatSeconds(this.averageSessionDuration);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted bounce rate */
|
||||
get formattedBounceRate(): string {
|
||||
return PercentDisplay.format(this.bounceRate);
|
||||
return PercentFormatter.format(this.bounceRate);
|
||||
}
|
||||
}
|
||||
@@ -6,19 +6,17 @@
|
||||
* Accepts AvailableLeaguesViewData as input and produces UI-ready data.
|
||||
*/
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { LeagueTierFormatter } from "../formatters/LeagueTierFormatter";
|
||||
import { NumberFormatter } from "../formatters/NumberFormatter";
|
||||
import { SeasonStatusFormatter } from "../formatters/SeasonStatusFormatter";
|
||||
import { AvailableLeaguesViewData, AvailableLeagueViewData } from "../view-data/AvailableLeaguesViewData";
|
||||
import { NumberDisplay } from "../display-objects/NumberDisplay";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { LeagueTierDisplay } from "../display-objects/LeagueTierDisplay";
|
||||
import { SeasonStatusDisplay } from "../display-objects/SeasonStatusDisplay";
|
||||
|
||||
export class AvailableLeaguesViewModel extends ViewModel {
|
||||
private readonly data: AvailableLeaguesViewData;
|
||||
readonly leagues: AvailableLeagueViewModel[];
|
||||
|
||||
constructor(data: AvailableLeaguesViewData) {
|
||||
super();
|
||||
this.data = data;
|
||||
this.leagues = data.leagues.map(league => new AvailableLeagueViewModel(league));
|
||||
}
|
||||
}
|
||||
@@ -46,7 +44,7 @@ export class AvailableLeagueViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted average views */
|
||||
get formattedAvgViews(): string {
|
||||
return NumberDisplay.formatCompact(this.avgViewsPerRace);
|
||||
return NumberFormatter.formatCompact(this.avgViewsPerRace);
|
||||
}
|
||||
|
||||
/** UI-specific: CPM calculation */
|
||||
@@ -56,7 +54,7 @@ export class AvailableLeagueViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted CPM */
|
||||
get formattedCpm(): string {
|
||||
return CurrencyDisplay.formatCompact(this.cpm);
|
||||
return CurrencyFormatter.formatCompact(this.cpm);
|
||||
}
|
||||
|
||||
/** UI-specific: Check if any sponsor slots are available */
|
||||
@@ -66,12 +64,12 @@ export class AvailableLeagueViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Tier configuration for badge styling */
|
||||
get tierConfig() {
|
||||
return LeagueTierDisplay.getDisplay(this.tier);
|
||||
return LeagueTierFormatter.getDisplay(this.tier);
|
||||
}
|
||||
|
||||
/** UI-specific: Status configuration for season state */
|
||||
get statusConfig() {
|
||||
return SeasonStatusDisplay.getDisplay(this.seasonStatus);
|
||||
return SeasonStatusFormatter.getDisplay(this.seasonStatus);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { AvatarDisplay } from "../display-objects/AvatarDisplay";
|
||||
import { AvatarViewData } from "@/lib/view-data/AvatarViewData";
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { AvatarFormatter } from "../formatters/AvatarFormatter";
|
||||
|
||||
/**
|
||||
* Avatar View Model
|
||||
@@ -23,11 +23,11 @@ export class AvatarViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Derive content type label using Display Object */
|
||||
get contentTypeLabel(): string {
|
||||
return AvatarDisplay.formatContentType(this.data.contentType);
|
||||
return AvatarFormatter.formatContentType(this.data.contentType);
|
||||
}
|
||||
|
||||
/** UI-specific: Derive validity check using Display Object */
|
||||
get hasValidData(): boolean {
|
||||
return AvatarDisplay.hasValidData(this.data.buffer, this.data.contentType);
|
||||
return AvatarFormatter.hasValidData(this.data.buffer, this.data.contentType);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { OnboardingStatusDisplay } from '../display-objects/OnboardingStatusDisplay';
|
||||
import { OnboardingStatusFormatter } from '../formatters/OnboardingStatusFormatter';
|
||||
import type { CompleteOnboardingViewData } from '../view-data/CompleteOnboardingViewData';
|
||||
|
||||
/**
|
||||
@@ -22,22 +22,22 @@ export class CompleteOnboardingViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Status label using Display Object */
|
||||
get statusLabel(): string {
|
||||
return OnboardingStatusDisplay.statusLabel(this.success);
|
||||
return OnboardingStatusFormatter.statusLabel(this.success);
|
||||
}
|
||||
|
||||
/** UI-specific: Status variant using Display Object */
|
||||
get statusVariant(): string {
|
||||
return OnboardingStatusDisplay.statusVariant(this.success);
|
||||
return OnboardingStatusFormatter.statusVariant(this.success);
|
||||
}
|
||||
|
||||
/** UI-specific: Status icon using Display Object */
|
||||
get statusIcon(): string {
|
||||
return OnboardingStatusDisplay.statusIcon(this.success);
|
||||
return OnboardingStatusFormatter.statusIcon(this.success);
|
||||
}
|
||||
|
||||
/** UI-specific: Status message using Display Object */
|
||||
get statusMessage(): string {
|
||||
return OnboardingStatusDisplay.statusMessage(this.success, this.errorMessage);
|
||||
return OnboardingStatusFormatter.statusMessage(this.success, this.errorMessage);
|
||||
}
|
||||
|
||||
/** UI-specific: Whether onboarding was successful */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { CreateLeagueViewData } from '../view-data/CreateLeagueViewData';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { LeagueCreationStatusDisplay } from '../display-objects/LeagueCreationStatusDisplay';
|
||||
import { LeagueCreationStatusFormatter } from '../formatters/LeagueCreationStatusFormatter';
|
||||
import type { CreateLeagueViewData } from '../view-data/CreateLeagueViewData';
|
||||
|
||||
/**
|
||||
* View Model for Create League Result
|
||||
@@ -21,7 +21,7 @@ export class CreateLeagueViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Success message using Display Object */
|
||||
get successMessage(): string {
|
||||
return LeagueCreationStatusDisplay.statusMessage(this.success);
|
||||
return LeagueCreationStatusFormatter.statusMessage(this.success);
|
||||
}
|
||||
|
||||
/** UI-specific: Whether league creation was successful */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { CreateTeamViewData } from '../view-data/CreateTeamViewData';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { TeamCreationStatusDisplay } from '../display-objects/TeamCreationStatusDisplay';
|
||||
import { TeamCreationStatusFormatter } from '../formatters/TeamCreationStatusFormatter';
|
||||
import type { CreateTeamViewData } from '../view-data/CreateTeamViewData';
|
||||
|
||||
/**
|
||||
* View Model for Create Team Result
|
||||
@@ -21,7 +21,7 @@ export class CreateTeamViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Success message using Display Object */
|
||||
get successMessage(): string {
|
||||
return TeamCreationStatusDisplay.statusMessage(this.success);
|
||||
return TeamCreationStatusFormatter.statusMessage(this.success);
|
||||
}
|
||||
|
||||
/** UI-specific: Whether team creation was successful */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { ActivityLevelDisplay } from "@/lib/display-objects/ActivityLevelDisplay";
|
||||
import { ActivityLevelFormatter } from "@/lib/formatters/ActivityLevelFormatter";
|
||||
import type { DashboardStatsViewData } from '@/lib/view-data/DashboardStatsViewData';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
|
||||
/**
|
||||
* DashboardStatsViewModel
|
||||
@@ -68,7 +68,7 @@ export class DashboardStatsViewModel extends ViewModel {
|
||||
|
||||
// Derive activity level using Display Object
|
||||
const engagementRate = this.totalUsers > 0 ? (this.recentLogins / this.totalUsers) * 100 : 0;
|
||||
this.activityLevelLabel = ActivityLevelDisplay.levelLabel(engagementRate);
|
||||
this.activityLevelValue = ActivityLevelDisplay.levelValue(engagementRate);
|
||||
this.activityLevelLabel = ActivityLevelFormatter.levelLabel(engagementRate);
|
||||
this.activityLevelValue = ActivityLevelFormatter.levelValue(engagementRate);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { RatingTrendFormatter } from "../formatters/RatingTrendFormatter";
|
||||
import { SkillLevelFormatter } from "../formatters/SkillLevelFormatter";
|
||||
import { SkillLevelIconFormatter } from "../formatters/SkillLevelIconFormatter";
|
||||
import { WinRateFormatter } from "../formatters/WinRateFormatter";
|
||||
import type { LeaderboardDriverItem } from '../view-data/LeaderboardDriverItem';
|
||||
import { SkillLevelDisplay } from "../display-objects/SkillLevelDisplay";
|
||||
import { SkillLevelIconDisplay } from "../display-objects/SkillLevelIconDisplay";
|
||||
import { WinRateDisplay } from "../display-objects/WinRateDisplay";
|
||||
import { RatingTrendDisplay } from "../display-objects/RatingTrendDisplay";
|
||||
|
||||
export class DriverLeaderboardItemViewModel extends ViewModel {
|
||||
private readonly data: LeaderboardDriverItem;
|
||||
@@ -29,12 +29,12 @@ export class DriverLeaderboardItemViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Skill level color */
|
||||
get skillLevelColor(): string {
|
||||
return SkillLevelDisplay.getColor(this.skillLevel);
|
||||
return SkillLevelFormatter.getColor(this.skillLevel);
|
||||
}
|
||||
|
||||
/** UI-specific: Skill level icon */
|
||||
get skillLevelIcon(): string {
|
||||
return SkillLevelIconDisplay.getIcon(this.skillLevel);
|
||||
return SkillLevelIconFormatter.getIcon(this.skillLevel);
|
||||
}
|
||||
|
||||
/** UI-specific: Win rate */
|
||||
@@ -44,17 +44,17 @@ export class DriverLeaderboardItemViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted win rate */
|
||||
get winRateFormatted(): string {
|
||||
return WinRateDisplay.format(this.winRate);
|
||||
return WinRateFormatter.format(this.winRate);
|
||||
}
|
||||
|
||||
/** UI-specific: Rating trend */
|
||||
get ratingTrend(): 'up' | 'down' | 'same' {
|
||||
return RatingTrendDisplay.getTrend(this.rating, this.previousRating);
|
||||
return RatingTrendFormatter.getTrend(this.rating, this.previousRating);
|
||||
}
|
||||
|
||||
/** UI-specific: Rating change indicator */
|
||||
get ratingChangeIndicator(): string {
|
||||
return RatingTrendDisplay.getChangeIndicator(this.rating, this.previousRating);
|
||||
return RatingTrendFormatter.getChangeIndicator(this.rating, this.previousRating);
|
||||
}
|
||||
|
||||
/** UI-specific: Position badge */
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DashboardConsistencyFormatter } from "../formatters/DashboardConsistencyFormatter";
|
||||
import { NumberFormatter } from "../formatters/NumberFormatter";
|
||||
import { RatingFormatter } from "../formatters/RatingFormatter";
|
||||
import { ProfileViewData } from "../view-data/ProfileViewData";
|
||||
import { RatingDisplay } from "../display-objects/RatingDisplay";
|
||||
import { DashboardConsistencyDisplay } from "../display-objects/DashboardConsistencyDisplay";
|
||||
import { NumberDisplay } from "../display-objects/NumberDisplay";
|
||||
|
||||
/**
|
||||
* Driver Profile Driver Summary View Model
|
||||
@@ -44,7 +44,7 @@ export class DriverProfileDriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get ratingLabel(): string {
|
||||
return RatingDisplay.format(this.rating);
|
||||
return RatingFormatter.format(this.rating);
|
||||
}
|
||||
|
||||
get globalRank(): number | null {
|
||||
@@ -52,7 +52,7 @@ export class DriverProfileDriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get globalRankLabel(): string {
|
||||
return this.globalRank ? NumberDisplay.format(this.globalRank) : '—';
|
||||
return this.globalRank ? NumberFormatter.format(this.globalRank) : '—';
|
||||
}
|
||||
|
||||
get consistency(): number | null {
|
||||
@@ -60,7 +60,7 @@ export class DriverProfileDriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get consistencyLabel(): string {
|
||||
return this.consistency ? DashboardConsistencyDisplay.format(this.consistency) : '—';
|
||||
return this.consistency ? DashboardConsistencyFormatter.format(this.consistency) : '—';
|
||||
}
|
||||
|
||||
get bio(): string | null {
|
||||
@@ -72,6 +72,6 @@ export class DriverProfileDriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get totalDriversLabel(): string {
|
||||
return this.totalDrivers ? NumberDisplay.format(this.totalDrivers) : '—';
|
||||
return this.totalDrivers ? NumberFormatter.format(this.totalDrivers) : '—';
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DriverRegistrationStatusFormatter } from "../formatters/DriverRegistrationStatusFormatter";
|
||||
import type { DriverRegistrationStatusViewData } from "../view-data/DriverRegistrationStatusViewData";
|
||||
import { DriverRegistrationStatusDisplay } from "../display-objects/DriverRegistrationStatusDisplay";
|
||||
|
||||
export class DriverRegistrationStatusViewModel extends ViewModel {
|
||||
constructor(private readonly viewData: DriverRegistrationStatusViewData) {
|
||||
@@ -24,14 +24,14 @@ export class DriverRegistrationStatusViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get statusMessage(): string {
|
||||
return DriverRegistrationStatusDisplay.statusMessage(this.isRegistered);
|
||||
return DriverRegistrationStatusFormatter.statusMessage(this.isRegistered);
|
||||
}
|
||||
|
||||
get statusBadgeVariant(): string {
|
||||
return DriverRegistrationStatusDisplay.statusBadgeVariant(this.isRegistered);
|
||||
return DriverRegistrationStatusFormatter.statusBadgeVariant(this.isRegistered);
|
||||
}
|
||||
|
||||
get registrationButtonText(): string {
|
||||
return DriverRegistrationStatusDisplay.registrationButtonText(this.isRegistered);
|
||||
return DriverRegistrationStatusFormatter.registrationButtonText(this.isRegistered);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { NumberFormatter } from "../formatters/NumberFormatter";
|
||||
import { RatingFormatter } from "../formatters/RatingFormatter";
|
||||
import type { DriverSummaryData } from "../view-data/DriverSummaryData";
|
||||
import { NumberDisplay } from "../display-objects/NumberDisplay";
|
||||
import { RatingDisplay } from "../display-objects/RatingDisplay";
|
||||
|
||||
/**
|
||||
* View Model for driver summary with rating and rank
|
||||
@@ -30,7 +30,7 @@ export class DriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get ratingLabel(): string {
|
||||
return RatingDisplay.format(this.rating);
|
||||
return RatingFormatter.format(this.rating);
|
||||
}
|
||||
|
||||
get rank(): number | null {
|
||||
@@ -38,7 +38,7 @@ export class DriverSummaryViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get rankLabel(): string {
|
||||
return this.rank === null ? '—' : NumberDisplay.format(this.rank);
|
||||
return this.rank === null ? '—' : NumberFormatter.format(this.rank);
|
||||
}
|
||||
|
||||
get roleBadgeText(): string {
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
* Client-only UI helper built from ViewData.
|
||||
*/
|
||||
|
||||
import { ProfileDisplay } from "../display-objects/ProfileDisplay";
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { ProfileFormatter } from "../formatters/ProfileFormatter";
|
||||
import type { TeamDetailData } from "../view-data/TeamDetailViewData";
|
||||
|
||||
export class DriverTeamViewModel extends ViewModel {
|
||||
@@ -39,6 +39,6 @@ export class DriverTeamViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Display role */
|
||||
get displayRole(): string {
|
||||
return ProfileDisplay.getTeamRole(this.role).text;
|
||||
return ProfileFormatter.getTeamRole(this.role).text;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
* Note: client-only ViewModel created from ViewData (never DTO).
|
||||
*/
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { RatingDisplay } from "../display-objects/RatingDisplay";
|
||||
import { RatingFormatter } from "../formatters/RatingFormatter";
|
||||
import type { DriverViewData } from "../view-data/DriverViewData";
|
||||
|
||||
export class DriverViewModel extends ViewModel {
|
||||
@@ -32,6 +32,6 @@ export class DriverViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted rating */
|
||||
get formattedRating(): string {
|
||||
return this.rating !== undefined ? RatingDisplay.format(this.rating) : "Unrated";
|
||||
return this.rating !== undefined ? RatingFormatter.format(this.rating) : "Unrated";
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { LeagueRoleDisplay, LeagueRole } from "../display-objects/LeagueRoleDisplay";
|
||||
import { LeagueRole, LeagueRoleFormatter } from "../formatters/LeagueRoleFormatter";
|
||||
import type { LeagueMemberViewData } from "../view-data/LeagueMemberViewData";
|
||||
|
||||
export class LeagueMemberViewModel extends ViewModel {
|
||||
@@ -23,7 +23,7 @@ export class LeagueMemberViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Badge classes for role */
|
||||
get roleBadgeClasses(): string {
|
||||
return LeagueRoleDisplay.getLeagueRoleDisplay(this.role as LeagueRole)?.badgeClasses || '';
|
||||
return LeagueRoleFormatter.getLeagueRoleDisplay(this.role as LeagueRole)?.badgeClasses || '';
|
||||
}
|
||||
|
||||
/** UI-specific: Whether this member is the owner */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { LeagueTierDisplay } from "../display-objects/LeagueTierDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { LeagueTierFormatter } from "../formatters/LeagueTierFormatter";
|
||||
import type { LeagueViewData } from "../view-data/LeagueDetailViewData";
|
||||
|
||||
export class LeagueViewModel extends ViewModel {
|
||||
@@ -50,7 +50,7 @@ export class LeagueViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get formattedMainSponsorCpm(): string {
|
||||
return CurrencyDisplay.format(this.mainSponsorCpm);
|
||||
return CurrencyFormatter.format(this.mainSponsorCpm);
|
||||
}
|
||||
|
||||
get racesLeft(): number {
|
||||
@@ -58,6 +58,6 @@ export class LeagueViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get tierConfig() {
|
||||
return LeagueTierDisplay.getDisplay(this.tier);
|
||||
return LeagueTierFormatter.getDisplay(this.tier);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { WalletTransactionViewModel } from './WalletTransactionViewModel';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import type { LeagueWalletViewData } from "../view-data/LeagueWalletViewData";
|
||||
import { WalletTransactionViewModel } from './WalletTransactionViewModel';
|
||||
|
||||
export class LeagueWalletViewModel extends ViewModel {
|
||||
private readonly data: LeagueWalletViewData;
|
||||
@@ -24,22 +24,22 @@ export class LeagueWalletViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted balance */
|
||||
get formattedBalance(): string {
|
||||
return CurrencyDisplay.format(this.balance, this.currency);
|
||||
return CurrencyFormatter.format(this.balance, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted total revenue */
|
||||
get formattedTotalRevenue(): string {
|
||||
return CurrencyDisplay.format(this.totalRevenue, this.currency);
|
||||
return CurrencyFormatter.format(this.totalRevenue, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted total fees */
|
||||
get formattedTotalFees(): string {
|
||||
return CurrencyDisplay.format(this.totalFees, this.currency);
|
||||
return CurrencyFormatter.format(this.totalFees, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted pending payouts */
|
||||
get formattedPendingPayouts(): string {
|
||||
return CurrencyDisplay.format(this.pendingPayouts, this.currency);
|
||||
return CurrencyFormatter.format(this.pendingPayouts, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Filtered transactions by type */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { MembershipFeeTypeDisplay } from "../display-objects/MembershipFeeTypeDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import { MembershipFeeTypeFormatter } from "../formatters/MembershipFeeTypeFormatter";
|
||||
import type { MembershipFeeViewData } from "../view-data/MembershipFeeViewData";
|
||||
|
||||
export class MembershipFeeViewModel extends ViewModel {
|
||||
@@ -23,12 +23,12 @@ export class MembershipFeeViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted amount */
|
||||
get formattedAmount(): string {
|
||||
return CurrencyDisplay.format(this.amount, 'EUR');
|
||||
return CurrencyFormatter.format(this.amount, 'EUR');
|
||||
}
|
||||
|
||||
/** UI-specific: Type display */
|
||||
get typeDisplay(): string {
|
||||
return MembershipFeeTypeDisplay.format(this.type);
|
||||
return MembershipFeeTypeFormatter.format(this.type);
|
||||
}
|
||||
|
||||
/** UI-specific: Status display */
|
||||
@@ -43,11 +43,11 @@ export class MembershipFeeViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted created date */
|
||||
get formattedCreatedAt(): string {
|
||||
return DateDisplay.formatShort(this.createdAt);
|
||||
return DateFormatter.formatShort(this.createdAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted updated date */
|
||||
get formattedUpdatedAt(): string {
|
||||
return DateDisplay.formatShort(this.updatedAt);
|
||||
return DateFormatter.formatShort(this.updatedAt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { PaymentTypeDisplay } from "../display-objects/PaymentTypeDisplay";
|
||||
import { PayerTypeDisplay } from "../display-objects/PayerTypeDisplay";
|
||||
import { StatusDisplay } from "../display-objects/StatusDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import { PayerTypeFormatter } from "../formatters/PayerTypeFormatter";
|
||||
import { PaymentTypeFormatter } from "../formatters/PaymentTypeFormatter";
|
||||
import { StatusFormatter } from "../formatters/StatusFormatter";
|
||||
import type { PaymentViewData } from "../view-data/PaymentViewData";
|
||||
|
||||
export class PaymentViewModel extends ViewModel {
|
||||
@@ -29,12 +29,12 @@ export class PaymentViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted amount */
|
||||
get formattedAmount(): string {
|
||||
return CurrencyDisplay.format(this.amount, 'EUR');
|
||||
return CurrencyFormatter.format(this.amount, 'EUR');
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted net amount */
|
||||
get formattedNetAmount(): string {
|
||||
return CurrencyDisplay.format(this.netAmount, 'EUR');
|
||||
return CurrencyFormatter.format(this.netAmount, 'EUR');
|
||||
}
|
||||
|
||||
/** UI-specific: Status color */
|
||||
@@ -50,26 +50,26 @@ export class PaymentViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted created date */
|
||||
get formattedCreatedAt(): string {
|
||||
return DateDisplay.formatShort(this.createdAt);
|
||||
return DateFormatter.formatShort(this.createdAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted completed date */
|
||||
get formattedCompletedAt(): string {
|
||||
return this.completedAt ? DateDisplay.formatShort(this.completedAt) : 'Not completed';
|
||||
return this.completedAt ? DateFormatter.formatShort(this.completedAt) : 'Not completed';
|
||||
}
|
||||
|
||||
/** UI-specific: Status display */
|
||||
get statusDisplay(): string {
|
||||
return StatusDisplay.transactionStatus(this.status);
|
||||
return StatusFormatter.transactionStatus(this.status);
|
||||
}
|
||||
|
||||
/** UI-specific: Type display */
|
||||
get typeDisplay(): string {
|
||||
return PaymentTypeDisplay.format(this.type);
|
||||
return PaymentTypeFormatter.format(this.type);
|
||||
}
|
||||
|
||||
/** UI-specific: Payer type display */
|
||||
get payerTypeDisplay(): string {
|
||||
return PayerTypeDisplay.format(this.payerType);
|
||||
return PayerTypeFormatter.format(this.payerType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { FinishDisplay } from "../display-objects/FinishDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { PrizeTypeDisplay } from "../display-objects/PrizeTypeDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import { FinishFormatter } from "../formatters/FinishFormatter";
|
||||
import { PrizeTypeFormatter } from "../formatters/PrizeTypeFormatter";
|
||||
import type { PrizeViewData } from "../view-data/PrizeViewData";
|
||||
|
||||
export class PrizeViewModel extends ViewModel {
|
||||
@@ -28,17 +28,17 @@ export class PrizeViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted amount */
|
||||
get formattedAmount(): string {
|
||||
return CurrencyDisplay.format(this.amount, 'EUR');
|
||||
return CurrencyFormatter.format(this.amount, 'EUR');
|
||||
}
|
||||
|
||||
/** UI-specific: Position display */
|
||||
get positionDisplay(): string {
|
||||
return FinishDisplay.format(this.position);
|
||||
return FinishFormatter.format(this.position);
|
||||
}
|
||||
|
||||
/** UI-specific: Type display */
|
||||
get typeDisplay(): string {
|
||||
return PrizeTypeDisplay.format(this.type);
|
||||
return PrizeTypeFormatter.format(this.type);
|
||||
}
|
||||
|
||||
/** UI-specific: Status display */
|
||||
@@ -58,11 +58,11 @@ export class PrizeViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted awarded date */
|
||||
get formattedAwardedAt(): string {
|
||||
return this.awardedAt ? DateDisplay.formatShort(this.awardedAt) : 'Not awarded';
|
||||
return this.awardedAt ? DateFormatter.formatShort(this.awardedAt) : 'Not awarded';
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted created date */
|
||||
get formattedCreatedAt(): string {
|
||||
return DateDisplay.formatShort(this.createdAt);
|
||||
return DateFormatter.formatShort(this.createdAt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { DateDisplay } from '@/lib/display-objects/DateDisplay';
|
||||
import { StatusDisplay } from '@/lib/display-objects/StatusDisplay';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DateFormatter } from '@/lib/formatters/DateFormatter';
|
||||
import { StatusFormatter } from '@/lib/formatters/StatusFormatter';
|
||||
import type { ProtestViewData } from "@/lib/view-data/ProtestViewData";
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
|
||||
export class ProtestViewModel extends ViewModel {
|
||||
private readonly data: ProtestViewData;
|
||||
@@ -27,11 +27,11 @@ export class ProtestViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted submitted date */
|
||||
get formattedSubmittedAt(): string {
|
||||
return DateDisplay.formatShort(this.submittedAt);
|
||||
return DateFormatter.formatShort(this.submittedAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Status display */
|
||||
get statusDisplay(): string {
|
||||
return StatusDisplay.protestStatus(this.status);
|
||||
return StatusFormatter.protestStatus(this.status);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DurationDisplay } from "../display-objects/DurationDisplay";
|
||||
import { DurationFormatter } from "../formatters/DurationFormatter";
|
||||
import type { RaceDetailUserResultViewData } from "../view-data/RaceDetailUserResultViewData";
|
||||
|
||||
export class RaceDetailUserResultViewModel extends ViewModel {
|
||||
@@ -54,6 +54,6 @@ export class RaceDetailUserResultViewModel extends ViewModel {
|
||||
/** UI-specific: Formatted lap time */
|
||||
get lapTimeFormatted(): string {
|
||||
if (this.fastestLap <= 0) return '--:--.---';
|
||||
return DurationDisplay.formatSeconds(this.fastestLap);
|
||||
return DurationFormatter.formatSeconds(this.fastestLap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { RaceStatusDisplay } from "../display-objects/RaceStatusDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import { RaceStatusFormatter } from "../formatters/RaceStatusFormatter";
|
||||
import type { RaceListItemViewData } from "../view-data/RaceListItemViewData";
|
||||
|
||||
export class RaceListItemViewModel extends ViewModel {
|
||||
@@ -29,12 +29,12 @@ export class RaceListItemViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted scheduled time */
|
||||
get formattedScheduledTime(): string {
|
||||
return DateDisplay.formatDateTime(this.scheduledAt);
|
||||
return DateFormatter.formatDateTime(this.scheduledAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Badge variant for status */
|
||||
get statusBadgeVariant(): string {
|
||||
return RaceStatusDisplay.getVariant(this.status);
|
||||
return RaceStatusFormatter.getVariant(this.status);
|
||||
}
|
||||
|
||||
/** UI-specific: Time until start in minutes */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { FinishDisplay } from '../display-objects/FinishDisplay';
|
||||
import { DurationDisplay } from '../display-objects/DurationDisplay';
|
||||
import { DurationFormatter } from '../formatters/DurationFormatter';
|
||||
import { FinishFormatter } from '../formatters/FinishFormatter';
|
||||
import type { RaceResultViewData } from "../view-data/RaceResultViewData";
|
||||
|
||||
export class RaceResultViewModel extends ViewModel {
|
||||
@@ -50,7 +50,7 @@ export class RaceResultViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Badge for position */
|
||||
get positionBadge(): string {
|
||||
return FinishDisplay.format(this.position);
|
||||
return FinishFormatter.format(this.position);
|
||||
}
|
||||
|
||||
/** UI-specific: Color for incidents badge */
|
||||
@@ -63,7 +63,7 @@ export class RaceResultViewModel extends ViewModel {
|
||||
/** UI-specific: Formatted lap time */
|
||||
get lapTimeFormatted(): string {
|
||||
if (this.fastestLap <= 0) return '--:--.---';
|
||||
return DurationDisplay.formatSeconds(this.fastestLap);
|
||||
return DurationFormatter.formatSeconds(this.fastestLap);
|
||||
}
|
||||
|
||||
/** Required by ResultsTable */
|
||||
@@ -72,11 +72,11 @@ export class RaceResultViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get formattedPosition(): string {
|
||||
return FinishDisplay.format(this.position);
|
||||
return FinishFormatter.format(this.position);
|
||||
}
|
||||
|
||||
get formattedStartPosition(): string {
|
||||
return FinishDisplay.format(this.startPosition);
|
||||
return FinishFormatter.format(this.startPosition);
|
||||
}
|
||||
|
||||
get formattedIncidents(): string {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import type { RenewalAlertViewData } from "../view-data/RenewalAlertViewData";
|
||||
|
||||
export class RenewalAlertViewModel extends ViewModel {
|
||||
@@ -20,11 +20,11 @@ export class RenewalAlertViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get formattedPrice(): string {
|
||||
return CurrencyDisplay.format(this.price);
|
||||
return CurrencyFormatter.format(this.price);
|
||||
}
|
||||
|
||||
get formattedRenewDate(): string {
|
||||
return DateDisplay.formatShort(this.renewDate);
|
||||
return DateFormatter.formatShort(this.renewDate);
|
||||
}
|
||||
|
||||
get typeIcon() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import type { SponsorshipDetailViewData } from "../view-data/SponsorshipDetailViewData";
|
||||
|
||||
export class SponsorshipDetailViewModel extends ViewModel {
|
||||
@@ -36,7 +36,7 @@ export class SponsorshipDetailViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted amount */
|
||||
get formattedAmount(): string {
|
||||
return CurrencyDisplay.format(this.amount, this.currency);
|
||||
return CurrencyFormatter.format(this.amount, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Tier badge variant */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import type { SponsorshipPricingViewData } from "../view-data/SponsorshipPricingViewData";
|
||||
|
||||
export class SponsorshipPricingViewModel extends ViewModel {
|
||||
@@ -16,12 +16,12 @@ export class SponsorshipPricingViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted main slot price */
|
||||
get formattedMainSlotPrice(): string {
|
||||
return CurrencyDisplay.format(this.mainSlotPrice, this.currency);
|
||||
return CurrencyFormatter.format(this.mainSlotPrice, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted secondary slot price */
|
||||
get formattedSecondarySlotPrice(): string {
|
||||
return CurrencyDisplay.format(this.secondarySlotPrice, this.currency);
|
||||
return CurrencyFormatter.format(this.secondarySlotPrice, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Price difference */
|
||||
@@ -31,7 +31,7 @@ export class SponsorshipPricingViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted price difference */
|
||||
get formattedPriceDifference(): string {
|
||||
return CurrencyDisplay.format(this.priceDifference, this.currency);
|
||||
return CurrencyFormatter.format(this.priceDifference, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Discount percentage for secondary slot */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import type { SponsorshipRequestViewData } from "../view-data/SponsorshipRequestViewData";
|
||||
|
||||
export class SponsorshipRequestViewModel extends ViewModel {
|
||||
@@ -35,12 +35,12 @@ export class SponsorshipRequestViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted date */
|
||||
get formattedDate(): string {
|
||||
return DateDisplay.formatMonthDay(this.createdAt);
|
||||
return DateFormatter.formatMonthDay(this.createdAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Net amount in dollars */
|
||||
get netAmountDollars(): string {
|
||||
return CurrencyDisplay.format(this.netAmount / 100, 'USD');
|
||||
return CurrencyFormatter.format(this.netAmount / 100, 'USD');
|
||||
}
|
||||
|
||||
/** UI-specific: Tier display */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from '../display-objects/CurrencyDisplay';
|
||||
import { DateDisplay } from '../display-objects/DateDisplay';
|
||||
import { NumberDisplay } from '../display-objects/NumberDisplay';
|
||||
import { CurrencyFormatter } from '../formatters/CurrencyFormatter';
|
||||
import { DateFormatter } from '../formatters/DateFormatter';
|
||||
import { NumberFormatter } from '../formatters/NumberFormatter';
|
||||
import type { SponsorshipViewData } from "../view-data/SponsorshipViewData";
|
||||
|
||||
/**
|
||||
@@ -52,11 +52,11 @@ export class SponsorshipViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get formattedImpressions(): string {
|
||||
return NumberDisplay.format(this.impressions);
|
||||
return NumberFormatter.format(this.impressions);
|
||||
}
|
||||
|
||||
get formattedPrice(): string {
|
||||
return CurrencyDisplay.format(this.price);
|
||||
return CurrencyFormatter.format(this.price);
|
||||
}
|
||||
|
||||
get daysRemaining(): number {
|
||||
@@ -92,8 +92,8 @@ export class SponsorshipViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
get periodDisplay(): string {
|
||||
const start = DateDisplay.formatMonthYear(this.startDate);
|
||||
const end = DateDisplay.formatMonthYear(this.endDate);
|
||||
const start = DateFormatter.formatMonthYear(this.startDate);
|
||||
const end = DateFormatter.formatMonthYear(this.endDate);
|
||||
return `${start} - ${end}`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { FinishDisplay } from "../display-objects/FinishDisplay";
|
||||
import { FinishFormatter } from "../formatters/FinishFormatter";
|
||||
import type { StandingEntryViewData } from "../view-data/StandingEntryViewData";
|
||||
|
||||
export class StandingEntryViewModel extends ViewModel {
|
||||
@@ -20,7 +20,7 @@ export class StandingEntryViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Badge for position display */
|
||||
get positionBadge(): string {
|
||||
return FinishDisplay.format(this.position);
|
||||
return FinishFormatter.format(this.position);
|
||||
}
|
||||
|
||||
/** UI-specific: Points difference to leader */
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import type { TeamJoinRequestViewData } from "../view-data/TeamJoinRequestViewData";
|
||||
|
||||
export class TeamJoinRequestViewModel extends ViewModel {
|
||||
@@ -35,7 +35,7 @@ export class TeamJoinRequestViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted requested date */
|
||||
get formattedRequestedAt(): string {
|
||||
return DateDisplay.formatDateTime(this.requestedAt);
|
||||
return DateFormatter.formatDateTime(this.requestedAt);
|
||||
}
|
||||
|
||||
/** UI-specific: Status color */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import type { TeamMemberViewData, TeamMemberRole } from "../view-data/TeamMemberViewData";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import type { TeamMemberRole, TeamMemberViewData } from "../view-data/TeamMemberViewData";
|
||||
|
||||
function normalizeTeamRole(role: string): TeamMemberRole {
|
||||
if (role === 'owner' || role === 'manager' || role === 'member') return role;
|
||||
@@ -53,6 +53,6 @@ export class TeamMemberViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted joined date */
|
||||
get formattedJoinedAt(): string {
|
||||
return DateDisplay.formatShort(this.joinedAt);
|
||||
return DateFormatter.formatShort(this.joinedAt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import type { UpcomingRaceCardViewData } from "../view-data/UpcomingRaceCardViewData";
|
||||
|
||||
/**
|
||||
@@ -22,6 +22,6 @@ export class UpcomingRaceCardViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: formatted date label */
|
||||
get formattedDate(): string {
|
||||
return DateDisplay.formatMonthDay(this.scheduledAt);
|
||||
return DateFormatter.formatMonthDay(this.scheduledAt);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { DateDisplay } from "../display-objects/DateDisplay";
|
||||
import { TransactionTypeDisplay } from "../display-objects/TransactionTypeDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import { DateFormatter } from "../formatters/DateFormatter";
|
||||
import { TransactionTypeFormatter } from "../formatters/TransactionTypeFormatter";
|
||||
import type { WalletTransactionViewData } from "../view-data/WalletTransactionViewData";
|
||||
|
||||
export class WalletTransactionViewModel extends ViewModel {
|
||||
@@ -25,7 +25,7 @@ export class WalletTransactionViewModel extends ViewModel {
|
||||
/** UI-specific: Formatted amount with sign */
|
||||
get formattedAmount(): string {
|
||||
const sign = this.amount > 0 ? '+' : '';
|
||||
return `${sign}${CurrencyDisplay.format(Math.abs(this.amount))}`;
|
||||
return `${sign}${CurrencyFormatter.format(Math.abs(this.amount))}`;
|
||||
}
|
||||
|
||||
/** UI-specific: Amount color */
|
||||
@@ -35,12 +35,12 @@ export class WalletTransactionViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Type display */
|
||||
get typeDisplay(): string {
|
||||
return TransactionTypeDisplay.format(this.type);
|
||||
return TransactionTypeFormatter.format(this.type);
|
||||
}
|
||||
|
||||
/** UI-specific: Formatted date */
|
||||
get formattedDate(): string {
|
||||
return DateDisplay.formatShort(this.date);
|
||||
return DateFormatter.formatShort(this.date);
|
||||
}
|
||||
|
||||
/** UI-specific: Is incoming */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { WalletTransactionViewModel } from './WalletTransactionViewModel';
|
||||
import { ViewModel } from "../contracts/view-models/ViewModel";
|
||||
import { CurrencyDisplay } from "../display-objects/CurrencyDisplay";
|
||||
import { CurrencyFormatter } from "../formatters/CurrencyFormatter";
|
||||
import type { WalletViewData } from "../view-data/WalletViewData";
|
||||
import { WalletTransactionViewModel } from './WalletTransactionViewModel';
|
||||
|
||||
export class WalletViewModel extends ViewModel {
|
||||
private readonly data: WalletViewData;
|
||||
@@ -24,7 +24,7 @@ export class WalletViewModel extends ViewModel {
|
||||
|
||||
/** UI-specific: Formatted balance */
|
||||
get formattedBalance(): string {
|
||||
return CurrencyDisplay.format(this.balance, this.currency);
|
||||
return CurrencyFormatter.format(this.balance, this.currency);
|
||||
}
|
||||
|
||||
/** UI-specific: Balance color */
|
||||
|
||||
Reference in New Issue
Block a user