initial commit
This commit is contained in:
89
frontend/admin.html
Normal file
89
frontend/admin.html
Normal file
@@ -0,0 +1,89 @@
|
||||
<!doctype html>
|
||||
<html lang="de" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<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="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>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="admin.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user