107 lines
3.2 KiB
Plaintext
107 lines
3.2 KiB
Plaintext
<%- include('partials/page-start') %>
|
|
|
|
<%- include('partials/page-header', { title, subtitle: 'Vue d\'ensemble du serveur en temps réel' }) %>
|
|
|
|
<section class="stats-grid">
|
|
<article class="stat-card">
|
|
<span class="stat-label">Joueurs en ligne</span>
|
|
<strong class="stat-value accent"><%= fmt.formatNumber(stats.onlinePlayers) %></strong>
|
|
</article>
|
|
<article class="stat-card">
|
|
<span class="stat-label">Joueurs inscrits</span>
|
|
<strong class="stat-value"><%= fmt.formatNumber(stats.totalPlayers) %></strong>
|
|
</article>
|
|
<article class="stat-card">
|
|
<span class="stat-label">Niveau moyen</span>
|
|
<strong class="stat-value"><%= stats.averageLevel %></strong>
|
|
</article>
|
|
<article class="stat-card">
|
|
<span class="stat-label">Money en circulation</span>
|
|
<strong class="stat-value"><%= fmt.formatMoney(stats.totalMoney) %></strong>
|
|
</article>
|
|
<article class="stat-card">
|
|
<span class="stat-label">Groupes actifs</span>
|
|
<strong class="stat-value"><%= fmt.formatNumber(stats.totalGroups) %></strong>
|
|
</article>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<div class="panel-header">
|
|
<h2>Joueurs connectés</h2>
|
|
<span class="badge"><%= onlinePlayers.length %></span>
|
|
</div>
|
|
<% if (onlinePlayers.length === 0) { %>
|
|
<p class="empty">Aucun joueur connecté pour le moment.</p>
|
|
<% } else { %>
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Joueur</th>
|
|
<th>Niveau</th>
|
|
<th>Classe</th>
|
|
<th>Race</th>
|
|
<th>Money</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% onlinePlayers.forEach(function(p) { %>
|
|
<tr>
|
|
<td>
|
|
<span class="player-name">
|
|
<span class="status-dot online inline"></span>
|
|
<%= p.display_name %>
|
|
</span>
|
|
</td>
|
|
<td><%= p.level %></td>
|
|
<td><%= p.classLabel %></td>
|
|
<td><%= p.raceLabel %></td>
|
|
<td><%= fmt.formatMoney(p.money) %></td>
|
|
<td><a class="link" href="/players/<%= p.uuid %>">Profil</a></td>
|
|
</tr>
|
|
<% }); %>
|
|
</tbody>
|
|
</table>
|
|
<% } %>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<div class="panel-header">
|
|
<h2>Dernières connexions</h2>
|
|
</div>
|
|
<% if (recentPlayers.length === 0) { %>
|
|
<p class="empty">Aucun joueur enregistré.</p>
|
|
<% } else { %>
|
|
<table class="table">
|
|
<thead>
|
|
<tr>
|
|
<th>Joueur</th>
|
|
<th>Niveau</th>
|
|
<th>Statut</th>
|
|
<th>Dernière connexion</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% recentPlayers.forEach(function(p) { %>
|
|
<tr>
|
|
<td><%= p.display_name %></td>
|
|
<td><%= p.level %></td>
|
|
<td>
|
|
<% if (p.isOnline) { %>
|
|
<span class="tag tag-online">En ligne</span>
|
|
<% } else { %>
|
|
<span class="tag tag-offline">Hors ligne</span>
|
|
<% } %>
|
|
</td>
|
|
<td><%= fmt.formatTimestamp(p.last_date_connected) %></td>
|
|
<td><a class="link" href="/players/<%= p.uuid %>">Profil</a></td>
|
|
</tr>
|
|
<% }); %>
|
|
</tbody>
|
|
</table>
|
|
<% } %>
|
|
</section>
|
|
|
|
<%- include('partials/page-end') %>
|