d6f5f8d66ddeef85b5e32b721724e4873d38e5b2
[sc2-widget] / widget.html
1 <!DOCTYPE html>
2 <html>
3
4 <head>
5 <meta charset="utf-8" />
6 <title>StarCraft ][ Clan summary</title>
7 <link rel="stylesheet" type="text/css" href="/schtarr/battle.css" />
8 <meta name="theme-color" content="#000D1A" />
9 <meta name="viewport" content="width=device-width" />
10 </head>
11
12 <body>
13 <p id="clan">No clan data</p>
14 <script>
15         let request = this.location.pathname.split('/')
16         request.splice(2, 1) // strip page name
17         fetch(request.join('/') + '.json')
18         .then(res => {
19                 if (res.status != 200) {
20                         console.log('got %o', res)
21                         throw `status ${res.status}`
22                 }
23                 return res.json()
24         })
25         .then(clan => {
26                 let tiernum = (rank) => rank <= 8 ? 1 : rank <= 25 ? 2 : rank <= 50 ? 3 : 4;
27                 document.getElementById('clan').outerHTML = `
28                         <h1>${clan.tag || clan.members[0].name}</h1>
29                         <ul class=ladders>
30                         ${clan.ladders.map(ladder => `
31                                 <li class="rank ${ladder.league} tier${tiernum(ladder.rank)}"
32                                  title="Division ${ladder.division} (${ladder.wins}:${ladder.losses})">
33                                         ${ladder.league} <small>#${ladder.rank}</small>
34                                 </li>
35                         `).join('')}
36                         </ul>
37                         <ul class=members>
38                         ${clan.members.map(member => `
39                                 <li><a href="${member.profileUrl}"><figure>
40                                         <img src="${member.avatarUrl}" title="${member.name}" />
41                                         <figcaption>${member.name}</figcaption>
42                                 </figure></a></li>
43                         `).join('')}
44                         </ul>
45                 `
46
47                 let i = 0
48                 document.querySelectorAll('.ladders li').forEach(ladder => {
49                         let laddermembers = clan.ladders[i++].members
50                         let membercont = document.querySelector('.members')
51                         ladder.onmouseover = e => {
52                                 membercont.classList.add('select')
53                                 laddermembers.forEach(member => {
54                                         membercont.children[member].classList.add('select')
55                                 })
56                         }
57                         ladder.onmouseout = e => {
58                                 membercont.classList.remove('select')
59                                 laddermembers.forEach(member => {
60                                         membercont.children[member].classList.remove('select')
61                                 })
62                         }
63                 })
64         })
65         .catch(msg => console.error('include failure:', msg))
66 </script>
67 </body>
68
69 </html>