126 lines
4.4 KiB
HTML
126 lines
4.4 KiB
HTML
<!doctype html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Shinuwa GS Control</title>
|
|
<link rel="stylesheet" href="/styles/app.css" />
|
|
</head>
|
|
<body>
|
|
<header class="topbar">
|
|
<div class="brand">
|
|
<div class="brand__mark" aria-hidden="true">
|
|
<span></span>
|
|
</div>
|
|
<div>
|
|
<h1>Shinuwa</h1>
|
|
<p>GS Control · <span id="sessionLabel">Non connecte</span></p>
|
|
</div>
|
|
</div>
|
|
<div class="topbar__actions">
|
|
<button class="btn btn--ghost" id="refreshBtn" type="button" hidden>Rafraichir</button>
|
|
<button class="btn btn--ghost" id="logoutBtn" type="button" hidden>Deconnexion</button>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="shell">
|
|
<div id="status" class="status" hidden></div>
|
|
|
|
<section class="panel login-panel" id="loginView">
|
|
<div class="login-panel__intro">
|
|
<div class="brand__mark brand__mark--large" aria-hidden="true">
|
|
<span></span>
|
|
</div>
|
|
<p class="eyebrow">Acces securise</p>
|
|
<h2>GS Control</h2>
|
|
</div>
|
|
<form id="loginForm" class="stack">
|
|
<label for="passwordInput">Mot de passe</label>
|
|
<input id="passwordInput" type="password" autocomplete="current-password" required />
|
|
<button class="btn" type="submit">Se connecter</button>
|
|
</form>
|
|
</section>
|
|
|
|
<section id="appView" hidden>
|
|
<nav class="tabs" aria-label="Navigation">
|
|
<button class="tab tab--active" data-tab="servers" type="button">Serveurs</button>
|
|
<button class="tab" data-tab="admin" type="button" id="adminTab" hidden>Admin</button>
|
|
<button class="tab" data-tab="logs" type="button" id="logsTab" hidden>Logs</button>
|
|
</nav>
|
|
|
|
<section class="panel" data-panel="servers">
|
|
<div class="panel__header">
|
|
<div>
|
|
<p class="eyebrow">Tableau de bord</p>
|
|
<h2>Serveurs disponibles</h2>
|
|
<p>Statut synchronise toutes les 5 minutes.</p>
|
|
</div>
|
|
</div>
|
|
<div class="info-banner">
|
|
<div>
|
|
<strong>Capacite limitee</strong>
|
|
<p>Un seul serveur de jeux peut etre lance a la fois afin d'eviter de surcharger le serveur.</p>
|
|
</div>
|
|
<div>
|
|
<strong>Arret automatique</strong>
|
|
<p>Les serveurs de jeux se ferment automatiquement si aucun joueur n'est present pendant 1 h.</p>
|
|
</div>
|
|
</div>
|
|
<div class="server-grid" id="serversBody"></div>
|
|
</section>
|
|
|
|
<section class="panel" data-panel="admin" hidden>
|
|
<div class="panel__header">
|
|
<div>
|
|
<h2>Groupes</h2>
|
|
<p>Gestion des mots de passe et permissions serveur.</p>
|
|
</div>
|
|
<button class="btn btn--ghost btn--small" id="cleanupServersBtn" type="button">
|
|
Nettoyer les serveurs absents
|
|
</button>
|
|
</div>
|
|
|
|
<form id="createGroupForm" class="inline-form">
|
|
<input id="newGroupName" type="text" placeholder="Nom du groupe" required />
|
|
<input
|
|
id="newGroupPassword"
|
|
type="text"
|
|
placeholder="Mot de passe optionnel"
|
|
autocomplete="off"
|
|
/>
|
|
<div class="inline-form__actions">
|
|
<button class="btn" type="submit">Creer</button>
|
|
</div>
|
|
</form>
|
|
|
|
<div id="generatedPassword" class="notice" hidden></div>
|
|
<h3 class="section-title">Groupes existants</h3>
|
|
<div id="groupsList" class="groups-grid"></div>
|
|
</section>
|
|
|
|
<section class="panel" data-panel="logs" hidden>
|
|
<div class="panel__header">
|
|
<div>
|
|
<h2>Logs de lancement</h2>
|
|
<p>Conservation automatique sur 7 jours.</p>
|
|
</div>
|
|
</div>
|
|
<div class="table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Date</th>
|
|
<th>Groupe</th>
|
|
<th>Serveur</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="logsBody"></tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
</section>
|
|
</main>
|
|
|
|
<script type="module" src="/scripts/app.js"></script>
|
|
</body>
|
|
</html>
|