]> git.sesse.net Git - ultimatescore/blob - roster.js
Add some code to display rosters.
[ultimatescore] / roster.js
1 function load_roster(sheet, cb)
2 {
3         var req = new XMLHttpRequest();
4         req.onload = function(e) {
5                 var response = JSON.parse(req.responseText);
6
7                 var team_name = '';
8                 if (response.values[0].length >= 1 &&
9                     response.values[0][0] !== undefined &&
10                     response.values[0][0] !== null) {
11                         team_name = response.values[0][0];
12                 }
13
14                 var roster = [];
15                 var i;
16                 for (i = 0; i < response.values.length; ++i) {
17                         if (response.values[i][0] === 'Number') {
18                                 ++i;
19                                 break;
20                         }
21                 }
22
23                 for ( ; response.values[i] !== undefined && response.values[i].length >= 3; ++i) {
24                         var display_number = response.values[i][1];
25                         var name = response.values[i][2];
26                         roster.push({
27                                 "number": display_number,
28                                 "name": name
29                         });
30                 }
31                 cb(team_name, roster);
32         };
33         req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/1RciMlauWxqM9LYKdsY6lPjJbIAcHJpCXTqyZSEHxH3U/values/\'' + sheet + '\'!A1:J50?key=AIzaSyAuP9yQn8g0bSay6r_RpGtpFeIbwprH1TU');
34         req.send();
35 };
36
37 function display_roster(team_name, roster)
38 {
39         document.getElementById('entire-bug').style.display = 'none';
40
41         var carousel = document.getElementById('carousel');
42         clear_carousel(carousel);
43
44         if (team_name === '') {
45                 addheading(carousel, 4, 'Team lineup');
46         } else {
47                 addheading(carousel, 4, 'Team lineup<br />' + team_name);
48         }
49
50         for (var i = 0; i < roster.length; i += 2) {
51                 var tr = document.createElement("tr");
52
53                 addth(tr, "playernum", roster[i].number);
54                 addtd(tr, "playername", roster[i].name);
55
56                 if (i + 1 < roster.length) {
57                         addth(tr, "playernum", roster[i + 1].number);
58                         addtd(tr, "playername", roster[i + 1].name);
59                 } else {
60                         addth(tr, "playernum", "");
61                         addtd(tr, "playername", "");
62                 }
63                 carousel.appendChild(tr);
64         }
65         fade_in_rows(carousel);
66
67         carousel.style.display = 'table';
68 }
69
70 function showroster(sheet)
71 {
72         load_roster(sheet, display_roster);
73 }
74
75 function showroster_from_state()
76 {
77         showroster(state['team_code']);
78 }
79
80 function showrostercarousel(sheet1, sheet2)
81 {
82         var team_names = [null, null];
83         var rosters = [null, null];
84         var num_left = 2;
85
86         var cb = function(id, team_name, roster) {
87                 team_names[id] = team_name;
88                 rosters[id] = roster;
89                 if (--num_left == 0) {
90                         do_series([
91                                 [ 13000, function() { display_roster(team_names[0], rosters[0]); } ],
92                                 [ 2000, function() { hidetable(); } ],
93                                 [ 13000, function() { display_roster(team_names[1], rosters[1]); } ],
94                                 [ 2000, function() { hidetable(); } ]
95                         ]);
96                 }
97         };
98
99         load_roster(sheet1, function(team_name, roster) { cb(0, team_name, roster); });
100         load_roster(sheet2, function(team_name, roster) { cb(1, team_name, roster); });
101 }
102
103 function showrostercarousel_from_state()
104 {
105         showrostercarousel(state['team1'], state['team2']);
106 }