diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 94e27bac..a5e01356 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -297,6 +297,7 @@ } }, "%@ hPa" : { + "extractionState" : "stale", "localizations" : { "sr" : { "stringUnit" : { @@ -9252,9 +9253,6 @@ } } } - }, - "Done" : { - }, "Double Tap as Button" : { "localizations" : { @@ -29835,8 +29833,8 @@ } } }, - "Trace route received directly by %@ with a SNR of %@ dB" : { + "extractionState" : "stale", "localizations" : { "en" : { "stringUnit" : { diff --git a/Meshtastic/Extensions/Measurement.swift b/Meshtastic/Extensions/Measurement.swift index ca867c09..4947c823 100644 --- a/Meshtastic/Extensions/Measurement.swift +++ b/Meshtastic/Extensions/Measurement.swift @@ -8,6 +8,14 @@ import Foundation import Charts +extension Measurement where UnitType == UnitAngle { + func reciprocal() -> Measurement { + var recip = self.converted(to: .degrees) + recip.value = (recip.value + 180).truncatingRemainder(dividingBy: 360) + return recip.converted(to: self.unit) + } +} + struct PlottableMeasurement { var measurement: Measurement } diff --git a/Meshtastic/Views/Nodes/Helpers/Map/PositionPopover.swift b/Meshtastic/Views/Nodes/Helpers/Map/PositionPopover.swift index fb019e0b..8874ba98 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/PositionPopover.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/PositionPopover.swift @@ -143,7 +143,7 @@ struct PositionPopover: View { /// Heading let degrees = Angle.degrees(Double(position.heading)) Label { - let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees) + let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees).reciprocal() Text("Heading: \(heading.formatted(.measurement(width: .narrow, numberFormatStyle: .number.precision(.fractionLength(0)))))") } icon: { Image(systemName: "location.north") diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift index b75d5822..2693f13e 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift @@ -120,7 +120,7 @@ struct NodeListItem: View { .symbolRenderingMode(.multicolor) .clipShape(Circle()) .rotationEffect(headingDegrees) - let heading = Measurement(value: trueBearing, unit: UnitAngle.degrees) + let heading = Measurement(value: trueBearing, unit: UnitAngle.degrees).reciprocal() Text("\(heading.formatted(.measurement(width: .narrow, numberFormatStyle: .number.precision(.fractionLength(0)))))") .font(UIDevice.current.userInterfaceIdiom == .phone ? .callout : .caption) .foregroundColor(.gray) diff --git a/Meshtastic/Views/Nodes/PositionLog.swift b/Meshtastic/Views/Nodes/PositionLog.swift index 3abcb791..ee2709db 100644 --- a/Meshtastic/Views/Nodes/PositionLog.swift +++ b/Meshtastic/Views/Nodes/PositionLog.swift @@ -52,7 +52,7 @@ struct PositionLog: View { } TableColumn("Heading") { position in let degrees = Angle.degrees(Double(position.heading)) - let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees) + let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees).reciprocal() Text(heading.formatted(.measurement(width: .narrow, numberFormatStyle: .number.precision(.fractionLength(0))))) } TableColumn("SNR") { position in diff --git a/Meshtastic/Views/Settings/GPSStatus.swift b/Meshtastic/Views/Settings/GPSStatus.swift index c92a647c..7e0a6588 100644 --- a/Meshtastic/Views/Settings/GPSStatus.swift +++ b/Meshtastic/Views/Settings/GPSStatus.swift @@ -22,7 +22,7 @@ struct GPSStatus: View { let altitiude = Measurement(value: newLocation.altitude, unit: UnitLength.meters) let speed = Measurement(value: newLocation.speed, unit: UnitSpeed.kilometersPerHour) let speedAccuracy = Measurement(value: newLocation.speedAccuracy, unit: UnitSpeed.metersPerSecond) - let courseAccuracy = Measurement(value: newLocation.courseAccuracy, unit: UnitAngle.degrees) + let courseAccuracy = Measurement(value: newLocation.courseAccuracy, unit: UnitAngle.degrees).reciprocal() Label("Coordinate \(String(format: "%.5f", newLocation.coordinate.latitude)), \(String(format: "%.5f", newLocation.coordinate.longitude))", systemImage: "mappin") .font(largeFont) @@ -45,7 +45,7 @@ struct GPSStatus: View { HStack { let degrees = Angle.degrees(newLocation.course) Label { - let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees) + let heading = Measurement(value: degrees.degrees, unit: UnitAngle.degrees).reciprocal() Text("Heading: \(heading.formatted(.measurement(width: .narrow, numberFormatStyle: .number.precision(.fractionLength(0)))))") } icon: { Image(systemName: "location.north")