]> git.sesse.net Git - ultimatescore/blob - quickl3.js
Add support for pictures in lower thirds (only used by the 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                         var image = response.values[i][4];
36                         if (image !== undefined && image.match(/^file:/) !== null) {
37                                 l3s[prefix + number].image = image;
38                         }
39                 }
40                 cb(l3s, sheet);
41         };
42         req.open('GET', 'https://sheets.googleapis.com/v4/spreadsheets/1RciMlauWxqM9LYKdsY6lPjJbIAcHJpCXTqyZSEHxH3U/values/\'' + sheet + '\'!A1:J50?key=AIzaSyAuP9yQn8g0bSay6r_RpGtpFeIbwprH1TU');
43         req.send();
44 };
45
46 var current_quick_l3s = [];
47
48 function quicklowerthird()
49 {
50         var code = current_quick_l3s[state['code']];
51         if (code === undefined) {
52                 return;
53         }
54         document.getElementById('lowerthird-headline-content').innerHTML = code.text;
55         document.getElementById('lowerthird-subheading-content').innerHTML = code.subtext;
56         var img = document.getElementById('lowerthird-img');
57         if (code.image !== undefined) {
58                 img.src = code.image;
59                 img.style.display = 'inline';
60         } else {
61                 img.style.display = 'none';
62         }
63         showlowerthird();
64
65         if (state['code'].match(/^C/) === null) {
66                 setTimeout(function() { hidelowerthird(); }, 4000);
67         }
68 }
69
70 function loadquickl3s()
71 {
72         var sheet_a = state['A'];
73         var sheet_b = state['B'];
74         var sheet_c = 'Calls';
75
76         var newl3s = {};
77         var num_left = 3;
78
79         var cb = function(response, group_name) {
80                 for (var p in response) {
81                         if (response.hasOwnProperty(p)) {
82                                 newl3s[p] = response[p];
83                         }
84                 }
85                 if (--num_left == 0) {
86                         current_quick_l3s = newl3s;
87                 }
88         };
89
90         load_l3(sheet_a, 'A', cb);
91         load_l3(sheet_b, 'B', cb);
92         load_l3(sheet_c, 'C', cb);
93 }
94
95 // Test
96 state = { 'A': 'TFK', 'B': 'ESK' };
97 loadquickl3s();