package seasonsview import "git.haelnorr.com/h/oslstats/internal/db" import "git.haelnorr.com/h/oslstats/internal/permissions" import "git.haelnorr.com/h/oslstats/internal/contexts" import "git.haelnorr.com/h/oslstats/internal/view/baseview" import "fmt" templ SeasonLeagueTeamDetailPage(twr *db.TeamWithRoster, fixtures []*db.Fixture, available []*db.Player, scheduleMap map[int]*db.FixtureSchedule) { {{ team := twr.Team season := twr.Season league := twr.League }} @baseview.Layout(fmt.Sprintf("%s - %s - %s", team.Name, league.Name, season.Name)) {
if team.Color != "" {
}

{ team.Name }

{ team.ShortName } { team.AltShortName } { season.Name } — { league.Name }
Back to Teams
@TeamRosterSection(twr, available) @teamFixturesPane(twr.Team, fixtures, scheduleMap)
@teamStatsSection()
} } // TeamRosterSection renders the roster section — exported so it can be used for HTMX swaps templ TeamRosterSection(twr *db.TeamWithRoster, available []*db.Player) { {{ permCache := contexts.Permissions(ctx) canManagePlayers := permCache.HasPermission(permissions.TeamsManagePlayers) // Build the non-manager player list for display rosterPlayers := []*db.Player{} for _, p := range twr.Players { if p != nil && (twr.Manager == nil || p.ID != twr.Manager.ID) { rosterPlayers = append(rosterPlayers, p) } } hasRoster := twr.Manager != nil || len(rosterPlayers) > 0 }}

Roster

if canManagePlayers { }
if !hasRoster {

No players on this roster yet.

if canManagePlayers {

Click "Manage Players" to add players to this team.

}
} else {
if twr.Manager != nil {
{ twr.Manager.Name } ★ Manager
} for _, player := range rosterPlayers {
{ player.Name }
}
} if canManagePlayers { @manageRosterModal(twr, available, rosterPlayers) }
} templ manageRosterModal(twr *db.TeamWithRoster, available []*db.Player, rosterPlayers []*db.Player) { } templ teamFixturesPane(team *db.Team, fixtures []*db.Fixture, scheduleMap map[int]*db.FixtureSchedule) {

Upcoming

if len(fixtures) == 0 {

No upcoming fixtures.

} else {
for _, fixture := range fixtures { @teamFixtureRow(team, fixture, scheduleMap) }
}

Results

Results coming soon.

Match results will appear here once game data is recorded.

} templ teamFixtureRow(team *db.Team, fixture *db.Fixture, scheduleMap map[int]*db.FixtureSchedule) { {{ isHome := fixture.HomeTeamID == team.ID var opponent string if isHome { opponent = fixture.AwayTeam.Name } else { opponent = fixture.HomeTeam.Name } sched, hasSchedule := scheduleMap[fixture.ID] _ = sched }}
GW{ fmt.Sprint(*fixture.GameWeek) } if isHome { HOME } else { AWAY } vs { opponent }
if hasSchedule && sched.ScheduledTime != nil { @localtime(sched.ScheduledTime, "short") } else { TBD }
} templ teamStatsSection() {

Stats

Stats coming soon.

Team statistics will appear here once game data is available.

}