{% extends "base.html" %} {% block title %}Session-Tracking{% endblock %} {% macro active_sortable_header(label, field, current_sort, current_order) %} {% if current_sort == field %} {% else %} {% endif %} {{ label }} {% if current_sort == field %} {% if current_order == 'asc' %}↑{% else %}↓{% endif %} {% else %} ↕ {% endif %} {% endmacro %} {% macro ended_sortable_header(label, field, current_sort, current_order) %} {% if current_sort == field %} {% else %} {% endif %} {{ label }} {% if current_sort == field %} {% if current_order == 'asc' %}↑{% else %}↓{% endif %} {% else %} ↕ {% endif %} {% endmacro %} {% block extra_css %} {% endblock %} {% block content %}

Session-Tracking

🟢 Aktive Sessions ({{ active_sessions|length }})
{% if active_sessions %}
{{ active_sortable_header('Kunde', 'customer', active_sort, active_order) }} {{ active_sortable_header('Lizenz', 'license', active_sort, active_order) }} {{ active_sortable_header('IP-Adresse', 'ip', active_sort, active_order) }} {{ active_sortable_header('Gestartet', 'started', active_sort, active_order) }} {{ active_sortable_header('Letzter Heartbeat', 'last_heartbeat', active_sort, active_order) }} {{ active_sortable_header('Inaktiv seit', 'inactive', active_sort, active_order) }} {% for session in active_sessions %} {% endfor %}
Aktion
{{ session[3] }} {{ session[2][:12] }}... {{ session[4] or '-' }} {{ session[6].strftime('%d.%m %H:%M') }} {{ session[7].strftime('%d.%m %H:%M') }} {% if session[8] < 1 %} Aktiv {% elif session[8] < 5 %} {{ session[8]|round|int }} Min. {% else %} {{ session[8]|round|int }} Min. {% endif %}
Sessions gelten als inaktiv nach 5 Minuten ohne Heartbeat {% else %}

Keine aktiven Sessions vorhanden.

{% endif %}
⏸️ Beendete Sessions (letzte 24 Stunden)
{% if recent_sessions %}
{{ ended_sortable_header('Kunde', 'customer', ended_sort, ended_order) }} {{ ended_sortable_header('Lizenz', 'license', ended_sort, ended_order) }} {{ ended_sortable_header('IP-Adresse', 'ip', ended_sort, ended_order) }} {{ ended_sortable_header('Gestartet', 'started', ended_sort, ended_order) }} {{ ended_sortable_header('Beendet', 'ended_at', ended_sort, ended_order) }} {{ ended_sortable_header('Dauer', 'duration', ended_sort, ended_order) }} {% for session in recent_sessions %} {% endfor %}
{{ session[3] }} {{ session[2][:12] }}... {{ session[4] or '-' }} {{ session[5].strftime('%d.%m %H:%M') }} {{ session[6].strftime('%d.%m %H:%M') }} {% if session[7] < 60 %} {{ session[7]|round|int }} Min. {% else %} {{ (session[7]/60)|round(1) }} Std. {% endif %}
{% else %}

Keine beendeten Sessions in den letzten 24 Stunden.

{% endif %}
{% endblock %}