ajouté dark mode et changer l'affichage des équipes dans les match. Changé les couleurs pour ressembler plus au couleur de l'udes

This commit is contained in:
cedrick2711
2026-07-14 23:34:56 -04:00
parent b19d5db8db
commit 5a090c0872
20 changed files with 632 additions and 107 deletions
+41 -4
View File
@@ -59,7 +59,7 @@
<link href="https://cdn.jsdelivr.net/npm/[email protected]/index.global.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/index.global.min.js"></script>
<script>
var canScheduleMatches = {{ 'true' if current_user.can_schedule_matches() else 'false' }};
var canScheduleMatches = {% if current_user.can_schedule_matches() %}true{% else %}false{% endif %};
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
@@ -73,7 +73,9 @@ document.addEventListener('DOMContentLoaded', function() {
events: '/matches/api/events',
eventClick: function(info) {
showEventModal(info.event);
}
},
slotMinTime: '12:00:00',
slotMaxTime: '24:00:00'
});
calendar.render();
@@ -95,8 +97,8 @@ function showEventModal(event) {
var content = '<div class="detail-grid">';
content += '<div class="detail-item"><span class="detail-label">Type</span><span class="detail-value">';
content += '<span class="badge badge-' + (type === 'tryout' ? 'info' : (props.match_type === 'team_vs_team' ? 'success' : 'warning')) + '">';
content += (type === 'tryout' ? 'Tryout' : (props.match_type === 'team_vs_team' ? 'Team Match' : 'Player Scrim')) + '</span>';
content += '<span class="badge badge-' + (type === 'tryout' ? 'info' : (props.match_type === 'team_vs_team' || props.match_type === 'player_vs_player' ? 'success' : 'warning')) + '">';
content += (type === 'tryout' ? 'Tryout' : (props.match_type === 'team_vs_team' ? 'Team Match' : (props.match_type === 'player_vs_player' ? 'Player Match' : 'Player Scrim'))) + '</span>';
content += '</span></div>';
content += '<div class="detail-item"><span class="detail-label">Title</span><span class="detail-value">' + title + '</span></div>';
content += '<div class="detail-item"><span class="detail-label">Date</span><span class="detail-value">' + date + '</span></div>';
@@ -105,6 +107,41 @@ function showEventModal(event) {
content += '<span class="badge badge-' + (props.status || 'scheduled') + '">' + (props.status || 'scheduled') + '</span>';
content += '</span></div>';
// Add team separation for matches
if (type === 'match' && props.participants) {
content += '<div class="detail-item full-width"><span class="detail-label">Teams</span><span class="detail-value">';
if (props.match_type === 'team_vs_team') {
// For team vs team, participants is "Team1 vs Team2"
var teams = props.participants.split(' vs ');
if (teams.length >= 2) {
content += '<div class="match-teams">';
content += '<div class="match-team"><span class="team-name">' + teams[0] + '</span></div>';
content += '<div class="match-vs">vs</div>';
content += '<div class="match-team"><span class="team-name">' + teams[1] + '</span></div>';
content += '</div>';
} else {
content += props.participants;
}
} else if (props.match_type === 'player_vs_player') {
// For player vs player, we need to parse the participants
// The format is "player1, player2 vs player3, player4"
var parts = props.participants.split(' vs ');
if (parts.length >= 2) {
content += '<div class="match-teams">';
content += '<div class="match-team"><span class="team-name">Team 1</span><ul class="team-players-list"><li>' + parts[0].split(', ').join('</li><li>') + '</li></ul></div>';
content += '<div class="match-vs">vs</div>';
content += '<div class="match-team"><span class="team-name">Team 2</span><ul class="team-players-list"><li>' + parts[1].split(', ').join('</li><li>') + '</li></ul></div>';
content += '</div>';
} else {
content += props.participants;
}
} else {
// For player scrim, just show the list
content += props.participants;
}
content += '</span></div>';
}
if (props.description) {
content += '<div class="detail-item full-width"><span class="detail-label">Description</span><span class="detail-value">' + props.description + '</span></div>';
}
+2 -2
View File
@@ -194,9 +194,9 @@
{% block scripts %}
<script>
// Time slots from 5pm (17:00) to 12am (24:00)
// Time slots from 12pm (12:00) to 12am (24:00)
var TIME_SLOTS = [];
for (var h = 17; h <= 24; h++) {
for (var h = 12; h <= 24; h++) {
for (var m = 0; m < 60; m += 30) {
if (h === 24 && m > 0) continue;
var displayHour;
+78 -41
View File
@@ -240,47 +240,84 @@
</div>
</div>
</div>
<div class="dashboard-grid">
<div class="card">
<div class="card-header">
<h3><i class="fas fa-clipboard-list"></i> My Registrations</h3>
</div>
<div class="card-body">
<table class="table">
<thead><tr><th>Tryout</th><th>Date</th><th>Status</th></tr></thead>
<tbody>
{% for r in stats.my_registrations %}
<tr>
<td><a href="{{ url_for('tryouts.view_tryout', tryout_id=r.tryout.id) }}">{{ r.tryout.title }}</a></td>
<td>{{ r.tryout.date.strftime('%m/%d/%Y') }}</td>
<td><span class="badge badge-{{ r.status }}">{{ r.status }}</span></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="card">
<div class="card-header">
<h3><i class="fas fa-star"></i> My Evaluations</h3>
</div>
<div class="card-body">
<table class="table">
<thead><tr><th>Tryout</th><th>Evaluator</th><th>Score</th><th>Date</th></tr></thead>
<tbody>
{% for e in stats.my_eval_list %}
<tr>
<td>{{ e.tryout.title }}</td>
<td>{{ e.evaluator.full_name }}</td>
<td><span class="score">{{ e.overall_score }}</span></td>
<td>{{ e.created_at.strftime('%m/%d/%Y') }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
<div class="dashboard-grid">
<div class="card">
<div class="card-header">
<h3><i class="fas fa-futbol"></i> My Next Matches</h3>
</div>
<div class="card-body">
{% if stats.next_matches %}
<table class="table">
<thead><tr><th>Tryout</th><th>Match</th><th>Date & Time</th><th>Opponent</th></tr></thead>
<tbody>
{% for item in stats.next_matches %}
<tr>
<td><a href="{{ url_for('tryouts.view_tryout', tryout_id=item.tryout.id) }}">{{ item.tryout.title }}</a></td>
<td>{{ item.match.title }}</td>
<td>
{{ item.match.date.strftime('%m/%d/%Y') }}
{% if item.match.start_time %} at {{ item.match.start_time.strftime('%I:%M %p') }}{% endif %}
</td>
<td>
{% if item.match.match_type == 'team_vs_team' and item.team %}
{% if item.match.team1_id == item.team.id %}
vs {{ item.match.team2.name if item.match.team2 else 'TBD' }}
{% else %}
vs {{ item.match.team1.name if item.match.team1 else 'TBD' }}
{% endif %}
{% else %}
-
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<p class="text-muted">No upcoming matches yet.</p>
{% endif %}
</div>
</div>
<div class="card">
<div class="card-header">
<h3><i class="fas fa-clipboard-list"></i> My Registrations</h3>
</div>
<div class="card-body">
<table class="table">
<thead><tr><th>Tryout</th><th>Date</th><th>Status</th></tr></thead>
<tbody>
{% for r in stats.my_registrations %}
<tr>
<td><a href="{{ url_for('tryouts.view_tryout', tryout_id=r.tryout.id) }}">{{ r.tryout.title }}</a></td>
<td>{{ r.tryout.date.strftime('%m/%d/%Y') }}</td>
<td><span class="badge badge-{{ r.status }}">{{ r.status }}</span></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div class="card">
<div class="card-header">
<h3><i class="fas fa-star"></i> My Evaluations</h3>
</div>
<div class="card-body">
<table class="table">
<thead><tr><th>Tryout</th><th>Evaluator</th><th>Score</th><th>Date</th></tr></thead>
<tbody>
{% for e in stats.my_eval_list %}
<tr>
<td>{{ e.tryout.title }}</td>
<td>{{ e.evaluator.full_name }}</td>
<td><span class="score">{{ e.overall_score }}</span></td>
<td>{{ e.created_at.strftime('%m/%d/%Y') }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
{% elif user.role == 'scout' %}
<div class="stats-grid">
+4 -4
View File
@@ -112,7 +112,7 @@
<div class="team-rosters mt-3">
{% if match.team1 %}
<div class="team-roster">
<h5>{{ match.team1.name }} Players</h5>
<h5>{{ match.team1.name }}</h5>
<ul class="team-members-list">
{% for member in match.team1.members %}
<li>{{ member.player.full_name if member.player else 'Unknown Player' }}{% if member.position %} <span class="position-tag">{{ member.position }}</span>{% endif %}</li>
@@ -124,7 +124,7 @@
{% endif %}
{% if match.team2 %}
<div class="team-roster">
<h5>{{ match.team2.name }} Players</h5>
<h5>{{ match.team2.name }}</h5>
<ul class="team-members-list">
{% for member in match.team2.members %}
<li>{{ member.player.full_name if member.player else 'Unknown Player' }}{% if member.position %} <span class="position-tag">{{ member.position }}</span>{% endif %}</li>
@@ -224,9 +224,9 @@
{% block scripts %}
<script>
// Time slots from 5pm (17:00) to 12am (24:00)
// Time slots from 12pm (12:00) to 12am (24:00)
var TIME_SLOTS = [];
for (var h = 17; h <= 24; h++) {
for (var h = 12; h <= 24; h++) {
for (var m = 0; m < 60; m += 30) {
if (h === 24 && m > 0) continue;
var displayHour;
+53 -23
View File
@@ -288,29 +288,59 @@
</span>
</td>
<td>{{ m.date.strftime('%m/%d/%Y') }}</td>
<td>
{% if m.match_type == 'team_vs_team' %}
{{ participants.team1 }} vs {{ participants.team2 }}
{% if participants.team1_players or participants.team2_players %}
<div class="team-roster-display mt-1">
{% if participants.team1_players %}
<small><strong>{{ m.team1.name if m.team1 else 'Team 1' }}:</strong>
{% for pl in participants.team1_players %}{{ pl.name }}{% if not loop.last %}, {% endif %}{% endfor %}
</small><br>
{% endif %}
{% if participants.team2_players %}
<small><strong>{{ m.team2.name if m.team2 else 'Team 2' }}:</strong>
{% for pl in participants.team2_players %}{{ pl.name }}{% if not loop.last %}, {% endif %}{% endfor %}
</small>
{% endif %}
</div>
{% endif %}
{% elif m.match_type == 'player_vs_player' %}
{{ participants.team1 }} vs {{ participants.team2 }}
{% else %}
{{ participants | join(', ') }}
{% endif %}
</td>
<td>
{% if m.match_type == 'team_vs_team' %}
<div class="match-teams">
<div class="match-team">
<span class="team-name">{{ m.team1.name if m.team1 else 'Team 1' }}</span>
{% if participants.team1_players %}
<ul class="team-players-list">
{% for pl in participants.team1_players %}
<li>{{ pl.name }}{% if pl.position %} <span class="position-tag">{{ pl.position }}</span>{% endif %}</li>
{% endfor %}
</ul>
{% endif %}
</div>
<div class="match-vs">vs</div>
<div class="match-team">
<span class="team-name">{{ m.team2.name if m.team2 else 'Team 2' }}</span>
{% if participants.team2_players %}
<ul class="team-players-list">
{% for pl in participants.team2_players %}
<li>{{ pl.name }}{% if pl.position %} <span class="position-tag">{{ pl.position }}</span>{% endif %}</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
{% elif m.match_type == 'player_vs_player' %}
<div class="match-teams">
<div class="match-team">
<span class="team-name">Team 1</span>
{% if participants.team1_players %}
<ul class="team-players-list">
{% for pl in participants.team1_players %}
<li>{{ pl.name }}{% if pl.position %} <span class="position-tag">{{ pl.position }}</span>{% endif %}</li>
{% endfor %}
</ul>
{% endif %}
</div>
<div class="match-vs">vs</div>
<div class="match-team">
<span class="team-name">Team 2</span>
{% if participants.team2_players %}
<ul class="team-players-list">
{% for pl in participants.team2_players %}
<li>{{ pl.name }}{% if pl.position %} <span class="position-tag">{{ pl.position }}</span>{% endif %}</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
{% else %}
{{ participants | join(', ') }}
{% endif %}
</td>
<td>
{% if m.start_time and m.end_time %}
{{ m.start_time.strftime('%H:%M') }} - {{ m.end_time.strftime('%H:%M') }}