// Render Projected Ladder
{
if (ladderView !== "Projected") return html``
if (simData == null || simData.length === 0) {
return html`<p class="text-muted">Simulation data could not be loaded. Try refreshing the page.</p>`
}
const pctFmt = x => x != null ? (x * 100).toFixed(1) + "%" : ""
return statsTable(simData, {
columns: [
"team", "games_played", "current_wins", "current_pct", "team_torp",
"avg_wins", "avg_percentage", "avg_rank",
"premiers_pct", "runner_up_pct", "lose_prelim_pct", "lose_semi_pct", "lose_elim_pct",
"top_1_pct", "top_4_pct", "top_8_pct", "last_pct"
],
mobileCols: ["team", "avg_wins", "avg_rank", "premiers_pct", "top_4_pct", "top_8_pct"],
header: {
team: "Team",
games_played: "GP",
current_wins: "W",
current_pct: "%",
team_torp: "TORP",
avg_wins: "Wins",
avg_percentage: "%",
avg_rank: "Rank",
premiers_pct: "Flag",
runner_up_pct: "Runner Up",
lose_prelim_pct: "Prelim",
lose_semi_pct: "Semi",
lose_elim_pct: "Elim",
top_1_pct: "Minor Prem",
top_4_pct: "Top 4",
top_8_pct: "Top 8",
last_pct: "Spoon"
},
groups: [
{ label: "", span: 1 },
{ label: "Current", span: 4 },
{ label: "Projected Ladder", span: 3 },
{ label: "Finals Outcome", span: 5 },
{ label: "Ladder Odds", span: 4 }
],
format: {
current_pct: x => x != null ? x.toFixed(1) : "—",
team_torp: x => x?.toFixed(1) ?? "—",
avg_wins: x => x?.toFixed(1) ?? "",
avg_percentage: x => x?.toFixed(1) ?? "",
avg_rank: x => x?.toFixed(1) ?? "",
premiers_pct: pctFmt,
runner_up_pct: pctFmt,
lose_prelim_pct: pctFmt,
lose_semi_pct: pctFmt,
lose_elim_pct: pctFmt,
top_1_pct: pctFmt,
top_4_pct: pctFmt,
top_8_pct: pctFmt,
last_pct: pctFmt
},
render: {
team: window.aflTeamMaps?.renderTeamCell || ((v) => `<strong>${statsEsc(v)}</strong>`)
},
heatmap: {
team_torp: "high-good",
avg_wins: "high-good",
avg_percentage: "high-good",
avg_rank: "low-good",
premiers_pct: "high-good",
runner_up_pct: "high-good",
lose_prelim_pct: "high-good",
lose_semi_pct: "high-good",
lose_elim_pct: "high-good",
top_1_pct: "high-good",
top_4_pct: "high-good",
top_8_pct: "high-good",
last_pct: "low-good"
},
tooltip: {
games_played: "Games played so far", current_wins: "Current wins", current_pct: "Current percentage",
team_torp: "Average TORP rating of the team's players",
avg_wins: "Average projected wins across simulations",
avg_percentage: "Average projected percentage", avg_rank: "Average projected ladder position",
premiers_pct: "Probability of winning the premiership",
runner_up_pct: "Probability of finishing runner-up",
lose_prelim_pct: "Probability of losing in a preliminary final",
lose_semi_pct: "Probability of losing in a semi-final",
lose_elim_pct: "Probability of losing in an elimination final",
top_1_pct: "Probability of finishing 1st (minor premiership)",
top_4_pct: "Probability of finishing in the top 4",
top_8_pct: "Probability of finishing in the top 8 (finals)",
last_pct: "Probability of finishing last (wooden spoon)"
},
sort: "avg_wins",
reverse: true,
rows: 20
})
}