include data from request parameter
[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 = window.location.pathname.split('/')
16         request.splice(2, 1) // strip page name
17         fetch(request.join('/') + '.json')
18         .then(res => res.json())
19         .then(clan => {
20                 document.getElementById('clan').outerHTML = `
21                         <h1>${clan.tag}</h1>
22                         <ul class=ladders>
23                         ${clan.ladders.map(ladder => `
24                                 <li class="rank ${ladder.league}"
25                                  title="Division ${ladder.division} (${ladder.wins}:${ladder.losses})">
26                                         ${ladder.league} <small>#${ladder.rank}</small>
27                                 </li>
28                         `).join('')}
29                         </ul>
30                         <ul class=members>
31                         ${clan.members.map(member => `
32                                 <li><a href="${member.profileUrl}"><figure>
33                                         <img src="${member.avatarUrl}" title="${member.name}" />
34                                         <figcaption>${member.name}</figcaption>
35                                 </figure></a></li>
36                         `).join('')}
37                         </ul>
38                 `
39
40                 let i = 0
41                 document.querySelectorAll('.ladders li').forEach(ladder => {
42                         let laddermembers = clan.ladders[i++].members
43                         let membercont = document.querySelector('.members')
44                         ladder.onmouseover = e => {
45                                 membercont.classList.add('select')
46                                 laddermembers.forEach(member => {
47                                         membercont.children[member].classList.add('select')
48                                 })
49                         }
50                         ladder.onmouseout = e => {
51                                 membercont.classList.remove('select')
52                                 laddermembers.forEach(member => {
53                                         membercont.children[member].classList.remove('select')
54                                 })
55                         }
56                 })
57         })
58         .catch(error => console.log(error))
59 </script>
60 </body>
61
62 </html>