var preloaded = false;
var preload = [];
-function imageRefresh(id) {
- img = document.getElementById(id);
- var d = new Date;
- var http = img.src;
- if (http.indexOf("?t=") != -1) { http = http.split("?t=")[0]; }
- img.src = http + '?t=' + d.getTime();
-}
-
-function startWebsocket() {
- ws = new WebSocket("ws://" + window.location.host + ":5678/");
- ws.onclose = function(){
- //websocket = null;
- setTimeout(function(){startWebsocket()}, 10000);
- }
- return ws;
-}
-
-var websocket = startWebsocket();
-
var prev = document.querySelector('#prev'),
next = document.querySelector('#next'),
first = document.querySelector('#first'),
slide_label = document.querySelector('#slide_label'),
current = document.querySelector('#current'),
total = document.querySelector('#total'),
- users = document.querySelector('.users'),
+ status_text = document.querySelector('.status_text'),
current_img = document.querySelector('#current_img'),
next_img = document.querySelector('#next_img'),
current_div = document.querySelector('#current_div'),
show_next = document.querySelector('#show_next'),
shortcuts = document.querySelector('#shortcuts');
+
+function startWebsocket() {
+ console.log("Attempting to connect")
+ ws = new WebSocket("ws://" + window.location.host + ":5678/");
+ ws.onmessage = receive_message;
+ ws.onclose = function(){
+ ws = null;
+ setTimeout(function(){websocket = startWebsocket()}, 1000);
+ }
+ if (ws.readyState !== WebSocket.OPEN) {
+ disconnect()
+ }
+ return ws;
+}
+
+var websocket = startWebsocket();
+
prev.onclick = function (event) {
websocket.send(JSON.stringify({action: 'prev'}));
}
}
});
-function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
-}
-
function disconnect() {
- document.title = DEFAULT_TITLE;
+ console.log("Disconnecting")
+ document.title = DEFAULT_TITLE;
current_img.src = "/black.jpg";
next_img.src = "/black.jpg";
- users.textContent = "Connection to PowerPoint failed";
+ status_text.textContent = "Disconnected";
+ total.textContent = "?";
+ current.value = "";
}
-websocket.onmessage = function (event) {
- console.log("Received data");
+function receive_message(event) {
data = JSON.parse(event.data);
switch (data.type) {
case 'state':
if (data.connected == "0" || data.connected == 0) {
- console.log("Disconnected");
disconnect();
break;
+ } else {
+ status_text.textContent = "Connected";
}
var d = new Date;
- switch (data.visible) {
- case 3:
- current_img.src = "/black.jpg";
- break;
- case 4:
- current_img.src = "/white.jpg";
- break;
- default:
- //current_img.src = "/cache/" + data.current + ".jpg?t=" + d.getTime();
- current_img.src = "/cache/" + data.current + ".jpg";
- break;
+ if (show_current.checked) {
+ switch (data.visible) {
+ case 3:
+ current_img.src = "/black.jpg";
+ break;
+ case 4:
+ current_img.src = "/white.jpg";
+ break;
+ default:
+ current_img.src = "/cache/" + data.current + ".jpg?t=" + d.getTime();
+ //current_img.src = "/cache/" + data.current + ".jpg";
+ break;
+ }
}
if (data.current == data.total + 1) {
- //next_img.src = "/cache/" + (data.total + 1) + ".jpg?t=" + d.getTime();
- next_img.src = "/cache/" + (data.total + 1) + ".jpg";
+ next_img.src = "/cache/" + (data.total + 1) + ".jpg?t=" + d.getTime();
+ //next_img.src = "/cache/" + (data.total + 1) + ".jpg";
} else {
- //next_img.src = "/cache/" + (data.current + 1) + ".jpg?t=" + d.getTime();
- next_img.src = "/cache/" + (data.current + 1) + ".jpg";
+ next_img.src = "/cache/" + (data.current + 1) + ".jpg?t=" + d.getTime();
+ //next_img.src = "/cache/" + (data.current + 1) + ".jpg";
}
- if (document.activeElement != current) {
+ if (document.activeElement != current) {
current.value = data.current;
}
total.textContent = data.total;
document.title = data.name;
break;
- case 'users':
- users.textContent = (
- data.count.toString() + " client" +
- (data.count == 1 ? "" : "s"));
- break;
default:
console.error(
- "unsupported event", data);
+ "Unsupported event", data);
}
if (preloaded == false && ! isNaN(total.textContent)) {
image = document.getElementById("preload_img");
for (let i=1; i<=Number(total.textContent); i++) {
image.src = "/cache/" + i + ".jpg";
preload.push(image);
- console.log("Preloaded " + total.textContent);
- //sleep(0.5)
}
preloaded = true;
}
};
-
-var interval = setInterval(refresh, 1000);
-
-function refresh() {
- console.log("Refreshing")
- websocket.send(JSON.stringify({action: 'refresh'}));
-}
-