- Created 10 SVG icon files in app/static/icons/ (Feather Icons style) - Updated base.html with SVG icons in navigation and dark mode toggle - Updated dashboard.html with icons in stats cards and quick actions - Updated content_list_new.html (playlist management) with SVG icons - Updated upload_media.html with upload-related icons - Updated manage_player.html with player management icons - Icons use currentColor for automatic theme adaptation - Removed emoji dependency for better Raspberry Pi compatibility - Added ICON_INTEGRATION.md documentation
74 lines
3.6 KiB
HTML
74 lines
3.6 KiB
HTML
{% extends "base.html" %}
|
||
|
||
{% block title %}Players - DigiServer v2{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="container">
|
||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
|
||
<h1>Players</h1>
|
||
<a href="{{ url_for('players.add_player') }}" class="btn btn-success">+ Add New Player</a>
|
||
</div>
|
||
|
||
{% if players %}
|
||
<div class="card">
|
||
<table style="width: 100%; border-collapse: collapse;">
|
||
<thead>
|
||
<tr style="background: #f8f9fa; text-align: left;">
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Name</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Hostname</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Location</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Orientation</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Status</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Last Seen</th>
|
||
<th style="padding: 12px; border-bottom: 2px solid #dee2e6;">Actions</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for player in players %}
|
||
<tr style="border-bottom: 1px solid #dee2e6;">
|
||
<td style="padding: 12px;">
|
||
<strong>{{ player.name }}</strong>
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
<code style="background: #f8f9fa; padding: 2px 6px; border-radius: 3px;">{{ player.hostname }}</code>
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
{{ player.location or '-' }}
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
{{ player.orientation or 'Landscape' }}
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
{% set status = player_statuses.get(player.id, {}) %}
|
||
{% if status.get('is_online') %}
|
||
<span style="background: #28a745; color: white; padding: 3px 8px; border-radius: 3px; font-size: 12px;">Online</span>
|
||
{% else %}
|
||
<span style="background: #6c757d; color: white; padding: 3px 8px; border-radius: 3px; font-size: 12px;">Offline</span>
|
||
{% endif %}
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
{% if player.last_heartbeat %}
|
||
{{ player.last_heartbeat.strftime('%Y-%m-%d %H:%M') }}
|
||
{% else %}
|
||
<span style="color: #6c757d;">Never</span>
|
||
{% endif %}
|
||
</td>
|
||
<td style="padding: 12px;">
|
||
<a href="{{ url_for('players.manage_player', player_id=player.id) }}"
|
||
class="btn btn-info btn-sm" title="Manage Player">
|
||
⚙️ Manage
|
||
</a>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% else %}
|
||
<div style="background: #d1ecf1; border: 1px solid #bee5eb; color: #0c5460; padding: 15px; border-radius: 5px;">
|
||
ℹ️ No players yet. <a href="{{ url_for('players.add_player') }}" style="color: #0c5460; text-decoration: underline;">Add your first player</a>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
{% endblock %}
|