bugfixing, obs interface
[ppt-control.git] / ppt-control.js
index 7e4c3122bb26e4f1ada13075782dea4c51e44abb..e1b88419f46cf24c84fbb0a0e923fb54c6c107c6 100644 (file)
@@ -1,4 +1,6 @@
+var DEFAULT_TITLE = "ppt-control"
 var preloaded = false;
+var preload = [];
 
 function imageRefresh(id) {
     img = document.getElementById(id);
@@ -108,6 +110,11 @@ function sync_next() {
 }
 show_next.onclick = sync_next;
 
+function sync_shortcuts() {
+  saveSettings();
+}
+shortcuts.onclick = sync_shortcuts;
+
 function set_control_width() {
        var width = window.innerWidth
        || document.documentElement.clientWidth
@@ -154,10 +161,27 @@ document.addEventListener('keydown', function (e) {
        }
 });
 
+function sleep(ms) {
+      return new Promise(resolve => setTimeout(resolve, ms));
+}
+
+function disconnect() {
+       document.title = DEFAULT_TITLE;
+    current_img.src = "/black.jpg";
+    next_img.src = "/black.jpg";
+    users.textContent = "Connection to PowerPoint failed";
+}
+
 websocket.onmessage = function (event) {
+       console.log("Received data");
     data = JSON.parse(event.data);
     switch (data.type) {
         case 'state':
+            if (data.connected == "0" || data.connected == 0) {
+                               console.log("Disconnected");
+               disconnect();
+               break;
+            }
             var d = new Date;
             switch (data.visible) {
                 case 3:
@@ -194,14 +218,13 @@ websocket.onmessage = function (event) {
             console.error(
                 "unsupported event", data);
     }
-       if (!preloaded) {
-               var i = 0
-               var preload = [];
+       if (preloaded == false && ! isNaN(total.textContent)) {
+               image = document.getElementById("preload_img");
                for (let i=1; i<=Number(total.textContent); i++) {
-                       image = new Image();
                        image.src = "/cache/" + i + ".jpg";
                        preload.push(image);
-                       console.log("Preloaded image " + i);
+               console.log("Preloaded " + total.textContent);
+                       //sleep(0.5)
                }
                preloaded = true;
        }
@@ -211,6 +234,7 @@ websocket.onmessage = function (event) {
 var interval = setInterval(refresh, 5000);
 
 function refresh() {
+       console.log("Refreshing")
     websocket.send(JSON.stringify({action: 'refresh'}));
 }