Zeiterfassung (Timer-Widget)
Das Zeiterfassungs-Widget ermöglicht es, Arbeitszeiten direkt auf dem Dashboard zu erfassen – aufgeteilt nach Projekten, Aufträgen, Mitarbeitern oder anderen Referenzobjekten. Für jedes Referenzobjekt kann ein Timer gestartet und gestoppt werden. Beim Stoppen wird automatisch ein Zeiteintrag im hinterlegten Datenschema gespeichert.
So lassen sich Projektzeiten, Mitarbeiterzeiten und Stundenzettel lückenlos und ohne manuelle Nacherfassung dokumentieren – als digitale Alternative zu Excel-Stundenlisten oder Papier-Arbeitszeitnachweisen.
Typische Einsatzbereiche
| Einsatz | Beschreibung |
|---|---|
| Projektzeiten | Arbeitszeit pro Kundenprojekt erfassen und auswerten. |
| Mitarbeiterzeiten | Tägliche Arbeitszeit pro Mitarbeiter erfassen – als digitaler Stundenzettel und Arbeitszeitnachweis. |
| Auftragszeiten | Zeitaufwand pro Fertigungsauftrag oder Serviceauftrag tracken. |
| Kundenberatung | Beratungszeit pro Kunde für die Abrechnung dokumentieren. |
| Wartungseinsätze | Dauer von Wartungsarbeiten pro Maschine oder Anlage erfassen. |
| Support-Tickets | Bearbeitungszeit pro Ticket für SLA-Auswertungen. |
| Freiberufler-Abrechnung | Geleistete Stunden pro Mandat oder Auftrag protokollieren. |
Funktionen
- Referenzliste: Das Widget zeigt eine Liste aller verfügbaren Referenzobjekte an (z. B. Projekte oder Aufträge).
- Start/Stopp: Für jedes Referenzobjekt kann ein Timer einzeln gestartet und gestoppt werden.
- Pausieren/Fortsetzen: Laufende Timer können angehalten und später wieder fortgesetzt werden. Pausierte Timer werden visuell als „pausiert" gekennzeichnet.
- Laufzeitzähler: Die aktuelle Laufzeit wird in Echtzeit im Format HH:MM:SS angezeigt.
- Automatischer Eintrag: Beim Stoppen wird automatisch ein Datenobjekt mit Startzeit, Endzeit, Dauer sowie Pausen- und Arbeitssegmenten angelegt.
- Nebenläufigkeit: Über die Konfiguration wird festgelegt, ob mehrere Timer gleichzeitig laufen dürfen.
Pausieren und Fortsetzen
Laufende Timer können über den Pause-Button angehalten und über Fortsetzen wieder gestartet werden. So lassen sich Unterbrechungen – etwa eine Mittagspause oder ein Telefonat – aus der erfassten Arbeitszeit heraushalten, während die Bruttozeit für Nachvollziehbarkeit erhalten bleibt.
Nach einem Neuladen der Seite werden Pausen- und Segmentzustand korrekt wiederhergestellt – ein pausierter Timer bleibt pausiert, ein laufender läuft weiter.
Protokollierte und berechnete Felder
Beim finalen Stopp entsteht ein Zeiteintrag, in dem sowohl die Bruttozeit als auch die Pausen vollständig protokolliert werden:
| Feld | Art | Beschreibung |
|---|---|---|
start_time |
protokolliert | Erster Start des Timers (brutto, unverändert). |
end_time |
protokolliert | Finaler Stopp des Timers (brutto, unverändert). |
pause_logs |
protokolliert | Liste der Pausen, je Eintrag { paused_at, resumed_at }. |
timer_logs |
protokolliert | Liste der tatsächlich gearbeiteten Segmente, je Eintrag { start_time, end_time }. |
duration |
berechnet | Bruttodauer (end_time − start_time). |
paused_duration |
berechnet | Summe aller Pausenzeiten. |
net_duration |
berechnet | Echte Arbeitszeit (duration − paused_duration). |
Die berechneten Felder sind schreibgeschützt und werden automatisch ermittelt.
Beispiel eines Zeiteintrags
Ein Timer, der um 09:00 gestartet, von 10:30 bis 11:00 pausiert und um 12:00 gestoppt wurde, ergibt folgenden Eintrag:
{
"start_time": "2026-06-22T09:00:00Z",
"end_time": "2026-06-22T12:00:00Z",
"pause_logs": [
{ "paused_at": "2026-06-22T10:30:00Z", "resumed_at": "2026-06-22T11:00:00Z" }
],
"timer_logs": [
{ "start_time": "2026-06-22T09:00:00Z", "end_time": "2026-06-22T10:30:00Z" },
{ "start_time": "2026-06-22T11:00:00Z", "end_time": "2026-06-22T12:00:00Z" }
],
"duration": 10800,
"paused_duration": 1800,
"net_duration": 9000
}
Die Bruttodauer beträgt 3 Stunden (10800 Sekunden), abzüglich 30 Minuten Pause (1800 Sekunden) ergibt sich eine Nettoarbeitszeit von 2,5 Stunden (9000 Sekunden).
Nebenläufigkeits-Modi
Im Dashboard-Designer wird über die Widget-Einstellungen festgelegt, wie sich mehrere Timer zueinander verhalten:
| Modus | Beschreibung |
|---|---|
| Mehrere (Standard) | Beliebig viele Timer können gleichzeitig aktiv sein. |
| Einzeln | Es ist immer nur ein Timer gleichzeitig aktiv. |
| Exklusiv | Mehrere Timer sind erlaubt, aber nur einer ist aktiv. Beim Starten oder Fortsetzen eines Timers werden alle anderen laufenden Timer automatisch pausiert – ohne Rückfrage. |
Zusätzlich steuert der Schalter „Pausieren erlauben", ob Timer pausiert werden können. Im Modus Exklusiv ist Pausieren immer aktiv, da das automatische Anhalten anderer Timer darauf aufbaut.
Konfiguration
Im Eigenschaftenpanel werden folgende Einstellungen vorgenommen:
- Einträge-Schema: In welchem Datenschema sollen die Zeiteinträge gespeichert werden?
- Referenzquelle: Woher stammen die Referenzobjekte (z. B. Projekte)?
- Schema-Modus: Die Referenzobjekte stammen aus einem zweiten Datenschema.
- SQL-Modus: Die Referenzobjekte werden über eine SQL-Abfrage geladen (z. B. für gefilterte oder berechnete Listen).
- Feldzuordnung: Welche Felder des Einträge-Schemas werden mit Startzeit, Endzeit, Dauer und Referenz befüllt? Für Pausen kommen folgende Zuordnungen hinzu:
- Pausen-Log-Feld (
pause_logs) und Timer-Log-Feld (timer_logs). - Pausierte-Dauer-Feld (
paused_duration) und Netto-Dauer-Feld (net_duration).
- Pausen-Log-Feld (
- Nebenläufigkeit: Auswahl des Modus (Mehrere, Einzeln oder Exklusiv) sowie der Schalter „Pausieren erlauben".
Hinweis für bestehende Schemas
Beim Anlegen eines neuen Zeiterfassungs-Schemas werden die benötigten Felder automatisch erzeugt: pause_logs und timer_logs als Liste von Objekten („array of object"), paused_duration und net_duration als berechnete Felder. Bestehende Schemas erhalten diese Felder nicht automatisch – sie müssen bei Bedarf manuell ergänzt werden, damit Pausen protokolliert und Nettozeiten berechnet werden können.
Referenzmodi
| Modus | Beschreibung |
|---|---|
| Schema | Die Referenzobjekte werden direkt aus einem Datenschema geladen (z. B. alle Projekte). |
| SQL | Die Referenzobjekte werden über eine SQL-Abfrage ermittelt – z. B. nur aktive Projekte oder nur einem Team zugeordnete Aufträge. |
Beispiel
Ein Mitarbeiter öffnet sein Dashboard und sieht die Timer-Kachel mit allen laufenden Projekten. Er startet den Timer für „Projekt Alpha", arbeitet eine Stunde und stoppt ihn. Automatisch wird ein Zeiteintrag mit Start, Ende und Dauer im Datenschema „Zeiteinträge" gespeichert.
Auswertung & Reporting
Die erfassten Zeiten landen als reguläre Datenobjekte im Datenschema und stehen sofort für Auswertungen bereit:
- Tabellen-Widget: Einträge nach Mitarbeiter, Projekt oder Zeitraum filtern und gruppieren.
- Stunden-Reports: Summen pro Mitarbeiter, Projekt oder Monat per SQL-Abfrage im Data Lake.
- Export: Stundenzettel als CSV oder Excel für Lohnbuchhaltung und Kundenabrechnung exportieren.
- Prozessauslöser: Zeiteinträge können Folgeprozesse anstoßen, z. B. monatliche Freigaben oder Rechnungserstellung.
Tipps
- SQL-Modus für gefilterte Listen: Wenn nur bestimmte Projekte angezeigt werden sollen (z. B. nur aktive oder dem Nutzer zugeordnete), kann der SQL-Modus verwendet werden.
- Kombination mit Tabelle: Ein Tabellen-Widget, das die Zeiteinträge desselben Schemas anzeigt, bietet eine gute Übersicht über bereits erfasste Zeiten.
- Exklusiv-Modus für sauberes Tracking: Wer immer nur an einer Sache gleichzeitig arbeitet, wählt den Modus „Exklusiv". Beim Wechsel auf ein anderes Projekt wird der bisherige Timer automatisch pausiert, ohne dass er manuell gestoppt werden muss.
- Pausen statt Stopp: Für kurze Unterbrechungen ist die Pause-Funktion besser geeignet als ein vollständiger Stopp, da so ein zusammenhängender Zeiteintrag mit korrekter Nettozeit entsteht.