no tournament started

This commit is contained in:
2026-02-08 19:57:30 +01:00
parent baeaad0d49
commit d6f8ff78e1
6 changed files with 509 additions and 1729 deletions
@@ -0,0 +1,460 @@
{
"league": {
"league_id": "league_20251115_094741",
"created_at": "2025-11-15T09:47:41.711914",
"tournament_type": "20_targets",
"total_tournaments": 5,
"current_tournament": 3,
"participants": {
"1": {
"name": "Domen Pleterski",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 320,
"tens_count": 3,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 320,
"tens_count": 2,
"participated": true
}
],
"total_score": 640,
"final_score": 0,
"tournaments_participated": 0
},
"5": {
"name": "Jože Verhnjak",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 295,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 293,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 293,
"tens_count": 2,
"participated": true
}
],
"total_score": 881,
"final_score": 0,
"tournaments_participated": 0
},
"7": {
"name": "Branko Pokeržnik",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 316,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 332,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 318,
"tens_count": 1,
"participated": true
}
],
"total_score": 966,
"final_score": 0,
"tournaments_participated": 0
},
"9": {
"name": "Janez Božič",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 264,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 276,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 261,
"tens_count": 1,
"participated": true
}
],
"total_score": 801,
"final_score": 0,
"tournaments_participated": 0
},
"10": {
"name": "Mitja Čeh",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 329,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 312,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 307,
"tens_count": 2,
"participated": true
}
],
"total_score": 948,
"final_score": 0,
"tournaments_participated": 0
},
"11": {
"name": "Rado Kefer",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 275,
"tens_count": 0,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 314,
"tens_count": 3,
"participated": true
}
],
"total_score": 589,
"final_score": 0,
"tournaments_participated": 0
},
"14": {
"name": "Karli Proje",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": true
}
],
"total_score": 0,
"final_score": 0,
"tournaments_participated": 0
},
"15": {
"name": "Jan Pleterski",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 269,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 267,
"tens_count": 1,
"participated": true
}
],
"total_score": 536,
"final_score": 0,
"tournaments_participated": 0
},
"16": {
"name": "Silvo Poročnik",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 293,
"tens_count": 3,
"participated": true
},
{
"tournament": 2,
"score": 278,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 282,
"tens_count": 3,
"participated": true
}
],
"total_score": 853,
"final_score": 0,
"tournaments_participated": 0
},
"17": {
"name": "Dušan Onuk",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 313,
"tens_count": 4,
"participated": true
},
{
"tournament": 2,
"score": 325,
"tens_count": 2,
"participated": true
},
{
"tournament": 3,
"score": 192,
"tens_count": 3,
"participated": true
}
],
"total_score": 830,
"final_score": 0,
"tournaments_participated": 0
},
"18": {
"name": "Matjaž Pleterski",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 280,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 276,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 307,
"tens_count": 0,
"participated": true
}
],
"total_score": 863,
"final_score": 0,
"tournaments_participated": 0
},
"22": {
"name": "Doris Fesel",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": true
}
],
"total_score": 0,
"final_score": 0,
"tournaments_participated": 0
},
"24": {
"name": "Jože Verdinek",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 311,
"tens_count": 5,
"participated": true
},
{
"tournament": 2,
"score": 315,
"tens_count": 5,
"participated": true
},
{
"tournament": 3,
"score": 312,
"tens_count": 2,
"participated": true
}
],
"total_score": 938,
"final_score": 0,
"tournaments_participated": 0
},
"50": {
"name": "Vid Ravnjak",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 302,
"tens_count": 6,
"participated": true
},
{
"tournament": 2,
"score": 309,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
}
],
"total_score": 611,
"final_score": 0,
"tournaments_participated": 0
},
"51": {
"name": "Robi Ovčar",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 269,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 265,
"tens_count": 1,
"participated": true
}
],
"total_score": 534,
"final_score": 0,
"tournaments_participated": 0
}
},
"completed_tournaments": [
{
"tournament_number": 1,
"tournament_type": "20_targets",
"finished_at": "2025-11-15T11:50:43.358782",
"results_summary": {
"participants": 15,
"shots_per_participant": 40,
"total_shots": 600,
"format_description": "20 Targets (2 shots each)"
}
},
{
"tournament_number": 2,
"tournament_type": "20_targets",
"finished_at": "2025-12-13T12:13:29.550924",
"results_summary": {
"participants": 12,
"shots_per_participant": 40,
"total_shots": 480,
"format_description": "20 Targets (2 shots each)"
}
},
{
"tournament_number": 3,
"tournament_type": "20_targets",
"finished_at": "2026-01-10T11:34:15.800129",
"results_summary": {
"participants": 14,
"shots_per_participant": 40,
"total_shots": 560,
"format_description": "20 Targets (2 shots each)"
}
}
],
"league_finished": false
},
"archived_at": "2026-02-08T19:57:11.791065"
}
-457
View File
@@ -1,457 +0,0 @@
{
"league_id": "league_20251115_094741",
"created_at": "2025-11-15T09:47:41.711914",
"tournament_type": "20_targets",
"total_tournaments": 5,
"current_tournament": 3,
"participants": {
"1": {
"name": "Domen Pleterski",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 320,
"tens_count": 3,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 320,
"tens_count": 2,
"participated": true
}
],
"total_score": 640,
"final_score": 0,
"tournaments_participated": 0
},
"5": {
"name": "Jože Verhnjak",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 295,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 293,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 293,
"tens_count": 2,
"participated": true
}
],
"total_score": 881,
"final_score": 0,
"tournaments_participated": 0
},
"7": {
"name": "Branko Pokeržnik",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 316,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 332,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 318,
"tens_count": 1,
"participated": true
}
],
"total_score": 966,
"final_score": 0,
"tournaments_participated": 0
},
"9": {
"name": "Janez Božič",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 264,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 276,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 261,
"tens_count": 1,
"participated": true
}
],
"total_score": 801,
"final_score": 0,
"tournaments_participated": 0
},
"10": {
"name": "Mitja Čeh",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 329,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 312,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 307,
"tens_count": 2,
"participated": true
}
],
"total_score": 948,
"final_score": 0,
"tournaments_participated": 0
},
"11": {
"name": "Rado Kefer",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 275,
"tens_count": 0,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 314,
"tens_count": 3,
"participated": true
}
],
"total_score": 589,
"final_score": 0,
"tournaments_participated": 0
},
"14": {
"name": "Karli Proje",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": true
}
],
"total_score": 0,
"final_score": 0,
"tournaments_participated": 0
},
"15": {
"name": "Jan Pleterski",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 269,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 267,
"tens_count": 1,
"participated": true
}
],
"total_score": 536,
"final_score": 0,
"tournaments_participated": 0
},
"16": {
"name": "Silvo Poročnik",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 293,
"tens_count": 3,
"participated": true
},
{
"tournament": 2,
"score": 278,
"tens_count": 3,
"participated": true
},
{
"tournament": 3,
"score": 282,
"tens_count": 3,
"participated": true
}
],
"total_score": 853,
"final_score": 0,
"tournaments_participated": 0
},
"17": {
"name": "Dušan Onuk",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 313,
"tens_count": 4,
"participated": true
},
{
"tournament": 2,
"score": 325,
"tens_count": 2,
"participated": true
},
{
"tournament": 3,
"score": 192,
"tens_count": 3,
"participated": true
}
],
"total_score": 830,
"final_score": 0,
"tournaments_participated": 0
},
"18": {
"name": "Matjaž Pleterski",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 280,
"tens_count": 2,
"participated": true
},
{
"tournament": 2,
"score": 276,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 307,
"tens_count": 0,
"participated": true
}
],
"total_score": 863,
"final_score": 0,
"tournaments_participated": 0
},
"22": {
"name": "Doris Fesel",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": true
}
],
"total_score": 0,
"final_score": 0,
"tournaments_participated": 0
},
"24": {
"name": "Jože Verdinek",
"joker_used": false,
"tournament_results": [
{
"tournament": 1,
"score": 311,
"tens_count": 5,
"participated": true
},
{
"tournament": 2,
"score": 315,
"tens_count": 5,
"participated": true
},
{
"tournament": 3,
"score": 312,
"tens_count": 2,
"participated": true
}
],
"total_score": 938,
"final_score": 0,
"tournaments_participated": 0
},
"50": {
"name": "Vid Ravnjak",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 302,
"tens_count": 6,
"participated": true
},
{
"tournament": 2,
"score": 309,
"tens_count": 4,
"participated": true
},
{
"tournament": 3,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
}
],
"total_score": 611,
"final_score": 0,
"tournaments_participated": 0
},
"51": {
"name": "Robi Ovčar",
"joker_used": true,
"tournament_results": [
{
"tournament": 1,
"score": 269,
"tens_count": 1,
"participated": true
},
{
"tournament": 2,
"score": 0,
"tens_count": 0,
"participated": false,
"joker": true
},
{
"tournament": 3,
"score": 265,
"tens_count": 1,
"participated": true
}
],
"total_score": 534,
"final_score": 0,
"tournaments_participated": 0
}
},
"completed_tournaments": [
{
"tournament_number": 1,
"tournament_type": "20_targets",
"finished_at": "2025-11-15T11:50:43.358782",
"results_summary": {
"participants": 15,
"shots_per_participant": 40,
"total_shots": 600,
"format_description": "20 Targets (2 shots each)"
}
},
{
"tournament_number": 2,
"tournament_type": "20_targets",
"finished_at": "2025-12-13T12:13:29.550924",
"results_summary": {
"participants": 12,
"shots_per_participant": 40,
"total_shots": 480,
"format_description": "20 Targets (2 shots each)"
}
},
{
"tournament_number": 3,
"tournament_type": "20_targets",
"finished_at": "2026-01-10T11:34:15.800129",
"results_summary": {
"participants": 14,
"shots_per_participant": 40,
"total_shots": 560,
"format_description": "20 Targets (2 shots each)"
}
}
],
"league_finished": false
}
File diff suppressed because it is too large Load Diff
+8 -16
View File
@@ -209,14 +209,14 @@
.champion-section {
background: white;
border-radius: 0 0 12px 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: none;
padding: 12px;
flex: 1;
display: flex;
flex-direction: column;
overflow: visible;
overflow: hidden;
min-height: 0;
border-top: 1px solid #e9ecef;
border: 1px solid #e9ecef;
}
.champion-title {
@@ -241,7 +241,7 @@
.champion-card {
background: white;
border-radius: 12px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
box-shadow: none;
padding: 12px 12px 18px 12px;
display: flex;
flex-direction: column;
@@ -251,21 +251,12 @@
position: relative;
overflow: hidden;
border: 1px solid #e9ecef;
border-top: 6px solid;
border-top-width: 6px;
justify-content: flex-end;
}
.champion-card::before {
content: '';
position: absolute;
top: 6px;
left: 1px;
right: 1px;
bottom: 1px;
background: linear-gradient(135deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0) 100%);
pointer-events: none;
z-index: 1;
border-radius: 0 0 11px 11px;
display: none;
}
.champion-card:hover {
@@ -432,10 +423,11 @@
.right-column {
background: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: none;
overflow: hidden;
display: flex;
flex-direction: column;
border: 1px solid #e9ecef;
}
.table-header {
+6 -6
View File
@@ -220,8 +220,8 @@
flex-direction: column;
overflow: visible;
min-height: 0;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
border-top: 1px solid #e9ecef;
box-shadow: none;
border: 1px solid #e9ecef;
}
.podium-title {
@@ -245,7 +245,7 @@
.podium-card {
background: white;
border-radius: 12px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
box-shadow: none;
padding: 12px 12px 18px 12px;
display: flex;
flex-direction: column;
@@ -254,7 +254,6 @@
transition: all 0.3s ease;
position: relative;
overflow: hidden;
border-top: 6px solid;
border: 1px solid #e9ecef;
border-top-width: 6px;
justify-content: flex-end;
@@ -274,7 +273,7 @@
}
.podium-card:hover {
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
box-shadow: none;
}
.podium-card.rank-1 {
@@ -394,10 +393,11 @@
.right-column {
background: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: none;
overflow: hidden;
display: flex;
flex-direction: column;
border: 1px solid #e9ecef;
}
.table-header {
+29 -2
View File
@@ -643,8 +643,17 @@ def view_archived_tournament(filename):
for i, participant in enumerate(participants):
participant['rank'] = i + 1
# Sanitize tournament_data - convert to JSON-serializable format
sanitized_tournament = {
'tournament_id': str(tournament_data.get('tournament_id', '')),
'tournament_type': str(tournament_data.get('tournament_type', '20_targets')),
'total_rounds': tournament_data.get('total_rounds', 1),
'created_at': str(tournament_data.get('created_at', ''))
}
# Use the existing results display template but with archived data
return render_template('results_display.html',
tournament=sanitized_tournament,
results=results_data,
participants=participants,
archived=True,
@@ -1154,7 +1163,15 @@ def results_display():
for i, participant in enumerate(participants):
participant['rank'] = i + 1
# Create sanitized tournament data for template
sanitized_tournament = {
'tournament_id': str(results.get('tournament_id', '')),
'tournament_type': str(results.get('tournament_type', '20_targets')),
'total_rounds': results.get('total_rounds', 1)
}
return render_template('results_display.html',
tournament=sanitized_tournament,
results=results,
participants=participants,
league=None,
@@ -1734,9 +1751,19 @@ def api_dashboard_state():
response_data['current_round'] = tournament_state.get('current_round', 1)
response_data['total_rounds'] = tournament_state.get('total_rounds', 1)
try:
current_round_data = get_current_round_data()
if current_round_data:
response_data['player_names'] = [p['name'] for p in current_round_data.get('players', [])]
if current_round_data and isinstance(current_round_data, dict):
players = current_round_data.get('players', [])
if isinstance(players, list):
response_data['player_names'] = [
str(p.get('name', 'Unknown')) if isinstance(p, dict) else 'Unknown'
for p in players if p
]
except Exception as e:
# Log error but don't fail - player_names will remain empty list
print(f"Error getting player names for dashboard state: {e}")
response_data['player_names'] = []
if league_state:
response_data['league_tournament'] = league_state.get('current_tournament', 1)