-var clock_running = false;
-var clock_visible = false;
-var comment_visible = false;
-var lowerthird_visible = false;
-var clock_left = 30 * 60;
-var scoreA = 0;
-var scoreB = 0;
-var clock_origin;
-var state = {};
+'use strict';
+
+let clock_running = false;
+let clock_visible = false;
+let comment_visible = false;
+let lowerthird_visible = false;
+let clock_elapsed = 0;
+let clock_limit = 30 * 60;
+let scoreA = 0;
+let scoreB = 0;
+let clock_origin;
+let state = {};
function setteams()
{
document.getElementById('team1').innerHTML = state['team1'];
document.getElementById('team2').innerHTML = state['team2'];
+
+ let sheets = { 'A': state['team1'], 'B': state['team2'] };
+ loadquickl3s(sheets);
}
function setcolors()
function stopclock()
{
if (!clock_running) return;
- clock_left = time_left();
+ clock_elapsed = time_elapsed();
clock_origin = Date.now();
clock_running = false;
}
function setclock(amount)
{
- clock_left = amount;
+ clock_elapsed = amount;
clock_origin = Date.now();
update_clock();
}
function setclockfromstate()
{
- var amount = parseInt(state['clock_min']) * 60 + parseInt(state['clock_sec']);
+ let amount = parseInt(state['clock_min']) * 60 + parseInt(state['clock_sec']);
setclock(amount);
}
+function setclocklimitfromstate()
+{
+ let amount = parseInt(state['clock_limit_min']) * 60 + parseInt(state['clock_limit_sec']);
+ clock_limit = amount;
+}
+
function showclock()
{
if (clock_visible) return;
- var clockbug = document.getElementById('clockbug');
+ let clockbug = document.getElementById('clockbug');
clockbug.className = 'clockbug clockbug-animate-in';
clock_visible = true;
}
function hideclock()
{
if (!clock_visible) return;
- var clockbug = document.getElementById('clockbug');
+ let clockbug = document.getElementById('clockbug');
clockbug.className = 'clockbug clockbug-animate-out';
clock_visible = false;
}
function showcomment()
{
if (comment_visible) return;
- var commentbug = document.getElementById('commentbug');
+ let commentbug = document.getElementById('commentbug');
commentbug.className = 'commentbug commentbug-animate-in';
comment_visible = true;
}
function hidecomment()
{
if (!comment_visible) return;
- var commentbug = document.getElementById('commentbug');
+ let commentbug = document.getElementById('commentbug');
commentbug.className = 'commentbug commentbug-animate-out';
comment_visible = false;
}
{
if (lowerthird_visible) return;
- // With no flexbox, this is how it has to be...
- var f = document.getElementById('lowerthird-headline');
- var g = document.getElementById('lowerthird-headline-content');
- f.style.paddingTop = Math.round((f.clientHeight - g.clientHeight) / 2) + 'px';
-
- f = document.getElementById('lowerthird-subheading');
- g = document.getElementById('lowerthird-subheading-content');
- f.style.paddingTop = Math.round((f.clientHeight - g.clientHeight) / 2) + 'px';
-
- f = document.getElementById('lowerthird-picture');
- g = document.getElementById('lowerthird-picture-content');
- f.style.paddingTop = Math.round((f.clientHeight - g.clientHeight) / 2) + 'px';
-
document.getElementById('lowerthird-headline').className = 'lowerthird-headline lowerthird-headline-animate-in';
document.getElementById('lowerthird-headline-content').className = 'lowerthird-headline-content lowerthird-headline-content-animate-in';
document.getElementById('lowerthird-subheading').className = 'lowerthird-subheading lowerthird-subheading-animate-in';
{
document.getElementById('lowerthird-headline-content').innerHTML = state['text1'];
document.getElementById('lowerthird-subheading-content').innerHTML = state['text2'];
- var img = document.getElementById('lowerthird-img');
+ let img = document.getElementById('lowerthird-img');
if (state['image'] === undefined) {
img.style.display = 'none';
} else {
document.getElementById('lowerthird-headline-content').className = 'lowerthird-headline-content lowerthird-headline-content-animate-out';
document.getElementById('lowerthird-subheading').className = 'lowerthird-subheading lowerthird-subheading-animate-out';
document.getElementById('lowerthird-subheading-content').className = 'lowerthird-subheading-content lowerthird-subheading-content-animate-out';
- document.getElementById('lowerthird-picture').className = 'lowerthird-picture lowerthird-picture-hidden lowerthird-picture-animate-out';
+ document.getElementById('lowerthird-picture').className = 'lowerthird-picture lowerthird-picture-animate-out';
document.getElementById('lowerthird-picture-content').className = 'lowerthird-picture-content lowerthird-picture-content-animate-out';
lowerthird_visible = false;
}
-function time_left()
+function time_elapsed()
{
- var elapsed = (Date.now() - clock_origin) * 1e-3;
- if (elapsed > clock_left) return 0;
- return Math.ceil(clock_left - elapsed);
+ let elapsed = (Date.now() - clock_origin) * 1e-3;
+ if (clock_elapsed + elapsed >= clock_limit) {
+ clock_elapsed = clock_limit;
+ clock_origin = Date.now();
+ clock_running = false;
+ return clock_limit;
+ }
+ return Math.floor(clock_elapsed + elapsed);
}
function update_clock()
{
- var left = time_left();
- var min = Math.floor(left / 60);
- var sec = left % 60;
+ let elapsed = time_elapsed();
+ let min = Math.floor(elapsed / 60);
+ let sec = elapsed % 60;
if (sec < 10) sec = "0" + sec;
document.getElementById('clock').innerHTML = min + ":" + sec;
{
document.getElementById('manualcontrols').style.display = 'none';
document.getElementById('area').style.display = 'none';
-
- // Old CEF workaround
- document.getElementById('lowerthird-subheading').style.top = '638px';
}
function update(v)
{
console.log('[[[' + v + ']]]');
- var j = JSON.parse(v);
- for(var key in j) state[key] = j[key];
+ let j = JSON.parse(v);
+ for(let key in j) state[key] = j[key];
}
setInterval(function() {
//play();
//startclock();
+
+let websocket = null;
+
+function open_ws()
+{
+ console.log("Connecting...");
+ try {
+ if (websocket)
+ websocket.close();
+ websocket = new WebSocket("ws://127.0.0.1:5250/");
+ websocket.onopen = function(evt) {
+ console.log("Connected to client.");
+ };
+ websocket.onclose = function(evt) {
+ console.log("Disconnected from client.");
+ setTimeout(open_ws, 100);
+ };
+ websocket.onmessage = function(evt) {
+ let msg = evt.data;
+ let m = msg.match(/^update (.*)/);
+ if (m !== null) {
+ update(m[1]);
+ }
+ m = msg.match(/^eval (.*)/);
+ if (m !== null) {
+ eval(m[1]);
+ }
+ };
+ websocket.onerror = function(evt) {
+ console.log('Error: ' + evt.data);
+ };
+ } catch (exception) {
+ console.log('Error: ' + exception);
+ setTimeout(open_ws, 100);
+ }
+};
+open_ws();