HealthImport/HealthImport/WorkoutDetailView.swift
2024-02-01 12:18:49 +01:00

70 lines
2.2 KiB
Swift

import SwiftUI
import Collections
struct WorkoutDetailView: View {
@EnvironmentObject
var database: HealthDatabase
let workout: Workout
var body: some View {
List {
Section("Info") {
DetailRow("ID", value: workout.id)
DetailRow("Total Distance", kilometer: workout.totalDistance)
DetailRow("Goal", value: workout.goal)
DetailRow("Condenser Version", value: workout.condenserVersion)
DetailRow("Condenser Date", date: workout.condenserDate)
}
if !workout.activities.isEmpty {
Section("Activities") {
ForEach(workout.activities, id: \.startDate) { activity in
NavigationLink(value: activity) {
DetailRow(activity.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.date)
}
}
}
}
if !workout.metadata.isEmpty {
Section("Metadata") {
ForEach(workout.metadata.elements, id:\.key) { (key, value) in
DetailRow(key.description, value: value)
}
}
}
}
.navigationTitle(workout.typeString)
.navigationDestination(for: WorkoutActivity.self) { activity in
ActivityDetailView(activity: activity)
.environmentObject(database)
}
.navigationDestination(for: WorkoutEvent.self) { event in
EventDetailView(event: event)
}
}
}
#Preview {
NavigationStack {
WorkoutDetailView(workout: .mock1)
.environmentObject(HealthDatabase.mock())
}
}
extension String: Identifiable {
public var id: Self { self }
}