RosterHash/templates/dashboard.html
efigueroa 8aa400eef6 Rebrand app to GameTime and add league info to game cards
- Rename app from FantasyCron to GameTime across all templates and code
- Update league color palette to 6 visually distinct colors (navy, gold, purple, pink, turquoise, plum)
- Add subtle league footer to game cards showing which leagues have players with player counts
- Bump version to 1.0.0
- Update Docker compose service name to match rebrand

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-07 07:58:45 -07:00

198 lines
11 KiB
HTML

{% extends "base.html" %}
{% block title %}{{ user.display_name }} - Week {{ week }}{% endblock %}
{% block content %}
<!-- Header with user name and week navigation -->
<header class="dashboard-header">
<h1>GameTime for {{ user.display_name }}</h1>
<div class="week-nav">
<a href="/{{ user.username }}/{{ week - 1 }}" class="week-btn">&larr; Week {{ week - 1 }}</a>
<span class="current-week">Week {{ week }}</span>
<a href="/{{ user.username }}/{{ week + 1 }}" class="week-btn">Week {{ week + 1 }} &rarr;</a>
</div>
<!-- Server-side refresh -->
<div class="refresh-nav">
<form method="post" action="/{{ user.username }}/{{ week }}/refresh" style="display: inline;">
<button type="submit" class="refresh-btn">🔄 Refresh Scores</button>
</form>
</div>
</header>
<!-- Compact league scores at top -->
<section class="scores-summary">
{% for league_info in league_data %}
<div class="score-row">
<div class="league-info">
<!-- League color dot -->
<span class="league-dot" style="background-color: {{ league_info.league_color }};"></span>
<a href="https://sleeper.app/leagues/{{ league_info.league.league_id }}" target="_blank" class="league-name-link">
<span class="league-name">{{ league_info.league.name }}</span>
</a>
</div>
<div class="score-compact">
<!-- Win/Loss indicator -->
<span class="match-indicator">
{% if league_info.match_status == 'winning' %}
<span class="indicator-icon">↗️</span>
{% elif league_info.match_status == 'losing' %}
<span class="indicator-icon">↘️</span>
{% else %}
<span class="indicator-icon">↔️</span>
{% endif %}
</span>
<span class="user-name">{{ user.display_name }}</span>
<span class="score user-score {{ league_info.match_status }}" id="user-score-{{ league_info.league.league_id }}">
{{ league_info.user_points|round(1) }}
</span>
<span class="vs-compact">vs</span>
<span class="score opp-score" id="opp-score-{{ league_info.league.league_id }}">
{{ league_info.opponent_points|round(1) }}
</span>
<span class="opp-name">{{ league_info.opponent_user.display_name if league_info.opponent_user else 'Opponent' }}</span>
</div>
</div>
{% endfor %}
</section>
<!-- Main calendar section -->
<section class="schedule-section">
<h2>Week {{ week }} Games
<br>
{% if session.get('user_timezone') %}
<span class="timezone-info">timezone: ({{ session.get('user_timezone') }})</span>
{% else %}
<span class="timezone-info">timezone: (PST/PDT)</span>
{% endif %}
</h2>
<div class="calendar-rows">
<!-- Track if we have any games using namespace -->
{% set ns = namespace(has_games=false) %}
<!-- Loop through days that have games -->
{% for day_key, day_info in schedule.items() if day_info.games %}
{% set ns.has_games = true %}
<div class="day-row {% if day_info.is_past %}collapsed{% endif %}" data-day="{{ day_key }}">
<div class="day-header" onclick="toggleDay('{{ day_key }}')">
<div class="day-header-content">
<h3>{{ day_info.day_name }} {{ day_info.date }}</h3>
<span class="collapse-indicator">{% if day_info.is_past %}▶{% else %}▼{% endif %}</span>
</div>
</div>
<div class="day-games" id="day-{{ day_key }}">
<!-- Games for this day -->
{% for game in day_info.games %}
<div class="game-card {% if game.is_past %}collapsed{% endif %}" data-game="{{ loop.index }}">
<div class="game-header" onclick="toggleGame('{{ day_key }}', '{{ loop.index }}')">
<div class="game-info">
<div class="game-time">{{ game.time }}</div>
<div class="matchup">
<span class="away-team">{{ game.away_team }}</span>
<span class="at">@</span>
<span class="home-team">{{ game.home_team }}</span>
</div>
<span class="game-collapse-indicator">{% if game.is_past %}▶{% else %}▼{% endif %}</span>
</div>
</div>
<div class="game-content" id="game-{{ day_key }}-{{ loop.index }}">
<!-- Show user's players in this game, grouped by league -->
<div class="game-players">
{% for league_info in league_data %}
{% set players_in_game = [] %}
{% for player in league_info.all_players %}
{% if player.team in game.teams %}
{% set _ = players_in_game.append(player) %}
{% endif %}
{% endfor %}
{% if players_in_game %}
<div class="league-player-group" style="border-left: 5px solid {{ league_info.league_color }}; border-right: 5px solid {{ league_info.league_color }}">
<!-- Sort players: starters and bench -->
{% set starters = [] %}
{% set bench_players = [] %}
{% for player in players_in_game %}
{% if player.get('is_starter', False) %}
{% set _ = starters.append(player) %}
{% else %}
{% set _ = bench_players.append(player) %}
{% endif %}
{% endfor %}
<!-- Starters container (left-aligned) -->
{% if starters %}
<div class="starters-container">
{% for player in starters %}
<a href="https://sleeper.app/leagues/{{ league_info.league.league_id }}" target="_blank" class="player-pill-link">
<div class="player-pill starter {{ player.fantasy_positions[0]|lower if player.fantasy_positions else 'flex' }}">
<span class="pos">{{ player.fantasy_positions[0] if player.fantasy_positions else 'FLEX' }}</span>
<span class="name">{{ player.last_name }}
{% if player.injury_status %}
<span class="injury-status">{{ player.injury_status }}</span>
{% endif %}
</span>
</div>
</a>
{% endfor %}
</div>
{% endif %}
<!-- Bench players container (right-aligned) -->
{% if bench_players %}
<div class="bench-container">
{% for player in bench_players %}
<a href="https://sleeper.app/leagues/{{ league_info.league.league_id }}" target="_blank" class="player-pill-link">
<div class="player-pill bench {{ player.fantasy_positions[0]|lower if player.fantasy_positions else 'flex' }}">
<span class="pos">{{ player.fantasy_positions[0] if player.fantasy_positions else 'FLEX' }}</span>
<span class="name">{{ player.last_name }}
{% if player.injury_status %}
<span class="injury-status">{{ player.injury_status }}</span>
{% endif %}
</span>
</div>
</a>
{% endfor %}
</div>
{% endif %}
</div>
{% endif %}
{% endfor %}
</div>
<!-- Small league info footer -->
<div class="game-league-footer">
{% for league_info in league_data %}
{% set players_in_game = [] %}
{% for player in league_info.all_players %}
{% if player.team in game.teams %}
{% set _ = players_in_game.append(player) %}
{% endif %}
{% endfor %}
{% if players_in_game %}
<div class="league-footer-item">
<span class="league-dot" style="background-color: {{ league_info.league_color }};"></span>
<span class="league-name-small">{{ league_info.league.name }}</span>
<span class="player-count">({{ players_in_game|length }})</span>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endfor %}
<!-- Show message if no games found -->
{% if not ns.has_games %}
<div class="no-games-week">
<p>No games found for week {{ week }}</p>
</div>
{% endif %}
</div>
</section>
{% endblock %}