{% extends 'base.html' %} {% block title %}Dashboard – {{ app_brand }}{% endblock %} {% block content %}
{% if upcoming_other %}
πŸ”œ COMING UP NEXT
{% for m in upcoming_other %}
{{ m.match_date|format_date }} Β· {{ m.match_time }}
{{ m.team1_abbr }} vs {{ m.team2_abbr }}
{% if m.venue %}
πŸ“ {{ m.venue }}
{% endif %}
{% endfor %}
{% endif %}
πŸ—“οΈ TODAY'S MATCHES View All β†’
{% if todays_matches %}
{% for match in todays_matches %} {% set pred = user_preds.get(match.id) %}
{% if match.status == 'live' %}{% endif %} {{ match.status|upper }} {% if match.match_number %}Match #{{ match.match_number }}{% endif %}
{{ match.team1_abbr }}
{{ match.team1 }}
VS
{{ match.team2_abbr }}
{{ match.team2 }}
πŸ• {{ match.match_time }} {% if match.venue %}πŸ“ {{ match.venue }}{% if match.city %}, {{ match.city }}{% endif %}{% endif %}
{% if match.status == 'completed' and match.winner %}
RESULT
πŸ† {{ match.winner }}
{% if match.man_of_match %}
⭐ MOTM: {{ match.man_of_match }}
{% endif %}
{% endif %} {% if pred %}
YOUR PREDICTION
{{ pred.predicted_winner }} {% if pred.predicted_motm %} · ⭐ {{ pred.predicted_motm }}{% endif %}
Bid: {{ '%.0f'|format(pred.bid_amount) }} {% if pred.is_settled %} Β· {{ pred.points_earned|delta_sign }} pts {% endif %}
{% if pred.is_settled %}
Winner: {% if pred.winner_correct %}βœ…{% else %}❌{% endif %} {% if pred.motm_correct is not none %}MOTM: {% if pred.motm_correct %}βœ…{% else %}❌{% endif %}{% endif %}
{% endif %}
{% endif %}
{% if match.can_predict and not pred %} 🎯 Make Prediction {% elif match.can_predict and pred and not pred.is_settled %} ✏️ Edit Prediction {% elif match.status in ('upcoming',) and not match.is_match_today %}
πŸ“† Opens on {{ match.match_date|format_date }}
{% elif match.locked or match.status == 'locked' %}
πŸ”’ Predictions locked
{% endif %}
{% endfor %}
{% else %}
🏏
No matches today. Check the full schedule.
{% endif %}
πŸ† TOP PLAYERS
{% for p in leaders %}
{{ loop.index }}
{{ p.display_name or p.username }}
{{ '%.0f'|format(p.points) }}
{% endfor %}
Full Leaderboard β†’
πŸ“Š RECENT ACTIVITY
🎯 PREDICTIONS
{% if recent_predictions %} {% for r in recent_predictions %}
{{ r.match_date|format_date }}{% if r.match_number %} Β· #{{ r.match_number }}{% endif %}
{% set a1 = team_abbr.get(r.team1, r.team1[:3].upper() if r.team1 else '?') %} {% set a2 = team_abbr.get(r.team2, r.team2[:3].upper() if r.team2 else '?') %}
{{ a1 }} vs {{ a2 }}
Pick {{ team_abbr.get(r.predicted_winner, r.predicted_winner[:3] if r.predicted_winner else 'β€”') }} {% if r.predicted_motm %} Β· ⭐ {{ r.predicted_motm }}{% endif %} Β· Bid {{ '%.0f'|format(r.bid_amount) }}
{% if r.is_settled %}
{{ r.points_earned|delta_sign }}
{% if r.winner_correct %}βœ…{% else %}❌{% endif %} W {% if r.motm_correct is not none %} {% if r.motm_correct %}βœ…{% else %}❌{% endif %} M{% endif %}
{% else %} {{ r.match_status|upper }} {% endif %}
{% endfor %}
Full prediction history β†’
{% else %}
No predictions yet. Pick a match.
{% endif %}
πŸ’° POINTS
{% if history %} {% for h in history %}
{{ h.created_at[:10]|format_date }}{% if h.created_at and h.created_at|string|length > 10 %} Β· {{ h.created_at[11:16] }}{% endif %}
{{ h.reason or 'Adjustment' }}
{{ h.change_amount|delta_sign }}
{% if h.balance_after is not none %}
bal {{ '%.0f'|format(h.balance_after) }}
{% endif %}
{% endfor %}
Full points history β†’
{% else %}
No points movements yet.
{% endif %}
🎯 Correct winner: +bid pts ❌ Wrong winner: βˆ’bid pts ⭐ Correct MOTM: +{{ points_config.correct_motm }} pts 🚫 Wrong MOTM: βˆ’{{ points_config.wrong_motm|abs }} pts πŸ”’ Match day only Β· {% if points_config.lock_minutes_before %}{{ points_config.lock_minutes_before }} min before start{% else %}lock at start{% endif %}
{% endblock %}