import React from "react"; import { LocalDateTimeString } from "../../utils/dates"; import { ValidateLocationByParam } from "../../utils/locations"; import useStyles from "../useStyles"; const keyValueTemplate = (key, value) => (

{key}: {value}

); const openCloseState = (value) => (value ? "open" : "closed"); const mapOpenCloseState = (value) => keyValueTemplate(value[0], openCloseState(value[1])); const DigitalTwin = (props) => { const classes = useStyles(); const { battery, doors, location, trex_version, ip, updated, windows, misc_windows, sunroof, dbc_version, door_locks } = props; return (
{!battery && !doors && !location && !windows && (

No vehicle data to display.

)} {battery != null && keyValueTemplate("Battery", `${battery.percent}%`)} {doors != null && (

Doors

{Object.entries(doors).map(mapOpenCloseState)}
)} {door_locks != null && (

Door Locks

{Object.entries(door_locks).map((value) => { if (value[0] === "driver") { return keyValueTemplate(value[0], value[1] ? "Open" : "Closed"); } else { return keyValueTemplate(value[0], value[1] ? "Unlocked" : "Locked"); } })}
)} {windows != null && (

Windows

{Object.entries(windows).map((value) => { if (value[1] === 0) { return keyValueTemplate(value[0], "closed"); } else { const percentOpen = Math.min(value[1], 100); return keyValueTemplate(value[0], `${percentOpen}% open`); } })}
)} {misc_windows != null && (

Misc Windows

{Object.entries(misc_windows).map((value) => { if (value[1] === 0 || value[1] > 100) { return keyValueTemplate(value[0], `closed ${value[1]}%`); } else { return keyValueTemplate(value[0], `${value[1]}% open`); } })}
)} {sunroof != null && (

Sunroof

{Object.entries(sunroof).map((value) => { if (value[1] === 0) { return keyValueTemplate(value[0], "closed"); } else { const percentOpen = Math.min(value[1], 100); return keyValueTemplate(value[0], `${percentOpen}% open`); } })}
)} {location != null && (

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], value[1]); } else { return keyValueTemplate(value[0], `${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)}
)}
); }; export default DigitalTwin;