86 lines
3.7 KiB
HTML
86 lines
3.7 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Uptime Status</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
|
|
<style>
|
|
.status-badge.bg-danger {
|
|
animation: pulse-red 1.5s infinite;
|
|
}
|
|
@keyframes pulse-green {
|
|
0% { box-shadow: 0 0 0 0 rgba(25, 135, 84, 0.7); }
|
|
70% { box-shadow: 0 0 0 10px rgba(25, 135, 84, 0); }
|
|
100% { box-shadow: 0 0 0 0 rgba(25, 135, 84, 0); }
|
|
}
|
|
@keyframes pulse-red {
|
|
0% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0.7); }
|
|
70% { box-shadow: 0 0 0 10px rgba(220, 53, 69, 0); }
|
|
100% { box-shadow: 0 0 0 0 rgba(220, 53, 69, 0); }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="d-flex flex-column vh-100">
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
|
<div class="container">
|
|
<i class="bi bi-bar-chart-line-fill"></i> Uptime Status
|
|
</a>
|
|
<div class="ms-auto">
|
|
<a href="{{ url_for('admin.index') }}" class="btn btn-outline-light">
|
|
<i class="bi bi-person-circle"></i> Admin-Bereich
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main class="container mt-4 flex-grow-1">
|
|
<h1 class="mb-4">Statusübersicht</h1>
|
|
|
|
{% if not monitors_with_status %}
|
|
<div class="alert alert-info text-center">
|
|
<h4>Keine Monitore konfiguriert.</h4>
|
|
<p>Bitte loggen Sie sich in den <a href="{{ url_for('admin.index') }}" class="alert-link">Admin-Bereich</a> ein, um neue Monitore hinzuzufügen.</p>
|
|
</div>
|
|
{% else %}
|
|
<div class="table-responsive">
|
|
<table class="table table-bordered table-hover">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>Dienst</th>
|
|
<th>Status</th>
|
|
<th>Letzte Prüfung</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for monitor, last_log in monitors_with_status %}
|
|
<tr>
|
|
<td>
|
|
<a href="{{ url_for('monitor_details', monitor_id=monitor.id) }}" class="text-decoration-none fw-bold">{{ monitor.name }}</a>
|
|
{% if monitor.status_override_message %}
|
|
<div class="text-muted fst-italic small">
|
|
<i class="bi bi-info-circle"></i> {{ monitor.status_override_message }}
|
|
</div>
|
|
{% endif %}
|
|
</td>
|
|
{% include '_status_badge.html' %}
|
|
<td>
|
|
{% if last_log %}
|
|
{{ last_log.timestamp.strftime('%d.%m.%Y %H:%M:%S UTC') }}
|
|
{% else %}
|
|
<span class="text-muted">Nie</span>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% endif %}
|
|
</main>
|
|
|
|
{% include '_footer.html' %}
|
|
|
|
<script src="ht
|
|
</html> |