דברים שרואים מכאן לא רואים בכלל
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

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>