This commit is contained in:
Trey t
2023-06-25 17:15:34 -05:00
parent f97faffb62
commit 508491510c

View File

@@ -18,89 +18,15 @@ struct AddExerciseView: View {
@StateObject var bridgeModule = BridgeModule.shared
@Environment(\.dismiss) var dismiss
var selectedWorkout: ((ExerciseExercise) -> Void)
var body: some View {
VStack {
if let muscles = DataStore.shared.allMuscles {
Button("toggle all", action: {
if self.selectedMuscles.count > 0 {
self.selectedMuscles.removeAll()
} else {
self.selectedMuscles.append(contentsOf: muscles)
}
filterExercises()
})
ScrollView(.horizontal) {
HStack(spacing: 10) {
ForEach(muscles, id:\.id) { muscle in
ZStack {
RoundedRectangle(cornerRadius: 8)
.stroke(selectedMuscles.contains(where: { $0.id == muscle.id }) ? .green : .gray, lineWidth: 3)
.frame(maxWidth: .infinity, maxHeight: .infinity)
Text(muscle.name)
.lineLimit(2)
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
.contentShape(Rectangle())
.onTapGesture {
if selectedMuscles.contains(where: { $0.id == muscle.id }) {
self.selectedMuscles.removeAll(where: {
$0.id == muscle.id
})
} else {
self.selectedMuscles.append(muscle)
}
filterExercises()
}
.frame(width: 150, height: 70)
}
}.padding()
}.frame(height: 100)
}
muscleView()
Divider()
if let equipment = DataStore.shared.allEquipment {
Button("toggle all", action: {
if self.selectedEquipment.count > 0 {
self.selectedEquipment.removeAll()
} else {
self.selectedEquipment.append(contentsOf: equipment)
}
filterExercises()
})
ScrollView(.horizontal) {
HStack(spacing: 10) {
ForEach(equipment, id:\.id) { aequipment in
ZStack {
RoundedRectangle(cornerRadius: 8)
.stroke(selectedEquipment.contains(where: { $0.id == aequipment.id }) ? .green : .gray, lineWidth: 3)
.frame(maxWidth: .infinity, maxHeight: .infinity)
Text(aequipment.name ?? "--")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.lineLimit(2)
.multilineTextAlignment(.center)
}
.contentShape(Rectangle())
.onTapGesture {
if selectedEquipment.contains(where: { $0.id == aequipment.id }) {
self.selectedEquipment.removeAll(where: {
$0.id == aequipment.id
})
} else {
self.selectedEquipment.append(aequipment)
}
filterExercises()
}
.frame(width: 150, height: 70)
}
}.padding()
}.frame(height: 100)
}
equipmentView()
Divider()
@@ -112,33 +38,12 @@ struct AddExerciseView: View {
Divider()
List() {
ForEach(filteredExercises.indices, id: \.self) { i in
let obj = filteredExercises[i]
VStack {
Text(obj.name)
.frame(maxWidth: .infinity, alignment: .leading)
if obj.side.count > 0 {
Text(obj.side)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
}
Text(obj.equipmentRequired)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
Text(obj.muscleGroups)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
}
.contentShape(Rectangle())
.onTapGesture {
selectedWorkout(obj)
dismiss()
}
}
}
exerciseView()
}
.onAppear{
if #function.hasPrefix("__preview") {
DataStore.shared.setupFakeData()
}
guard let exercises = DataStore.shared.allExercise,
let muscles = DataStore.shared.allMuscles,
let equipment = DataStore.shared.allEquipment else {
@@ -199,9 +104,117 @@ struct AddExerciseView: View {
}
})
}
func muscleView() -> some View {
VStack {
if let muscles = DataStore.shared.allMuscles {
Button("toggle all", action: {
if self.selectedMuscles.count > 0 {
self.selectedMuscles.removeAll()
} else {
self.selectedMuscles.append(contentsOf: muscles)
}
filterExercises()
})
ScrollView(.horizontal) {
HStack(spacing: 10) {
ForEach(muscles, id:\.id) { muscle in
ZStack {
RoundedRectangle(cornerRadius: 8)
.stroke(selectedMuscles.contains(where: { $0.id == muscle.id }) ? .green : .gray, lineWidth: 3)
.frame(maxWidth: .infinity, maxHeight: .infinity)
Text(muscle.name)
.lineLimit(2)
.multilineTextAlignment(.center)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
.contentShape(Rectangle())
.onTapGesture {
if selectedMuscles.contains(where: { $0.id == muscle.id }) {
self.selectedMuscles.removeAll(where: {
$0.id == muscle.id
})
} else {
self.selectedMuscles.append(muscle)
}
filterExercises()
}
.frame(width: 150, height: 70)
}
}.padding()
}.frame(height: 100)
}
}
}
func setupFake() {
DataStore.shared.setupFakeData()
func equipmentView() -> some View {
VStack {
if let equipment = DataStore.shared.allEquipment {
Button("toggle all", action: {
if self.selectedEquipment.count > 0 {
self.selectedEquipment.removeAll()
} else {
self.selectedEquipment.append(contentsOf: equipment)
}
filterExercises()
})
ScrollView(.horizontal) {
HStack(spacing: 10) {
ForEach(equipment, id:\.id) { aequipment in
ZStack {
RoundedRectangle(cornerRadius: 8)
.stroke(selectedEquipment.contains(where: { $0.id == aequipment.id }) ? .green : .gray, lineWidth: 3)
.frame(maxWidth: .infinity, maxHeight: .infinity)
Text(aequipment.name ?? "--")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.lineLimit(2)
.multilineTextAlignment(.center)
}
.contentShape(Rectangle())
.onTapGesture {
if selectedEquipment.contains(where: { $0.id == aequipment.id }) {
self.selectedEquipment.removeAll(where: {
$0.id == aequipment.id
})
} else {
self.selectedEquipment.append(aequipment)
}
filterExercises()
}
.frame(width: 150, height: 70)
}
}.padding()
}.frame(height: 100)
}
}
}
func exerciseView() -> some View {
List() {
ForEach(filteredExercises.indices, id: \.self) { i in
let obj = filteredExercises[i]
VStack {
Text(obj.name)
.frame(maxWidth: .infinity, alignment: .leading)
if obj.side.count > 0 {
Text(obj.side)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
}
Text(obj.equipmentRequired)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
Text(obj.muscleGroups)
.font(.footnote)
.frame(maxWidth: .infinity, alignment: .leading)
}
.contentShape(Rectangle())
.onTapGesture {
selectedWorkout(obj)
dismiss()
}
}
}
}
}