RootITUp.Ticket.Usability stellt drei wiederverwendbare UI-Controls für Matrix42-Layouts bereit: einen SLA-Fortschrittsbalken, der Fortschritt, Restzeit und Zieltermin eines Tickets aus dessen SLA-Daten berechnet, einen generischen linearen Fortschrittsbalken und einen schreibgeschützten Status-Chip. Alle drei nutzen die CSS-Variablen des Matrix42-Themes.
Verfügbare Komponenten
Die Komponenten werden als PDR-Control-Descriptors installiert. In Klammern der Titel, unter dem das Control im Layout Designer erscheint.
| HTML-Tag | Titel (Layout Designer) | Funktion |
|---|---|---|
rootitup-service-level-agreement-progress-bar | SLA Progress Bar | SLA-Fortschrittsbalken mit automatischer Berechnung |
rootitup-progress-bar | Linearer Fortschrittsbalken | Generischer Fortschrittsbalken (0–100) |
rootitup-chip-readonly | Readonly Chip | Farbiger Status-Chip (schreibgeschützt) |
Hinweis: Für den SLA-Fortschrittsbalken liefert das Paket nur einen englischen Titel („SLA Progress Bar”) aus; für die beiden anderen Controls ist zusätzlich eine deutsche Bezeichnung enthalten.
Architektur
Die Extension wird als Front-End Workspace ausgeliefert (Files/WM/workspaces/RootITUp_Ticket_Usability/). Das AngularJS-Modul RootITUp.Ticket.Usability registriert sich über mx.workspacesConfig.registerModule("RootITUp.Ticket.Usability") und definiert die drei Controls als AngularJS-Komponenten.
Genutzte Matrix42-Services
mx.sb.public.service– HTTP-Aufrufe (http.post/http.get) und Benachrichtigungen (notification.warning)mx.internationalization– Datumsformatierung (formatUTCDate)
Data-Query-Abhängigkeit
Der SLA-Fortschrittsbalken benötigt eine mitgelieferte Data Query mit der ID:
5ed9627f-38f9-cf02-b4fa-08de22b89aeb
Diese schreibgeschützte Data Query (Name: RootITUp.Ticket.Usability, Datendefinition SPSActivityClassBase) wird mit der Extension installiert und liefert je Ticket-ObjectId die für die SLA-Berechnung nötigen Spalten: ObjectId, State, SLA, SLAPriority, Priority, CreatedDate, ReactionPoint, SolutionPoint, ServiceTimeProfileObjectId, ActualReactionDate und ActualSolutionDate. Der Zugriff über eine Data Query vermeidet zusätzliche Web-Service-Berechtigungen.
Installation
Extension Gallery
- Matrix42 Administration öffnen
- Zur Extension Gallery navigieren
- Nach „RootITUp.Ticket.Usability” suchen
- Auf „Install” klicken und die Installation abschließen
Diese Extension ist kostenlos verfügbar.
Technische Rahmenbedingungen aus dem Konfigurationspaket:
- Mindestversion: Matrix42 Digital Workspace Platform 12.1.3 (
MinimalRequiredProductVersion) - Setup: Die Installation recycelt die Web-Anwendung (
RecycleWebApplication); kein Maintenance-Mode, kein Neustart der Windows-Dienste erforderlich. - Inhalt: drei PDR-Control-Descriptors und eine PDR-Data-Query; keine abhängigen Pakete.
Konfiguration (Integration)
Nach der Installation stehen die drei Controls im Layout Designer zur Verfügung und können in ein Ticket-Layout (z. B. Vorschau oder Dialog) eingefügt werden.
SLA-Fortschrittsbalken einbinden
- Layout im Layout Designer öffnen (z. B. das gewünschte Ticket-Formular)
- Control platzieren:
rootitup-service-level-agreement-progress-bareinfügen object-idbinden: dieObjectIddes Tickets bzw. der Aktivität zuweisen (Pflichtwert)typefestlegen:'reaction'oder'solution'(Pflichtwert)- Optional Beschriftungspräfixe und Schwellenwerte setzen
Status-Chip einbinden
- Control platzieren:
rootitup-chip-readonlyeinfügen textbinden: den anzuzeigenden Status-Text (Pflichtwert)colorbinden: eine CSS-Farbe bzw. Theme-Variable (Pflichtwert)
Komponenten im Detail
Status-Chip (rootitup-chip-readonly)
Ein schreibgeschützter Chip zur Anzeige eines Status-Labels. Aus der übergebenen Farbe leitet die Komponente Textfarbe und einen Hintergrund mit 15 % Deckkraft ab.
Eigenschaften
| Eigenschaft | HTML-Attribut | Typ | Pflicht | Standard |
|---|---|---|---|---|
text | text | String | Ja | – |
color | color | CSS-Farbe | Ja | var(--mx-content-hint-color) |
Verwendung
<rootitup-chip-readonly
text="'Aktiv'"
color="'var(--mx-success-color)'">
</rootitup-chip-readonly>
Farbkorrektur
Die Komponente korrigiert bestimmte Farbformate automatisch:
| Eingabe | Korrektur | Regel |
|---|---|---|
0xFF00FF | #FF00FF | Präfix 0x wird durch # ersetzt |
#FFFF00FF | #FF00FF | bei mehr als 7 Zeichen werden die letzten 6 verwendet |
Ohne Farbe wird var(--mx-content-hint-color) verwendet.
Linearer Fortschrittsbalken (rootitup-progress-bar)
Generischer Fortschrittsbalken mit Beschriftungen und optionalem Pausenzustand. Der Fortschrittswert wird automatisch auf 0–100 begrenzt.
Eigenschaften
| Eigenschaft | HTML-Attribut | Typ | Pflicht | Standard |
|---|---|---|---|---|
labelLeft | label-left | String | Ja | – |
labelRight | label-right | String | Nein | – |
labelBottom | label-bottom | String | Nein | – |
progress | progress | Number (0–100) | Ja | 0 |
color | color | CSS-Farbe | Ja | var(--mx-active-color) |
isPaused | is-paused | Boolean | Nein | false |
pausedText | paused-text | String | Nein | "Paused" |
Verwendung
<rootitup-progress-bar
label-left="'Reaktionszeit'"
label-right="'2h 30m verbleibend'"
progress="65"
color="'var(--mx-warning-color)'">
</rootitup-progress-bar>
SLA-Fortschrittsbalken (rootitup-service-level-agreement-progress-bar)
Spezialisierter Fortschrittsbalken für die SLA-Anzeige. Er ermittelt Fortschritt, verbleibende Zeit und Zieltermin automatisch aus den SLA-Daten des Tickets. Intern rendert er den linearen Fortschrittsbalken.
Eigenschaften
| Eigenschaft | HTML-Attribut | Typ | Pflicht | Standard |
|---|---|---|---|---|
object-id | object-id | Objekt/GUID | Ja | – |
type | type | 'reaction' / 'solution' | Ja | – |
labelLeft | label-left | String | Ja¹ | "Reaction Time" / "Solution Time" |
labelRightPrefix | label-right-prefix | String | Nein | – |
labelBottomPrefix | label-bottom-prefix | String | Nein | – |
slaWarningThreshold | sla-warning-threshold | Number | Nein | 75 |
slaBreachThreshold | sla-breach-threshold | Number | Nein | 90 |
¹ Im Control-Descriptor als Pflichtfeld markiert; bleibt es leer, setzt die Komponente je nach type das Standardlabel „Reaction Time” bzw. „Solution Time”.
Verwendung
<!-- Reaktionszeit -->
<rootitup-service-level-agreement-progress-bar
object-id="…ObjectId des Tickets…"
type="'reaction'"
label-left="'Reaktionszeit'">
</rootitup-service-level-agreement-progress-bar>
<!-- Lösungszeit mit angepassten Schwellen -->
<rootitup-service-level-agreement-progress-bar
object-id="…ObjectId des Tickets…"
type="'solution'"
label-right-prefix="'Verbleibend: '"
label-bottom-prefix="'Fällig: '"
sla-warning-threshold="80"
sla-breach-threshold="95">
</rootitup-service-level-agreement-progress-bar>
Farblogik
Die Balkenfarbe wird über Theme-Variablen gesetzt und richtet sich nach dem SLA-Status. Die tatsächlich dargestellte Farbe hängt vom konfigurierten Matrix42-Theme ab; die angegebenen Hex-Werte sind die Standardwerte des Themes.
| Zustand | Bedingung | Variable (Standardwert) |
|---|---|---|
| OK | Fortschritt < Warnschwelle | --mx-active-color (Aktiv-/Primärfarbe, Standard #2364e4) |
| Warnung | Fortschritt ≥ Warnschwelle | --mx-warning-color (Warn-Tint, Standard #ffefb5) |
| Kritisch | Fortschritt ≥ Breach-Schwelle | --mx-error-color (Fehler-Tint, Standard #ffcbd5) |
| Eingehalten | abgeschlossen, Fortschritt < 100 % | --mx-success-color (Erfolgs-Tint, Standard #bef8e8) |
| Verletzt | abgeschlossen, Fortschritt ≥ 100 % | --mx-error-color (Fehler-Tint, Standard #ffcbd5) |
| Pausiert | Status 203 oder 220 | --mx-content-hint-color (gedämpfte Hinweisfarbe) |
--mx-warning-color,--mx-error-colorund--mx-success-colorsind im Matrix42-Theme als dezente Hintergrund-Tints definiert. Ihre Anzeige folgt dem aktiven Theme, nicht einem festen Farbnamen.
SLA-Berechnung
- Data Query abrufen:
POST api/dataQuery/5ed9627f-38f9-cf02-b4fa-08de22b89aebmit einer Bedingung aufObjectId. - Priorität abgleichen: Es wird die Zeile verwendet, deren SLA-Level-Priorität (
SLAPriority) mit der Ticket-Priorität (Priority) übereinstimmt und die ein Servicezeit-Profil sowie die nötigen Datumswerte besitzt. - Arbeitszeit berechnen:
GET api/serviceTimeProfile/{ServiceTimeProfileObjectId}/timeDifference?start=…&end=…– je einmal für Start → Zieltermin (zugeteilte Minuten) und Start → Ist/Jetzt (verstrichene Minuten). - Fortschritt:
min(verstrichen / zugeteilt × 100, 100).
Pausierte Status
| Status-Wert | Bedeutung | Verhalten |
|---|---|---|
| 203 | Pausiert | Balken zeigt Pause-Icon und den Status-Namen |
| 220 | Gelöst | Balken zeigt Pause-Icon und den Status-Namen |
| Andere | Aktiv | normale Fortschrittsanzeige |
Zieltermin-Anzeige
Solange das SLA läuft, zeigt die untere Beschriftung den Zieltermin. Nach Abschluss wird zusätzlich das Ist-Datum mit Ergebnis angezeigt: ✅ bei eingehaltenem SLA (Fortschritt < 100 %), ❌ bei verletztem SLA (Fortschritt ≥ 100 %).
Changelog
Version 1.0 – Initial Release (01.02.2026)
- SLA Progress Bar (
rootitup-service-level-agreement-progress-bar) mit automatischer Berechnung von Fortschritt, Restzeit und Zieltermin - Linearer Fortschrittsbalken (
rootitup-progress-bar) mit Pausenzustand - Readonly Chip (
rootitup-chip-readonly) für farbige Status-Anzeige - Unterstützung für Reaktions- und Lösungszeit über Servicezeit-Profile
- Anpassbare Warn- und Breach-Schwellen (Standard 75 % / 90 %)
- ARIA-Attribute für Barrierefreiheit
- Matrix42-Theme-Integration über CSS-Variablen
- Mitgelieferte Data Query für die SLA-Daten
- Kompatibel mit der Matrix42 Digital Workspace Platform ab 12.1.3
Häufig gestellte Fragen
Werden Servicezeit-Profile berücksichtigt?
Ja. Die SLA-Berechnung ruft api/serviceTimeProfile/{id}/timeDifference auf. Diese Matrix42-API berechnet die Arbeitszeit anhand des dem SLA zugeordneten Servicezeit-Profils.
Was passiert, wenn keine passenden SLA-Daten gefunden werden?
Die untere Beschriftung zeigt „N/A”, der Fortschritt wird auf 0 gesetzt, es erscheint eine Warn-Benachrichtigung und ein Hinweis wird in der Browser-Konsole protokolliert. Das tritt etwa auf, wenn die Ticket-Priorität keinem SLA-Level entspricht oder kein Servicezeit-Profil zugeordnet ist.
Lassen sich die Farbschwellen anpassen?
Ja, über die Eigenschaften slaWarningThreshold (Standard 75) und slaBreachThreshold (Standard 90) im Layout Designer.
Welche Ticket-Status pausieren das SLA?
Die Status-Werte 203 (Pausiert) und 220 (Gelöst). Der Balken zeigt dann ein Pause-Icon und den Status-Namen; es wird kein Fortschritt berechnet.
Werden zusätzliche Berechtigungen benötigt?
Nein. Die Extension nutzt die mitgelieferte, uneingeschränkt freigegebene Data Query sowie öffentliche Matrix42-APIs. Zusätzliche Web-Service-Berechtigungen sind nicht erforderlich.
Wie werden ungültige Farbcodes im Chip behandelt?
Der Status-Chip korrigiert Farbformate automatisch: ein 0x-Präfix wird zu #, ein Hex-Wert mit mehr als 7 Zeichen wird auf die letzten 6 Zeichen gekürzt. Fehlt die Farbe, wird var(--mx-content-hint-color) verwendet.