From 4fc5127011fe33976c3cd89cc6f0e96d95f1a33b Mon Sep 17 00:00:00 2001 From: Trey t Date: Thu, 6 Jul 2023 21:33:48 -0500 Subject: [PATCH] WIP --- Werkout_ios/Extensions.swift | 17 +++++++ .../Views/ExternalWorkoutDetailView.swift | 50 +++++++++++++------ 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/Werkout_ios/Extensions.swift b/Werkout_ios/Extensions.swift index 55e80bb..27c3eee 100644 --- a/Werkout_ios/Extensions.swift +++ b/Werkout_ios/Extensions.swift @@ -104,3 +104,20 @@ extension Bundle { return nil } } + +extension Double { + /* + 10000.asString(style: .positional) // 2:46:40 + 10000.asString(style: .abbreviated) // 2h 46m 40s + 10000.asString(style: .short) // 2 hr, 46 min, 40 sec + 10000.asString(style: .full) // 2 hours, 46 minutes, 40 seconds + 10000.asString(style: .spellOut) // two hours, forty-six minutes, forty seconds + 10000.asString(style: .brief) // 2hr 46min 40sec + */ + func asString(style: DateComponentsFormatter.UnitsStyle) -> String { + let formatter = DateComponentsFormatter() + formatter.allowedUnits = [.hour, .minute, .second, .nanosecond] + formatter.unitsStyle = style + return formatter.string(from: self) ?? "" + } +} diff --git a/Werkout_ios/Views/ExternalWorkoutDetailView.swift b/Werkout_ios/Views/ExternalWorkoutDetailView.swift index 74415f9..91de75b 100644 --- a/Werkout_ios/Views/ExternalWorkoutDetailView.swift +++ b/Werkout_ios/Views/ExternalWorkoutDetailView.swift @@ -20,12 +20,15 @@ struct ExternalWorkoutDetailView: View { VStack { HStack { PlayerView(player: $avPlayer) - .frame(width: metrics.size.width * 0.6, height: metrics.size.height * 0.8) + .frame(width: metrics.size.width * 0.5, height: metrics.size.height * 0.8) .onAppear{ avPlayer.play() } VStack { + ExtExerciseList(workout: workout, + currentExerciseIdx: bridgeModule.currentExerciseIdx) + if let currentExercisePositionString = bridgeModule.currentExercisePositionString { Text(currentExercisePositionString) .font(Font.system(size: 75)) @@ -34,10 +37,8 @@ struct ExternalWorkoutDetailView: View { .lineLimit(1) .padding() } - ExtExerciseList(workout: workout, - currentExerciseIdx: bridgeModule.currentExerciseIdx) } - .frame(width: metrics.size.width * 0.3, height: metrics.size.height * 0.8) + .frame(width: metrics.size.width * 0.4, height: metrics.size.height * 0.8) } ExtCountdownView() @@ -121,7 +122,6 @@ struct ExtExerciseList: View { if i == currentExerciseIdx { Image(systemName: "checkmark") .font(Font.system(size: 55)) - .scaledToFit() .minimumScaleFactor(0.01) .lineLimit(1) .foregroundColor(.green) @@ -129,9 +129,8 @@ struct ExtExerciseList: View { Text(obj.exercise.name) .font(Font.system(size: 55)) - .scaledToFit() .minimumScaleFactor(0.01) - .lineLimit(1) + .lineLimit(3) .padding() .id(i) } @@ -161,8 +160,17 @@ struct ExtCountdownView: View { .lineLimit(1) .frame(maxWidth: .infinity, alignment: .leading) + if currenExercise.exercise.side.count > 0 { + Text(" - " + currenExercise.exercise.side) + .font(.system(size: 200)) + .scaledToFit() + .minimumScaleFactor(0.01) + .lineLimit(1) + .frame(maxWidth: .infinity, alignment: .leading) + } + if bridgeModule.currentWorkoutRunTimeInSeconds > -1 { - Text("\(bridgeModule.currentWorkoutRunTimeInSeconds)") + Text("\(Double(bridgeModule.currentWorkoutRunTimeInSeconds).asString(style: .positional))") .font(Font.system(size: 100)) .scaledToFit() .minimumScaleFactor(0.01) @@ -175,25 +183,37 @@ struct ExtCountdownView: View { HStack { if let duration = currenExercise.duration, - duration > 0 { + duration > 0 { ProgressView(value: Float(bridgeModule.currentExerciseTimeLeft), total: Float(duration)) .scaleEffect(x: 1, y: 6, anchor: .center) Text("\(bridgeModule.currentExerciseTimeLeft)") - .font(Font.system(size: 75)) + .font(Font.system(size: 100)) .scaledToFit() .minimumScaleFactor(0.01) .lineLimit(1) .padding(.leading) .padding(.trailing, 100) - } else if let reps = currenExercise.reps, - reps > 0 { - Text("\(reps)") - .font(Font.system(size: 150)) + } + + if let reps = currenExercise.reps, + reps > 0 { + Text(" X \(reps)") + .font(Font.system(size: 100)) + .scaledToFit() + .minimumScaleFactor(0.01) + .lineLimit(1) + .frame(maxWidth: .infinity, alignment: .leading) + } + + if let weight = currenExercise.weight, + weight > 0 { + Text(" @ \(weight)") + .font(Font.system(size: 100)) .scaledToFit() .minimumScaleFactor(0.01) .lineLimit(1) - .padding(.leading) .padding(.trailing, 100) + .frame(maxWidth: .infinity, alignment: .leading) } } .frame(height: metrics.size.height * 0.5)