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
+37 -14
View File
@@ -9,27 +9,50 @@ import Foundation
import SwiftData
@Model
final class WorkoutSession {
var workout: Workout
// Time
var startDate = Date.now
var stopDate: Date? = nil
var duration: TimeInterval? = nil
func stopWorkout() {
self.stopDate = Date.now
if let stopDate = stopDate {
self.duration = stopDate.timeIntervalSince(startDate)
final class WorkoutSession: Nameable {
var id = UUID()
var name = ""
var workout: Workout? {
didSet {
self.name = workout?.name ?? ""
}
}
// Time
var creationDate = Date.now
private var startDate: Date? = nil
private var stopDate: Date? = nil
private var duration: TimeInterval? = nil
// Exercise Progress
var currentExercise = 0
func isActive() -> Bool {
return startDate != nil && stopDate == nil
}
func startWorkoutSession() {
self.startDate = Date.now
}
func stopWorkoutSession() {
guard let startDate else { return }
self.stopDate = Date.now
self.duration = self.stopDate!.timeIntervalSince(startDate)
}
func elapsedTime(since startDate: Date) -> String {
let elapsedTime = Date.now.timeIntervalSince(startDate)
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute, .second]
formatter.unitsStyle = .positional
return formatter.string(from: elapsedTime) ?? "00:00:00"
}
// var isCompleted: Bool
// var isPaused: Bool
// var isCancelled: Bool
// var isDeleted: Bool
// var isSynced: Bool
init (workout: Workout) {
self.workout = workout
}
init () { }
}