gcp-hockey-results/motm_app/templates/motm_management.html

273 lines
16 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="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MOTM Management - HKFC Men's C Team</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.fixture-header {
background-color: #f8f9fa;
font-weight: bold;
}
.reset-section {
background-color: #fff3cd;
border: 1px solid #ffeaa7;
border-radius: 0.375rem;
padding: 1rem;
margin-bottom: 2rem;
}
.data-section {
background-color: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 0.375rem;
padding: 1rem;
margin-bottom: 2rem;
}
</style>
</head>
<body>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<h1>MOTM/DotD Management</h1>
<p class="lead">Manage and reset Man of the Match and Dick of the Day counts</p>
<div class="mb-3">
<a href="/admin" class="btn btn-outline-primary">Back to Admin Dashboard</a>
<a href="/admin/motm" class="btn btn-outline-secondary">MOTM Admin</a>
</div>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert alert-{{ 'danger' if category == 'error' else 'success' }} alert-dismissible fade show" role="alert">
{{ message }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
{% endfor %}
{% endif %}
{% endwith %}
<!-- Reset Controls -->
<div class="reset-section">
<h3>Reset Controls</h3>
<p class="text-muted">Use these controls to reset MOTM/DotD counts for specific fixtures or all data.</p>
<div class="row">
<div class="col-md-4">
<h5>Reset Specific Fixture</h5>
<form method="POST" onsubmit="return confirm('Are you sure you want to reset MOTM/DotD counts for this fixture?')">
<input type="hidden" name="action" value="reset_fixture">
<div class="mb-3">
<select name="fixture_date" class="form-select" required>
<option value="">Select fixture date...</option>
{% for date in fixture_dates %}
<option value="{{ date }}">{{ date }}</option>
{% endfor %}
</select>
</div>
<button type="submit" class="btn btn-warning">Reset Fixture</button>
</form>
</div>
<div class="col-md-4">
<h5>Reset All Totals</h5>
<p class="text-muted">Reset motmtotal, dotdtotal, assiststotal, goalstotal columns</p>
<form method="POST" onsubmit="return confirm('Are you sure you want to reset all MOTM/DotD totals? This will affect the Player of the Year calculations.')">
<input type="hidden" name="action" value="reset_totals">
<button type="submit" class="btn btn-danger">Reset All Totals</button>
</form>
</div>
<div class="col-md-4">
<h5>Reset Everything</h5>
<p class="text-muted">Reset all MOTM/DotD data including fixture-specific columns</p>
<form method="POST" onsubmit="return confirm('Are you sure you want to reset ALL MOTM/DotD data? This action cannot be undone.')">
<input type="hidden" name="action" value="reset_all">
<button type="submit" class="btn btn-danger">Reset Everything</button>
</form>
</div>
</div>
<div class="row mt-3">
<div class="col-md-4">
<h5>Sync Totals</h5>
<p class="text-muted">Update stored totals to match calculated values from fixture columns</p>
<form method="POST" onsubmit="return confirm('Sync stored totals with calculated values?')">
<input type="hidden" name="action" value="sync_totals">
<button type="submit" class="btn btn-info">Sync Totals</button>
</form>
</div>
</div>
</div>
<!-- Current Data Display -->
<div class="data-section">
<h3>Current MOTM/DotD Data</h3>
{% if motm_data %}
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead class="table-dark">
<tr>
<th>Player #</th>
<th>Player Name</th>
<th>MOTM Total</th>
<th>DotD Total</th>
<th>Goals Total</th>
<th>Assists Total</th>
{% for date in fixture_dates %}
<th class="fixture-header">MOTM {{ date }}</th>
<th class="fixture-header">DotD {{ date }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for player in motm_data %}
<tr>
<td>{{ player.playernumber }}</td>
<td>{{ player.playername }}</td>
<td>
<span class="badge bg-primary">{{ player.calculated_motmtotal or 0 }}</span>
{% if player.motmtotal != player.calculated_motmtotal %}
<small class="text-warning">(stored: {{ player.motmtotal or 0 }})</small>
{% endif %}
</td>
<td>
<span class="badge bg-secondary">{{ player.calculated_dotdtotal or 0 }}</span>
{% if player.dotdtotal != player.calculated_dotdtotal %}
<small class="text-warning">(stored: {{ player.dotdtotal or 0 }})</small>
{% endif %}
</td>
<td>
<span class="badge bg-success">{{ player.goalstotal or 0 }}</span>
</td>
<td>
<span class="badge bg-info">{{ player.assiststotal or 0 }}</span>
</td>
{% for date in fixture_dates %}
<td>
{% set motm_col = 'motm_' + date %}
{% set dotd_col = 'dotd_' + date %}
{% if player[motm_col] and player[motm_col] > 0 %}
<span class="badge bg-primary">{{ player[motm_col] }}</span>
<button type="button" class="btn btn-sm btn-outline-danger ms-1"
onclick="resetPlayerFixture({{ player.playernumber }}, '{{ date }}')"
title="Reset this player's counts for {{ date }}">
×
</button>
{% else %}
<span class="text-muted">0</span>
{% endif %}
</td>
<td>
{% if player[dotd_col] and player[dotd_col] > 0 %}
<span class="badge bg-secondary">{{ player[dotd_col] }}</span>
<button type="button" class="btn btn-sm btn-outline-danger ms-1"
onclick="resetPlayerFixture({{ player.playernumber }}, '{{ date }}')"
title="Reset this player's counts for {{ date }}">
×
</button>
{% else %}
<span class="text-muted">0</span>
{% endif %}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="alert alert-info">
<h5>No MOTM/DotD data found</h5>
<p>There is no data in the _hkfc_c_motm table. This might be because no votes have been cast yet.</p>
</div>
{% endif %}
</div>
<!-- Column Management -->
<div class="reset-section">
<h3>Column Management</h3>
<p class="text-muted">Drop unwanted columns from the _hkfc_c_motm table.</p>
<div class="row">
<div class="col-md-6">
<h5>Drop Specific Column</h5>
<form method="POST" onsubmit="return confirm('Are you sure you want to drop this column? This action cannot be undone!')">
<input type="hidden" name="action" value="drop_column">
<div class="mb-3">
<select name="column_name" class="form-select" required>
<option value="">Select column to drop...</option>
{% for date in fixture_dates %}
<option value="motm_{{ date }}">motm_{{ date }}</option>
<option value="dotd_{{ date }}">dotd_{{ date }}</option>
{% endfor %}
<option value="motm_none">motm_none</option>
<option value="dotd_none">dotd_none</option>
</select>
</div>
<button type="submit" class="btn btn-danger">Drop Column</button>
</form>
</div>
<div class="col-md-6">
<h5>Drop Fixture Columns</h5>
<form method="POST" onsubmit="return confirm('Are you sure you want to drop all columns for this fixture? This action cannot be undone!')">
<input type="hidden" name="action" value="drop_fixture_columns">
<div class="mb-3">
<select name="fixture_date" class="form-select" required>
<option value="">Select fixture date...</option>
{% for date in fixture_dates %}
<option value="{{ date }}">{{ date }}</option>
{% endfor %}
</select>
</div>
<button type="submit" class="btn btn-danger">Drop Fixture Columns</button>
</form>
</div>
</div>
</div>
<!-- Available Fixtures -->
<div class="data-section">
<h3>Available Fixtures</h3>
{% if fixture_dates %}
<p>The following fixture dates have MOTM/DotD columns in the database:</p>
<ul>
{% for date in fixture_dates %}
<li><code>{{ date }}</code> - Columns: <code>motm_{{ date }}</code>, <code>dotd_{{ date }}</code></li>
{% endfor %}
</ul>
{% else %}
<div class="alert alert-warning">
<h5>No fixture columns found</h5>
<p>No fixture-specific MOTM/DotD columns were found in the database.</p>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<!-- Hidden form for individual player resets -->
<form id="playerResetForm" method="POST" style="display: none;">
<input type="hidden" name="action" value="reset_player_fixture">
<input type="hidden" name="player_number" id="playerNumber">
<input type="hidden" name="fixture_date" id="fixtureDate">
</form>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
function resetPlayerFixture(playerNumber, fixtureDate) {
if (confirm(`Are you sure you want to reset MOTM/DotD counts for player #${playerNumber} in fixture ${fixtureDate}?`)) {
document.getElementById('playerNumber').value = playerNumber;
document.getElementById('fixtureDate').value = fixtureDate;
document.getElementById('playerResetForm').submit();
}
}
</script>
</body>
</html>