diff --git a/src/components/rides/CoasterStatistics.tsx b/src/components/rides/CoasterStatistics.tsx index ed7e1e7d..f50dbd77 100644 --- a/src/components/rides/CoasterStatistics.tsx +++ b/src/components/rides/CoasterStatistics.tsx @@ -2,7 +2,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { RideCoasterStat } from "@/types/database"; import { TrendingUp } from "lucide-react"; import { useUnitPreferences } from "@/hooks/useUnitPreferences"; -import { convertValueFromMetric, detectUnitType, getMetricUnit } from "@/lib/units"; +import { convertValueFromMetric, detectUnitType, getMetricUnit, getDisplayUnit } from "@/lib/units"; interface CoasterStatisticsProps { statistics?: RideCoasterStat[]; @@ -25,18 +25,18 @@ export const CoasterStatistics = ({ statistics }: CoasterStatisticsProps) => { return `${stat.stat_value.toLocaleString()} ${stat.unit}`; } - const metricUnit = getMetricUnit(stat.unit); + // stat.unit is the metric unit stored in DB (e.g., "km/h") + // Get the target display unit based on user preference (e.g., "mph" for imperial) + const displayUnit = getDisplayUnit(stat.unit, preferences.measurement_system); + + // Convert from metric (stat.unit) to display unit const convertedValue = convertValueFromMetric( stat.stat_value, - stat.unit, - metricUnit + displayUnit, // Target unit (mph, ft, in) + stat.unit // Source metric unit (km/h, m, cm) ); - const targetUnit = preferences.measurement_system === 'metric' - ? metricUnit - : stat.unit; - - return `${convertedValue.toLocaleString()} ${targetUnit}`; + return `${convertedValue.toLocaleString()} ${displayUnit}`; }; // Group stats by category diff --git a/src/components/rides/TechnicalSpecifications.tsx b/src/components/rides/TechnicalSpecifications.tsx index 2aaf657c..860806bb 100644 --- a/src/components/rides/TechnicalSpecifications.tsx +++ b/src/components/rides/TechnicalSpecifications.tsx @@ -2,7 +2,7 @@ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { RideTechnicalSpec } from "@/types/database"; import { Wrench } from "lucide-react"; import { useUnitPreferences } from "@/hooks/useUnitPreferences"; -import { convertValueFromMetric, detectUnitType, getMetricUnit } from "@/lib/units"; +import { convertValueFromMetric, detectUnitType, getMetricUnit, getDisplayUnit } from "@/lib/units"; interface TechnicalSpecificationsProps { specifications?: RideTechnicalSpec[]; @@ -26,24 +26,24 @@ export const TechnicalSpecifications = ({ specifications }: TechnicalSpecificati return `${spec.spec_value} ${spec.unit}`; } - const metricUnit = getMetricUnit(spec.unit); const numericValue = parseFloat(spec.spec_value); if (isNaN(numericValue)) { return spec.spec_value; } + // spec.unit is the metric unit stored in DB (e.g., "km/h") + // Get the target display unit based on user preference (e.g., "mph" for imperial) + const displayUnit = getDisplayUnit(spec.unit, preferences.measurement_system); + + // Convert from metric (spec.unit) to display unit const convertedValue = convertValueFromMetric( numericValue, - spec.unit, - metricUnit + displayUnit, // Target unit (mph, ft, in) + spec.unit // Source metric unit (km/h, m, cm) ); - const targetUnit = preferences.measurement_system === 'metric' - ? metricUnit - : spec.unit; - - return `${convertedValue.toLocaleString()} ${targetUnit}`; + return `${convertedValue.toLocaleString()} ${displayUnit}`; }; // Group specs by category