Zum Hauptinhalt springen

Attribute (Attributes)

Zweck

Attribute definiert ein wiederverwendbares Custom-Feld in SpeamCore. Pro Attribut wird Typ (text, textarea, number, dropdown, checkbox, ...), Position innerhalb der AttributeGroup und — bei type = dropdown — die Modell-Bindung gepflegt. Über AttributeParent werden Attribute an Domain-Entitaeten (Customer, Product, Workorder, ...) zugeordnet; über AttributeValue werden konkrete Werte pro Entitaets-Instanz gespeichert.

System-Attribute (systemAttribute = true) sind durch SpeamCore vorgegeben — Name und isTranslatable sind nicht editierbar.

Voraussetzungen

- Berechtigung `view:Attribute`. Für Pflege `create:Attribute`/`update:Attribute`. - Mindestens eine [AttributeGroup](/attribute-groups), zu der das Attribut gehört. - Bei `type = dropdown`: ein referenziertes Modell aus den unterstuetzten Werten (siehe Tabelle).

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Attribute, AttributeListe/Detail aufrufbar
create/update/deleteAttributePflegenAPP_SPEAMCORE_CREATE/UPDATE/DELETE_ATTRIBUTE
viewAttributeModelSub-Liste „Modell-Bindungen"APP_SPEAMCORE_VIEW_ATTRIBUTE_MODEL
viewAttributeParentSub-Liste „Verwendung" pro EntitaetAPP_SPEAMCORE_VIEW_ATTRIBUTE_PARENT

Schritt-für-Schritt-Anleitung

  1. Attribute (/attributes) → + Neu.
  2. type wählen (text, textarea, number, dropdown, checkbox, date, ...). Type ist nach Anlage immutable.
  3. name pflegen (System-Attribute sind disabled — Name kommt aus translationKey).
  4. position setzen — Sortierung innerhalb der Gruppe.
  5. Bei type = dropdown: model setzen (z. B. Unit, Country, Supplier, Manufacturer, Employee, TaxationType, PaymentTarget, CostCenter, Product, ProductComponent, ServiceAssignment).
  6. Bei type = text oder textarea: optional isTranslatable = true aktivieren (mehrsprachige Erfassung).

Sub-Listen am Detail

  • Modelle (/attributes/:id/models) — Auswahl-Optionen bei dropdown-Typen, falls nicht über model aufgeloest.
  • Parents (/attributes/:id/parents) — pro Entitaets-Typ (Customer, Product, ...) wird zugeordnet, ob das Attribut dort sichtbar ist.

Listenansicht — attributes

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:

  • KAL. (Mini-Kalender)
  • ZEIT (Persoenliche Wochen-Arbeitszeit)
  • ARBEIT (Eigene bevorstehende Aufträge)

Felder und Eingaben

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
typeja (read-only)ENUMBestimmt Eingabe- und Render-Logik.
nameja (disabled bei System-Attribut)StringAnzeigename. Bei systemAttribute = true wird über translationKey aus i18n geholt.
positionneinIntegerReihenfolge innerhalb der AttributeGroup.
isTranslatableneinBooleanAktiviert mehrsprachige Eingabe (nur bei text/textarea).type ist text oder textarea.
modelneinENUM (s. unten)Bestimmt das Quelldaten-Modell für dropdown-Auswahl.type = dropdown.
systemAttributenein (read-only)Booleantrue: vom System gepflegt, nicht loeschbar.
translationKeynein (read-only bei System)Stringi18n-Schlüssel für den Namen.

Unterstuetzte Modelle (bei type = dropdown)

Unit, Country, Supplier, Manufacturer, Employee, TaxationType, PaymentTarget, CostCenter, Product, ProductComponent, ServiceAssignment.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

Häufige Fehler und Lösungen

FehlerLösung
name ist disabledSystem-Attribut. Name bzw. Übersetzung wird über translationKey aus i18n gepflegt.
Dropdown-Werte fehlenmodel ist nicht gesetzt oder das referenzierte Modell hat keine Einträge.
Attribut erscheint nicht an EntitaetAttributeParent fehlt — pro Entitaets-Typ muss explizit zugeordnet werden.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/attributesListeview Attribute
POST/api/attributesAnlegencreate Attribute
GET/api/attributes/:idDetailview Attribute
PATCH/api/attributes/:idÄndernupdate Attribute
DELETE/api/attributes/:idSoft-Deletedelete Attribute
GET/api/attribute-models?filter[attributeId]Sub-Liste Modell-Bindungenview AttributeModel
GET/api/attribute-parents?filter[attributeId]Sub-Liste Parentsview AttributeParent

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.