From 6aa2b3414a3f1954ae22a48552297e39bb0864bf Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 30 Mar 2023 18:38:33 -0700 Subject: [PATCH] Update DeviceMetricsLog.swift --- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 71 +++++++++---------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index 3ed3ad81..2a9b90d4 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -18,7 +18,10 @@ struct DeviceMetricsLog: View { var node: NodeInfoEntity var body: some View { + + NavigationStack { + let oneDayAgo = Calendar.current.date(byAdding: .day, value: -3, to: Date()) let data = node.telemetries?.filtered(using: NSPredicate(format: "metricsType == 0 && time !=nil && time >= %@", oneDayAgo! as CVarArg)) ?? [] if data.count > 0 { @@ -38,39 +41,32 @@ struct DeviceMetricsLog: View { } let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current) let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "") + let deviceMetrics = node.telemetries?.filtered(using: NSPredicate(format: "metricsType == 0")).reversed() as? [TelemetryEntity] ?? [] + Text("\(deviceMetrics.count) Readings") if UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac { + // Add a table for mac and ipad - Table(node.telemetries?.reversed() as? [TelemetryEntity] ?? []) { + //Table(Array(deviceMetrics),id: \.self) { + Table(deviceMetrics) { TableColumn("battery.level") { dm in - if dm.metricsType == 0 { - if dm.batteryLevel == 0 { - Text("Powered") - } else { - - Text("\(String(dm.batteryLevel))%") - } + if dm.batteryLevel > 100 { + Text("Powered") + } else { + Text("\(String(dm.batteryLevel))%") } } TableColumn("voltage") { dm in - if dm.metricsType == 0 { - Text("\(String(format: "%.2f", dm.voltage))") - } + Text("\(String(format: "%.2f", dm.voltage))") } TableColumn("channel.utilization") { dm in - if dm.metricsType == 0 { - Text(String(format: "%.2f", dm.channelUtilization)) - } + Text(String(format: "%.2f", dm.channelUtilization)) } TableColumn("airtime") { dm in - if dm.metricsType == 0 { - Text("\(String(format: "%.2f", dm.airUtilTx))%") - } + Text("\(String(format: "%.2f", dm.airUtilTx))%") } TableColumn("timestamp") { dm in - if dm.metricsType == 0 { - Text(dm.time?.formattedDate(format: dateFormatString) ?? NSLocalizedString("unknown.age", comment: "")) - } + Text(dm.time?.formattedDate(format: dateFormatString) ?? NSLocalizedString("unknown.age", comment: "")) } } @@ -102,26 +98,25 @@ struct DeviceMetricsLog: View { .font(.caption) .fontWeight(.bold) } - ForEach(node.telemetries?.reversed() as? [TelemetryEntity] ?? [], id: \.self) { (dm: TelemetryEntity) in - if dm.metricsType == 0 { - GridRow { - if dm.batteryLevel == 111 { - Text("USB") - .font(.caption) - } else { - Text("\(String(dm.batteryLevel))%") - .font(.caption) - } - Text(String(dm.voltage)) - .font(.caption) - Text("\(String(format: "%.2f", dm.channelUtilization))%") - .font(.caption) - Text("\(String(format: "%.2f", dm.airUtilTx))%") - .font(.caption) - Text(dm.time?.formattedDate(format: dateFormatString) ?? "Unknown time") - .font(.caption2) + ForEach(deviceMetrics) { dm in + GridRow { + if dm.batteryLevel > 100 { + Text("USB") + .font(.caption) + } else { + Text("\(String(dm.batteryLevel))%") + .font(.caption) } + Text(String(dm.voltage)) + .font(.caption) + Text("\(String(format: "%.2f", dm.channelUtilization))%") + .font(.caption) + Text("\(String(format: "%.2f", dm.airUtilTx))%") + .font(.caption) + + Text(dm.time?.formattedDate(format: dateFormatString) ?? "Unknown time") + .font(.caption2) } } }