Das Selection Controls Pack ersetzt den Standard-Objektwähler durch moderne Auswahlsteuerelemente. Pickup-Werte werden als Radio Buttons, Checkboxen oder Chips dargestellt – übersichtlicher und schneller bedienbar.
Verfügbare Steuerelemente
| Control | Auswahl | Anwendungsfall |
|---|---|---|
rootitup-radio-buttons | Einzelauswahl | Wenige Optionen (3–7), gegenseitig ausschließend |
rootitup-checkboxes | Mehrfachauswahl | Mehrere Optionen gleichzeitig wählbar |
rootitup-chips | Einzelauswahl | Kompakte Darstellung, visuell ansprechend |
rootitup-multi-chips | Mehrfachauswahl | Kompakte Darstellung, mehrere Tags wählbar |
Architektur
Die Extension wird als Front-End Workspace in Matrix42 integriert. Das AngularJS-Modul RootITUp.SelectionControlsPack nutzt Angular Material für das Styling.
Genutzte Matrix42-Services
mx.SolutionBuilderAgent.EntityService– Lädt Enumeration-Werte dynamischmx.components.FormControlControllerBase– Basis für Validierung und Zustandsverwaltungmx.internationalization– Übersetzt Validierungsmeldungen
Gemeinsame Bindings
Alle Steuerelemente unterstützen diese Eigenschaften:
| Binding | Typ | Beschreibung |
|---|---|---|
entityClassName | String | Pflicht. Name der Enumeration-Definition (z. B. SPSCommonPickupObjectStatus) |
label | String | Beschriftung des Controls |
ngModel | Model | Gebundener Wert (Einzelwert oder Array bei Mehrfachauswahl) |
required | Boolean | Macht das Feld zum Pflichtfeld |
disabled | Boolean | Deaktiviert das Control |
readOnly | Boolean | Verhindert Änderungen, zeigt aber den Wert |
hint | String | Hilfetext unterhalb des Controls |
filter | String | ASQL-Filter zur Einschränkung der Optionen |
default | Any | Standardwert, falls ngModel initial leer ist |
showValue | Boolean | Zeigt den Rohwert in Klammern (z. B. „Aktiv (1)“) |
Installation
Extension Gallery
- Matrix42 Administration öffnen
- Zu Administration → Extensions → Extension Gallery navigieren
- Nach „Selection Controls Pack” von RootITUp suchen
- Auf „Install” klicken und warten, bis die Installation abgeschlossen ist
Voraussetzung: Administrative Rechte im Matrix42-System.
Konfiguration
1. Layout öffnen
Im Layout Builder das gewünschte Layout öffnen (z. B. Dialog zum Melden eines Tickets).
2. Pickup auswählen
Im Datenmodell des Layout Builders den gewünschten Pickup suchen (z. B. SVMTaskPickupTypeOfTask).
3. Control platzieren
Den Pickup per Drag-&-Drop an die gewünschte Stelle ziehen und das passende Steuerelement auswählen:
- Radio Buttons – für exklusive Einzelauswahl
- Chips – für kompakte Einzelauswahl
- Checkboxes – für Mehrfachauswahl
- Multi-Chips – für kompakte Mehrfachauswahl
4. Eigenschaften konfigurieren
Optional weitere Attribute in den Eigenschaften festlegen:
| Eigenschaft | Beschreibung |
|---|---|
| Label | Beschriftung des Feldes |
| Hint | Hilfetext für Nutzende |
| Required | Pflichtfeld-Validierung |
| Filter | ASQL zur Einschränkung der Optionen |
| Default | Vorausgewählter Wert |
| Show Value | Zeigt Rohwert neben Anzeigenamen |
ASQL-Filter
Die Optionen lassen sich über ASQL-Filter dynamisch einschränken:
Value > 0 AND DisplayString LIKE '%Aktiv%'
Änderungen am filter-Binding lösen automatisch ein Neuladen der Optionen aus.
Validierung & Standardwerte
Validierungslogik
Die Controls nutzen die Standard-Formularvalidierung von Matrix42:
- Pflichtfeld: Prüft, ob mindestens ein Wert ausgewählt ist
- Fehlermeldungen: Werden lokalisiert über
mx.internationalizationangezeigt - Zustandsverwaltung:
disabled,readOnlywerden korrekt behandelt
Hinweis: Der Wert
0wird als „leer” interpretiert. Pickups mit dem Wert0sind daher nicht auswählbar.
Standardwerte setzen
Über das default-Binding lässt sich ein Standardwert definieren:
<rootitup-chips
entity-class-name="SPSCommonPickupObjectStatus"
default="1"
ng-model="ticket.Status">
</rootitup-chips>
Bei Mehrfachauswahl ein Array übergeben:
<rootitup-multi-chips
entity-class-name="SPSCommonPickupCurrency"
default="[1, 2, 3]"
ng-model="object.allowedCurrencies">
</rootitup-multi-chips>
Reaktives Verhalten
Die Controls reagieren automatisch auf Änderungen:
| Änderung | Verhalten |
|---|---|
entityClassName ändert sich | Optionen werden neu geladen |
filter ändert sich | Optionen werden neu geladen |
| Geladene Optionen ändern sich | Ungültige Werte im Model werden entfernt |
Barrierefreiheit
Alle Controls unterstützen:
ariaLabel– Screenreader-Beschreibung- Tastaturnavigation – via Angular Material
- Fokus-Management – Standard-Formularverhalten
Changelog
Version 1.6.0 – Feature Update (25.01.2026)
- ✨ Radio Buttons für exklusive Einzelauswahl
- ✨ Checkboxes für Mehrfachauswahl
- ✨ Chips (Single/Multi) für kompakte Darstellung
- ✨ befüllen über ASQL/Data Query
- ✨ Dynamische Optionen über
entityClassName - ✨ ASQL-Filter-Unterstützung
- ✨ Standardattribute:
label,hint,required,disabled,readOnly - ✨ Optionale Rohwert-Anzeige via
showValue - ✨ Kompatibel mit Matrix42 ab Version 11.x.x
- ✅ Verwendet Angular Material für konsistentes Styling
Häufig gestellte Fragen
Welche Pickup-Typen werden unterstützt?
Alle Enumeration-basierten Pickups, die über EntityService.getEnumerationValues abgerufen werden können. Das Binding entityClassName erwartet den Namen der Enumeration-Definition (z. B. SPSCommonPickupObjectStatus).
Warum ist der Wert 0 nicht auswählbar?
Die Controls interpretieren 0 als „kein Wert ausgewählt”. Dies entspricht dem üblichen Verhalten von Enumeration-Feldern, bei denen 0 häufig für „nicht gesetzt” steht.
Lässt sich die Optionsliste dynamisch filtern?
Ja, über das filter-Binding. Änderungen am Filter lösen automatisch ein Neuladen der Optionen aus. Der Filter ist ein ASQL-Ausdruck.
Was passiert, wenn ein ausgewählter Wert nach dem Neuladen nicht mehr existiert?
Der Wert wird automatisch aus dem Model entfernt. Bei Einzelauswahl wird das Model auf undefined gesetzt, bei Mehrfachauswahl wird der Wert aus dem Array entfernt.
Werden zusätzliche Berechtigungen benötigt?
Nein. Die Extension verwendet ausschließlich öffentliche Matrix42-APIs – keine zusätzlichen Berechtigungen erforderlich.
Welche Angular-Version wird benötigt?
Die Extension nutzt AngularJS (1.x) mit Angular Material. Diese sind in Matrix42 standardmäßig enthalten.