This commit is contained in:
Trey t
2025-03-13 22:12:50 -05:00
parent fb22f47a82
commit ca25d61019
15 changed files with 218 additions and 90 deletions

View File

@@ -12,25 +12,34 @@ struct AddSupersetView: View {
@Binding var selectedCreateWorkoutSuperSet: CreateWorkoutSuperSet?
var body: some View {
VStack {
TabView {
ForEach(createWorkoutSuperSet.exercises, id: \.id) { createWorkoutExercise in
HStack {
VStack {
Text(createWorkoutExercise.exercise.name)
.font(.title2)
.frame(maxWidth: .infinity)
if createWorkoutExercise.exercise.side != nil && createWorkoutExercise.exercise.side!.count > 0 {
Text(createWorkoutExercise.exercise.side!)
.font(.title3)
.frame(maxWidth: .infinity, alignment: .center)
}
CreateExerciseActionsView(workoutExercise: createWorkoutExercise,
superset: createWorkoutSuperSet,
viewModel: viewModel)
VStack {
Text(createWorkoutExercise.exercise.name)
.font(.title2)
.frame(maxWidth: .infinity)
if createWorkoutExercise.exercise.side != nil && createWorkoutExercise.exercise.side!.count > 0 {
Text(createWorkoutExercise.exercise.side!)
.font(.title3)
.frame(maxWidth: .infinity, alignment: .center)
}
CreateExerciseActionsView(workoutExercise: createWorkoutExercise,
superset: createWorkoutSuperSet,
viewModel: viewModel)
}
.frame(width: 300.0)
.padding(.bottom, 40)
}
}
.frame(height: 300)
.tabViewStyle(.page)
.onAppear {
setupAppearance()
}
}
func setupAppearance() {
UIPageControl.appearance().currentPageIndicatorTintColor = .black
UIPageControl.appearance().pageIndicatorTintColor = UIColor.black.withAlphaComponent(0.2)
}
}

View File

@@ -82,6 +82,7 @@ struct AllExerciseView: View {
.sheet(item: $videoExercise) { exercise in
PlayerView(player: $avPlayer)
.onAppear{
avPlayer.isMuted = true
avPlayer.play()
}
}

View File

@@ -8,7 +8,9 @@
import SwiftUI
struct FilterAllView: View {
@Binding var searchString: String
@Binding var selectedMuscles: Set<String>
@Binding var selectedEquipment: Set<String>
@Binding var searchNameString: String
@Binding var uniqueWorkoutUsers: [RegisteredUser]?
@Binding var filteredRegisterdUser: RegisteredUser?
@Binding var filteredWorkouts: [Workout]
@@ -16,48 +18,113 @@ struct FilterAllView: View {
@Binding var currentSort: SortType?
var body: some View {
HStack {
TextField("Filter" ,text: $searchString)
VStack {
TextField("Search by name" ,text: $searchNameString)
.padding(.horizontal)
.textFieldStyle(.roundedBorder)
if let uniqueWorkoutUsers = uniqueWorkoutUsers {
Menu(content: {
ForEach(uniqueWorkoutUsers, id: \.self) { index in
HStack {
if let uniqueWorkoutUsers = uniqueWorkoutUsers {
Menu(content: {
ForEach(uniqueWorkoutUsers, id: \.self) { index in
Button(action: {
filteredRegisterdUser = index
filteredWorkouts = workouts.filterWorkouts(
nameSearchString: searchNameString,
musclesSearchString: selectedMuscles,
equipmentSearchString: selectedEquipment,
filteredRegisterdUser: filteredRegisterdUser
)
}, label: {
Text((index.firstName ?? "") + " -" + (index.lastName ?? ""))
})
}
Button(action: {
filteredRegisterdUser = index
filteredWorkouts = workouts.filterWorkouts(searchString: searchString,
filteredRegisterdUser: filteredRegisterdUser)
filteredRegisterdUser = nil
filteredWorkouts = workouts.filterWorkouts(
nameSearchString: searchNameString,
musclesSearchString: selectedMuscles,
equipmentSearchString: selectedEquipment,
filteredRegisterdUser: filteredRegisterdUser
)
}, label: {
Text((index.firstName ?? "") + " -" + (index.lastName ?? ""))
Text("All")
})
}, label: {
Image(systemName: filteredRegisterdUser == nil ? "person.2" : "person.2.fill")
.padding(.trailing)
})
}
Menu(content: {
ForEach(SortType.allCases, id: \.self) { index in
Button(action: {
sortWorkouts(sortType: index)
}, label: {
Text(index.rawValue)
})
}
Button(action: {
filteredRegisterdUser = nil
filteredWorkouts = workouts.filterWorkouts(searchString: searchString,filteredRegisterdUser: filteredRegisterdUser)
}, label: {
Text("All")
})
}, label: {
Image(systemName: filteredRegisterdUser == nil ? "person.2" : "person.2.fill")
Image(systemName: "list.number")
.padding(.trailing)
})
if let equipments = DataStore.shared.allEquipment {
Menu(content: {
ForEach(equipments, id: \.id) { equipment in
Button(action: {
if selectedEquipment.contains(equipment.name) {
selectedEquipment.remove(equipment.name)
} else {
selectedEquipment.insert(equipment.name)
}
}, label: {
if selectedEquipment.contains(equipment.name) {
Image(systemName: "checkmark")
}
Text(equipment.name)
})
}
}, label: {
Image(systemName: "scalemass")
.padding(.trailing)
})
}
if let muscles = DataStore.shared.allMuscles {
Menu(content: {
ForEach(muscles, id: \.id) { muscle in
Button(action: {
if selectedMuscles.contains(muscle.name) {
selectedMuscles.remove(muscle.name)
} else {
selectedMuscles.insert(muscle.name)
}
}, label: {
if selectedMuscles.contains(muscle.name) {
Image(systemName: "checkmark")
}
Text(muscle.name)
})
}
}, label: {
Image(systemName: "brain.head.profile")
.padding(.trailing)
})
}
Button(action: {
selectedMuscles.removeAll()
selectedEquipment.removeAll()
searchNameString = ""
filteredRegisterdUser = nil
}, label: {
Image(systemName: "xmark.circle")
.padding(.trailing)
})
}
Menu(content: {
ForEach(SortType.allCases, id: \.self) { index in
Button(action: {
sortWorkouts(sortType: index)
}, label: {
Text(index.rawValue)
})
}
}, label: {
Image(systemName: "list.number")
.padding(.trailing)
})
}
}
@@ -71,7 +138,7 @@ struct FilterAllView: View {
filteredWorkouts = filteredWorkouts.sorted(by: {
$0.name < $1.name
})
case .date:
case .createdDate:
filteredWorkouts = filteredWorkouts.sorted(by: {
$0.createdAt ?? Date() < $1.createdAt ?? Date()
})
@@ -81,7 +148,9 @@ struct FilterAllView: View {
}
#Preview {
FilterAllView(searchString: .constant(""),
FilterAllView(selectedMuscles: .constant([]),
selectedEquipment: .constant([]),
searchNameString: .constant(""),
uniqueWorkoutUsers: .constant(nil),
filteredRegisterdUser: .constant(nil),
filteredWorkouts: .constant(PreviewData.allWorkouts()),

View File

@@ -13,7 +13,7 @@ struct PlannedWorkoutView: View {
var body: some View {
List {
ForEach(workouts, id:\.workout.name) { plannedWorkout in
ForEach(workouts.sorted(by: { $0.onDate < $1.onDate }), id:\.workout.name) { plannedWorkout in
HStack {
VStack(alignment: .leading) {
Text(plannedWorkout.onDate.plannedDate?.weekDay ?? "-")

View File

@@ -62,6 +62,7 @@ class PlayerUIView: UIView {
if let playerItem = notification.object as? AVPlayerItem {
playerItem.seek(to: .zero, completionHandler: nil)
self.playerLayer.player?.play()
self.playerLayer.player?.isMuted = true
}
}
}