import React from "react";
import { LocalDateTimeString } from "../../utils/dates";
import { ValidateLocationByParam } from "../../utils/locations";
import useStyles from "../useStyles";
const UNKNOWN = "unknown";
const LOCKED = "Locked";
const UNLOCKED = "Unlocked";
const PARKED = "Yes";
const NOT_PARKED = "Not Parked";
const appendUnits = (value, units) => {
if (value || value === 0) return `${value}${units}`;
return UNKNOWN;
}
const keyValueTemplate = (key, value) => (
{!battery && !doors && !location && !windows && !vcu0x260 && !charging_metrics && (
No vehicle data to display.
)}
{(battery || max_range) && (
Battery
{keyValueTemplate("Percentage", appendUnits(battery?.percent || 0, "%"))}
{keyValueTemplate("Total Mileage", appendUnits(battery?.total_mileage_odometer, " km"))}
{keyValueTemplate("Voltage", appendUnits(battery?.battery_voltage, " V"))}
{keyValueTemplate("Max Range", appendUnits(max_range?.max_miles, " km"))}
)}
{(vcu0x260 || charging_metrics) && (
Charging
{keyValueTemplate("Charge Type", vcu0x260?.charge_type || UNKNOWN)}
{keyValueTemplate("Remaining Time", appendUnits(charging_metrics?.remaining_charging_time, " min"))}
)}
{doors && (
Doors
{Object.entries(doors).map(mapOpenCloseState)}
)}
{door_locks && (
Door Locks
{Object.entries(door_locks).map((value) => {
return keyValueTemplate(value[0], value[1] ? LOCKED : UNLOCKED);
})}
)}
{windows && (
Windows
{Object.entries(windows).map((value) => {
return windowState(value);
})}
)}
{misc_windows && (
Misc Windows
{Object.entries(misc_windows).map((value) => {
return windowState(value);
})}
)}
{sunroof && (
Sunroof
{Object.entries(sunroof).map((value) => {
return windowState(value);
})}
)}
{location && (
Location
{Object.entries(location).map((value) => {
if (ValidateLocationByParam(value[0], value[1]) === false) {
return keyValueTemplate(value[0], "Invalid")
}
if (value[0] === "altitude") {
return keyValueTemplate(value[0], appendUnits(value[1], " m"));
} else {
return keyValueTemplate(value[0], appendUnits(value[1], "°"));
}
})}
)}
{trex_version && (
{keyValueTemplate("Trex Version", trex_version)}
)}
{ip && (
{keyValueTemplate("Trex IP", ip)}
)}
{updated != null && (
{keyValueTemplate("Updated At", LocalDateTimeString(updated))}
)}
{dbc_version != null && (
{keyValueTemplate("DBC Version", dbc_version)}
)}
{vehicle_speed && (
{keyValueTemplate("Vehicle Speed", appendUnits(vehicle_speed?.speed, " km/h"))}
)}
{gear && (
{keyValueTemplate("Parked", gear.in_park ? PARKED : NOT_PARKED)}
)}
{safe_state && (
Safe States
{keyValueTemplate("Vehicle Safe State", safe_state.vehicle_safe_state ? "Active" : "False")}
{keyValueTemplate("VCU Safe State", safe_state.vcu_safe_state ? "Active" : "False")}
{keyValueTemplate("MCU Front Inverter Error", safe_state.mcu_front_inverter_error ? "Active" : "False")}
{keyValueTemplate("MCU Rear Inverter Error", safe_state.mcu_rear_inverter_error ? "Active" : "False")}
)}
);
};
export default DigitalTwin;