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