]> git.sesse.net Git - ultimatescore/blob - roster.js
Make the roster scripts executable.
[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                             response.values[i][0] === 'Fake #') {
21                                 ++i;
22                                 break;
23                         }
24                 }
25
26                 for ( ; response.values[i] !== undefined && response.values[i].length >= 3; ++i) {
27                         let display_number = response.values[i][1];
28                         let name = response.values[i][2];
29                         roster.push({
30                                 "number": display_number,
31                                 "name": name
32                         });
33                 }
34                 roster.sort(function(a, b) {
35                         let an = a['number'];
36                         let bn = b['number'];
37                         if (!(parseInt(an) > 0)) an = 1000;
38                         if (!(parseInt(bn) > 0)) bn = 1000;
39                         if (an !== bn) {
40                                 return an - bn;
41                         }
42                         return a['name'].localeCompare(b['name']);
43                 });
44                 cb(team_name, roster);
45         };
46         req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/' + ultimateconfig['roster_sheet_id'] + '/values/\'' + sheet + '\'!A1:J50?key=' + ultimateconfig['api_key']);
47         req.send();
48 };
49
50 function display_roster(team_name, roster)
51 {
52         document.getElementById('entire-bug').style.display = 'none';
53
54         let carousel = document.getElementById('carousel');
55         clear_carousel(carousel);
56
57         if (team_name === '') {
58                 addheading(carousel, 4, 'Team lineup');
59         } else {
60                 addheading(carousel, 4, 'Team lineup<br />' + team_name);
61         }
62
63         for (let i = 0; i < roster.length; i += 2) {
64                 let tr = document.createElement("tr");
65
66                 addth(tr, "playernum", roster[i].number);
67                 addtd(tr, "playername", roster[i].name);
68
69                 if (i + 1 < roster.length) {
70                         addth(tr, "playernum", roster[i + 1].number);
71                         addtd(tr, "playername", roster[i + 1].name);
72                 } else {
73                         addth(tr, "playernum", "");
74                         addtd(tr, "playername", "");
75                 }
76                 carousel.appendChild(tr);
77         }
78         fade_in_rows(carousel);
79
80         carousel.style.display = 'table';
81 }
82
83 function showroster(sheet)
84 {
85         load_roster(sheet, display_roster);
86 }
87
88 function showroster_from_state()
89 {
90         showroster(state['team_code']);
91 }
92
93 function showrostercarousel(sheet1, sheet2)
94 {
95         let team_names = [null, null];
96         let rosters = [null, null];
97         let num_left = 2;
98
99         let cb = function(id, team_name, roster) {
100                 team_names[id] = team_name;
101                 rosters[id] = roster;
102                 if (--num_left == 0) {
103                         do_series([
104                                 [ 13000, function() { display_roster(team_names[0], rosters[0]); } ],
105                                 [ 2000, function() { hidetable(); } ],
106                                 [ 13000, function() { display_roster(team_names[1], rosters[1]); } ],
107                                 [ 2000, function() { hidetable(); } ]
108                         ]);
109                 }
110         };
111
112         load_roster(sheet1, function(team_name, roster) { cb(0, team_name, roster); });
113         load_roster(sheet2, function(team_name, roster) { cb(1, team_name, roster); });
114 }
115
116 function showrostercarousel_from_state()
117 {
118         showrostercarousel(state['team1'], state['team2']);
119 }