54 lines
1.8 KiB
HTML
54 lines
1.8 KiB
HTML
{% extends "base.html" %}
|
|
{% block content %}
|
|
|
|
<h2 class="d-flex justify-content-between align-items-center">
|
|
Dashboard
|
|
<span id="dashboard-timer" class="badge bg-success">-- s</span>
|
|
</h2>
|
|
<div class="row row-cols-1 row-cols-md-6 g-3">
|
|
{% for d in devices %}
|
|
<div class="col">
|
|
<div class="card text-center p-2">
|
|
<div class="card-header">{{ d[1] }}</div>
|
|
<div class="card-body">
|
|
<span class="fw-bold" style="color:
|
|
{% if d[2] == 0 %}gray
|
|
{% elif status[d[0]]=='online' %}green
|
|
{% else %}red
|
|
{% endif %};">
|
|
{% if d[2] == 0 %}
|
|
Deaktiviert
|
|
{% else %}
|
|
{% if status[d[0]] %}{{ status[d[0]]|capitalize }}{% else %}Unbekannt{% endif %}
|
|
{% endif %}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
const intervalMinutes = {{ interval | int }};
|
|
const intervalMilliseconds = intervalMinutes * 60 * 1000;
|
|
let lastUpdateTime = Date.now(); // optional: vom letzten Refresh / Log-Eintrag
|
|
|
|
function updateDashboardTimer() {
|
|
const now = Date.now();
|
|
const elapsed = now - lastUpdateTime;
|
|
const remainingMs = intervalMilliseconds - (elapsed % intervalMilliseconds);
|
|
const remainingSec = Math.ceil(remainingMs / 1000);
|
|
document.getElementById("dashboard-timer").innerText = remainingSec + " s";
|
|
}
|
|
|
|
// Optional: reset timer beim manuellen Refresh
|
|
// lastUpdateTime = Date.now();
|
|
|
|
setInterval(updateDashboardTimer, 1000);
|
|
updateDashboardTimer(); // direkt beim Laden
|
|
});
|
|
</script>
|
|
|
|
|
|
{% endblock %}
|