feat: show AIDA + Teams status badges in dashboard, keep original WLED logic

- WLED only controlled when AIDA status is known (original behavior:
  abwesend->off, homeoffice->yellow, anwesend->Teams color)
- Teams presence always queried and stored for dashboard display
- Dashboard shows colored badges for both AIDA and Teams status
- Works without AIDA CSV (Teams status still visible in dashboard)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-23 22:23:22 +02:00
co-authored by Claude Opus 4.6
parent 8d178eac6d
commit 5e9af4e268
2 changed files with 98 additions and 61 deletions
+45 -13
View File
@@ -38,19 +38,51 @@
<div class="mb-2">
<small class="text-muted d-block mb-1">Segment {{ seg.index }}</small>
{% if seg.user %}
{% if seg.aida == '-' %}
<div class="segment-bar" style="background: #f0f0f0; border-color: #ccc;">
<span class="status-dot me-2" style="background: #ccc;"></span>
{{ seg.user }}
</div>
<small class="text-muted"><i class="bi bi-hourglass-split"></i> Warte auf Status...</small>
{% else %}
<div class="segment-bar" style="background: rgba({{ seg.r }}, {{ seg.g }}, {{ seg.b }}, 0.3); border-color: rgb({{ seg.r }}, {{ seg.g }}, {{ seg.b }});">
<span class="status-dot me-2" style="background: rgb({{ seg.r }}, {{ seg.g }}, {{ seg.b }});"></span>
{{ seg.user }}
</div>
<small class="text-muted">{{ seg.aida }} / {{ seg.teams }}</small>
{% endif %}
{% if seg.aida == '-' and seg.teams == '-' %}
<div class="segment-bar" style="background: #f0f0f0; border-color: #ccc;">
<span class="status-dot me-2" style="background: #ccc;"></span>
{{ seg.user }}
</div>
<small class="text-muted"><i class="bi bi-hourglass-split"></i> Warte auf Status...</small>
{% else %}
<div class="segment-bar" style="background: rgba({{ seg.r }}, {{ seg.g }}, {{ seg.b }}, 0.3); border-color: rgb({{ seg.r }}, {{ seg.g }}, {{ seg.b }});">
<span class="status-dot me-2" style="background: rgb({{ seg.r }}, {{ seg.g }}, {{ seg.b }});"></span>
{{ seg.user }}
</div>
<div class="d-flex gap-2 mt-1">
{% if seg.aida == 'anwesend' %}
<span class="badge bg-success"><i class="bi bi-building"></i> Anwesend</span>
{% elif seg.aida == 'abwesend' %}
<span class="badge bg-secondary"><i class="bi bi-door-open"></i> Abwesend</span>
{% elif seg.aida == 'homeoffice' %}
<span class="badge bg-warning text-dark"><i class="bi bi-house"></i> Homeoffice</span>
{% else %}
<span class="badge bg-light text-dark">{{ seg.aida }}</span>
{% endif %}
{% if seg.teams != '-' %}
{% if 'available' in seg.teams %}
<span class="badge bg-success"><i class="bi bi-microsoft-teams"></i> Verfuegbar</span>
{% elif 'busy' in seg.teams or 'inacall' in seg.teams or 'inameeting' in seg.teams %}
<span class="badge bg-danger"><i class="bi bi-microsoft-teams"></i> Beschaeftigt</span>
{% elif 'donotdisturb' in seg.teams %}
<span class="badge" style="background:#8b00ff;color:#fff"><i class="bi bi-microsoft-teams"></i> Nicht stoeren</span>
{% elif 'away' in seg.teams or 'berightback' in seg.teams %}
<span class="badge bg-warning text-dark"><i class="bi bi-microsoft-teams"></i> Abwesend</span>
{% elif 'offline' in seg.teams %}
<span class="badge bg-secondary"><i class="bi bi-microsoft-teams"></i> Offline</span>
{% elif 'presenting' in seg.teams %}
<span class="badge bg-danger"><i class="bi bi-microsoft-teams"></i> Praesentiert</span>
{% elif 'outofoffice' in seg.teams %}
<span class="badge bg-secondary"><i class="bi bi-microsoft-teams"></i> Nicht im Buero</span>
{% elif 'inactive' in seg.teams or 'offwork' in seg.teams %}
<span class="badge bg-secondary"><i class="bi bi-microsoft-teams"></i> Inaktiv</span>
{% else %}
<span class="badge bg-light text-dark"><i class="bi bi-microsoft-teams"></i> {{ seg.teams }}</span>
{% endif %}
{% endif %}
</div>
{% endif %}
{% else %}
<div class="segment-bar empty">
<i class="bi bi-dash-circle me-2"></i> Nicht zugeordnet