view data fixes

This commit is contained in:
2026-01-24 00:52:27 +01:00
parent 62e8b768ce
commit ae59df61eb
321 changed files with 1157 additions and 2234 deletions

View File

@@ -1,30 +1,26 @@
import { AnalyticsDashboardInputViewData } from '@/lib/view-data/AnalyticsDashboardInputViewData';
import { AnalyticsDashboardViewData } from '@/lib/view-data/AnalyticsDashboardViewData';
'use client';
/**
* AnalyticsDashboardViewDataBuilder
*
* Transforms AnalyticsDashboardInputViewData into AnalyticsDashboardViewData for server-side rendering.
* Deterministic; side-effect free; no HTTP calls.
*/
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
import type { GetDashboardDataOutputDTO } from '@/lib/types/generated/GetDashboardDataOutputDTO';
import type { AnalyticsDashboardViewData } from '@/lib/view-data/AnalyticsDashboardViewData';
import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder';
export class AnalyticsDashboardViewDataBuilder implements ViewDataBuilder<any, any> {
build(input: any): any {
return AnalyticsDashboardViewDataBuilder.build(input);
}
export class AnalyticsDashboardViewDataBuilder {
public static build(apiDto: GetDashboardDataOutputDTO): AnalyticsDashboardViewData {
const totalUsers = apiDto.totalUsers;
const activeUsers = apiDto.activeUsers;
const totalRaces = apiDto.totalRaces;
const totalLeagues = apiDto.totalLeagues;
static build(viewData: AnalyticsDashboardInputViewData): AnalyticsDashboardViewData {
const userEngagementRate = viewData.totalUsers > 0 ? (viewData.activeUsers / viewData.totalUsers) * 100 : 0;
const userEngagementRate = totalUsers > 0 ? (activeUsers / totalUsers) * 100 : 0;
const formattedEngagementRate = `${userEngagementRate.toFixed(1)}%`;
const activityLevel = userEngagementRate > 70 ? 'High' : userEngagementRate > 40 ? 'Medium' : 'Low';
return {
metrics: {
totalUsers: viewData.totalUsers,
activeUsers: viewData.activeUsers,
totalRaces: viewData.totalRaces,
totalLeagues: viewData.totalLeagues,
totalUsers,
activeUsers,
totalRaces,
totalLeagues,
userEngagementRate,
formattedEngagementRate,
activityLevel,
@@ -32,3 +28,5 @@ export class AnalyticsDashboardViewDataBuilder implements ViewDataBuilder<any, a
};
}
}
AnalyticsDashboardViewDataBuilder satisfies ViewDataBuilder<GetDashboardDataOutputDTO, AnalyticsDashboardViewData>;