Refactor profile stats calculation

This commit is contained in:
gpt-engineer-app[bot]
2025-09-28 21:15:23 +00:00
parent 2f295b4879
commit ec664a1669
5 changed files with 250 additions and 2 deletions

View File

@@ -261,6 +261,27 @@ export default function RideDetail() {
</CardContent>
</Card>
)}
{/* New roller coaster specific stats */}
{ride.drop_height_meters && (
<Card>
<CardContent className="p-4 text-center">
<div className="text-2xl mb-2"></div>
<div className="text-2xl font-bold text-destructive">{ride.drop_height_meters}m</div>
<div className="text-sm text-muted-foreground">drop</div>
</CardContent>
</Card>
)}
{ride.max_g_force && (
<Card>
<CardContent className="p-4 text-center">
<div className="text-2xl mb-2"></div>
<div className="text-2xl font-bold text-warning">{ride.max_g_force}g</div>
<div className="text-sm text-muted-foreground">max G-force</div>
</CardContent>
</Card>
)}
</div>
{/* Requirements & Warnings */}
@@ -367,6 +388,49 @@ export default function RideDetail() {
</div>
)}
{/* Roller Coaster Specific Info */}
{ride.category === 'roller_coaster' && (ride.coaster_type || ride.seating_type || ride.intensity_level) && (
<>
<Separator />
<div className="space-y-3">
<div className="font-medium">Coaster Details</div>
{ride.coaster_type && (
<div className="flex items-center gap-3">
<div className="text-lg">🎢</div>
<div>
<div className="font-medium">Type</div>
<div className="text-sm text-muted-foreground">
{ride.coaster_type.charAt(0).toUpperCase() + ride.coaster_type.slice(1)}
</div>
</div>
</div>
)}
{ride.seating_type && (
<div className="flex items-center gap-3">
<div className="text-lg">💺</div>
<div>
<div className="font-medium">Seating</div>
<div className="text-sm text-muted-foreground">
{ride.seating_type.replace('_', ' ').replace(/\b\w/g, l => l.toUpperCase())}
</div>
</div>
</div>
)}
{ride.intensity_level && (
<div className="flex items-center gap-3">
<div className="text-lg">🔥</div>
<div>
<div className="font-medium">Intensity</div>
<div className="text-sm text-muted-foreground">
{ride.intensity_level.charAt(0).toUpperCase() + ride.intensity_level.slice(1)}
</div>
</div>
</div>
)}
</div>
</>
)}
<Separator />
<div className="space-y-2">
@@ -424,6 +488,18 @@ export default function RideDetail() {
<span className="font-medium">{ride.inversions}</span>
</div>
)}
{ride.drop_height_meters && (
<div className="flex justify-between">
<span>Drop Height</span>
<span className="font-medium">{ride.drop_height_meters}m</span>
</div>
)}
{ride.max_g_force && (
<div className="flex justify-between">
<span>Maximum G-Force</span>
<span className="font-medium">{ride.max_g_force}g</span>
</div>
)}
</CardContent>
</Card>