Ndodson's picture
Manual changes saved
d4ce862 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ausdraft 4 — Division 2 Hub</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
/* Dark mode scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #1f2937;
}
::-webkit-scrollbar-thumb {
background: #4b5563;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #6b7280;
}
.team-colors {
--finrod: #2563eb;
--dejake: #dc2626;
--nephthys: #16a34a;
--spbro: #f59e0b;
--pran: #7c3aed;
--charchar: #0891b2;
--tdi: #ef4444;
--humble: #10b981;
--brod10: #fb7185;
--braedes: #f97316;
}
.draft-chip {
transition: all 0.3s ease;
min-width: 120px;
background-color: #1f2937;
border: 1px solid #374151;
}
.draft-chip:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.team-card {
transition: all 0.3s ease;
}
.team-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.progress-bar {
transition: width 1s ease-in-out;
}
/* Dark mode chart adjustments */
.chartjs-render-monitor {
filter: brightness(0.9) contrast(1.1);
}
.sticky-header {
position: sticky;
top: 0;
z-index: 10;
background: #1f2937;
}
.player-row:hover {
background-color: #374151;
}
@media (max-width: 768px) {
.draft-chip {
min-width: 100px;
}
}
</style>
</head>
<body class="team-colors bg-gray-900 font-sans text-gray-100">
<header class="bg-gray-800 shadow-md">
<div class="container mx-auto px-4 py-6">
<h1 class="text-3xl font-bold text-white">Ausdraft 4 — Division 2 Hub</h1>
<p class="text-gray-300 mt-2">Complete draft analysis and team information</p>
</div>
</header>
<main class="container mx-auto px-4 py-8">
<!-- Draft Board Timeline -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">Draft Board Timeline</h2>
<div class="bg-gray-800 rounded-lg shadow-md p-4 overflow-x-auto border border-gray-700">
<div class="flex space-x-4 min-w-max pb-4 text-gray-100">
<!-- Draft chips will be populated by JavaScript -->
</div>
</div>
</section>
<!-- Team Cards -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">Teams</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Team cards will be populated by JavaScript -->
</div>
</section>
<!-- Player Directory -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">Player Directory</h2>
<div class="bg-gray-800 rounded-lg shadow-md p-4 border border-gray-700">
<div class="flex flex-col md:flex-row md:items-center justify-between mb-4 gap-4">
</div>
<div class="flex gap-2">
<select class="px-4 py-2 border border-gray-600 bg-gray-700 text-white rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
<option value="">All Teams</option>
<!-- Team options will be populated by JavaScript -->
</select>
<select class="px-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
<option value="">All Ratings</option>
<option value="rated">Has Rating</option>
<option value="unrated">No Rating</option>
</select>
</div>
</div>
<div class="overflow-x-auto">
<table class="w-full border border-white">
<thead class="sticky-header bg-gray-700 border-b border-white">
<tr class="border-b border-white">
<th class="px-4 py-2 text-left cursor-pointer hover:bg-gray-600">Player <i data-feather="arrow-up" class="inline h-4 w-4"></i></th>
<th class="px-4 py-2 text-left cursor-pointer hover:bg-gray-600">Team</th>
<th class="px-4 py-2 text-left cursor-pointer hover:bg-gray-600">Rating</th>
<th class="px-4 py-2 text-left cursor-pointer hover:bg-gray-600">Pick</th>
<th class="px-4 py-2 text-left cursor-pointer hover:bg-gray-600">Overall Rank</th>
</tr>
</thead>
<tbody>
<!-- Player rows will be populated by JavaScript -->
</tbody>
</table>
</div>
</div>
</section>
<!-- Analytics -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">Analytics</h2>
<!-- Rating vs Pick Scatter -->
<div class="bg-gray-800 rounded-lg shadow-md p-4 mb-8 border border-gray-700">
<h3 class="text-xl font-semibold mb-4">Rating vs Pick Number</h3>
<div class="h-96">
<canvas id="scatterChart"></canvas>
</div>
</div>
<!-- Team Average Ratings -->
<div class="bg-gray-800 rounded-lg shadow-md p-4 mb-8 border border-gray-700">
<h3 class="text-xl font-semibold mb-4">Team Average Ratings (picked players only)</h3>
<div class="h-64">
<canvas id="teamAvgChart"></canvas>
</div>
</div>
<!-- Team Average Ratings (Captain Included) — fixed 1200–1700 scale, values in x-axis labels, no hover -->
<div style="width:100%;max-width:950px;margin:0 auto;background:#1f2937;border:1px solid #374151;border-radius:12px;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,0.06);">
<h4 style="margin:0 0 12px 0;font-weight:700;font-size:28px;letter-spacing:.2px;color:#FFFFFF;">
Team Average Ratings (Captain Included)
</h4>
<div style="position:relative;height:360px;">
<canvas id="teamAvgWithCaptainFixed"></canvas>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
(() => {
const teams = [
"Finrod Felegund","DeJake","Nephthys","Sp Bro","Pran",
"CharChar","TDI","Humble","Brod10","Braedes"
];
const colours = [
"#2563eb","#dc2626","#16a34a","#f59e0b","#7c3aed",
"#0891b2","#ef4444","#10b981","#fb7185","#f97316"
];
// Averages INCLUDING captain (captain + 4 picks) / 5
const vals = [1465.6,1535.0,1494.6,1592.0,1510.0,1543.0,1513.0,1483.8,1390.0,1471.6];
// Append rounded rating next to each team name in the x-axis label
const labels = teams.map((name, i) => `${name} (${Math.round(vals[i])})`);
const ctx = document.getElementById("teamAvgWithCaptainFixed");
new Chart(ctx, {
type: "bar",
data: {
labels,
datasets: [{
label: "Team Average Rating (Captain Included)",
data: vals,
backgroundColor: colours,
borderColor: colours,
borderWidth: 1,
borderRadius: 6
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
events: [], // no hover/interaction
plugins: { legend: { display: true }, tooltip: { enabled: false } },
scales: {
x: {
ticks: { color: "#374151", maxRotation: 30, minRotation: 30 }
},
y: {
min: 1200, // fixed scale
max: 1700,
title: { display: true, text: "Rating" },
grid: { color: "rgba(148,163,184,0.25)" },
ticks: { stepSize: 100 }
}
}
}
});
})();
</script>
<!-- Detailed Pick Metrics -->
<div class="bg-gray-800 rounded-lg shadow-md p-4 mb-8 border border-gray-700">
<h3 class="text-xl font-semibold mb-4">Detailed Pick Metrics</h3>
<div class="overflow-x-auto">
<table class="w-full border border-white">
<thead class="bg-gray-700 border-b border-white">
<tr>
<th class="px-4 py-2 text-left">Pick</th>
<th class="px-4 py-2 text-left">Player</th>
<th class="px-4 py-2 text-left">Team</th>
<th class="px-4 py-2 text-left">Best-Available %</th>
<th class="px-4 py-2 text-left">Round-Expectation %</th>
<th class="px-4 py-2 text-left">Pick-Efficiency %</th>
<th class="px-4 py-2 text-left">Draft Value %</th>
</tr>
</thead>
<tbody>
<tr><td class="px-4 py-2">1</td><td class="px-4 py-2">Brotus</td><td class="px-4 py-2">Finrod Felegund</td><td class="px-4 py-2">98.8</td><td class="px-4 py-2">104.7</td><td class="px-4 py-2">99.5</td><td class="px-4 py-2">101.8</td></tr>
<tr><td class="px-4 py-2">2</td><td class="px-4 py-2">DT_hero</td><td class="px-4 py-2">DeJake</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">106.0</td><td class="px-4 py-2">100.8</td><td class="px-4 py-2">103.0</td></tr>
<tr><td class="px-4 py-2">3</td><td class="px-4 py-2">Zachattack771</td><td class="px-4 py-2">Nephthys</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">105.1</td><td class="px-4 py-2">101.7</td><td class="px-4 py-2">102.5</td></tr>
<tr><td class="px-4 py-2">4</td><td class="px-4 py-2">Bonk</td><td class="px-4 py-2">Sp Bro</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">104.5</td><td class="px-4 py-2">103.7</td><td class="px-4 py-2">102.2</td></tr>
<tr><td class="px-4 py-2">5</td><td class="px-4 py-2">FC | Prawn</td><td class="px-4 py-2">Pran</td><td class="px-4 py-2">96.8</td><td class="px-4 py-2">97.2</td><td class="px-4 py-2">99.1</td><td class="px-4 py-2">97.0</td></tr>
<tr><td class="px-4 py-2">6</td><td class="px-4 py-2">Matthew</td><td class="px--4 py-2">CharChar</td><td class="px-4 py-2">94.6</><td class="px-4 py-2">95.1</td><td class="px-4 py-2">96.8</td><td class="px-4 py-2">94.8</td></tr>
<tr><td class="px-4 py-2">7</td><td class="px-4 py-2">Blue</td><td class="px-4 py-2">TDI</td><td class="px-4 py-2">93.9</td><td class="px-4 py-2">94.4</td><td class="px-4 py-2">96.1</td><td class="px-4 py-2">94.1</td></tr>
<tr><td class="px-4 py-2">8</td><td class="px-4 py-2">Farmer Yo</td><td class="px-4 py-2">Humble</td><td class="px-4 py-2">95.4</td><td class="px-4 py-2">95.8</td><td class="px-4 py-2">97.5</td><td class="px-4 py-2">95.6</td></tr>
<tr><td class="px-4 py-2">9</td><td class="px-4 py-2">M57</td><td class="px-4 py-2">Brod10</td><td class="px-4 py-2">88.5</td><td class="px-4 py-2">88.6</td><td class="px-4 py-2">89.6</td><td class="px-4 py-2">88.5</td></tr>
<tr><td class="px-4 py-2">10</td><td class="px-4 py-2">hank</td><td class="px-4 py-2">Braedes</td><td class="px-4 py-2">89.6</td><td class="px-4 py-2">89.7</td><td class="px-4 py-2">90.7</td><td class="px-4 py-2">89.6</td></tr>
<tr><td class="px-4 py-2">11</td><td class="px-4 py-2">Byzantine</td><td class="px-4 py-2">Braedes</td><td class="px-4 py-2">93.0</td><td class="px-4 py-2">93.2</td><td class="px-4 py-2">95.3</td><td class="px-4 py-2">93.1</td></tr>
<tr><td class="px-4 py-2">12</td><td class="px-4 py-2">Squid</td><td class="px-4 py-2">Brod10</td><td class="px-4 py-2">74.2</td><td class="px-4 py-2">74.8</td><td class="px-4 py-2">75.6</td><td class="px-4 py-2">74.5</td></tr>
<tr><td class="px-4 py-2">13</td><td class="px-4 py-2">Captain Kniples</td><td class="px-4 py-2">Humble</td><td class="px-4 py-2">87.9</td><td class="px-4 py-2">88.1</td><td class="px-4 py-2">89.3</td><td class="px-4 py-2">88.0</td></tr>
<tr><td class="px-4 py-2">14</td><td class="px-4 py-2">Pleco__</td><td class="px-4 py-2">TDI</td><td class="px-4 py-2">86.3</td><td class="px-4 py-2">86.6</td><td class="px-4 py-2">87.7</td><td class="px-4 py-2">86.5</td></tr>
<tr><td class="px-4 py-2">15</td><td class="px-4 py-2">Jeremy V</td><td class="px-4 py-2">CharChar</td><td class="px-4 py-2">93.0</td><td class="px-4 py-2">93.3</td><td class="px-4 py-2">94.9</td><td class="px-4 py-2">93.2</td></tr>
<tr><td class="px-4 py-2">16</td><td class="px-4 py-2">Mr Sombrero</td><td class="px-4 py-2">Pran</td><td class="px-4 py-2">97.9</td><td class="px-4 py-2">98.3</td><td class="px-4 py-2">100.3</td><td class="px-4 py-2">98.1</td></tr>
<tr><td class="px-4 py-2">17</td><td class="px-4 py-2">Top Geary</><td class="px-4 py-2">Sp Bro</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">107.2</td><td class="px-4 py-2">105.8</td><td class="px-4 py-2">103.6</td></tr>
<tr><td class="px-4 py-2">18</td><td class="px-4 py-2">Slaters</td><td class="px-4 py-2">Nephthys</td><td class="px-4 py-2">92.5</td><td class="px-4 py-2">99.2</td><td class="px-4 py-2">97.8</td><td class="px-4 py-2">95.9</td></tr>
<tr><td class="px-4 py-2">19</td><td class="px-4 py-2">ImprovingYeti</td><td class="px-4 py-2">DeJake</td><td class="px-4 py-2">94.5</td><td class="px-4 py-2">100.8</td><td class="px-4 py-2">99.4</td><td class="px-4 py-2">97.7</td></tr>
<tr><td class="px-4 py-2">20</td><td class="px-4 py-2">FC | MASH</td><td class="px-4 py-2">Finrod Felegund</td><td class="px-4 py-2">91.6</td><td class="px-4 py-2">97.6</td><td class="px-4 py-2">96.2</td><td class="px-4 py-2">94.6</td></tr>
<tr><td class="px-4 py-2">21</td><td class="px-4 py-2">(Arm)_MTExplore</td><td class="px-4 py-2">Finrod Felegund</td><td class="px-4 py-2">97.0</td><td class="px-4 py-2">99.1</td><td class="px-4 py-2">100.3</td><td class="px-4 py-2">98.1</td></tr>
<tr><td class="px-4 py-2">22</td><td class="px-4 py-2">TheHobbalution</td><td class="px-4 py-2">DeJake</td><td class="px-4 py-2">95.7</td><td class="px-4 py-2">97.9</td><td class="px-4 py-2">98.9</td><td class="px-4 py-2">96.8</td></tr>
<tr><td class="px-4 py-2">23</td><td class="px-4 py-2">MCGoob</td><td class="px-4 py-2">Nephthys</td><td class="px-4 py-2">90.3</td><td class="px-4 py-2">92.5</td><td class="px-4 py-2">93.4</td><td class="px-4 py-2">91.4</td></tr>
<tr><td class="px-4 py-2">24</td><td class="px-4 py-2">Nessy</td><td class="px-4 py-2">Sp Bro</td><td class="px-4 py-2">92.9</td><td class="px-4 py-2">95.2</td><td class="px-4 py-2">96.1</td><td class="px-4 py-2">94.0</td></tr>
<tr><td class="px-4 py-2">25</td><td class="px-4 py-2">bug ee</td><td class="px-4 py-2">Pran</td><td class="px-4 py-2">85.9</td><td class="px-4 py-2">88.2</td><td class="px-4 py-2">89.0</td><td class="px-4 py-2">87.0</td></tr>
<tr><td class="px-4 py-2">26</td><td class="px-4 py-2">PowerBug96</td><td class="px-4 py-2">CharChar</td><td class="px-4 py-2">97.1</td><td class="px-4 py-2">99.6</td><td class="px-4 py-2">101.0</td><td class="px-4 py-2">98.4</td></tr>
<tr><td class="px-4 py-2">27</td><td class="px-4 py-2">De_IceMan</td><td class="px-4 py-2">TDI</td><td class="px-4 py-2">95.9</td><td class="px-4 py-2">98.4</td><td class="px-4 py-2">99.7</td><td class="px-4 py-2">97.2</td></tr>
<tr><td class="px-4 py-2">28</td><td class="px-4 py-2">LoganJosh</td><td class="px-4 py-2">Humble</td><td class="px-4 py-2">91.8</td><td class="px-4 py-2">94.4</td><td class="px-4 py-2">95.5</td><td class="px-4 py-2">93.1</td></tr>
<tr><td class="px-4 py-2">29</td><td class="px-4 py-2">Berbers Burgers</td><td class="px-4 py-2">Brod10</td><td class="px-4 py-2">83.2</td><td class="px-4 py-2">85.5</td><td class="px-4 py-2">86.3</td><td class="px-4 py-2">84.4</td></tr>
<tr><td class="px-4 py-2">30</td><td class="px-4 py-2">Flex</td><td class="px-4 py-2">Braedes</td><td class="px-4 py-2">78.8</td><td class="px-4 py-2">81.0</td><td class="px-4 py-2">81.8</td><td class="px-4 py-2">79.9</td></tr>
<tr><td class="px-4 py-2">31</td><td class="px-4 py-2">Alian713</td><td class="px-4 py-2">Braedes</td><td class="px-4 py-2">88.5</td><td class="px-4 py-2">85.1</td><td class="px-4 py-2">97.7</td><td class="px-4 py-2">86.8</td></tr>
<tr><td class="px-4 py-2">32</td><td class="px-4 py-2">Killbenji</td><td class="px-4 py-2">Brod10</td><td class="px-4 py-2">88.1</td><td class="px-4 py-2">84.7</td><td class="px-4 py-2">97.2</td><td class="px-4 py-2">86.4</td></tr>
<tr><td class="px-4 py-2">33</td><td class="px-4 py-2">EchoEmpires</td><td class="px-4 py-2">Humble</td><td class="px-4 py-2">93.0</td><td class="px-4 py-2">89.7</td><td class="px-4 py-2">102.8</td><td class="px-4 py-2">91.3</td></tr>
<tr><td class="px-4 py-2">34</td><td class="px-4 py-2">Bairdoss</td><td class="px-4 py-2">TDI</td><td class="px-4 py-2">101.1</td><td class="px-4 py-2">97.8</td><td class="px-4 py-2">111.6</td><td class="px-4 py-2">99.5</td></tr>
<tr><td class="px-4 py-2">35</td><td class="px-4 py-2">TrickyMicky90</td><td class="px-4 py-2">CharChar</td><td class="px-4 py-2">100.2</td><td class="px-4 py-2">96.9</td><td class="px-4 py-2">110.7</td><td class="px-4 py-2">98.6</td></tr>
<tr><td class="px-4 py-2">36</td><td class="px-4 py-2">Yifahn</td><td class="px-4 py-2">Pran</td><td class="px-4 py-2">94.4</td><td class="px-4 py-2">91.4</td><td class="px-4 py-2">104.3</td><td class="px-4 py-2">92.9</td></tr>
<tr><td class="px-4 py-2">37</td><td class="px-4 py-2">phat johnson</td><td class="px-4 py-2">Sp Bro</td><td class="px-4 py-2">99.6</td><td class="px-4 py-2">96.6</td><td class="px极-4 py-2">109.9</td><td class="px-4 py-2">98.1</td></tr>
<tr><td class="px-4 py-2">38</td><td class="px-4 py-2">Link</td><td class="px-4 py-2">Nephthys</td><td class="px-4 py-2">92.7</td><td class="px-4 py-2">91.4</td><td class="px-4 py-2">102.2</td><td class="px-4 py-2">92.1</td></tr>
<tr><td class="px-4 py-2">39</td><td class="px-4 py-2">Explosiv_fury</td><td class="px-4 py-2">DeJake</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">98.5</td><td class="px-4 py-2">111.4</td><td class="px-4 py-2">99.3</td></tr>
<tr><td class="px-4 py-2">40</td><td class="px-4 py-2">Parktim</td><td class="px-4 py-2">Finrod Felegund</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">78.3</td><td class="px-4 py-2">100.0</td><td class="px-4 py-2">89.2</td></tr>
</tbody>
</table>
</div>
</div>
</section>
<!-- Captain Averages -->
<!-- Captain Averages (Division 2) — forced multi-column grid via inline CSS -->
<div class="mt-8 bg-gray-800 p-6 rounded-lg border border-gray-700">
<h4 class="text-lg font-medium mb-4">Captain Averages (Division 2)</h4>
<!-- Inline CSS ensures multi-column even if utility classes are ignored -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6"
style="display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;">
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Finrod Felegund</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 99.3</div>
<div>Round-Expectation % (avg): 96.5</div>
<div>Pick Efficiency % (avg): 100.0</div>
<div>Draft Value % (avg): 97.9</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">DeJake</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 100.0</div>
<div>Round-Expectation % (avg): 102.3</div>
<div>Pick Efficiency % (avg): 103.7</div>
<div>Draft Value % (avg): 101.2</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Nephthys</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 96.6</div>
<div>Round-Expectation % (avg): 98.5</div>
<div>Pick Efficiency % (avg): 99.9</div>
<div>Draft Value % (avg): 97.5</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Sp Bro</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 99.5</div>
<div>Round-Expectation % (avg): 105.6</div>
<div>Pick Efficiency % (avg): 104.3</div>
<div>Draft Value % (avg): 102.5</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Pran</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 94.1</div>
<div>Round-Expectation % (avg): 98.9</div>
<div>Pick Efficiency % (avg): 97.3</div>
<div>Draft Value % (avg): 96.5</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">CharChar</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 95.4</div>
<div>Round-Expectation % (avg): 101.2</div>
<div>Pick Efficiency % (avg): 98.0</div>
<div>Draft Value % (avg): 98.3</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">TDI</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 94.7</div>
<div>Round-Expectation % (avg): 99.6</div>
<div>Pick Efficiency % (avg): 97.0</div>
<div>Draft Value % (avg): 97.2</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Humble</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 93.5</div>
<div>Round-Expectation % (avg): 97.1</div>
<div>Pick Efficiency % (avg): 95.1</div>
<div>Draft Value % (avg): 95.2</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Brod10</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 85.0</div>
<div>Round-Expectation % (avg): 88.2</div>
<div>Pick Efficiency % (avg): 86.7</div>
<div>Draft Value % (avg): 86.6</div>
</div>
</div>
<div class="bg-gray-700 p-4 rounded-lg shadow-sm border border-gray-600">
<h5 class="font-medium mb-2">Braedes</h5>
<div class="text-sm space-y-1 text-gray-200">
<div>Best-Available % (avg): 91.1</div>
<div>Round-Expectation % (avg): 94.6</div>
<div>Pick Efficiency % (avg): 93.0</div>
<div>Draft Value % (avg): 92.8</div>
</div>
</div>
</div>
</div>
</div>
<!-- Captain Draft Value % (Division 2) — Vertical Bars; 85% empty, 105% full -->
<div style="width:100%;max-width:900px;margin:0 auto;background:#1f2937;border:1px solid #374151;border-radius:12px;padding:16px;box-shadow:0 1px 3px rgba(0,0,0,0.06);">
<h4 style="margin:0 0 12px 0;font-weight:600;font-size:18px;color:#fff;">
Captain Draft Value % (Division 2)
</h4>
<!-- Chart area -->
<div style="position:relative;height:240px;padding:28px 24px 28px 56px;border-left:1px solid #374151;border-bottom:1px solid #374151;margin-bottom:12px;overflow:visible;">
<!-- gridlines at 105, 95, 85 -->
<div style="position:absolute;left:56px;right:24px;top:0;height:1px;background:#374151;"></div>
<div style="position:absolute;left:56px;right:24px;top:80px;height:1px;background:#4b5563;"></div>
<div style="position:absolute;left:56px;right:24px;bottom:28px;height:1px;background:#374151;"></div>
<!-- y-axis labels -->
<div style="position:absolute;top:2px;left:8px;font-size:12px;color:#9ca3af;">105%</div>
<div style="position:absolute;top:82px;left:12px;font-size:12px;color:#6b7280;">95%</div>
<div style="position:absolute;bottom:26px;left:12px;font-size:12px;color:#9ca3af;">85%</div>
<!-- Bars track row (track = 160px tall). Height px = clamp((value - 85) * 8, 0, 160). -->
<div style="position:absolute;left:56px;right:24px;bottom:28px;height:160px;display:flex;justify-content:space-between;align-items:flex-end;gap:10px;">
<!-- Finrod Felegund: 97.9 -> (12.9*8)=~103px ; BLUE -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#374151;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:103px;background:#2563eb;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Finrod</div>
<div style="font-size:12px;color:#9ca3af;">97.9%</div>
</div>
<!-- DeJake: 101.2 -> (16.2*8)=~130px ; RED -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:130px;background:#dc2626;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">DeJake</div>
<div style="font-size:12px;color:#9ca3af;">101.2%</div>
</div>
<!-- Nephthys: 97.5 -> 100px ; GREEN -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:100px;background:#16a34a;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Nephthys</div>
<div style="font-size:12px;color:#9ca3af;">97.5%</div>
</div>
<!-- Sp Bro: 102.5 -> 140px ; YELLOW -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:140px;background:#f59e0b;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Sp Bro</div>
<div style="font-size:12px;color:#9ca3af;">102.5%</div>
</div>
<!-- Pran: 96.5 -> 92px ; VIOLET -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:92px;background:#7c3aed;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Pran</div>
<div style="font-size:12px;color:#9ca3af;">96.5%</div>
</div>
<!-- CharChar: 98.3 -> 106px ; TEAL -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:106px;background:#0891b2;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">CharChar</div>
<div style="font-size:12px;color:#9ca3af;">98.3%</div>
</div>
<!-- TDI: 97.2 -> 98px ; BRIGHT RED -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:98px;background:#ef4444;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">TDI</div>
<div style="font-size:12px;color:#9ca3af;">97.2%</div>
</div>
<!-- Humble: 95.2 -> 82px ; EMERALD -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:82px;background:#10b981;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Humble</div>
<div style="font-size:12px;color:#9ca3af;">95.2%</div>
</div>
<!-- Brod10: 86.6 -> 13px ; ROSE -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:13px;background:#fb7185;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Brod10</div>
<div style="font-size:12px;color:#9ca3af;">86.6%</div>
</div>
<!-- Braedes: 92.8 -> 62px ; ORANGE -->
<div style="display:flex;flex-direction:column;align-items:center;width:80px;">
<div style="height:160px;width:32px;background:#e5e7eb;border-radius:8px;position:relative;overflow:hidden;">
<div style="position:absolute;left:0;right:0;bottom:0;height:62px;background:#f97316;"></div>
</div>
<div style="margin-top:6px;font-size:12px;color:#fff;text-align:center;">Braedes</div>
<div style="font-size:12px;color:#9ca3af;">92.8%</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Captain cards will be populated by JavaScript -->
</div>
</section>
<!-- How to read the numbers -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">How to read the numbers</h2>
<div class="bg-gray-800 rounded-lg shadow-md p-6 border border-gray-700">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<h3 class="text-lg font-semibold mb-2 text-blue-600">Best-Available %</h3>
<p class="text-gray-300">Compares the pick to the best player still on the board at that moment (100% = you took the top available).</p>
</div>
<div>
<h3 class="text-lg font-semibold mb-2 text-green-600">Round-Expectation %</h3>
<p class="text-gray-300">Compares the pick to what is typical for that round (average of the top 10 undrafted at round start).</p>
</div>
<div>
<h3 class="text-lg font-semibold mb-2 text-purple-600">Pick-Efficiency %</h3>
<p class="text-gray-300">Compares the pick to the average of the top 3 realistic options still on the board.</p>
</div>
<div>
<h3 class="text-lg font-semibold mb-2 text-orange-600">Draft Value %</h3>
<p class="text-gray-300">The simple average of Best-Available % and Round-Expectation %.</p>
</div>
</div>
<div class="mt-6 p-4 bg-blue-900 rounded-lg">
<p class="text-blue-100"><strong>Captain Averages</strong> summarize those metrics across each captain's picks.</p>
</div>
</div>
</section>
<!-- Resources -->
<section class="mb-16" data-aos="fade-up">
<h2 class="text-2xl font-bold mb-6 text-white">Resources</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
<a href="https://docs.google.com/document/d/1waTquNydHp1SnWyKmj1A4q11nmga62Cn/edit?usp=sharing&ouid=110211237259587384465&rtpof=true&sd=true" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="book" class="text-blue-600 mr-3"></i>
<span class="font-medium">Handbook</span>
</div>
</a>
<a href="https://docs.google.com/spreadsheets/d/14awu9wN41vy7Qjg4Jg1DHfeD_x13nQAkeKJf9iuGAHI/edit?gid=622115877#gid=622115877" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="bar-chart-2" class="text-green-600 mr-3"></i>
<span class="font-medium">Liam ranking sheet</span>
</div>
</a>
<a href="https://docs.google.com/spreadsheets/d/1qfjYTW53ixKQ8e6LRcTJoBJXvbH_eUtSvbi211QyaWI/edit?usp=sharing" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="calendar" class="text-red-600 mr-3"></i>
<span class="font-medium">Division 2 standings/schedule</span>
</div>
</a>
<a href="https://aoe2cm.net/preset/qDmzP" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="settings" class="text-purple-600 mr-3"></i>
<span class="font-medium">Pa3 civ draft</span>
</div>
</a>
<a href="https://aoe2cm.net/preset/RgwJw" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="settings" class="text-purple-600 mr-3"></i>
<span class="font-medium">Bo5 civ draft</span>
</div>
</a>
<a href="https://aoe2cm.net/preset/JxuIp" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="map" class="text-yellow-600 mr-3"></i>
<span class="font-medium">Pa3 Map draft</span>
</div>
</a>
<a href="https://aoe2cm.net/preset/udYur" target="_blank" class="bg-gray-800 rounded-lg shadow-md p-4 hover:shadow-lg transition-shadow border border-gray-700">
<div class="flex items-center">
<i data-feather="map" class="text-yellow-600 mr-3"></i>
<span class="font-medium">Bo5 Map draft</span>
</div>
</a>
</div>
</section>
</main>
<footer class="bg-gray-900 text-white py-8 border-t border-gray-700">
<div class="container mx-auto px-4 text-center">
<p>Ausdraft 4 — Division 2 Hub</p>
<p class="mt-2 text-gray-400">Data analysis and visualization</p>
</div>
</footer>
<script>
// Initialize libraries
AOS.init();
feather.replace();
// Data processing
const teamColors = {
"Finrod Felegund": "#2563eb",
"DeJake": "#dc2626",
"Nephthys": "#16a34a",
"Sp Bro": "#f59e0b",
"Pran": "#7c3aed",
"CharChar": "#0891b2",
"TDI": "#ef4444",
"Humble": "#10b981",
"Brod10": "#fb7185",
"Braedes": "#f97316"
};
const captainRatings = {
"Braedes": 1893,
"Brod10": 1750,
"CharChar": 1733,
"Sp Bro": 1718,
"TDI": 1710,
"Pran": 1704,
"Humble": 1690,
"Nephthys": 1620,
"DeJake": 1607,
"Finrod Felegund": 1567
};
const playerRatings = {
"DT_hero": 1746,
"Zachattack771": 1731,
"Brotus": 1725,
"Bonk": 1721,
"Top Geary": 1655,
"FC | Prawn": 1602,
"Mr Sombrero": 1595,
"Farmer Yo": 1579,
"Matthew": 1566,
"ImprovingYeti": 1555,
"Blue": 1555,
"Byzantine": 1532,
"(Arm)_MTExplore": 1532,
"Slaters": 1531,
"Jeremy V": 1514,
"TheHobbalution": 1513,
"FC | MASH": 1507,
"PowerBug96": 1498,
"De_IceMan": 1479,
"hank": 1478,
"Nessy": 1470,
"M57": 1460,
"Captain Kniples": 1430,
"MCGoob": 1428,
"Bairdoss": 1416,
"LoganJosh": 1417,
"TrickyMicky90": 1404,
"Pleco__": 1405,
"phat johnson": 1396,
"bug ee": 1326,
"Yifahn": 1323,
"EchoEmpires": 1303,
"Berbers Burgers": 1284,
"Explosiv_fury": 1254,
"Alian713": 1239,
"Killbenji": 1233,
"Squid": 1223,
"Flex": 1216,
"Link": 1163,
"Parktim": 997
};
const draftOrder = [
{pick: 1, captain: "Finrod Felegund", player: "Brotus"},
{pick: 2, captain: "DeJake", player: "DT_hero"},
{pick: 3, captain: "Nephthys", player: "Zachattack771"},
{pick: 4, captain: "Sp Bro", player: "Bonk"},
{pick: 5, captain: "Pran", player: "FC | Prawn"},
{pick: 6, captain: "CharChar", player: "Matthew"},
{pick: 7, captain: "TDI", player: "Blue"},
{pick: 8, captain: "Humble", player: "Farmer Yo"},
{pick: 9, captain: "Brod10", player: "M57"},
{pick: 10, captain: "Braedes", player: "hank"},
{pick: 11, captain: "Braedes", player: "Byzantine"},
{pick: 12, captain: "Brod10", player: "Squid"},
{pick: 13, captain: "Humble", player: "Captain Kniples"},
{pick: 14, captain: "TDI", player: "Pleco__"},
{pick: 15, captain: "CharChar", player: "Jeremy V"},
{pick: 16, captain: "Pran", player: "Mr Sombrero"},
{pick: 17, captain: "Sp Bro", player: "Top Geary"},
{pick: 18, captain: "Nephthys", player: "Slaters"},
{pick: 19, captain: "DeJake", player: "ImprovingYeti"},
{pick: 20, captain: "Finrod Felegund", player: "FC | MASH"},
{pick: 21, captain: "Finrod Felegund", player: "(Arm)_MTExplore"},
{pick: 22, captain: "DeJake", player: "TheHobbalution"},
{pick: 23, captain: "Nephthys", player: "MCGoob"},
{pick: 24, captain: "Sp Bro", player: "Nessy"},
{pick: 25, captain: "Pran", player: "bug ee"},
{pick: 26, captain: "CharChar", player: "PowerBug96"},
{pick: 27, captain: "TDI", player: "De_IceMan"},
{pick: 28, captain: "Humble", player: "LoganJosh"},
{pick: 29, captain: "Brod10", player: "Berbers Burgers"},
{pick: 30, captain: "Braedes", player: "Flex"},
{pick: 31, captain: "Braedes", player: "Alian713"},
{pick: 32, captain: "Brod10", player: "Killbenji"},
{pick: 33, captain: "Humble", player: "EchoEmpires"},
{pick: 34, captain: "TDI", player: "Bairdoss"},
{pick: 35, captain: "CharChar", player: "TrickyMicky90"},
{pick: 36, captain: "Pran", player: "Yifahn"},
{pick: 37, captain: "Sp Bro", player: "phat johnson"},
{pick: 38, captain: "Nephthys", player: "Link"},
{pick: 39, captain: "DeJake", player: "Explosiv_fury"},
{pick: 40, captain: "Finrod Felegund", player: "Parktim"}
];
// Process data
const players = draftOrder.map(pick => {
const rating = playerRatings[pick.player] !== undefined ? playerRatings[pick.player] : null;
return {
...pick,
rating,
team: pick.captain,
overall_pick: pick.pick,
overall_rank: null // Will be calculated after sorting
};
});
// Calculate overall rank
const ratedPlayers = players.filter(p => p.rating !== null)
.sort((a, b) => b.rating - a.rating);
ratedPlayers.forEach((player, index) => {
const originalPlayer = players.find(p => p.player === player.player);
if (originalPlayer) {
originalPlayer.overall_rank = index + 1;
}
});
// Group players by team
const teams = {};
players.forEach(player => {
if (!teams[player.captain]) {
teams[player.captain] = {
name: player.captain,
picks: [],
captain_rating: captainRatings[player.captain]
};
}
teams[player.captain].picks.push(player);
});
// Calculate team averages
Object.values(teams).forEach(team => {
const ratedPlayers = team.picks.filter(p => p.rating !== null);
const playerRatingsOnly = ratedPlayers.map(p => p.rating);
// Team average (players only)
team.team_avg_rating = playerRatingsOnly.length > 0 ?
Math.round(playerRatingsOnly.reduce((a, b) => a + b, 0) / playerRatingsOnly.length) : 0;
// Team average with captain
team.team_avg_with_captain = Math.round(
(playerRatingsOnly.reduce((a, b) => a + b, 0) + team.captain_rating) /
(playerRatingsOnly.length + 1)
);
// Rating spread
team.rating_spread = playerRatingsOnly.length > 0 ?
Math.max(...playerRatingsOnly) - Math.min(...playerRatingsOnly) : 0;
});
// Render Draft Board Timeline
function renderDraftTimeline() {
const timelineContainer = document.querySelector('.min-w-max');
timelineContainer.innerHTML = '';
players.forEach(pick => {
const color = teamColors[pick.captain];
const chip = document.createElement('div');
chip.className = 'draft-chip bg-white rounded-lg shadow-sm p-3 flex flex-col items-center';
chip.style.borderLeft = `4px solid ${color}`;
chip.innerHTML = `
<div class="text-xs text-gray-500">Pick ${pick.pick}</div>
<div class="font-semibold text-sm mt-1 text-black">${pick.player}</div>
<div class="text-xs ${pick.rating ? 'text-gray-700' : 'text-gray-400'} mt-1">
${pick.rating ? `Rating: ${pick.rating}` : 'No rating'}
</div>
`;
timelineContainer.appendChild(chip);
});
}
// Render Team Cards
function renderTeamCards() {
const teamContainer = document.querySelector('.grid.gap-6');
teamContainer.innerHTML = '';
Object.values(teams).forEach(team => {
const color = teamColors[team.name];
const card = document.createElement('div');
card.className = 'team-card bg-gray-800 rounded-lg shadow-md p-6 border border-gray-700';
card.style.borderTop = `4px solid ${color}`;
const playersList = team.picks.map(player =>
`
<div class="flex justify-between py-1 border-b border-gray-700 last:border-b-0">
<span>${player.player}</span>
<span class="${player.rating ? 'text-white' : 'text-white/60'}">
${player.rating ? player.rating : 'N/A'}
</span>
</div>`
).join('');
card.innerHTML = `
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-bold" style="color: ${color}">${team.name}</h3>
<span class="text-sm font-semibold">Rating: ${team.captain_rating}</span>
</div>
<div class="mb-6">
<h4 class="font-semibold mb-2">Roster</h4>
<div class="max-h-60 overflow-y-auto">
${playersList}
</div>
</div>
<div class="space-y-4">
<div>
<div class="flex justify-between mb-1">
<span class="text-sm">Team Avg (Players)</span>
<span class="text-sm font-semibold">${team.team_avg_rating}</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="progress-bar h-2 rounded-full" style="width: ${(team.team_avg_rating / 1800 * 100)}%; background-color: ${color}"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm">Team Avg (w/ Captain)</span>
<span class="text-sm font-semibold">${team.team_avg_with_captain}</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="progress-bar h-2 rounded-full" style="width: ${(team.team_avg_with_captain / 1800 * 100)}%; background-color: ${color}"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm">Rating Spread</span>
<span class="text-sm font-semibold">${team.rating_spread}</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2">
<div class="progress-bar h-2 rounded-full" style="width: ${Math.min(100, (team.rating_spread / 800 * 100))}%; background-color: ${color}"></div>
</div>
</div>
</div>
`;
teamContainer.appendChild(card);
});
}
// Render Player Directory
function renderPlayerDirectory() {
// Populate team filter
const teamFilter = document.querySelector('select:first-of-type');
Object.keys(teams).forEach(team => {
const option = document.createElement('option');
option.value = team;
option.textContent = team;
teamFilter.appendChild(option);
});
// Populate player table
const tableBody = document.querySelector('tbody');
tableBody.innerHTML = '';
players.forEach(player => {
const color = teamColors[player.captain];
const row = document.createElement('tr');
row.className = 'player-row';
row.innerHTML = `
<td class="px-4 py-3">${player.player}</td>
<td class="px-4 py-3">
<span class="inline-block w-3 h-3 rounded-full mr-2" style="background-color: ${color}"></span>
${player.captain}
</td>
<td class="px-4 py-3">${player.rating !== null ? player.rating : 'N/A'}</td>
<td class="px-4 py-3">${player.pick}</td>
<td class="px-4 py-3">${player.overall_rank !== null ? player.overall_rank : 'N/A'}</td>
`;
tableBody.appendChild(row);
});
}
// Initialize charts
function initCharts() {
// Scatter chart: Rating vs Pick
const scatterCtx = document.getElementById('scatterChart').getContext('2d');
const scatterData = players.filter(p => p.rating !== null).map(player => ({
x: player.pick,
y: player.rating,
team: player.captain
}));
const scatterDatasets = [];
Object.keys(teams).forEach(team => {
const teamData = scatterData.filter(d => d.team === team);
if (teamData.length > 0) {
scatterDatasets.push({
label: team,
data: teamData,
backgroundColor: teamColors[team],
borderColor: teamColors[team],
pointRadius: 6,
pointHoverRadius: 8
});
}
});
new Chart(scatterCtx, {
type: 'scatter',
data: {
datasets: scatterDatasets
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
x: {
title: {
display: true,
text: 'Pick Number'
},
reverse: false
},
y: {
title: {
display: true,
text: 'Rating'
},
suggestedMin: 900,
suggestedMax: 1800
}
},
plugins: {
legend: {
position: 'right'
},
tooltip: {
callbacks: {
label: function(context) {
return `${context.raw.team}: ${context.raw.y} (Pick ${context.raw.x})`;
}
}
}
}
}
});
// Team average ratings chart
const teamAvgCtx = document.getElementById('teamAvgChart').getContext('2d');
const teamLabels = Object.keys(teams);
const teamAvgData = teamLabels.map(team => teams[team].team_avg_rating);
const teamColorsArray = teamLabels.map(team => teamColors[team]);
new Chart(teamAvgCtx, {
type: 'bar',
data: {
labels: teamLabels,
datasets: [{
label: 'Team Average Rating (Picked Players Only)',
data: teamAvgData,
backgroundColor: teamColorsArray,
borderColor: teamColorsArray,
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: false,
suggestedMin: 1200,
suggestedMax: 1700,
title: {
display: true,
text: 'Rating'
}
}
}
}
});
}
// Initialize the page
document.addEventListener('DOMContentLoaded', function() {
renderDraftTimeline();
renderTeamCards();
renderPlayerDirectory();
initCharts();
feather.replace();
});
</script>
</body>
</html>