Update daily summaries to show unified ELO change instead of separate singles/doubles
This commit is contained in:
parent
539c1c9d08
commit
1116e36a00
@ -1016,3 +1016,16 @@ Starting Pickleball ELO Tracker Server on port 3000...
|
|||||||
➕ Add Player: http://localhost:3000/players/new
|
➕ Add Player: http://localhost:3000/players/new
|
||||||
🎾 Record Match: http://localhost:3000/matches/new
|
🎾 Record Match: http://localhost:3000/matches/new
|
||||||
|
|
||||||
|
🏓 Pickleball ELO Tracker v3.0
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Starting Pickleball ELO Tracker Server on port 3000...
|
||||||
|
|
||||||
|
✅ Server running at http://localhost:3000
|
||||||
|
📊 Leaderboard: http://localhost:3000/leaderboard
|
||||||
|
📜 Match History: http://localhost:3000/matches
|
||||||
|
👥 Players: http://localhost:3000/players
|
||||||
|
⚖️ Team Balancer: http://localhost:3000/balance
|
||||||
|
➕ Add Player: http://localhost:3000/players/new
|
||||||
|
🎾 Record Match: http://localhost:3000/matches/new
|
||||||
|
|
||||||
|
|||||||
BIN
pickleball-elo
BIN
pickleball-elo
Binary file not shown.
41
src/main.rs
41
src/main.rs
@ -2273,21 +2273,15 @@ async fn daily_summary_handler(
|
|||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let mut players_html = String::new();
|
let mut players_html = String::new();
|
||||||
for (name, email, singles_change, doubles_change) in &player_rating_changes {
|
for (name, _email, singles_change, doubles_change) in &player_rating_changes {
|
||||||
let format_change = |c: f64| {
|
|
||||||
if c > 0.0 { format!("<span style='color:#28a745;'>+{:.0}</span>", c) }
|
|
||||||
else if c < 0.0 { format!("<span style='color:#dc3545;'>{:.0}</span>", c) }
|
|
||||||
else { "—".to_string() }
|
|
||||||
};
|
|
||||||
let total = singles_change + doubles_change;
|
let total = singles_change + doubles_change;
|
||||||
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
||||||
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
||||||
else { "—".to_string() };
|
else { "—".to_string() };
|
||||||
let has_email = if !email.is_empty() { "✅" } else { "❌" };
|
|
||||||
|
|
||||||
players_html.push_str(&format!(
|
players_html.push_str(&format!(
|
||||||
"<tr><td>{}</td><td>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td></tr>",
|
"<tr><td>{}</td><td style='text-align:center;'>{}</td></tr>",
|
||||||
name, has_email, format_change(*singles_change), format_change(*doubles_change), total_str
|
name, total_str
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2564,10 +2558,7 @@ async fn daily_summary_handler(
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Player</th>
|
<th>Player</th>
|
||||||
<th>Email</th>
|
<th>ELO Δ</th>
|
||||||
<th>Singles Δ</th>
|
|
||||||
<th>Doubles Δ</th>
|
|
||||||
<th>Total</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -2738,19 +2729,14 @@ async fn send_daily_summary(
|
|||||||
|
|
||||||
let mut players_email_html = String::new();
|
let mut players_email_html = String::new();
|
||||||
for (name, singles_change, doubles_change) in &player_rating_changes {
|
for (name, singles_change, doubles_change) in &player_rating_changes {
|
||||||
let format_change = |c: f64| {
|
|
||||||
if c > 0.0 { format!("<span style='color:#28a745;'>+{:.0}</span>", c) }
|
|
||||||
else if c < 0.0 { format!("<span style='color:#dc3545;'>{:.0}</span>", c) }
|
|
||||||
else { "—".to_string() }
|
|
||||||
};
|
|
||||||
let total = singles_change + doubles_change;
|
let total = singles_change + doubles_change;
|
||||||
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
||||||
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
||||||
else { "—".to_string() };
|
else { "—".to_string() };
|
||||||
|
|
||||||
players_email_html.push_str(&format!(
|
players_email_html.push_str(&format!(
|
||||||
"<tr><td>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td></tr>",
|
"<tr><td>{}</td><td style='text-align:center;'>{}</td></tr>",
|
||||||
name, format_change(*singles_change), format_change(*doubles_change), total_str
|
name, total_str
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2982,9 +2968,7 @@ async fn send_daily_summary(
|
|||||||
<table style="width: 100%; border-collapse: collapse;">
|
<table style="width: 100%; border-collapse: collapse;">
|
||||||
<tr style="background: #003594; color: white;">
|
<tr style="background: #003594; color: white;">
|
||||||
<th style="padding: 8px; text-align: left;">Player</th>
|
<th style="padding: 8px; text-align: left;">Player</th>
|
||||||
<th style="padding: 8px; text-align: center;">Singles Δ</th>
|
<th style="padding: 8px; text-align: center;">ELO Δ</th>
|
||||||
<th style="padding: 8px; text-align: center;">Doubles Δ</th>
|
|
||||||
<th style="padding: 8px; text-align: center;">Total</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
{}
|
{}
|
||||||
</table>
|
</table>
|
||||||
@ -3136,19 +3120,14 @@ async fn daily_public_handler(
|
|||||||
|
|
||||||
let mut players_html = String::new();
|
let mut players_html = String::new();
|
||||||
for (name, singles_change, doubles_change) in &player_rating_changes {
|
for (name, singles_change, doubles_change) in &player_rating_changes {
|
||||||
let format_change = |c: f64| {
|
|
||||||
if c > 0.0 { format!("<span style='color:#28a745;'>+{:.0}</span>", c) }
|
|
||||||
else if c < 0.0 { format!("<span style='color:#dc3545;'>{:.0}</span>", c) }
|
|
||||||
else { "—".to_string() }
|
|
||||||
};
|
|
||||||
let total = singles_change + doubles_change;
|
let total = singles_change + doubles_change;
|
||||||
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
let total_str = if total > 0.0 { format!("<span style='color:#28a745;font-weight:bold;'>+{:.0}</span>", total) }
|
||||||
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
else if total < 0.0 { format!("<span style='color:#dc3545;font-weight:bold;'>{:.0}</span>", total) }
|
||||||
else { "—".to_string() };
|
else { "—".to_string() };
|
||||||
|
|
||||||
players_html.push_str(&format!(
|
players_html.push_str(&format!(
|
||||||
"<tr><td>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td><td style='text-align:center;'>{}</td></tr>",
|
"<tr><td>{}</td><td style='text-align:center;'>{}</td></tr>",
|
||||||
name, format_change(*singles_change), format_change(*doubles_change), total_str
|
name, total_str
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3436,7 +3415,7 @@ async fn daily_public_handler(
|
|||||||
<h2>📈 Player Performance</h2>
|
<h2>📈 Player Performance</h2>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr><th>Player</th><th>Singles Δ</th><th>Doubles Δ</th><th>Total</th></tr>
|
<tr><th>Player</th><th>ELO Δ</th></tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>{}</tbody>
|
<tbody>{}</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user