Pictures!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

script.js 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. (function fullscreen() {
  2. var elem = document.body;
  3. var rFS = elem.requestFullScreen ||
  4. elem.msRequestFullScreen ||
  5. elem.mozRequestFullScreen ||
  6. elem.webkitRequestFullScreen;
  7. if (rFS)
  8. rFS.call(elem);
  9. })();
  10. var overlay = () => document.querySelector("#overlay");
  11. var main = () => document.querySelector("#main");
  12. var msg = () => document.querySelector("#msg");
  13. function message(str) {
  14. msg().innerHTML = str;
  15. msg().className = "active";
  16. }
  17. // Swap the IDs of two elements
  18. function swap(elem1, elem2) {
  19. var tmp = elem1.id;
  20. elem1.id = elem2.id;
  21. elem2.id = tmp;
  22. }
  23. // Change slides with a transition
  24. function update(name) {
  25. overlay().className = "";
  26. swap(main(), overlay());
  27. main().src ="/"+name+"/";
  28. main().onload = () => {
  29. overlay().className = "hidden";
  30. }
  31. }
  32. function reload() {
  33. message("Connection to server lost.");
  34. var i = setInterval(() => {
  35. fetch("/")
  36. .then(res => {
  37. if (res.status !== 200)
  38. return;
  39. history.replaceState({}, "", "/");
  40. location.reload();
  41. })
  42. .catch(() => {});
  43. }, 1000);
  44. }
  45. function await() {
  46. // Wait for the next slide change, then update again
  47. fetch("/await", { method: "POST" })
  48. .then(response => response.json())
  49. .then(obj => {
  50. if (obj.evt === "next") {
  51. update(obj.args.name);
  52. } else if (obj.evt === "reload") {
  53. return reload();
  54. } else {
  55. console.log("Unknown event: "+obj.evt);
  56. }
  57. await();
  58. })
  59. .catch(err => { console.error(err); reload(); });
  60. }
  61. await();
  62. fetch("/init")
  63. .then(response => response.text())
  64. .then(name => update(name));