filter view

all workout filter view is its own view
all workout filter view is the top of all workout view
This commit is contained in:
Trey t
2024-11-25 09:48:44 -08:00
parent 63b7a2daa5
commit 4b6352b8fd
4 changed files with 157 additions and 105 deletions

View File

@@ -61,3 +61,41 @@ struct Workout: Codable, Identifiable, Equatable {
allSupersetExecercise = try container.decodeIfPresent([SupersetExercise].self, forKey: .allSupersetExecercise)
}
}
extension Array where Element == Workout {
func filterWorkouts(searchString: String, filteredRegisterdUser: RegisteredUser?) -> [Workout] {
var matchingWorkouts = [Workout]()
if (!searchString.isEmpty && searchString.count > 0) {
matchingWorkouts = self.filter({
if $0.name.lowercased().contains(searchString.lowercased()) {
return true
}
if let equipment = $0.equipment?.joined(separator: "").lowercased(),
equipment.contains(searchString.lowercased()) {
return true
}
if let muscles = $0.muscles?.joined(separator: "").lowercased(),
muscles.contains(searchString.lowercased()) {
return true
}
return false
})
}
if matchingWorkouts.isEmpty {
matchingWorkouts.append(contentsOf: self)
}
if let filteredRegisterdUser = filteredRegisterdUser {
matchingWorkouts = matchingWorkouts.filter({
$0.registeredUser == filteredRegisterdUser
})
}
return matchingWorkouts
}
}