add ActiveWorkoutSession logic, refactor Home, add additional sample data, add isDebug

This commit is contained in:
Felix Förtsch
2024-09-14 17:01:20 +02:00
parent f45d6288dd
commit 0a400ff349
27 changed files with 710 additions and 189 deletions
+32 -11
View File
@@ -6,13 +6,17 @@
//
import SwiftUI
import SwiftData
struct WorkoutLog: View {
@Environment(\.modelContext) private var modelContext
@Query(sort: \WorkoutSession.name) private var workoutSessions: [WorkoutSession]
@Default(\.isWorkingOut) var isWorkingOut
var body: some View {
NavigationView() {
List() {
List {
Section(header: Text("Dummies")) {
NavigationLink(destination: Text("WorkoutLogDetails")) {
HStack(alignment: .top) {
Image(systemName: "figure.run")
@@ -67,22 +71,39 @@ struct WorkoutLog: View {
}
}
}
.navigationBarTitle("Workout Logs")
Section(header: Text("Workout Sessions")) {
ForEach(workoutSessions) { session in
VStack(alignment: .leading) {
Text(session.creationDate.ISO8601Format())
if let workout = session.workout {
Text(workout.name)
.font(.subheadline)
}
}
}.onDelete(perform: deleteWorkoutSession)
}
}
.tabItem {
Image(systemName: "pencil.and.list.clipboard")
Text("Log")
.navigationTitle("Workout Logs")
}
private func deleteWorkoutSession(offsets: IndexSet) {
withAnimation {
for index in offsets {
modelContext.delete(workoutSessions[index])
}
try? modelContext.save()
}
}
}
#Preview("Active WorkoutSession") {
WorkoutLog()
.onAppear {
Defaults.shared.isWorkingOut = true
}
NavigationStack {
WorkoutLog()
.onAppear {
Defaults.shared.isWorkingOut = true
}
}
}
#Preview("No Active WorkoutSession") {