Add multi-league foundation

This commit is contained in:
Christian Krakau-Louis
2026-05-22 20:47:28 +02:00
parent e032994628
commit 15e1dc227b
23 changed files with 775 additions and 205 deletions
+20 -3
View File
@@ -6,6 +6,20 @@
<p class="text-gray-600">Create and manage QR code sets for your pub quiz events</p>
</div>
<form method="get" action="/qr/" class="mb-6 flex flex-col sm:flex-row sm:items-end gap-3">
<div>
<label for="league_filter" class="block text-sm font-medium text-gray-700">League</label>
<select id="league_filter" name="league_id" onchange="this.form.submit()"
class="mt-1 border border-gray-300 rounded-md px-3 py-2 bg-white focus:outline-none focus:ring-2 focus:ring-irish-green">
{% for league in leagues %}
<option value="{{ league.id }}" {% if selected_league and selected_league.id == league.id %}selected{% endif %}>
{{ league.name }}
</option>
{% endfor %}
</select>
</div>
</form>
<div class="grid md:grid-cols-3 gap-8">
<!-- QR Set Creation -->
<div class="bg-white rounded-lg shadow-md p-6">
@@ -15,6 +29,7 @@
</p>
<form id="qrSetForm" action="/qr/sets" method="post" class="space-y-4">
<input type="hidden" name="league_id" value="{{ selected_league.id }}">
<div>
<label for="name" class="block text-sm font-medium text-gray-700">Set Name</label>
<input type="text" name="name" id="name" required
@@ -140,7 +155,8 @@
<div class="px-6 py-4">
<div class="text-sm text-gray-500">
<p>Created: {{ qr_set.created_at.strftime('%Y-%m-%d') }}</p>
<p>QR Codes: {% if qr_set.qr_codes %}{{ qr_set.qr_codes | length }}{% else %}0{% endif %}</p>
<p>League: {{ qr_set.league.name if qr_set.league else "Default League" }}</p>
<p>QR Codes: {% if qr_set.qr_codes %}{{ qr_set.qr_codes | length }}{% else %}0{% endif %}</p>
</div>
<div class="mt-4 flex justify-between">
<a href="/qr/sets/{{ qr_set.id }}" class="text-irish-green hover:underline">
@@ -199,11 +215,12 @@
quickQrForm.addEventListener('submit', function(e) {
e.preventDefault();
const points = document.getElementById('qr-points').value;
const leagueId = '{{ selected_league.id }}';
// Generate QR code
qrImage.innerHTML = '<img src="/qr/generate/' + points + '" alt="QR Code" class="mx-auto" />';
qrImage.innerHTML = '<img src="/qr/generate/' + points + '?league_id=' + leagueId + '" alt="QR Code" class="mx-auto" />';
qrResult.classList.remove('hidden');
});
});
</script>
{% endblock %}
{% endblock %}
+5 -3
View File
@@ -3,7 +3,7 @@
<div class="max-w-6xl mx-auto p-4">
<div class="mb-8">
<div class="flex items-center">
<a href="/qr" class="text-irish-green hover:underline mr-4">
<a href="/qr{% if qr_set.league_id %}/?league_id={{ qr_set.league_id }}{% endif %}" class="text-irish-green hover:underline mr-4">
<i class="fas fa-arrow-left"></i> Back to Dashboard
</a>
<h1 class="text-3xl font-bold text-irish-green">{{ qr_set.name }}</h1>
@@ -11,7 +11,9 @@
{% if qr_set.description %}
<p class="text-gray-600 mt-2">{{ qr_set.description }}</p>
{% endif %}
<p class="text-sm text-gray-500 mt-1">Created on {{ qr_set.created_at.strftime('%Y-%m-%d') }}</p>
<p class="text-sm text-gray-500 mt-1">
{{ qr_set.league.name if qr_set.league else "Default League" }} • Created on {{ qr_set.created_at.strftime('%Y-%m-%d') }}
</p>
</div>
<div class="grid md:grid-cols-3 gap-8">
@@ -270,4 +272,4 @@
}
});
</script>
{% endblock %}
{% endblock %}