106 lines
4.3 KiB
HTML
106 lines
4.3 KiB
HTML
<!doctype html>
|
||
<html lang="de" data-theme="dark">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<title>Admin – HexaWetter</title>
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="stylesheet" href="style.css" />
|
||
</head>
|
||
<body class="admin-page">
|
||
<header class="site-header">
|
||
<div class="container header-inner">
|
||
<a class="brand-link" href="index.html">
|
||
<div class="brand-logo">H</div>
|
||
<div>
|
||
<div class="brand-sub">HexaWetter</div>
|
||
<div class="brand-title">Admin</div>
|
||
</div>
|
||
</a>
|
||
<div class="header-actions">
|
||
<a href="index.html" class="btn btn-secondary">Zurück</a>
|
||
<button id="logoutBtn" class="btn btn-ghost admin-hidden">Abmelden</button>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="app-main">
|
||
<div class="container">
|
||
<section id="loginSection" class="admin-login-wrap">
|
||
<div class="glass-card admin-login-card">
|
||
<h1>Admin Login</h1>
|
||
<p class="muted">Geschützter Bereich für Service-Status und Einstellungen.</p>
|
||
<form id="loginForm">
|
||
<label>Benutzername<input id="adminUser" autocomplete="username" required /></label>
|
||
<label>Passwort<input id="adminPass" type="password" autocomplete="current-password" required minlength="8" /></label>
|
||
<button class="btn btn-primary full-width" type="submit" style="margin-top:12px">Anmelden</button>
|
||
</form>
|
||
<p id="loginError" class="admin-error"></p>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="dashboardSection" class="admin-hidden">
|
||
<div class="admin-toolbar">
|
||
<div>
|
||
<h1>Dashboard</h1>
|
||
<p class="muted" id="adminTime">–</p>
|
||
</div>
|
||
<div style="display:flex;gap:8px;flex-wrap:wrap">
|
||
<button id="refreshBtn" class="btn btn-secondary">Aktualisieren</button>
|
||
<button id="syncRadarBtn" class="btn btn-secondary">Radar syncen</button>
|
||
<button id="clearCacheBtn" class="btn btn-secondary">Redis-Cache leeren</button>
|
||
</div>
|
||
</div>
|
||
|
||
<section class="admin-grid" id="infraGrid"></section>
|
||
|
||
<section class="glass-card" style="margin-top:16px">
|
||
<h2>Dienste & Datenquellen</h2>
|
||
<div class="source-status-grid" id="serviceGrid"></div>
|
||
</section>
|
||
|
||
<section class="glass-card">
|
||
<h2>Speicher</h2>
|
||
<div class="admin-grid" id="storageGrid"></div>
|
||
</section>
|
||
|
||
<section class="glass-card">
|
||
<h2>Konfiguration</h2>
|
||
<pre class="config-block" id="configBlock"></pre>
|
||
</section>
|
||
|
||
<section class="glass-card">
|
||
<h2>Runtime-Einstellungen</h2>
|
||
<form id="settingsForm" class="settings-grid">
|
||
<label>Rate-Limit / Minute<input id="setRateLimit" type="number" min="10" max="1000" /></label>
|
||
<label>Cache Forecast (s)<input id="setCacheForecast" type="number" min="60" max="86400" /></label>
|
||
<label>Cache Observations (s)<input id="setCacheObs" type="number" min="60" max="86400" /></label>
|
||
<label>Cache Warnings (s)<input id="setCacheWarn" type="number" min="30" max="3600" /></label>
|
||
<label>Radar-Retention (h)<input id="setRadarRetention" type="number" min="6" max="168" /></label>
|
||
<div><button class="btn btn-primary full-width" type="submit">Speichern</button></div>
|
||
</form>
|
||
<p class="muted" id="settingsMsg" style="margin-top:10px"></p>
|
||
</section>
|
||
|
||
<section class="glass-card">
|
||
<div class="section-head">
|
||
<div><h2>Radar-Rohdaten</h2><p class="muted no-margin">Lokale DWD-Dateien und gerenderte Frames</p></div>
|
||
<span class="muted" id="renderedCount">–</span>
|
||
</div>
|
||
<div class="table-wrap">
|
||
<table>
|
||
<thead><tr><th>Datei</th><th>Größe</th><th>Geändert</th><th></th></tr></thead>
|
||
<tbody id="radarFiles"></tbody>
|
||
</table>
|
||
</div>
|
||
<div class="rendered-grid" id="renderedFrames" style="margin-top:16px"></div>
|
||
</section>
|
||
</section>
|
||
</div>
|
||
</main>
|
||
|
||
<script src="admin.js"></script>
|
||
</body>
|
||
</html>
|