Files
Ninjaserver/public/admin-dashboard.html
2025-09-23 14:13:24 +02:00

255 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Dashboard - NinjaCross</title>
<link rel="icon" type="image/x-icon" href="/pictures/favicon.ico">
<link rel="stylesheet" href="/css/admin-dashboard.css">
</head>
<body>
<div class="header">
<h1>🛡️ Admin Dashboard</h1>
<div class="user-info">
<span id="username">Loading...</span>
<span id="accessBadge" class="access-badge">Level ?</span>
<button id="generatorBtn" class="btn btn-success" style="display: none;">
🔧 Lizenzgenerator
</button>
<button id="logoutBtn" class="btn btn-danger">Logout</button>
</div>
</div>
<div class="container">
<!-- Statistiken -->
<div class="stats-grid">
<div class="stat-card">
<div class="stat-number" id="totalPlayers">-</div>
<div class="stat-label">Spieler</div>
</div>
<div class="stat-card">
<div class="stat-number" id="totalRuns">-</div>
<div class="stat-label">Läufe</div>
</div>
<div class="stat-card">
<div class="stat-number" id="totalLocations">-</div>
<div class="stat-label">Standorte</div>
</div>
<div class="stat-card">
<div class="stat-number" id="totalAdminUsers">-</div>
<div class="stat-label">Admin-Benutzer</div>
</div>
</div>
<!-- Hauptseiten-Besuche -->
<div class="page-stats-section">
<h2>🏠 Hauptseiten-Besuche</h2>
<div class="page-stats-grid">
<div class="page-stat-card">
<h3>Heute</h3>
<div id="todayStats" class="page-stats-content">Lade...</div>
</div>
<div class="page-stat-card">
<h3>Diese Woche</h3>
<div id="weekStats" class="page-stats-content">Lade...</div>
</div>
<div class="page-stat-card">
<h3>Dieser Monat</h3>
<div id="monthStats" class="page-stats-content">Lade...</div>
</div>
<div class="page-stat-card">
<h3>Gesamt</h3>
<div id="totalStats" class="page-stats-content">Lade...</div>
</div>
</div>
<!-- Verlinkungs-Statistiken -->
<div class="link-stats-section">
<h3>🔗 Account-Verknüpfungen</h3>
<div class="link-stats-grid">
<div class="link-stat-card">
<div class="link-stat-number" id="totalPlayersCount">-</div>
<div class="link-stat-label">Gesamt Spieler</div>
</div>
<div class="link-stat-card">
<div class="link-stat-number" id="linkedPlayersCount">-</div>
<div class="link-stat-label">Verknüpfte Spieler</div>
</div>
<div class="link-stat-card">
<div class="link-stat-number" id="linkPercentage">-</div>
<div class="link-stat-label">Verknüpfungsrate</div>
</div>
</div>
</div>
</div>
<!-- Dashboard Cards -->
<div class="dashboard-grid">
<!-- Benutzer-Verwaltung -->
<div class="card">
<h3><span class="icon">👥</span> Benutzer-Verwaltung</h3>
<p>Verwalte Supabase-Benutzer und deren RFID-Verknüpfungen</p>
<button class="btn" onclick="showUserManagement()">Benutzer anzeigen</button>
</div>
<!-- Spieler-Verwaltung -->
<div class="card">
<h3><span class="icon">🏃</span> Spieler-Verwaltung</h3>
<p>Verwalte Spieler und deren RFID-UIDs</p>
<button class="btn" onclick="showPlayerManagement()">Spieler anzeigen</button>
</div>
<!-- Blacklist-Verwaltung -->
<div class="card">
<h3><span class="icon">🚫</span> Blacklist-Verwaltung</h3>
<p>Verwalte verbotene Namen und Begriffe</p>
<button class="btn" onclick="showBlacklistManagement()">Blacklist verwalten</button>
</div>
<!-- Läufe-Verwaltung -->
<div class="card">
<h3><span class="icon">⏱️</span> Läufe-Verwaltung</h3>
<p>Zeige und lösche Läufe</p>
<button class="btn" onclick="showRunManagement()">Läufe anzeigen</button>
</div>
<!-- Standort-Verwaltung -->
<div class="card">
<h3><span class="icon">📍</span> Standort-Verwaltung</h3>
<p>Verwalte Standorte und deren Koordinaten</p>
<button class="btn" onclick="showLocationManagement()">Standorte anzeigen</button>
</div>
<!-- Admin-Benutzer -->
<div class="card">
<h3><span class="icon">🔐</span> Admin-Benutzer</h3>
<p>Verwalte Admin-Benutzer und Zugriffsrechte</p>
<button class="btn" onclick="showAdminUserManagement()">Admins anzeigen</button>
</div>
<!-- Achievement-Verwaltung -->
<div class="card">
<h3><span class="icon">🏆</span> Achievement-Verwaltung</h3>
<p>Verwalte Achievements und Spieler-Achievements</p>
<button class="btn" onclick="showAchievementManagement()">Achievements verwalten</button>
</div>
<!-- System-Info -->
<div class="card">
<h3><span class="icon">📊</span> System-Informationen</h3>
<p>Server-Status und Systemdaten</p>
<button class="btn" onclick="showSystemInfo()">Info anzeigen</button>
</div>
</div>
<!-- Daten-Anzeige Bereich -->
<div id="dataSection" style="display: none;">
<div class="card">
<h3 id="dataTitle">Daten</h3>
<div class="search-container">
<input type="text" id="searchInput" class="search-input" placeholder="Suchen...">
<button class="btn" onclick="refreshData()">🔄 Aktualisieren</button>
<button class="btn btn-success" onclick="showAddModal()"> Hinzufügen</button>
</div>
<div id="dataContent">
<div class="loading">Lade Daten...</div>
</div>
</div>
</div>
</div>
<!-- Modals -->
<div id="addModal" class="modal">
<div class="modal-content">
<span class="close">&times;</span>
<h3 id="modalTitle">Element hinzufügen</h3>
<div class="message" id="modalMessage"></div>
<form id="addForm">
<div id="formFields"></div>
<button type="submit" class="btn">Speichern</button>
<button type="button" class="btn btn-danger" onclick="closeModal()">Abbrechen</button>
</form>
</div>
</div>
<div id="confirmModal" class="modal">
<div class="modal-content">
<span class="close">&times;</span>
<h3>Bestätigung</h3>
<p id="confirmMessage">Sind Sie sicher?</p>
<button id="confirmYes" class="btn btn-danger">Ja, löschen</button>
<button id="confirmNo" class="btn">Abbrechen</button>
</div>
</div>
<!-- Blacklist Management Modal -->
<div id="blacklistModal" class="modal">
<div class="modal-content" style="max-width: 800px;">
<span class="close" onclick="closeModal('blacklistModal')">&times;</span>
<h3>🚫 Blacklist-Verwaltung</h3>
<div class="message" id="blacklistMessage"></div>
<!-- Test Name Section -->
<div style="border: 1px solid #ddd; padding: 1rem; margin-bottom: 1rem; border-radius: 5px;">
<h4>Name testen</h4>
<div style="display: flex; gap: 1rem; margin-bottom: 1rem;">
<input type="text" id="testFirstname" placeholder="Vorname" style="flex: 1; padding: 0.5rem;">
<input type="text" id="testLastname" placeholder="Nachname" style="flex: 1; padding: 0.5rem;">
<button class="btn" onclick="testNameAgainstBlacklist()">Testen</button>
<button class="btn" onclick="testLevenshteinDetailed()" style="background: #9c27b0; color: white;">Levenshtein Details</button>
</div>
<div id="testResult" style="padding: 0.5rem; border-radius: 3px; display: none;"></div>
</div>
<!-- Add New Entry Section -->
<div style="border: 1px solid #ddd; padding: 1rem; margin-bottom: 1rem; border-radius: 5px;">
<h4>Neuen Eintrag hinzufügen</h4>
<div style="display: flex; gap: 1rem; margin-bottom: 1rem;">
<input type="text" id="newTerm" placeholder="Begriff" style="flex: 1; padding: 0.5rem;">
<select id="newCategory" style="flex: 1; padding: 0.5rem;">
<option value="historical">Historisch belastet</option>
<option value="offensive">Beleidigend/anstößig</option>
<option value="titles">Titel/Berufsbezeichnung</option>
<option value="brands">Markenname</option>
<option value="inappropriate">Unpassend</option>
<option value="racial">Rassistisch/ethnisch</option>
<option value="religious">Religiös beleidigend</option>
<option value="disability">Behinderungsbezogen</option>
<option value="leetspeak">Verschleiert</option>
<option value="cyberbullying">Cyberbullying</option>
<option value="drugs">Drogenbezogen</option>
<option value="violence">Gewalt/Bedrohung</option>
</select>
<button class="btn btn-success" onclick="addToBlacklist()">Hinzufügen</button>
</div>
</div>
<!-- Blacklist Content -->
<div id="blacklistContent">
<div class="loading">Lade Blacklist...</div>
</div>
</div>
</div>
<!-- Footer -->
<footer class="footer">
<div class="footer-content">
<div class="footer-links">
<a href="/impressum.html" class="footer-link">Impressum</a>
<a href="/datenschutz.html" class="footer-link">Datenschutz</a>
<button id="cookie-settings-footer" class="footer-link cookie-settings-btn">Cookie-Einstellungen</button>
</div>
<div class="footer-text">
<p>&copy; 2024 NinjaCross. Alle Rechte vorbehalten.</p>
</div>
</div>
</footer>
<!-- Application JavaScript -->
<script src="/js/cookie-consent.js"></script>
<script src="/js/admin-dashboard.js"></script>
</body>
</html>