From 0aba48a4476554fb9f2152b8c7f590e77d11a866 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 22 Apr 2024 13:22:16 -0700 Subject: [PATCH 1/4] Remove sponsor link --- Meshtastic/Extensions/UserDefaults.swift | 2 +- .../Views/Helpers/IndoorAirQuality.swift | 58 +++++++++---------- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 41 ++++++++++--- Meshtastic/Views/Settings/About.swift | 4 +- 4 files changed, 63 insertions(+), 42 deletions(-) diff --git a/Meshtastic/Extensions/UserDefaults.swift b/Meshtastic/Extensions/UserDefaults.swift index 1a3e05b2..49757d69 100644 --- a/Meshtastic/Extensions/UserDefaults.swift +++ b/Meshtastic/Extensions/UserDefaults.swift @@ -86,7 +86,7 @@ extension UserDefaults { @UserDefault(.provideLocation, defaultValue: false) static var provideLocation: Bool - @UserDefault(.provideLocationInterval, defaultValue: 0) + @UserDefault(.provideLocationInterval, defaultValue: 30) static var provideLocationInterval: Int @UserDefault(.mapLayer, defaultValue: .standard) diff --git a/Meshtastic/Views/Helpers/IndoorAirQuality.swift b/Meshtastic/Views/Helpers/IndoorAirQuality.swift index fa90d6f5..b445275a 100644 --- a/Meshtastic/Views/Helpers/IndoorAirQuality.swift +++ b/Meshtastic/Views/Helpers/IndoorAirQuality.swift @@ -91,35 +91,35 @@ struct IndoorAirQuality_Previews: PreviewProvider { IndoorAirQuality(iaq: 351, displayMode: .dot) } } - Text(".text") - .font(.title) - IndoorAirQuality(iaq: 6, displayMode: .text) - IndoorAirQuality(iaq: 51, displayMode: .text) - IndoorAirQuality(iaq: 101, displayMode: .text) - IndoorAirQuality(iaq: 201, displayMode: .text) - IndoorAirQuality(iaq: 350, displayMode: .text) - IndoorAirQuality(iaq: 351, displayMode: .text) - Text(".gauge") - .font(.title) - HStack (alignment: .top) { - VStack{ - IndoorAirQuality(iaq: 6, displayMode: .gauge) - IndoorAirQuality(iaq: 51, displayMode: .gauge) - IndoorAirQuality(iaq: 101, displayMode: .gauge) - IndoorAirQuality(iaq: 151, displayMode: .gauge) - } - VStack{ - IndoorAirQuality(iaq: 201, displayMode: .gauge) - IndoorAirQuality(iaq: 251, displayMode: .gauge) - IndoorAirQuality(iaq: 301, displayMode: .gauge) - IndoorAirQuality(iaq: 350, displayMode: .gauge) - } - VStack{ - IndoorAirQuality(iaq: 351, displayMode: .gauge) - IndoorAirQuality(iaq: 401, displayMode: .gauge) - IndoorAirQuality(iaq: 500, displayMode: .gauge) - } - } +// Text(".text") +// .font(.title) +// IndoorAirQuality(iaq: 6, displayMode: .text) +// IndoorAirQuality(iaq: 51, displayMode: .text) +// IndoorAirQuality(iaq: 101, displayMode: .text) +// IndoorAirQuality(iaq: 201, displayMode: .text) +// IndoorAirQuality(iaq: 350, displayMode: .text) +// IndoorAirQuality(iaq: 351, displayMode: .text) +// Text(".gauge") +// .font(.title) +// HStack (alignment: .top) { +// VStack{ +// IndoorAirQuality(iaq: 6, displayMode: .gauge) +// IndoorAirQuality(iaq: 51, displayMode: .gauge) +// IndoorAirQuality(iaq: 101, displayMode: .gauge) +// IndoorAirQuality(iaq: 151, displayMode: .gauge) +// } +// VStack{ +// IndoorAirQuality(iaq: 201, displayMode: .gauge) +// IndoorAirQuality(iaq: 251, displayMode: .gauge) +// IndoorAirQuality(iaq: 301, displayMode: .gauge) +// IndoorAirQuality(iaq: 350, displayMode: .gauge) +// } +// VStack{ +// IndoorAirQuality(iaq: 351, displayMode: .gauge) +// IndoorAirQuality(iaq: 401, displayMode: .gauge) +// IndoorAirQuality(iaq: 500, displayMode: .gauge) +// } +// } }.previewLayout(.fixed(width: 300, height: 800)) } } diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 07625a4e..5828f2f3 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -6,6 +6,7 @@ // import SwiftUI import Charts +import UIKit struct DeviceMetricsLog: View { @@ -86,8 +87,8 @@ struct DeviceMetricsLog: View { } .frame(minHeight: 250) } - let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current) - let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "") + let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMdjmma", options: 0, locale: Locale.current) + let dateFormatString = (localeDateFormat ?? "M/d/YY j:mma").replacingOccurrences(of: ",", with: "") if UIScreen.main.bounds.size.width > 768 && (UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac) { // Add a table for mac and ipad // Table(Array(deviceMetrics),id: \.self) { @@ -111,8 +112,30 @@ struct DeviceMetricsLog: View { TableColumn("uptime") { dm in let now = Date.now let later = now + TimeInterval(dm.uptimeSeconds) - let components = (now.. Date: Mon, 22 Apr 2024 15:11:00 -0700 Subject: [PATCH 2/4] move uptime to node details --- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 40 ++----------------- .../Views/Nodes/Helpers/NodeDetail.swift | 26 +++++++++++- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 5828f2f3..809628f2 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -6,7 +6,6 @@ // import SwiftUI import Charts -import UIKit struct DeviceMetricsLog: View { @@ -87,8 +86,8 @@ struct DeviceMetricsLog: View { } .frame(minHeight: 250) } - let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMdjmma", options: 0, locale: Locale.current) - let dateFormatString = (localeDateFormat ?? "M/d/YY j:mma").replacingOccurrences(of: ",", with: "") + let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current) + let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "") if UIScreen.main.bounds.size.width > 768 && (UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac) { // Add a table for mac and ipad // Table(Array(deviceMetrics),id: \.self) { @@ -114,28 +113,6 @@ struct DeviceMetricsLog: View { let later = now + TimeInterval(dm.uptimeSeconds) let components = (now.. 0 { + HStack(alignment: .center) { + let now = Date.now + let later = now + TimeInterval(dm!.uptimeSeconds) + let components = (now.. Date: Mon, 22 Apr 2024 15:17:45 -0700 Subject: [PATCH 3/4] Move uptime out of the device metrics log grid --- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 4 ++-- Meshtastic/Views/Nodes/Helpers/NodeDetail.swift | 2 +- Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift | 10 ++++++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 809628f2..aa55a2b3 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -86,8 +86,8 @@ struct DeviceMetricsLog: View { } .frame(minHeight: 250) } - let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current) - let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "") + let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMdjmma", options: 0, locale: Locale.current) + let dateFormatString = (localeDateFormat ?? "M/d/YY j:mma").replacingOccurrences(of: ",", with: "") if UIScreen.main.bounds.size.width > 768 && (UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac) { // Add a table for mac and ipad // Table(Array(deviceMetrics),id: \.self) { diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index 66db4dc5..e4c4886e 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -40,7 +40,7 @@ struct NodeDetail: View { .foregroundColor(Color.gray) }, icon: { - Image(systemName: "arrowshape.up.circle.fill") + Image(systemName: "checkmark.circle.fill") .foregroundColor(.green) .symbolRenderingMode(.hierarchical) .font(.title) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift index 0b381b9c..46aae43b 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeInfoItem.swift @@ -64,7 +64,10 @@ struct NodeInfoItem: View { .symbolRenderingMode(.hierarchical) Text("Node Number:").font(.title2) } - Text(String(node.num)).font(.title3).foregroundColor(.gray) + Text(String(node.num)) + .font(.title3) + .foregroundColor(.gray) + .textSelection(.enabled) } Divider() VStack { @@ -75,7 +78,10 @@ struct NodeInfoItem: View { .symbolRenderingMode(.hierarchical) Text("User Id:").font(.title2) } - Text(node.user?.userId ?? "?").font(.title3).foregroundColor(.gray) + Text(node.user?.userId ?? "?") + .font(.title3) + .foregroundColor(.gray) + .textSelection(.enabled) } } Divider() From 9fc3e0a8fb3adf57977629497b8d7b1b7915c113 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 22 Apr 2024 15:20:19 -0700 Subject: [PATCH 4/4] Show indoor air quality previews --- .../Views/Helpers/IndoorAirQuality.swift | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Meshtastic/Views/Helpers/IndoorAirQuality.swift b/Meshtastic/Views/Helpers/IndoorAirQuality.swift index b445275a..fa90d6f5 100644 --- a/Meshtastic/Views/Helpers/IndoorAirQuality.swift +++ b/Meshtastic/Views/Helpers/IndoorAirQuality.swift @@ -91,35 +91,35 @@ struct IndoorAirQuality_Previews: PreviewProvider { IndoorAirQuality(iaq: 351, displayMode: .dot) } } -// Text(".text") -// .font(.title) -// IndoorAirQuality(iaq: 6, displayMode: .text) -// IndoorAirQuality(iaq: 51, displayMode: .text) -// IndoorAirQuality(iaq: 101, displayMode: .text) -// IndoorAirQuality(iaq: 201, displayMode: .text) -// IndoorAirQuality(iaq: 350, displayMode: .text) -// IndoorAirQuality(iaq: 351, displayMode: .text) -// Text(".gauge") -// .font(.title) -// HStack (alignment: .top) { -// VStack{ -// IndoorAirQuality(iaq: 6, displayMode: .gauge) -// IndoorAirQuality(iaq: 51, displayMode: .gauge) -// IndoorAirQuality(iaq: 101, displayMode: .gauge) -// IndoorAirQuality(iaq: 151, displayMode: .gauge) -// } -// VStack{ -// IndoorAirQuality(iaq: 201, displayMode: .gauge) -// IndoorAirQuality(iaq: 251, displayMode: .gauge) -// IndoorAirQuality(iaq: 301, displayMode: .gauge) -// IndoorAirQuality(iaq: 350, displayMode: .gauge) -// } -// VStack{ -// IndoorAirQuality(iaq: 351, displayMode: .gauge) -// IndoorAirQuality(iaq: 401, displayMode: .gauge) -// IndoorAirQuality(iaq: 500, displayMode: .gauge) -// } -// } + Text(".text") + .font(.title) + IndoorAirQuality(iaq: 6, displayMode: .text) + IndoorAirQuality(iaq: 51, displayMode: .text) + IndoorAirQuality(iaq: 101, displayMode: .text) + IndoorAirQuality(iaq: 201, displayMode: .text) + IndoorAirQuality(iaq: 350, displayMode: .text) + IndoorAirQuality(iaq: 351, displayMode: .text) + Text(".gauge") + .font(.title) + HStack (alignment: .top) { + VStack{ + IndoorAirQuality(iaq: 6, displayMode: .gauge) + IndoorAirQuality(iaq: 51, displayMode: .gauge) + IndoorAirQuality(iaq: 101, displayMode: .gauge) + IndoorAirQuality(iaq: 151, displayMode: .gauge) + } + VStack{ + IndoorAirQuality(iaq: 201, displayMode: .gauge) + IndoorAirQuality(iaq: 251, displayMode: .gauge) + IndoorAirQuality(iaq: 301, displayMode: .gauge) + IndoorAirQuality(iaq: 350, displayMode: .gauge) + } + VStack{ + IndoorAirQuality(iaq: 351, displayMode: .gauge) + IndoorAirQuality(iaq: 401, displayMode: .gauge) + IndoorAirQuality(iaq: 500, displayMode: .gauge) + } + } }.previewLayout(.fixed(width: 300, height: 800)) } }