simplify code for ladder sorting
[sc2-widget] / widget.html
index 88d5285d1c3f954cc16c9357566a6dccb28f3b77..387d3db7e16a55bf5b5be5cac63c58b1babf58d5 100644 (file)
@@ -4,6 +4,9 @@
 <head>
 <meta charset="utf-8" />
 <title>StarCraft ][ Clan summary</title>
+<link rel="stylesheet" type="text/css" href="/schtarr/battle.css" />
+<meta name="theme-color" content="#000D1A" />
+<meta name="viewport" content="width=device-width" />
 </head>
 
 <body>
 <script>
        fetch('/schtarr/inno.json')
        .then(res => res.json())
-       .then(json => {
-               let out = document.getElementById('clan');
-               out.innerHTML = `<h1>${json.tag}</h1><h2 title="Division ${json.division}">${json.league} <small>#${json.rank}</small></h2>`
-                       + json.members.map(member => `<a href="${member.profileUrl}"><img src="${member.avatarUrl}" title="${member.name}" /></a>`).join('');
+       .then(clan => {
+               let tiernum = (rank) => rank <= 8 ? 1 : rank <= 25 ? 2 : rank <= 50 ? 3 : 4;
+               document.getElementById('clan').outerHTML = `
+                       <h1>${clan.tag}</h1>
+                       <ul class=ladders>
+                       ${clan.ladders.map(ladder => `
+                               <li class="rank ${ladder.league} tier${tiernum(ladder.rank)}"
+                                title="Division ${ladder.division} (${ladder.wins}:${ladder.losses})">
+                                       ${ladder.league} <small>#${ladder.rank}</small>
+                               </li>
+                       `).join('')}
+                       </ul>
+                       <ul class=members>
+                       ${clan.members.map(member => `
+                               <li><a href="${member.profileUrl}"><figure>
+                                       <img src="${member.avatarUrl}" title="${member.name}" />
+                                       <figcaption>${member.name}</figcaption>
+                               </figure></a></li>
+                       `).join('')}
+                       </ul>
+               `
+
+               let i = 0
+               document.querySelectorAll('.ladders li').forEach(ladder => {
+                       let laddermembers = clan.ladders[i++].members
+                       let membercont = document.querySelector('.members')
+                       ladder.onmouseover = e => {
+                               membercont.classList.add('select')
+                               laddermembers.forEach(member => {
+                                       membercont.children[member].classList.add('select')
+                               })
+                       }
+                       ladder.onmouseout = e => {
+                               membercont.classList.remove('select')
+                               laddermembers.forEach(member => {
+                                       membercont.children[member].classList.remove('select')
+                               })
+                       }
+               })
        })
        .catch(error => console.log(error))
 </script>