feat(watch): add workout summary screen with HealthKit data

This commit is contained in:
2026-08-08 12:05:32 +02:00
parent 831ec6b836
commit f3b3a8b944
5 changed files with 307 additions and 6 deletions
+2 -2
View File
@@ -61,7 +61,7 @@ struct SwimView: View {
Image(systemName: "flame.fill")
.foregroundColor(.orange)
.font(.caption)
Text("\(Int(workoutManager.estimatedCalories))")
Text("\(Int(workoutManager.activeCalories))")
.font(.caption)
}
@@ -143,7 +143,7 @@ struct RestView: View {
Image(systemName: "flame.fill")
.font(.caption)
.foregroundColor(.orange)
Text("\(Int(workoutManager.estimatedCalories))kcal")
Text("\(Int(workoutManager.activeCalories))kcal")
.font(.caption)
}
}
@@ -0,0 +1,81 @@
import SwiftUI
struct WorkoutSummaryView: View {
@ObservedObject var workoutManager: WorkoutManager
var body: some View {
if let summary = workoutManager.workoutSummary {
List {
Section {
VStack(spacing: 8) {
Image(systemName: "checkmark.circle.fill")
.font(.system(size: 40))
.foregroundColor(.green)
Text("Workout complete!")
.font(.headline)
.foregroundColor(.green)
}
.frame(maxWidth: .infinity)
.padding(.vertical, 8)
}
Section("Stats") {
HStack {
Text("Total time")
.foregroundColor(.secondary)
Spacer()
Text(formatTime(summary.duration))
.monospacedDigit()
}
HStack {
Text("Distance")
.foregroundColor(.secondary)
Spacer()
Text("\(summary.totalDistance)m")
.monospacedDigit()
}
HStack {
Text("Calories")
.foregroundColor(.secondary)
Spacer()
Text("\(summary.calories)kcal")
.monospacedDigit()
}
HStack {
Text("Laps")
.foregroundColor(.secondary)
Spacer()
Text("\(summary.laps.count)")
.monospacedDigit()
}
}
Section {
Button {
workoutManager.dismissSummary()
} label: {
HStack {
Spacer()
Text("OK")
.font(.headline)
Spacer()
}
}
.buttonStyle(.borderedProminent)
.tint(.cyan)
}
}
.listStyle(.automatic)
}
}
private func formatTime(_ seconds: TimeInterval) -> String {
let mins = Int(seconds) / 60
let secs = Int(seconds) % 60
return String(format: "%d:%02d", mins, secs)
}
}