Newest Main page regreshing. Updated calculator. Removed unused stuff.

This commit is contained in:
2026-04-11 17:09:00 +02:00
parent d6f8ff78e1
commit 30d480f053
16 changed files with 1578 additions and 3705 deletions
+75 -2
View File
@@ -79,6 +79,7 @@ def load_results():
def save_results(results_data):
return ResultsStorage.save_results(results_data)
def archive_tournament(tournament_data, results_data):
return ArchiveStorage.archive_tournament(tournament_data, results_data)
@@ -1010,7 +1011,6 @@ def tournament():
players_data = load_players()
tournament_state = load_tournament_state()
league_state = load_league_state()
return render_template('tournament.html',
players=players_data['players'],
tournament_state=tournament_state,
@@ -1500,6 +1500,25 @@ def reset_tournament():
except Exception as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
@app.route('/api/tournament/cancel', methods=['POST'])
def cancel_league_tournament():
"""Cancel the current tournament within a league, rolling back the tournament counter"""
try:
if os.path.exists(TOURNAMENT_FILE):
os.remove(TOURNAMENT_FILE)
if os.path.exists(RESULTS_FILE):
os.remove(RESULTS_FILE)
# Roll back league's current_tournament counter
league_state = load_league_state()
if league_state and league_state.get('current_tournament', 1) > 1:
league_state['current_tournament'] -= 1
save_league_state(league_state)
return jsonify({'status': 'success'})
except Exception as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
# RESULTS API Routes (Updated)
@app.route('/api/results/participant/<int:player_id>', methods=['POST'])
def update_participant_scores(player_id):
@@ -1736,6 +1755,10 @@ def api_dashboard_state():
"""Get current dashboard state for polling updates (TV display sync)"""
tournament_state = load_tournament_state()
league_state = load_league_state()
results = load_results()
tournament_finished = results.get('tournament_finished', False) if results else False
league_finished = league_state.get('league_finished', False) if league_state else False
response_data = {
'tournament_active': tournament_state is not None,
@@ -1744,7 +1767,9 @@ def api_dashboard_state():
'league_active': league_state is not None,
'league_tournament': None,
'league_total': None,
'player_names': []
'player_names': [],
'tournament_finished': tournament_finished,
'league_finished': league_finished,
}
if tournament_state:
@@ -1769,8 +1794,56 @@ def api_dashboard_state():
response_data['league_tournament'] = league_state.get('current_tournament', 1)
response_data['league_total'] = league_state.get('total_tournaments', 6)
settings = load_settings()
response_data['tv_view'] = settings.get('tv_view', 'cameras')
response_data['tv_url'] = settings.get('tv_url')
response_data['event_active'] = False
response_data['event_player_names'] = []
# When no active tournament/results, expose latest archive filename so clients can redirect correctly
response_data['archive_filename'] = None
response_data['league_archive_filename'] = None
if not tournament_state and not results:
try:
archive_files = sorted(
glob.glob(os.path.join(ARCHIVE_DIR, 'tournament_*.json')),
key=os.path.getmtime, reverse=True
)
if archive_files:
response_data['archive_filename'] = os.path.basename(archive_files[0])
except Exception:
pass
try:
league_archive_files = sorted(
glob.glob(os.path.join(LEAGUE_ARCHIVE_DIR, 'league_*.json')),
key=os.path.getmtime, reverse=True
)
if league_archive_files:
response_data['league_archive_filename'] = os.path.basename(league_archive_files[0])
except Exception:
pass
return jsonify(response_data)
@app.route('/api/tv/view', methods=['POST'])
def set_tv_view():
"""Set the desired TV display view (cameras or draft)"""
data = request.get_json() or {}
view = data.get('view', 'cameras')
if view not in ('cameras', 'draft', 'results'):
return jsonify({'status': 'error', 'message': 'Invalid view'}), 400
settings = load_settings()
settings['tv_view'] = view
# Optional explicit URL for the TV to navigate to (e.g. a specific league archive)
tv_url = data.get('tv_url')
if tv_url:
settings['tv_url'] = tv_url
elif view == 'cameras':
settings.pop('tv_url', None)
save_settings(settings)
return jsonify({'status': 'success', 'tv_view': view})
# Add this route to your Flask app (around line 850, with the other mobile routes)
@app.route('/mobile/remote')