]> git.sesse.net Git - ultimatescore/blob - quickl3.js
Support multiline text in quick lower thirds.
[ultimatescore] / quickl3.js
1 var load_l3 = function(sheet, prefix, cb)
2 {
3         var req = new XMLHttpRequest();
4         req.onload = function(e) {
5                 var response = JSON.parse(req.responseText);
6                 var l3s = [];
7                 var i;
8                 for (i = 0; i < response.values.length; ++i) {
9                         if (response.values[i][0] === 'Number') {
10                                 ++i;
11                                 break;
12                         }
13                 }
14
15                 for ( ; response.values[i] !== undefined && response.values[i].length >= 3; ++i) {
16                         var number = response.values[i][0];
17                         var display_number = response.values[i][1];
18                         if (number === '') {
19                                 number = display_number;
20                         }
21                         var text = response.values[i][2];
22                         if (display_number !== undefined && display_number !== '') {
23                                 text = "&nbsp;" + display_number + "&nbsp;&nbsp;" + text;
24                         }
25                         text = text.replace(/\n/, '<br />');
26                         var subtext = response.values[i][3];
27                         if (subtext === undefined || subtext === '') {
28                                 subtext = 'TrønDisk 2017';
29                         }
30
31                         l3s[prefix + number] = {
32                                 "text": text,
33                                 "subtext": subtext
34                         };
35                 }
36                 cb(l3s, sheet);
37         };
38         req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/1RciMlauWxqM9LYKdsY6lPjJbIAcHJpCXTqyZSEHxH3U/values/\'' + sheet + '\'!A1:J50?key=AIzaSyAuP9yQn8g0bSay6r_RpGtpFeIbwprH1TU');
39         req.send();
40 };
41
42 var current_quick_l3s = [];
43
44 function quicklowerthird()
45 {
46         var code = current_quick_l3s[state['code']];
47         if (code === undefined) {
48                 return;
49         }
50         document.getElementById('lowerthird-headline-content').innerHTML = code.text;
51         document.getElementById('lowerthird-subheading-content').innerHTML = code.subtext;
52         showlowerthird();
53
54         if (state['code'].match(/^C/) === null) {
55                 setTimeout(function() { hidelowerthird(); }, 4000);
56         }
57 }
58
59 function loadquickl3s()
60 {
61         var sheet_a = state['A'];
62         var sheet_b = state['B'];
63         var sheet_c = 'Calls';
64
65         var newl3s = {};
66         var num_left = 3;
67
68         var cb = function(response, group_name) {
69                 for (var p in response) {
70                         if (response.hasOwnProperty(p)) {
71                                 newl3s[p] = response[p];
72                         }
73                 }
74                 if (--num_left == 0) {
75                         current_quick_l3s = newl3s;
76                 }
77         };
78
79         load_l3(sheet_a, 'A', cb);
80         load_l3(sheet_b, 'B', cb);
81         load_l3(sheet_c, 'C', cb);
82 }
83
84 // Test
85 state = { 'A': 'TFK', 'B': 'ESK' };
86 loadquickl3s();