add GenericItemManager, fix small inconsistencies
This commit is contained in:
@@ -9,16 +9,40 @@ import Foundation
|
||||
import SwiftData
|
||||
|
||||
@Model
|
||||
final class Equipment: Nameable {
|
||||
static var systemImage = "dumbbell.fill"
|
||||
|
||||
final class Equipment {
|
||||
var id = UUID()
|
||||
var creationDate: Date = Date.now
|
||||
|
||||
@Attribute(.unique) var name: String
|
||||
var exercises: [Exercise] = []
|
||||
@Attribute(.unique)
|
||||
var name: String
|
||||
|
||||
init(name: String) {
|
||||
init(name: String = "") {
|
||||
self.name = name
|
||||
}
|
||||
}
|
||||
|
||||
// This protocol is required to display the name if the equipment in the List.
|
||||
extension Equipment: CustomStringConvertible {
|
||||
var description: String {
|
||||
name
|
||||
}
|
||||
}
|
||||
|
||||
extension Equipment: EditableModel {
|
||||
static var editableProperties: [EditableProperty] {
|
||||
[
|
||||
EditableProperty(
|
||||
displayName: "Name",
|
||||
type: String.self,
|
||||
get: { item in
|
||||
guard let equipment = item as? Equipment else { return "" }
|
||||
return equipment.name
|
||||
},
|
||||
set: { item, newValue in
|
||||
guard let equipment = item as? Equipment else { return }
|
||||
equipment.name = newValue
|
||||
}
|
||||
)
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,6 +51,24 @@ struct ExerciseEditor: View {
|
||||
}
|
||||
.pickerStyle(NavigationLinkPickerStyle())
|
||||
}
|
||||
|
||||
|
||||
AssignmentButton<Exercise, Equipment>(
|
||||
title: "Equipment",
|
||||
owner: exercise,
|
||||
sortBy: SortDescriptor(\Equipment.name),
|
||||
getAssignedItems: { exercise in
|
||||
exercise.equipment
|
||||
},
|
||||
assign: { exercise, equipment in
|
||||
exercise.equipment.append(equipment)
|
||||
},
|
||||
unassign: { exercise, equipment in
|
||||
exercise.equipment.removeAll(where: { $0.id == equipment.id })
|
||||
},
|
||||
createNew: { Equipment(name: "") }
|
||||
)
|
||||
|
||||
Section(footer: Text("Feature coming soon.")) {
|
||||
Toggle(isOn: $isPartOfProgression) {
|
||||
Text("Exercise is Part of a Progression")
|
||||
|
||||
Reference in New Issue
Block a user