import { useAppStore } from "../../core/stores/appStore.ts"; import { useDevice } from "../../core/stores/deviceStore.ts"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "../UI/Accordion.tsx"; import { Dialog, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "../UI/Dialog.tsx"; import { Protobuf } from "@meshtastic/core"; import { numberToHexUnpadded } from "@noble/curves/abstract/utils"; import { DeviceImage } from "../generic/DeviceImage.tsx"; import { TimeAgo } from "../generic/TimeAgo.tsx"; import { Uptime } from "../generic/Uptime.tsx"; export interface NodeDetailsDialogProps { open: boolean; onOpenChange: (open: boolean) => void; } export const NodeDetailsDialog = ({ open, onOpenChange, }: NodeDetailsDialogProps) => { const { nodes } = useDevice(); const { nodeNumDetails } = useAppStore(); const device: Protobuf.Mesh.NodeInfo = nodes.get(nodeNumDetails); return device ? ( Node Details for {device.user?.longName ?? "UNKNOWN"} ( {device.user?.shortName ?? "UNK"})

Details:

Hardware:{" "} {Protobuf.Mesh.HardwareModel[device.user?.hwModel ?? 0]}

Node Number: {device.num}

Node HEX: !{numberToHexUnpadded(device.num)}

Role: {Protobuf.Config.Config_DeviceConfig_Role[ device.user?.role ?? 0 ]}

Last Heard: {device.lastHeard === 0 ? ( "Never" ) : }

{device.position ? (

Position:

{device.position.latitudeI && device.position.longitudeI ? (

Coordinates:{" "} {device.position.latitudeI / 1e7},{" "} {device.position.longitudeI / 1e7}

) : null} {device.position.altitude ?

Altitude: {device.position.altitude}m

: null}
) : null} {device.deviceMetrics ? (

Device Metrics:

{device.deviceMetrics.airUtilTx ? (

Air TX utilization:{" "} {device.deviceMetrics.airUtilTx.toFixed(2)}%

) : null} {device.deviceMetrics.channelUtilization ? (

Channel utilization:{" "} {device.deviceMetrics.channelUtilization.toFixed(2)}%

) : null} {device.deviceMetrics.batteryLevel ? (

Battery level:{" "} {device.deviceMetrics.batteryLevel.toFixed(2)}%

) : null} {device.deviceMetrics.voltage ? (

Voltage: {device.deviceMetrics.voltage.toFixed(2)}V

) : null} {device.deviceMetrics.uptimeSeconds ? (

Uptime:{" "}

) : null}
) : null} {device ? (

All Raw Metrics:

                            {JSON.stringify(device, null, 2)}
                          
) : null}
) : null; };