HealthImport/HealthImport/WorkoutDetailView.swift
2024-03-08 17:42:55 +01:00

70 lines
2.1 KiB
Swift

import SwiftUI
import Collections
import HealthKit
import HKDatabase
struct WorkoutDetailView: View {
let workout: Workout
var metadata: [(key: String, value: Any)] {
workout.metadata.sorted { $0.key }
}
var body: some View {
List {
Section("Info") {
DetailRow("ID", value: workout.id)
DetailRow("Total Distance", kilometer: workout.totalDistance)
DetailRow("Goal", value: workout.goal)
}
if !workout.activities.isEmpty {
Section("Activities") {
ForEach(workout.activities, id: \.startDate) { activity in
NavigationLink(value: activity) {
DetailRow(activity.workoutConfiguration.activityType.description,
date: activity.startDate)
}
}
}
}
if !workout.events.isEmpty {
Section("Events") {
ForEach(workout.events) { event in
NavigationLink(value: event) {
DetailRow(event.type.description, date: event.dateInterval.start)
}
}
}
}
if !workout.metadata.isEmpty {
Section("Metadata") {
ForEach(metadata, id:\.key) { (key, value) in
DetailRow("\(key)", value: "\(value)")
}
}
}
}
.navigationTitle(workout.typeString)
.navigationDestination(for: HKWorkoutActivity.self) { activity in
ActivityDetailView(activity: activity)
}
.navigationDestination(for: HKWorkoutEvent.self) { event in
EventDetailView(event: event)
}
}
}
#Preview {
HealthDatabase.shared = .mock()
return NavigationStack {
WorkoutDetailView(workout: .mock1)
}
}
extension String: Identifiable {
public var id: Self { self }
}