דברים שרואים מכאן לא רואים בכלל
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.html 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>Eye of Beholder</title>
  7. <link href="/static/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  8. <link rel="icon" href="/static/gfx/eye-horus.png">
  9. </head>
  10. <body data-bs-theme="dark" class="overflow-hidden">
  11. <div class="container-fluid text-center">
  12. <div class="row">
  13. <div class="col12">
  14. <video id="the-video" style="height:100vh; margin:0 auto" class="object-fit-contain" muted>
  15. <source id="vid-src" type="video/mp4" src=""/>
  16. </video>
  17. </div>
  18. </div>
  19. <div class="row">
  20. <div class="col12">
  21. <div id="ticker-wrapper" class="alert alert-danger opacity-75 w-100" role="alert" style="position:fixed; left:0; bottom:3rem; z-index:23">
  22. <div id="the-ticker" class="w-100 text-nowrap">
  23. <h1 id="ticker-text" class="fw-bolder text-white py-2" style="direction:rtl; font-size:5rem;">
  24. </h1>
  25. </div>
  26. </div>
  27. </div>
  28. </div>
  29. </div>
  30. <script src="/static/js/config.js"></script>
  31. <script src="/static/js/jquery-3.7.1.min.js"></script>
  32. <script src="/static/js/jquery.marquee.min.js"></script>
  33. <script src="/static/bootstrap/js/bootstrap.bundle.min.js"></script>
  34. <script>
  35. function setTicker(ticker_text) {
  36. $("#the-ticker").marquee("destroy");
  37. if (ticker_text) {
  38. $("#ticker-wrapper").show();
  39. $("#ticker-text").text(ticker_text);
  40. $("#the-ticker").marquee({
  41. "direction": "right",
  42. "duplicated": true,
  43. "speed": 115
  44. });
  45. } else {
  46. $("#ticker-wrapper").hide();
  47. }
  48. }
  49. window.item_index = 0;
  50. function nextItem() {
  51. document.getElementById("vid-src").setAttribute('src', '/static/video/'+ITEMS[item_index].vid);
  52. document.getElementById("the-video").load();
  53. document.getElementById("the-video").play();
  54. setTicker(ITEMS[item_index].ticker);
  55. item_index = (item_index+1)%ITEMS.length;
  56. }
  57. $(()=> {
  58. document.getElementById('the-video').addEventListener('ended',nextItem);
  59. nextItem();
  60. });
  61. async function getDistance() {
  62. try {
  63. let response = await fetch("/d");
  64. let data = await response.json();
  65. return data.distance;
  66. } catch {
  67. return 0;
  68. }
  69. };
  70. async function updateDistance() {
  71. var dist = await getDistance();
  72. var vidblur = 0, tickerblur = TICKER_BLUR_WHEN_FAR;
  73. if (dist && dist<MIN_DIST) {
  74. dist = MIN_DIST;
  75. }
  76. if (dist && dist<MAX_DIST) {
  77. vidblur = parseInt(VID_BLUR_WHEN_CLOSE*(MAX_DIST-dist)/(MAX_DIST-MIN_DIST));
  78. tickerblur = parseInt(TICKER_BLUR_WHEN_FAR*(dist-MIN_DIST)/(MAX_DIST-MIN_DIST));
  79. }
  80. // console.log(vidblur,tickerblur);
  81. // console.log(`${vidblur}, ${tickerblur}`);
  82. document.getElementById("the-video").style.filter=`blur(${vidblur}px)`;
  83. document.getElementById("the-ticker").style.filter=`blur(${tickerblur}px)`;
  84. }
  85. window.update_interval = setInterval(updateDistance, 300);
  86. </script>
  87. </body>
  88. </html>