WIP
This commit is contained in:
@@ -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) ?? ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user