iOS: Lagerorte umhängen, Unterkategorien anlegen, eigene Felder verwalten
- Lagerorte: LocationEditor hängt bestehende Orte jetzt um (Elternort auch beim Bearbeiten, eigene Unterorte ausgeschlossen); Client updateLocation + LocationUpdateRequest (parent_id wird immer gesendet, auch null). - Kategorien: beim Anlegen optionale Oberkategorie wählbar (Unterkategorie); mit Eltern erbt sie deren Verwaltungsart, sonst wird sie gewählt. - Eigene Felder: neue CategoryFieldsView + FieldEditor (anlegen/bearbeiten/ löschen von Feldern je Kategorie), erreichbar aus dem Kategorie-Editor; Client ownFieldDefinitions/create/update/deleteFieldDefinition + Models. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -854,6 +854,54 @@ struct NewLocationRequest: Codable {
|
||||
}
|
||||
}
|
||||
|
||||
/// Lagerort umbenennen und/oder umhängen. `parentId` wird bewusst immer gesendet
|
||||
/// (auch `null` = oberste Ebene), damit „auf oberste Ebene holen" ankommt.
|
||||
struct LocationUpdateRequest: Codable {
|
||||
let name: String
|
||||
let parentId: Int?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case name
|
||||
case parentId = "parent_id"
|
||||
}
|
||||
|
||||
func encode(to encoder: Encoder) throws {
|
||||
var c = encoder.container(keyedBy: CodingKeys.self)
|
||||
try c.encode(name, forKey: .name)
|
||||
try c.encode(parentId, forKey: .parentId) // encodet null bei nil
|
||||
}
|
||||
}
|
||||
|
||||
/// Eigenes Feld einer Kategorie anlegen. `unit`/`options` werden immer
|
||||
/// mitgeschickt; der Server ignoriert sie bei unpassendem Typ.
|
||||
struct FieldDefinitionCreate: Codable {
|
||||
let categoryId: Int
|
||||
let label: String
|
||||
let fieldType: String
|
||||
let unit: String
|
||||
let options: [String]
|
||||
let required: Bool
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case label, unit, options, required
|
||||
case categoryId = "category_id"
|
||||
case fieldType = "field_type"
|
||||
}
|
||||
}
|
||||
|
||||
struct FieldDefinitionUpdate: Codable {
|
||||
let label: String
|
||||
let fieldType: String
|
||||
let unit: String
|
||||
let options: [String]
|
||||
let required: Bool
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case label, unit, options, required
|
||||
case fieldType = "field_type"
|
||||
}
|
||||
}
|
||||
|
||||
struct NewUnitRequest: Codable {
|
||||
let name: String
|
||||
let kind: String
|
||||
|
||||
Reference in New Issue
Block a user