simplify code for ladder sorting
[sc2-widget] / widget.html
index b3371970475d1d061a2ab6f964064ec44d4ccebf..387d3db7e16a55bf5b5be5cac63c58b1babf58d5 100644 (file)
 <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}" class="rank ${json.league}">${json.league} <small>#${json.rank}</small></h2>`
-                       + json.members.map(member => `<a href="${member.profileUrl}"><figure><img src="${member.avatarUrl}" title="${member.name}" /><figcaption>${member.name}</figcaption></figure></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>