Includes atomic migrations, per-rule reminder semantics, first-run helper script and the note on the undecided UI chat idea. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
52 lines
1.9 KiB
HTML
52 lines
1.9 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Dashboard{% endblock %}
|
|
{% block content %}
|
|
<h1>Dashboard</h1>
|
|
{% if setup_open %}
|
|
<div class="flash info" role="status">Die Einrichtung ist noch nicht abgeschlossen. <a href="/setup">Zum Setup-Assistenten</a></div>
|
|
{% endif %}
|
|
<section class="card">
|
|
<h2>Systemstatus
|
|
<span class="badge {{ 'ok' if result.ok else 'error' }}">{{ 'Alles in Ordnung' if result.ok else 'Probleme' }}</span>
|
|
</h2>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead><tr><th>Prüfung</th><th>Status</th><th>Details</th></tr></thead>
|
|
<tbody>
|
|
{% for name, check in result.checks.items() %}
|
|
<tr>
|
|
<td>{{ name }}</td>
|
|
<td><span class="badge {{ 'ok' if check.ok else 'error' }}">{{ 'OK' if check.ok else 'Fehler' }}</span></td>
|
|
<td>{{ check.detail }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
<section class="card">
|
|
<h2>Offene Probleme <span class="badge info">{{ alerts_24h }} Alarme in 24 h</span></h2>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead><tr><th>Host</th><th>Service</th><th>Status</th><th>Seit</th><th>Meldung</th><th>Output</th></tr></thead>
|
|
<tbody>
|
|
{% for p in open_problems %}
|
|
<tr>
|
|
<td>{{ p.host }}</td>
|
|
<td>{{ p.service }}</td>
|
|
<td><span class="badge {{ p.state | state_class }}">{{ p.state | display_state(p.service) }}</span></td>
|
|
<td>{{ p.last_state_change | fmt_ts }}</td>
|
|
<td><span class="badge {{ {'reported': 'ok', 'waiting': 'info', 'suppressed': 'warn', 'due': 'info'}.get(p.report.kind, 'info') }}">{{ p.report.label }}</span></td>
|
|
<td>{{ p.output }}
|
|
{% if p.in_downtime %}<span class="badge info">Downtime</span>{% endif %}
|
|
{% if p.flapping %}<span class="badge warn">flappt</span>{% endif %}</td>
|
|
</tr>
|
|
{% else %}
|
|
<tr><td colspan="6" class="muted">Keine offenen Probleme.</td></tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
{% endblock %}
|