Header: Statuszeile "Ohne Datenverlust seit n Tagen" + Kennzahlen zurückholen
Schlanke Wiederbelebung des alten Uptime-Schriftzugs aus der Python-Version, jetzt als kleine Zeile direkt unter dem Titel: Tage seit fixem Startpunkt (13.12.2025, Kontinuität) plus aktuelle Profil- und Beitragszahlen. - /stats: neuer öffentlicher Endpunkt (COUNT user / COUNT entry WHERE deleted=0) - app.js: renderStats() rechnet die Tage und füllt #stats per textContent - index.html: <p id="stats" class="tagline"> unter der h1 - app.css: kleine graue .tagline-Zeile Kein Inline-JS/CSS -> strikte CSP bleibt unangetastet. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -80,6 +80,13 @@ h2 {
|
||||
padding: 0 0.3rem;
|
||||
}
|
||||
|
||||
/* Kleine Statuszeile direkt unter dem Titel (Tage ohne Datenverlust + Kennzahlen). */
|
||||
.tagline {
|
||||
margin: 0.2rem 0 0;
|
||||
font-size: 0.85rem;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
#headerbar {
|
||||
background-color: white;
|
||||
text-align: center;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<a href="/static/docs/beitragsordnung.html">Beitragsordnung</a>
|
||||
</nav>
|
||||
<a href="/"><h1>Kontrollverlust</h1></a>
|
||||
<p id="stats" class="tagline"></p>
|
||||
<div id="headerbar"></div>
|
||||
</header>
|
||||
|
||||
|
||||
@@ -95,5 +95,26 @@ document.getElementById("entry-form").addEventListener("submit", async (e) => {
|
||||
}
|
||||
});
|
||||
|
||||
// --- Statuszeile unter dem Titel ---
|
||||
// Tage ohne Datenverlust (fester Startpunkt, Kontinuität seit der alten
|
||||
// Version) plus aktuelle Kennzahlen aus /stats.
|
||||
const dataLossStart = new Date("2025-12-13T12:44:00").getTime();
|
||||
|
||||
function plural(n, one, many) {
|
||||
return `${n} ${n === 1 ? one : many}`;
|
||||
}
|
||||
|
||||
async function renderStats() {
|
||||
const el = document.getElementById("stats");
|
||||
if (!el) return;
|
||||
const days = Math.floor((Date.now() - dataLossStart) / 86400000);
|
||||
const s = await api.get("/stats");
|
||||
el.textContent =
|
||||
`Ohne Datenverlust seit ${plural(days, "Tag", "Tagen")} · ` +
|
||||
`${plural(s.users ?? 0, "Profil", "Profile")} · ` +
|
||||
`${plural(s.entries ?? 0, "Beitrag", "Beiträge")}`;
|
||||
}
|
||||
|
||||
// --- Start ---
|
||||
refreshHeader();
|
||||
renderStats();
|
||||
|
||||
Reference in New Issue
Block a user