// // AddExerciseToWorkout.swift // WorkoutsPlus // // Created by Felix Förtsch on 22.08.24. // import SwiftUI import SwiftData struct AddWorkoutItemToWorkout: View { @Environment(\.modelContext) private var modelContext @Query(sort: \Exercise.name) private var exercises: [Exercise] @Bindable var workout: Workout var body: some View { Group { List { Section(header: Text("Utilities")) { AddExerciseToWorkoutListItem(WorkoutItem(workoutItems: []), workout) } Section(header: Text("Excersises")) { if !exercises.isEmpty { ForEach(exercises) { exercise in AddExerciseToWorkoutListItem(WorkoutItem(from: exercise), workout) }} else { ContentUnavailableView { // TODO: Add Button that allows adding an exercise Label("No Exercises", systemImage: Exercise.systemImage) } } } } } } } struct AddExerciseToWorkoutListItem: View { @Environment(\.modelContext) private var modelContext var workoutItem: WorkoutItem var workout: Workout init(_ workoutItem: WorkoutItem, _ workout: Workout) { self.workoutItem = workoutItem self.workout = workout } var body: some View { Button(action: { workout.add(workoutItem: workoutItem) }) { HStack { Text(workoutItem.name) .foregroundStyle(.black) Spacer() Image(systemName: "plus.circle.fill") .foregroundStyle(.green) } } } } #Preview("With Sample Data") { AddWorkoutItemToWorkout(workout: Workout.sampleData) .modelContainer(SampleData.shared.modelContainer) } #Preview("Empty Database") { AddWorkoutItemToWorkout(workout: Workout.sampleData) .modelContainer(for: Exercise.self, inMemory: true) }