---
title: flexi-time-span
---

Das Zeitspannen-Feld nimmt eine Dauer in **Minuten und Sekunden** entgegen. Die Werte werden in zwei nebeneinanderliegenden Feldern eingegeben und durch einen Doppelpunkt getrennt dargestellt (`MM:SS`). Geeignet für die Erfassung von Bearbeitungszeiten, Wartezeiten, Reaktionszeiten und ähnlichen kurzen Zeitspannen.

## Einstellungen

| Einstellung | Beschreibung |
|---|---|
| Beschriftung | Der angezeigte Text über dem Feld |
| Name | Eindeutiger Bezeichner des Feldes (wird automatisch aus der Beschriftung abgeleitet) |
| Eingabe erforderlich | Wenn aktiv, muss eine Zeitspanne eingetragen werden |
| Meldung bei fehlerhafter Validierung | (Pflichtfeld) Hinweistext, der unter dem Feld erscheint, solange die Pflicht nicht erfüllt ist |
| Minuten Limit aktiv | Begrenzt die zulässige Minutenzahl auf einen festen Höchstwert |
| Minuten Limit | (Bei aktivem Limit) Höchstzulässige Minutenzahl |
| Eingabe deaktiviert | Sperrt das Feld, sodass es nicht bearbeitet werden kann |
| Eingabe deaktiviert mit Abhängigkeit | Sperre wird nur unter einer bestimmten Bedingung wirksam (siehe *Eingabe deaktivieren*) |

### Erweiterte Einstellungen

| Einstellung | Beschreibung |
|---|---|
| Prüfungsregeln | Regeln zur Bewertung der eingetragenen Zeitspanne (siehe Abschnitt *Validierungsregeln*) |

## Eingabe

Das Feld besteht aus zwei Eingabefeldern, die durch einen Doppelpunkt getrennt sind:

- **Min** – Anzahl der Minuten (ganze Zahl, ab 0)
- **Sek** – Anzahl der Sekunden (ganze Zahl, 0 bis 59)

Beim Verlassen eines Eingabefeldes werden die Werte automatisch zweistellig formatiert (`05` statt `5`). Eine Eingabe von mehr als 59 Sekunden wird automatisch auf 59 begrenzt.

Solange beide Werte 0 sind, gilt das Feld als leer.

## Minuten Limit

Mit dem **Minuten Limit** wird die zulässige Minutenzahl nach oben begrenzt. Versucht der Anwender, einen größeren Wert einzugeben, wird die Eingabe automatisch auf das Limit gesetzt.

Beispiel: Bei einem Limit von `60` sind Eingaben zwischen `00:00` und `60:59` möglich.

Ohne aktiviertes Limit ist die Minutenzahl praktisch unbegrenzt.

## Eingabe deaktivieren

Mit dieser Einstellung lässt sich das Feld sperren. Zwei Varianten sind möglich:

**Dauerhaft gesperrt** – Ist nur *Eingabe deaktiviert* aktiv, kann das Feld nicht bearbeitet werden. Geeignet für Anzeigefelder, deren Wert von außen gesetzt wird.

**Abhängig von einem anderen Feld** – Ist zusätzlich *Eingabe deaktiviert mit Abhängigkeit* aktiv, lässt sich festlegen, unter welcher Bedingung das Feld gesperrt sein soll:

| Einstellung | Beschreibung |
|---|---|
| Abhängigkeit Pfad | Name des Feldes, das geprüft wird. Für ein Feld im selben Abschnitt genügt der Name (`auswahl`); für ein Feld in einem anderen Abschnitt: `abschnitt.feld` |
| Vergleichswert (optional) | Bestimmter Wert, den das abhängige Feld haben soll |
| Eingabe deaktiviert, wenn | Bedingung für die Sperre. Ohne Vergleichswert: **Abhängigkeit inaktiv/leer** oder **Abhängigkeit aktiv/gefüllt**. Mit Vergleichswert: **Wert stimmt überein** oder **Wert stimmt nicht überein** |

Ändert sich das abhängige Feld, wird die Sperre sofort neu ausgewertet.

## Validierungsregeln

Über die erweiterten Einstellungen können Prüfungsregeln definiert werden. Wenn Regeln konfiguriert sind, zeigt das Feld ein Statussymbol:

- **Grüner Haken** – alle Regeln sind erfüllt
- **Rotes Kreuz** – mindestens eine Regel ist nicht erfüllt

Die Zeitspanne wird für die Prüfung in **Sekunden** umgerechnet. Eine Eingabe von `02:30` (2 Minuten 30 Sekunden) entspricht in den Regeln also dem Wert `150`.

`flexi-time-span` unterstützt dieselben Regeln wie andere Zahlenfelder.

### Werteprüfung - `VALUE` [#werteprufung-value]

Vergleicht die eingetragene Zeitspanne (in Sekunden) direkt gegen einen Grenzwert oder einen Toleranzbereich.

| Regel | Bedeutung |
|---|---|
| `VALUE>=60` | Zeitspanne muss **mindestens** 60 Sekunden (1 Minute) betragen |
| `VALUE<=300` | Zeitspanne darf **höchstens** 300 Sekunden (5 Minuten) betragen |
| `VALUE<n` | Zeitspanne muss **strikt kleiner** als `n` Sekunden sein |
| `VALUE==n` | Zeitspanne muss **genau** `n` Sekunden betragen |
| `VALUE!=n` | Zeitspanne darf **nicht** `n` Sekunden betragen |
| `VALUE>n` | Aus historischen Gründen identisch mit `VALUE>=n`. Für einen strikten *größer als* stattdessen `COMPARE:VALUE>n` verwenden |

#### Toleranzbereich

| Regel | Bedeutung |
|---|---|
| `VALUE%5:soll_dauer` | Zeitspanne muss innerhalb von ± 5 % von `soll_dauer` liegen |
| `VALUE%MIN5:ist_dauer` | `ist_dauer` darf nicht mehr als 5 % **unter** dem eigenen Wert liegen |
| `VALUE%MAX5:ist_dauer` | `ist_dauer` darf nicht mehr als 5 % **über** dem eigenen Wert liegen |

Ist das Referenzfeld leer, wird die Regel übersprungen und das Feld als **Leer** markiert.

### Vergleich - `COMPARE` [#vergleich-compare]

Vergleicht zwei Ausdrücke. `VALUE` steht für die eigene Zeitspanne (in Sekunden), andere Feldnamen werden direkt verwendet. Konstanten sowie `+` und `-` sind erlaubt. Innerhalb von `COMPARE` sind alle Operatoren strikt.

| Regel | Bedeutung |
|---|---|
| `COMPARE:VALUE>=soll_dauer` | Eigene Zeitspanne muss mindestens `soll_dauer` entsprechen |
| `COMPARE:VALUE<=(soll_dauer+10)` | Eigene Zeitspanne darf `soll_dauer + 10` Sekunden nicht überschreiten |
| `COMPARE:VALUE>=(soll_dauer-10)` | Eigene Zeitspanne darf `soll_dauer − 10` Sekunden nicht unterschreiten |
| `COMPARE:VALUE>n` | Eigene Zeitspanne muss strikt größer als `n` Sekunden sein |
| `COMPARE:VALUE==soll_dauer` | Eigene Zeitspanne muss exakt `soll_dauer` entsprechen |

### Komponentenlänge - `COMPONENT` [#komponentenlange-component]

Prüft, ob ein **anderes** Feld einen bestimmten Inhalt hat. Wirkt typischerweise als **Alternative** zu einer Werteprüfung - wenn das andere Feld ausgefüllt ist, gilt die Prüfung als erfüllt.

| Regel | Bedeutung |
|---|---|
| `COMPONENT:bemerkung.length>0` | `bemerkung` enthält mindestens ein Zeichen |
| `COMPONENT:bemerkung.length>10` | `bemerkung` enthält mindestens 11 Zeichen |

Beispiel: Zeitspanne im Toleranzbereich oder Bemerkung erforderlich

```json
"rules": [
  "VALUE%10:soll_dauer",
  "COMPONENT:bemerkung.length>0"
]
```
> Die gemessene Dauer liegt innerhalb ± 10 % der Soll-Dauer **oder** es ist eine Bemerkung eingetragen → OK.

### Mehrere Regeln kombinieren

- Mehrere `COMPARE`-Regeln müssen **alle** erfüllt sein.
- Wird sowohl eine `VALUE`- als auch eine `COMPARE`-Regel hinterlegt, hat die `COMPARE`-Regel Vorrang.
- Werden mehrere `VALUE`-Regeln hinterlegt, entscheidet die **letzte** über das Ergebnis. Für klare Prüfungen besser nur **eine** `VALUE`-Regel setzen und mit `COMPARE` oder `COMPONENT` ergänzen.

Eine vollständige Übersicht aller Regeln und ihrer Schreibweisen findet sich unter [Prüfungsregeln](/components/rules).

## Pflichtfeld vs. Validierungsregel

**Eingabe erforderlich** und **Validierungsregeln** wirken unabhängig voneinander:

- **Eingabe erforderlich** verhindert das Speichern bzw. die Freigabe, solange keine Zeitspanne eingetragen ist. Bei einer Verletzung erscheint die hinterlegte **Meldung bei fehlerhafter Validierung** unter dem Feld.
- **Validierungsregeln** bewerten die eingetragene Zeitspanne inhaltlich und werden über das Statussymbol (Haken/Kreuz) angezeigt. Ein leeres Feld wird hier als **Leer** behandelt und blockiert die Freigabe nicht.
