diff --git a/Werkout_ios.xcodeproj/project.pbxproj b/Werkout_ios.xcodeproj/project.pbxproj index edfcf28..0d614da 100644 --- a/Werkout_ios.xcodeproj/project.pbxproj +++ b/Werkout_ios.xcodeproj/project.pbxproj @@ -10,6 +10,8 @@ 1C485C832A489B9C00A6F896 /* CompletedWorkouts.json in Resources */ = {isa = PBXBuildFile; fileRef = 1C485C822A489B9C00A6F896 /* CompletedWorkouts.json */; }; 1C485C872A4915C400A6F896 /* CreateWorkoutItemPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C485C862A4915C400A6F896 /* CreateWorkoutItemPickerView.swift */; }; 1C485C8A2A492BB400A6F896 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C485C892A492BB400A6F896 /* LoginView.swift */; }; + 1C485C8C2A49D65600A6F896 /* WorkoutHistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C485C8B2A49D65600A6F896 /* WorkoutHistoryView.swift */; }; + 1C485C8D2A49D95700A6F896 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A822A42347D0042FFBD /* Extensions.swift */; }; 1CF65A262A3972840042FFBD /* Werkout_iosApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A252A3972840042FFBD /* Werkout_iosApp.swift */; }; 1CF65A282A3972840042FFBD /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A272A3972840042FFBD /* Persistence.swift */; }; 1CF65A2B2A3972840042FFBD /* Werkout_ios.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A292A3972840042FFBD /* Werkout_ios.xcdatamodeld */; }; @@ -24,7 +26,7 @@ 1CF65A4C2A39FDA20042FFBD /* WorkoutDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A4B2A39FDA20042FFBD /* WorkoutDetailView.swift */; }; 1CF65A4E2A39FF200042FFBD /* WorkoutDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A4D2A39FF200042FFBD /* WorkoutDetailViewModel.swift */; }; 1CF65A502A3A1EA90042FFBD /* BridgeModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A4F2A3A1EA90042FFBD /* BridgeModule.swift */; }; - 1CF65A522A3A90A00042FFBD /* PreviewWorkout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A512A3A90A00042FFBD /* PreviewWorkout.swift */; }; + 1CF65A522A3A90A00042FFBD /* PreviewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A512A3A90A00042FFBD /* PreviewData.swift */; }; 1CF65A542A3A9AF30042FFBD /* Straight_Leg_Sit_Up.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 1CF65A532A3A9A990042FFBD /* Straight_Leg_Sit_Up.mp4 */; }; 1CF65A572A3BF3830042FFBD /* AllMuscles.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CF65A562A3BF3830042FFBD /* AllMuscles.json */; }; 1CF65A592A3BF4B60042FFBD /* Muscle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A582A3BF4B60042FFBD /* Muscle.swift */; }; @@ -57,7 +59,7 @@ 1CF65AA82A452D9C0042FFBD /* Exercise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A442A39FB550042FFBD /* Exercise.swift */; }; 1CF65AA92A452D9C0042FFBD /* Workout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A422A39FB410042FFBD /* Workout.swift */; }; 1CF65AAA2A452D9C0042FFBD /* RegisteredUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A462A39FB6C0042FFBD /* RegisteredUser.swift */; }; - 1CF65AAB2A452DAC0042FFBD /* PreviewWorkout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A512A3A90A00042FFBD /* PreviewWorkout.swift */; }; + 1CF65AAB2A452DAC0042FFBD /* PreviewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF65A512A3A90A00042FFBD /* PreviewData.swift */; }; 1CF65AAC2A452DF50042FFBD /* WorkoutOne.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CF65A492A39FBB10042FFBD /* WorkoutOne.json */; }; 1CF65AAD2A452DF50042FFBD /* Exercises.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CF65A662A3BFF840042FFBD /* Exercises.json */; }; 1CF65AAE2A452DF50042FFBD /* AllWorkouts.json in Resources */ = {isa = PBXBuildFile; fileRef = 1CF65A642A3BF6BE0042FFBD /* AllWorkouts.json */; }; @@ -99,6 +101,7 @@ 1C485C822A489B9C00A6F896 /* CompletedWorkouts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = CompletedWorkouts.json; sourceTree = ""; }; 1C485C862A4915C400A6F896 /* CreateWorkoutItemPickerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CreateWorkoutItemPickerView.swift; sourceTree = ""; }; 1C485C892A492BB400A6F896 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; }; + 1C485C8B2A49D65600A6F896 /* WorkoutHistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkoutHistoryView.swift; sourceTree = ""; }; 1CF65A222A3972840042FFBD /* Werkout_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Werkout_ios.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1CF65A252A3972840042FFBD /* Werkout_iosApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Werkout_iosApp.swift; sourceTree = ""; }; 1CF65A272A3972840042FFBD /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; @@ -115,7 +118,7 @@ 1CF65A4B2A39FDA20042FFBD /* WorkoutDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkoutDetailView.swift; sourceTree = ""; }; 1CF65A4D2A39FF200042FFBD /* WorkoutDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkoutDetailViewModel.swift; sourceTree = ""; }; 1CF65A4F2A3A1EA90042FFBD /* BridgeModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgeModule.swift; sourceTree = ""; }; - 1CF65A512A3A90A00042FFBD /* PreviewWorkout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewWorkout.swift; sourceTree = ""; }; + 1CF65A512A3A90A00042FFBD /* PreviewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreviewData.swift; sourceTree = ""; }; 1CF65A532A3A9A990042FFBD /* Straight_Leg_Sit_Up.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = Straight_Leg_Sit_Up.mp4; sourceTree = ""; }; 1CF65A552A3AA6800042FFBD /* Werkout-ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "Werkout-ios-Info.plist"; sourceTree = SOURCE_ROOT; }; 1CF65A562A3BF3830042FFBD /* AllMuscles.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = AllMuscles.json; sourceTree = ""; }; @@ -224,7 +227,7 @@ children = ( 1CF65A532A3A9A990042FFBD /* Straight_Leg_Sit_Up.mp4 */, 1CF65A322A3972850042FFBD /* Preview Assets.xcassets */, - 1CF65A512A3A90A00042FFBD /* PreviewWorkout.swift */, + 1CF65A512A3A90A00042FFBD /* PreviewData.swift */, ); path = "Preview Content"; sourceTree = ""; @@ -263,6 +266,7 @@ 1CF65A8C2A44B7680042FFBD /* CompletedWorkout */, 1CF65A6C2A3F60100042FFBD /* CreateWorkout */, 1CF65A882A44B7290042FFBD /* WorkoutDetail */, + 1C485C8B2A49D65600A6F896 /* WorkoutHistoryView.swift */, ); path = Views; sourceTree = ""; @@ -483,7 +487,7 @@ 1CF65A4E2A39FF200042FFBD /* WorkoutDetailViewModel.swift in Sources */, 1CF65A472A39FB6C0042FFBD /* RegisteredUser.swift in Sources */, 1CF65AB32A452F360042FFBD /* WatchPackageModel.swift in Sources */, - 1CF65A522A3A90A00042FFBD /* PreviewWorkout.swift in Sources */, + 1CF65A522A3A90A00042FFBD /* PreviewData.swift in Sources */, 1CF65A852A43E8060042FFBD /* CompletedWorkout.swift in Sources */, 1CF65A6E2A3F60480042FFBD /* CreateViewModels.swift in Sources */, 1CF65A4C2A39FDA20042FFBD /* WorkoutDetailView.swift in Sources */, @@ -499,6 +503,7 @@ 1CF65A832A42347D0042FFBD /* Extensions.swift in Sources */, 1CF65A282A3972840042FFBD /* Persistence.swift in Sources */, 1CF65ABA2A4894430042FFBD /* UserStore.swift in Sources */, + 1C485C8C2A49D65600A6F896 /* WorkoutHistoryView.swift in Sources */, 1CF65A5B2A3BF4BE0042FFBD /* Equipment.swift in Sources */, 1CF65A452A39FB550042FFBD /* Exercise.swift in Sources */, 1CF65A612A3BF6020042FFBD /* AddExerciseView.swift in Sources */, @@ -518,7 +523,8 @@ 1CF65AAA2A452D9C0042FFBD /* RegisteredUser.swift in Sources */, 1CF65AB62A4532940042FFBD /* WatchMainViewModel.swift in Sources */, 1CF65AA72A452D9C0042FFBD /* Muscle.swift in Sources */, - 1CF65AAB2A452DAC0042FFBD /* PreviewWorkout.swift in Sources */, + 1C485C8D2A49D95700A6F896 /* Extensions.swift in Sources */, + 1CF65AAB2A452DAC0042FFBD /* PreviewData.swift in Sources */, 1CF65AA52A452D9C0042FFBD /* CompletedWorkout.swift in Sources */, 1CF65AA82A452D9C0042FFBD /* Exercise.swift in Sources */, 1CF65AB42A4530200042FFBD /* WatchPackageModel.swift in Sources */, diff --git a/Werkout_ios/APIModels/Exercise.swift b/Werkout_ios/APIModels/Exercise.swift index 8257ee6..459e2e7 100644 --- a/Werkout_ios/APIModels/Exercise.swift +++ b/Werkout_ios/APIModels/Exercise.swift @@ -23,13 +23,6 @@ struct ExerciseElement: Codable { case weightAudio = "weight_audio" case createdAt = "created_at" } - - var createdAtDate: Date { - let df = DateFormatter() - df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" - df.locale = Locale(identifier: "en_US_POSIX") - return df.date(from: self.createdAt) ?? Date() - } } struct ExerciseExercise: Codable, Hashable, Identifiable { @@ -67,11 +60,4 @@ struct ExerciseExercise: Codable, Hashable, Identifiable { case muscleGroups = "muscle_groups" case synonyms } - - var createdAtDate: Date { - let df = DateFormatter() - df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" - df.locale = Locale(identifier: "en_US_POSIX") - return df.date(from: self.createdAt) ?? Date() - } } diff --git a/Werkout_ios/APIModels/Workout.swift b/Werkout_ios/APIModels/Workout.swift index fc38f63..0459e2b 100644 --- a/Werkout_ios/APIModels/Workout.swift +++ b/Werkout_ios/APIModels/Workout.swift @@ -35,7 +35,11 @@ struct Workout: Codable, Identifiable { var exercisesSortedByCreated_at: [ExerciseElement] { return self.exercises.sorted(by: { - $0.createdAtDate < $1.createdAtDate + if let lhsDate = $0.createdAt.dateFromServerDate, + let rhsDate = $1.createdAt.dateFromServerDate { + return lhsDate < rhsDate + } + return false }) } } diff --git a/Werkout_ios/DataStore.swift b/Werkout_ios/DataStore.swift index f2b4754..7955d12 100644 --- a/Werkout_ios/DataStore.swift +++ b/Werkout_ios/DataStore.swift @@ -85,9 +85,9 @@ class DataStore { func setupFakeData() { - allWorkouts = PreviewWorkout.allWorkouts() - allMuscles = PreviewWorkout.parseMuscle() - allEquipment = PreviewWorkout.parseEquipment() - allExercise = PreviewWorkout.parseExercises() + allWorkouts = PreviewData.allWorkouts() + allMuscles = PreviewData.parseMuscle() + allEquipment = PreviewData.parseEquipment() + allExercise = PreviewData.parseExercises() } } diff --git a/Werkout_ios/Extensions.swift b/Werkout_ios/Extensions.swift index db25deb..305408d 100644 --- a/Werkout_ios/Extensions.swift +++ b/Werkout_ios/Extensions.swift @@ -37,3 +37,22 @@ extension Date { return isoFormatter.string(from: self) } } + +extension String { + var dateFromServerDate: Date? { + let df = DateFormatter() + df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssX" + df.locale = Locale(identifier: "en_US_POSIX") + return df.date(from: self) + } +} + +extension Date { + func get(_ components: Calendar.Component..., calendar: Calendar = Calendar.current) -> DateComponents { + return calendar.dateComponents(Set(components), from: self) + } + + func get(_ component: Calendar.Component, calendar: Calendar = Calendar.current) -> Int { + return calendar.component(component, from: self) + } +} diff --git a/Werkout_ios/JSON/CompletedWorkouts.json b/Werkout_ios/JSON/CompletedWorkouts.json index b6830d3..b295b43 100644 --- a/Werkout_ios/JSON/CompletedWorkouts.json +++ b/Werkout_ios/JSON/CompletedWorkouts.json @@ -20,7 +20,30 @@ "difficulty": 1, "total_time": 112, "workout_start_time": "2015-10-22T19:50:08Z", - "notes": "free", + "notes": "🔥 i almost died", + "total_calories": 123.0 + }, { + "id": 12, + "workout": { + "id": 20, + "registered_user": { + "id": 2, + "first_name": "test2_first", + "last_name": "test2_last", + "image": "", + "nick_name": null + }, + "created_at": "2023-06-20T21:03:00.124080Z", + "updated_at": "2023-06-20T21:03:00.125595Z", + "name": "Ipad", + "description": "description" + }, + "created_at": "2023-06-24T04:24:18.564094Z", + "updated_at": "2023-06-24T04:24:18.567762Z", + "difficulty": 1, + "total_time": 112, + "workout_start_time": "2015-10-22T19:50:08Z", + "notes": "this workout sucked", "total_calories": 123.0 } ] diff --git a/Werkout_ios/Preview Content/PreviewWorkout.swift b/Werkout_ios/Preview Content/PreviewData.swift similarity index 98% rename from Werkout_ios/Preview Content/PreviewWorkout.swift rename to Werkout_ios/Preview Content/PreviewData.swift index dbcf5c4..33f7dfb 100644 --- a/Werkout_ios/Preview Content/PreviewWorkout.swift +++ b/Werkout_ios/Preview Content/PreviewData.swift @@ -1,5 +1,5 @@ // -// PreviewWorkout.swift +// PreviewData.swift // Werkout_ios // // Created by Trey Tartt on 6/14/23. @@ -7,7 +7,7 @@ import Foundation -class PreviewWorkout { +class PreviewData { class func workout() -> Workout { let filepath = Bundle.main.path(forResource: "WorkoutOne", ofType: "json")! let data = try! Data(NSData(contentsOfFile: filepath)) diff --git a/Werkout_ios/ToDo b/Werkout_ios/ToDo index 1a4a15b..33599ed 100644 --- a/Werkout_ios/ToDo +++ b/Werkout_ios/ToDo @@ -3,9 +3,9 @@ -apple watch -account view +-account view workout history view -calorie upload +-calorie upload video view on iphone during workout diff --git a/Werkout_ios/UserStore.swift b/Werkout_ios/UserStore.swift index 8514b1c..ea0e4e3 100644 --- a/Werkout_ios/UserStore.swift +++ b/Werkout_ios/UserStore.swift @@ -51,6 +51,6 @@ class UserStore: ObservableObject { } func setFakeUser() { - self.registeredUser = PreviewWorkout.parseRegisterdUser() + self.registeredUser = PreviewData.parseRegisterdUser() } } diff --git a/Werkout_ios/Views/AccountView/AccountView.swift b/Werkout_ios/Views/AccountView/AccountView.swift index b1135ec..58be1d7 100644 --- a/Werkout_ios/Views/AccountView/AccountView.swift +++ b/Werkout_ios/Views/AccountView/AccountView.swift @@ -11,6 +11,7 @@ import SwiftUI struct AccountView: View { @State var completedWorkouts: [CompletedWorkout]? @ObservedObject var userStore = UserStore.shared + @State var showCompletedWorkouts: Bool = false var body: some View { VStack(alignment: .leading) { @@ -44,8 +45,19 @@ struct AccountView: View { Text("Last workout:") Text(lastWorkout.workoutStartTime) } + + Button("View All Workouts", action: { + showCompletedWorkouts = true + }) + .frame(maxWidth: .infinity, alignment: .center) + .frame(height: 44) + .foregroundColor(.blue) + .background(.yellow) + .cornerRadius(8) + .padding() + .frame(maxWidth: .infinity) } - + } } Spacer() @@ -62,11 +74,17 @@ struct AccountView: View { .frame(maxWidth: .infinity) } .padding() + .sheet(isPresented: $showCompletedWorkouts) { + if let history = completedWorkouts { + WorkoutHistoryView(completedWorkouts: history) + } + } .onAppear{ if completedWorkouts == nil { fetchCompletedWorkouts() } } + } func fetchCompletedWorkouts() { @@ -83,7 +101,7 @@ struct AccountView: View { struct AccountView_Previews: PreviewProvider { static let userStore = UserStore.shared - static let completedWorkouts = PreviewWorkout.parseCompletedWorkouts() + static let completedWorkouts = PreviewData.parseCompletedWorkouts() static var previews: some View { AccountView(completedWorkouts: completedWorkouts) diff --git a/Werkout_ios/Views/AllWorkouts/AllWorkoutsView.swift b/Werkout_ios/Views/AllWorkouts/AllWorkoutsView.swift index d5cefaf..6d2952f 100644 --- a/Werkout_ios/Views/AllWorkouts/AllWorkoutsView.swift +++ b/Werkout_ios/Views/AllWorkouts/AllWorkoutsView.swift @@ -90,6 +90,6 @@ struct AllWorkoutsView: View { struct AllWorkoutsView_Previews: PreviewProvider { static var previews: some View { - AllWorkoutsView(workouts: PreviewWorkout.allWorkouts()) + AllWorkoutsView(workouts: PreviewData.allWorkouts()) } } diff --git a/Werkout_ios/Views/CompletedWorkout/CompletedWorkoutView.swift b/Werkout_ios/Views/CompletedWorkout/CompletedWorkoutView.swift index 8c59e03..8949acd 100644 --- a/Werkout_ios/Views/CompletedWorkout/CompletedWorkoutView.swift +++ b/Werkout_ios/Views/CompletedWorkout/CompletedWorkoutView.swift @@ -171,7 +171,7 @@ struct CompletedWorkoutView_Previews: PreviewProvider { "heart_rates": [65,65,4,54,232,12] ] as [String : Any] - static let workout = PreviewWorkout.workout() + static let workout = PreviewData.workout() static var previews: some View { CompletedWorkoutView(postData: CompletedWorkoutView_Previews.postBody, diff --git a/Werkout_ios/Views/ExternalWorkoutDetailView.swift b/Werkout_ios/Views/ExternalWorkoutDetailView.swift index eac78b6..7b6274e 100644 --- a/Werkout_ios/Views/ExternalWorkoutDetailView.swift +++ b/Werkout_ios/Views/ExternalWorkoutDetailView.swift @@ -147,8 +147,8 @@ struct ExternalWorkoutDetailView_Previews: PreviewProvider { static var previews: some View { ExternalWorkoutDetailView().environmentObject({ () -> BridgeModule in let envObj = BridgeModule.shared - envObj.currentWorkout = PreviewWorkout.workout() - bridge.currentExercise = PreviewWorkout.workout().exercisesSortedByCreated_at.first! + envObj.currentWorkout = PreviewData.workout() + bridge.currentExercise = PreviewData.workout().exercisesSortedByCreated_at.first! return envObj }() ) } diff --git a/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift b/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift index 3255810..04fd140 100644 --- a/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift +++ b/Werkout_ios/Views/WorkoutDetail/WorkoutDetailView.swift @@ -244,7 +244,7 @@ struct CountdownView: View { } struct WorkoutDetailView_Previews: PreviewProvider { - static let workoutDetail = PreviewWorkout.workout() + static let workoutDetail = PreviewData.workout() static var previews: some View { WorkoutDetailView(viewModel: WorkoutDetailViewModel(workout: WorkoutDetailView_Previews.workoutDetail, status: .showWorkout(WorkoutDetailView_Previews.workoutDetail))) } diff --git a/Werkout_ios/Views/WorkoutHistoryView.swift b/Werkout_ios/Views/WorkoutHistoryView.swift new file mode 100644 index 0000000..d9a9616 --- /dev/null +++ b/Werkout_ios/Views/WorkoutHistoryView.swift @@ -0,0 +1,85 @@ +// +// WorkoutHistoryView.swift +// Werkout_ios +// +// Created by Trey Tartt on 6/26/23. +// + +import SwiftUI + +struct WorkoutHistoryView: View { + enum DifficltyString: Int { + case easy = 1 + case moderate + case average + case hard + case death + + var stringValue: String { + switch self { + + case .easy: + return "Easy" + case .moderate: + return "Moderate" + case .average: + return "Average" + case .hard: + return "Hard" + case .death: + return "Death" + } + } + } + + let completedWorkouts: [CompletedWorkout] + + var body: some View { + List { + ForEach(completedWorkouts, id:\.self.id) { completedWorkout in + HStack { + VStack { + if let date = completedWorkout.workoutStartTime.dateFromServerDate { + Text(DateFormatter().shortMonthSymbols[date.get(.month) - 1]) + + Text("\(date.get(.day))") + Text("\(date.get(.hour))") + } + } + + VStack(alignment: .leading) { + HStack { + + } + Text(completedWorkout.workout.name) + .font(.title3) + + if let desc = completedWorkout.workout.description { + Text(desc) + .font(.footnote) + } + + Divider() + + if let difficulty = completedWorkout.difficulty, + let string = DifficltyString.init(rawValue: difficulty)?.stringValue { + Text(string) + } + + if let notes = completedWorkout.notes { + Text(notes) + } + } + .padding(.leading) + } + } + } + } +} + +struct WorkoutHistoryView_Previews: PreviewProvider { + static let fakeHistory = PreviewData.parseCompletedWorkouts() + static var previews: some View { + WorkoutHistoryView(completedWorkouts: fakeHistory) + } +} diff --git a/Werkout_watch Watch App/ContentView.swift b/Werkout_watch Watch App/ContentView.swift index 2990cd7..8b960c3 100644 --- a/Werkout_watch Watch App/ContentView.swift +++ b/Werkout_watch Watch App/ContentView.swift @@ -8,7 +8,7 @@ import SwiftUI struct ContentView: View { - let exercise = PreviewWorkout.parseEquipment()[2] + let exercise = PreviewData.parseEquipment()[2] @StateObject var vm = WatchMainViewModel() var body: some View {