Add shot accuracy data calculation and visualization to player stats page

- Implement calculate_shot_accuracy() function in tv_app.py to extract individual shot values from tournament participant data
- Aggregate shot accuracy data (0-10) by tournament type (4_targets, 20_targets, 40_targets) in analyze_player_performance()
- Update modern_player_stats.html to load shot accuracy data directly from template context instead of API
- Add tournament type mapping between display names (40 Targets) and backend keys (40_targets)
- Implement CSS-based bar chart visualization that displays shot distribution with proper color gradients
- Remove unused async loadShotAccuracyData() API fetch and replace with direct template data access
- Data is now properly aggregated across all tournaments for each player and format type

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-12 13:00:52 +01:00
parent 8b503be144
commit a876c121ef
3 changed files with 322 additions and 185 deletions
+1 -58
View File
@@ -41,64 +41,7 @@
color: #333;
}
/* Standardized Navigation Bar */
.navbar {
background: white;
color: black;
padding: 15px 25px;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 2px solid #ccc;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.navbar-title {
font-size: 1.8rem;
font-weight: bold;
color: #333;
}
.navbar-controls {
display: flex;
gap: 12px;
align-items: center;
}
.nav-btn {
background: #f8f9fa;
border: 2px solid #e9ecef;
cursor: pointer;
padding: 12px 20px;
border-radius: 8px;
transition: all 0.2s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
color: #333;
text-decoration: none;
font-weight: bold;
font-size: 0.9rem;
}
.nav-btn:hover {
background: #e9ecef;
border-color: #007bff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
transform: translateY(-1px);
color: #007bff;
}
.nav-btn.active {
background: #007bff;
border-color: #0056b3;
color: white;
}
.nav-btn.active:hover {
background: #0056b3;
color: white;
}
/* Standardized Container */
/* Standardized Container */
.container {
max-width: 1400px;
margin: 0 auto;