diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 6b90cd89..86ecdc96 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -854,8 +854,9 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate connectedHop.longitudeI = mostRecent.longitudeI traceRoute?.hasPositions = true } - hopNodes.append(connectedHop) var routeString = "\(connectedHop.name ?? "???") --> " + hopNodes.append(connectedHop) + traceRoute?.hopsTowards = Int32(routingMessage.route.count) for (index, node) in routingMessage.route.enumerated() { var hopNode = getNodeInfo(id: Int64(node), context: context) if hopNode == nil && hopNode?.num ?? 0 > 0 && node != 4294967295 { @@ -896,6 +897,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate hopNodes.append(destinationHop) routeString += "\(destinationHop.name ?? "???") (\(destinationHop.num.toHex()))" var routeBackString = "\(traceRoute?.node?.user?.longName ?? "unknown".localized) --> " + traceRoute?.hopsBack = Int32(routingMessage.routeBack.count) for (index, node) in routingMessage.routeBack.enumerated() { var hopNode = getNodeInfo(id: Int64(node), context: context) if hopNode == nil && hopNode?.num ?? 0 > 0 && node != 4294967295 { @@ -924,7 +926,7 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate hopNodes.append(traceRouteHop) routeBackString += "\(hopNode?.user?.longName ?? (node == 4294967295 ? "Repeater" : String(hopNode?.num.toHex() ?? "unknown".localized))) \(hopNode?.viaMqtt ?? false ? "MQTT" : "") (\(traceRouteHop.snr > 0 ? hopNode?.snr ?? 0.0 : 0.0)dB) --> " } - routeBackString += "\(connectedHop.name ?? "???") (\(connectedHop.num.toHex()))" + routeBackString += "\(connectedNode.user?.longName ?? "???") (\(connectedNode.num.toHex()))" traceRoute?.routeText = routeString traceRoute?.routeBackText = routeBackString traceRoute?.hops = NSOrderedSet(array: hopNodes) diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 46.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 46.xcdatamodel/contents index a79a311f..8ebdb9e2 100644 --- a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 46.xcdatamodel/contents +++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 46.xcdatamodel/contents @@ -420,6 +420,8 @@ + + diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift index 66f58a07..b75d5822 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift @@ -156,39 +156,36 @@ struct NodeListItem: View { Image(systemName: "scroll") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) Text("Logs:") .foregroundColor(.gray) - .font(UIDevice.current.userInterfaceIdiom == .phone ? .callout : .caption) + .font(UIDevice.current.userInterfaceIdiom == .phone ? .callout : .caption2) + .allowsTightening(true) if node.hasDeviceMetrics { Image(systemName: "flipphone") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) } if node.hasPositions { Image(systemName: "mappin.and.ellipse") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) + } if node.hasEnvironmentMetrics { Image(systemName: "cloud.sun.rain") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) + } if node.hasDetectionSensorMetrics { Image(systemName: "sensor") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) } if node.hasTraceRoutes { Image(systemName: "signpost.right.and.left") .symbolRenderingMode(.hierarchical) .font(.callout) - .frame(width: 30) } } } diff --git a/Meshtastic/Views/Nodes/TraceRouteLog.swift b/Meshtastic/Views/Nodes/TraceRouteLog.swift index 398a12b0..3f1a0348 100644 --- a/Meshtastic/Views/Nodes/TraceRouteLog.swift +++ b/Meshtastic/Views/Nodes/TraceRouteLog.swift @@ -37,7 +37,7 @@ struct TraceRouteLog: View { VStack { List(node.traceRoutes?.reversed() as? [TraceRouteEntity] ?? [], id: \.self, selection: $selectedRoute) { route in Label { - Text("\(route.time?.formatted() ?? "unknown".localized) - \(route.response ? (route.hops?.count == 0 && route.response ? "Direct" : "\(route.hops?.count ?? 0) \(route.hops?.count ?? 0 == 1 ? "Hop": "Hops")") : (route.sent ? "No Response" : "Not Sent"))") + Text("\(route.time?.formatted() ?? "unknown".localized) - \(route.response ? (route.hops?.count == 0 && route.response ? "Direct" : "\(route.hopsTowards) \(route.hops?.count ?? 0 == 1 ? "Hop Towards": "Hops Towards")") : (route.sent ? "No Response" : "Not Sent"))") .font(.callout) } icon: { Image(systemName: route.response ? (route.hops?.count == 0 && route.response ? "person.line.dotted.person" : "point.3.connected.trianglepath.dotted") : "person.slash")