Verwendungsstatus: in der App umstellen, filtern und nachsehen
Im Einzelstueck steht jetzt ueber dem Verleih ein Abschnitt "Verwendung" mit vier Symbolen: verfuegbar, in Verwendung, in Reinigung, in Reparatur. Ein Tipp bucht sofort, ohne "Speichern" - wie beim Verleih, denn alle Scan-Wege (QR, NFC, vorrania://i/<UID>) landen genau in dieser Ansicht. Vier Woerter waeren auf einem iPhone zu breit, vier Symbole passen immer; darunter steht der Name im Klartext samt "seit wann". Dazu der Verwendungs-Verlauf mit Zeitstempeln und Konto, und in der Einzelstueck-Liste ein Filter ueber alle vier Zustaende plus die Zeile unter dem Namen, solange etwas laeuft. Stuecke ohne Verwendungsstatus fallen aus dem Filter "Verfuegbar" heraus - ein Schraubenzieher ist nicht verfuegbar, er fuehrt den Zustand gar nicht. Der Haken je Kategorie sitzt im Kategorie-Editor und gilt beim Bearbeiten auch fuer die Unterkategorien. Zwei Dinge, die beim Pruefen am Simulator auffielen: Die Leiste haette beim Oeffnen jedes Mal einmal ins Leere gebucht, weil onChange auch beim Laden feuert - dagegen der Abgleich mit dem zuletzt gemeldeten Stand. Und SQLite liefert Zeitstempel ohne Zeitzone, woran ISO8601DateFormatter scheitert; in der App stand deshalb der rohe ISO-Text. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b9d097fe96
commit
290ff9341a
@@ -757,6 +757,7 @@ struct CategoryEditor: View {
|
||||
|
||||
@State private var name: String
|
||||
@State private var tracking: String
|
||||
@State private var usageTracking: Bool
|
||||
@State private var parentId: Int? // nur beim Anlegen
|
||||
@State private var error: String?
|
||||
@State private var busy = false
|
||||
@@ -767,6 +768,7 @@ struct CategoryEditor: View {
|
||||
self.done = done
|
||||
_name = State(initialValue: item?.name ?? "")
|
||||
_tracking = State(initialValue: item?.tracking ?? "object")
|
||||
_usageTracking = State(initialValue: item?.fuehrtVerwendung ?? false)
|
||||
_parentId = State(initialValue: nil)
|
||||
}
|
||||
|
||||
@@ -812,6 +814,14 @@ struct CategoryEditor: View {
|
||||
}
|
||||
}
|
||||
|
||||
if !erbtVonEltern {
|
||||
Section {
|
||||
Toggle("Verwendungsstatus führen", isOn: $usageTracking)
|
||||
} footer: {
|
||||
Text("Einzelstücke dieser Kategorie führen, woran sie gerade sind – in Verwendung, in Reinigung, in Reparatur. Gedacht für Kleidung und Werkzeug, nicht für Vorräte. Beim Bearbeiten gilt die Einstellung auch für alle Unterkategorien.")
|
||||
}
|
||||
}
|
||||
|
||||
if let item {
|
||||
Section {
|
||||
NavigationLink {
|
||||
@@ -847,13 +857,17 @@ struct CategoryEditor: View {
|
||||
do {
|
||||
if let item {
|
||||
_ = try await APIClient.shared.updateCategory(
|
||||
id: item.id, CategoryUpdateRequest(name: n, tracking: tracking))
|
||||
id: item.id,
|
||||
CategoryUpdateRequest(name: n, tracking: tracking,
|
||||
usageTracking: usageTracking))
|
||||
} else {
|
||||
// Mit Oberkategorie die Art erben (tracking = nil), sonst die
|
||||
// gewählte Art.
|
||||
_ = try await APIClient.shared.createCategory(
|
||||
NewCategoryRequest(name: n, parentId: parentId,
|
||||
tracking: parentId == nil ? tracking : nil))
|
||||
tracking: parentId == nil ? tracking : nil,
|
||||
// Mit Oberkategorie die Markierung erben.
|
||||
usageTracking: parentId == nil ? usageTracking : nil))
|
||||
}
|
||||
done()
|
||||
dismiss()
|
||||
|
||||
Reference in New Issue
Block a user