]> git.sesse.net Git - ultimatescore/blob - quickl3.js
Make the roster scripts executable.
[ultimatescore] / quickl3.js
1 'use strict';
2
3 function load_l3(sheet, prefix, cb)
4 {
5         let req = new XMLHttpRequest();
6         req.onload = function(e) {
7                 let response = JSON.parse(req.responseText);
8                 let l3s = [];
9                 let i;
10                 for (i = 0; i < response.values.length; ++i) {
11                         if (response.values[i][0] === 'Number' ||
12                             response.values[i][0] === 'Fake #') {
13                                 ++i;
14                                 break;
15                         }
16                 }
17
18                 for ( ; response.values[i] !== undefined && response.values[i].length >= 3; ++i) {
19                         let number = response.values[i][0];
20                         let display_number = response.values[i][1];
21                         if (number === '') {
22                                 number = display_number;
23                         }
24
25                         let text = response.values[i][2];
26                         if (display_number !== undefined && display_number !== '') {
27                                 text = "&nbsp;" + display_number + "&nbsp;&nbsp;" + text;
28                         }
29                         text = text.replace(/\n/, '<br />');
30                         let subtext = response.values[i][3];
31                         if (subtext === undefined || subtext === '') {
32                                 subtext = ultimateconfig['tournament_title'];
33                         }
34
35                         for (const num of number.split(/;/)) {  // Support multiple numbers.
36                                 l3s[prefix + num] = {
37                                         "num": num,
38                                         "raw_text": response.values[i][2],
39                                         "text": text,
40                                         "subtext": subtext
41                                 };
42                                 let image = response.values[i][4];
43                                 if (image !== undefined && image.match(/^file:/) !== null) {
44                                         l3s[prefix + num].image = image.match(/^file:(.*)/)[1];
45                                 }
46                         }
47                 }
48                 cb(l3s, sheet);
49         };
50         req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/' + ultimateconfig['roster_sheet_id'] + '/values/\'' + sheet + '\'!A1:J50?key=' + ultimateconfig['api_key']);
51         req.send();
52 };
53
54 let current_quick_l3s = [];
55
56 function quicklowerthird()
57 {
58         let code = current_quick_l3s[state['code']];
59         if (code === undefined) {
60                 return;
61         }
62         document.getElementById('lowerthird-headline-content').innerHTML = code.text;
63         document.getElementById('lowerthird-subheading-content').innerHTML = code.subtext;
64         let img = document.getElementById('lowerthird-img');
65         if (code.image !== undefined) {
66                 img.src = code.image;
67                 img.style.display = 'inline';
68         } else {
69                 img.style.display = 'none';
70         }
71         showlowerthird();
72
73         if (state['code'].match(/^C/) === null) {
74                 setTimeout(function() { hidelowerthird(); }, 4000);
75         } else {
76                 setTimeout(function() { hidelowerthird(); }, 6000);
77         }
78 }
79
80 function loadquickl3s(sheets)
81 {
82         let newl3s = {};
83         let num_left = 1;
84
85         for (let prop in sheets) {
86                 if (sheets.hasOwnProperty(prop)) {
87                         ++num_left;
88                 }
89         }
90
91         let cb = function(response, group_name) {
92                 for (let p in response) {
93                         if (response.hasOwnProperty(p)) {
94                                 newl3s[p] = response[p];
95                         }
96                 }
97                 if (--num_left == 0) {
98                         current_quick_l3s = newl3s;
99                 }
100         };
101
102         for (let prop in sheets) {
103                 if (sheets.hasOwnProperty(prop)) {
104                         load_l3(sheets[prop], prop, cb);
105                 }
106         }
107         load_l3('Calls', 'C', cb);
108 }
109
110 // Start by loading calls only
111 loadquickl3s({});