iOS: Kategorie-Typfilter + Lagerort-Hierarchie (aufklappbarer Baum)
Gemeinsame TreeMasterView fuer hierarchische Stammdaten (Ein-/Ausklappen, Anlegen, Bearbeiten, Loeschen): - Kategorien: Segment-Filter Alle/Lebensmittel/Gegenstaende (wie im Web); in der Alle-Ansicht zeigt jede Zeile ihre Art. Anlegen/Bearbeiten waehlt die Verwaltungsart (neu: createCategory mit tracking, updateCategory). - Lagerorte: werden jetzt als aufklappbarer Baum gezeigt statt flach. Beim Anlegen laesst sich ein Elternort waehlen (Hierarchie aufbauen); Umhaengen unterstuetzt der Server nicht, Bearbeiten bleibt daher Umbenennen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -446,6 +446,18 @@ struct CategoryItem: Codable, Identifiable, Hashable {
|
||||
var isObject: Bool { tracking == "object" }
|
||||
}
|
||||
|
||||
// MARK: - Hierarchische Stammdaten
|
||||
|
||||
/// Gemeinsame Form baumartiger Stammdaten (Kategorien, Lagerorte): eine flache
|
||||
/// Liste mit Eltern-Verweis, aus der sich der Baum aufbauen lässt.
|
||||
protocol TreeItem: Identifiable where ID == Int {
|
||||
var name: String { get }
|
||||
var parentId: Int? { get }
|
||||
}
|
||||
|
||||
extension CategoryItem: TreeItem {}
|
||||
extension StorageLocation: TreeItem {}
|
||||
|
||||
/// Shop / Bezugsquelle fuer Gegenstaende ("gekauft bei").
|
||||
struct ShopItem: Codable, Identifiable, Hashable {
|
||||
let id: Int
|
||||
@@ -856,13 +868,19 @@ struct NewPackageTypeRequest: Codable {
|
||||
struct NewCategoryRequest: Codable {
|
||||
let name: String
|
||||
let parentId: Int?
|
||||
var tracking: String? = nil
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case name
|
||||
case name, tracking
|
||||
case parentId = "parent_id"
|
||||
}
|
||||
}
|
||||
|
||||
struct CategoryUpdateRequest: Codable {
|
||||
let name: String?
|
||||
let tracking: String?
|
||||
}
|
||||
|
||||
struct NewShopRequest: Codable {
|
||||
let name: String
|
||||
let website: String?
|
||||
|
||||
Reference in New Issue
Block a user