index.html 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DomPlayer</title>
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <link rel="stylesheet" href="./assets/css/main.css">
  7. <!-- video Player dependencies -->
  8. <script src="./assets/dom/libs/three/three.js"></script>
  9. <script src="./assets/dom/libs/es6-collections.min.js"></script>
  10. <script src="./assets/dom/libs/es6-promise.min.js"></script>
  11. <!-- Utility code that may be used by all scenes -->
  12. <!-- <script src="./scenes/common.js"></script> -->
  13. <!-- <script src="./interact/js/DomeMaster.js"></script> -->
  14. <script type="module" src="./assets/js/playlist.js"></script>
  15. <script type="module" src="./assets/dom/renderers/FullDomeRenderer.js"></script>
  16. <!-- <script src="./scenes/video.js"></script> -->
  17. <!-- UI Dependencies & Drag and resize div using jqueryUI -->
  18. <link rel="stylesheet" href="./assets/css/bulma.min.css">
  19. <link rel="stylesheet" href="./assets/css/bulma_switch.css">
  20. <link rel="stylesheet" href="./assets/css/slider.min.css">
  21. <script type="text/javascript" src="./assets/js/libs/jquery.min.js"></script>
  22. <script type="text/javascript" src="./assets/js/libs/jquery-ui.js"></script>
  23. <script type="text/javascript" src="./assets/js/libs/bulma-slider.min.js"></script>
  24. <link rel="stylesheet" type="text/css" href="./assets/css/jquery-ui.css"/>
  25. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
  26. crossorigin="anonymous" referrerpolicy="no-referrer" />
  27. <script src="./assets/js/libs/Sortable.min.js"></script>
  28. <script>
  29. // console.log("INIT !")
  30. // if (typeof peerJsInit === "function") peerJsInit();
  31. </script>
  32. <div class="drag-widget-container" id="wrap">
  33. </div>
  34. <!-- Insert this line after script imports -->
  35. <script>if (window.module) module = window.module;</script>
  36. <script src="./renderer.js"></script>
  37. <script>
  38. var getAbsPosition = function(el){
  39. var el2 = el;
  40. var curtop = 0;
  41. var curleft = 0;
  42. if (document.getElementById || document.all) {
  43. do {
  44. curleft += el.offsetLeft-el.scrollLeft;
  45. curtop += el.offsetTop-el.scrollTop;
  46. el = el.offsetParent;
  47. el2 = el2.parentNode;
  48. while (el2 != el) {
  49. curleft -= el2.scrollLeft;
  50. curtop -= el2.scrollTop;
  51. el2 = el2.parentNode;
  52. }
  53. } while (el.offsetParent);
  54. } else if (document.layers) {
  55. curtop += el.y;
  56. curleft += el.x;
  57. }
  58. return [curtop, curleft];
  59. };
  60. $(document).ready(function() {
  61. let wrapLoca = document.getElementById('wrap')
  62. $("#wrap").draggable({
  63. drag: function(e, ui){
  64. let coords = getAbsPosition(wrapLoca)
  65. // console.log("Drag - top", coords[0], "left", coords[1])
  66. localStorage.setItem('playerTop', `${coords[0]}px`);
  67. localStorage.setItem('playerLeft', `${coords[1]}px`);
  68. },
  69. }).resizable({
  70. start: function(e, ui) {
  71. // alert('resizing started');
  72. },
  73. resize: function(e, ui) {
  74. // console.log("resize - width", wrapLoca.style.width, "height", wrapLoca.style.height)
  75. if(window.onWindowResize) window.onWindowResize(true)
  76. localStorage.setItem('playerWidth', wrapLoca.style.width);
  77. localStorage.setItem('playerHeight', wrapLoca.style.height);
  78. },
  79. stop: function(e, ui) {
  80. if(window.onWindowResize) window.onWindowResize(false)
  81. }
  82. });
  83. });
  84. </script>
  85. </head>
  86. <body>
  87. <div id="electron-titlebar" class="drag top-titlebar" style="-webkit-app-region: drag">
  88. <nav style="-webkit-app-region: drag; -webkit-user-select: none;">
  89. </nav>
  90. </div>
  91. <div id="panel" class="panel is-primary container card">
  92. <p class="panel-heading">
  93. <img src="./assets/domPlayer.png" id="logo">
  94. DomPlayer Options
  95. </p>
  96. <p class="panel-tabs">
  97. <a class="is-active">All</a>
  98. <a>Config</a>
  99. <a>Controls</a>
  100. <a>help</a>
  101. <a>About</a>
  102. </p>
  103. <a class="panel-block is-active">
  104. <label class="panel-block">
  105. <div class="field">
  106. <input id="switchExample" type="checkbox" name="switchExample" class="switch is-small" checked="checked">
  107. <label for="switchExample">Half Dome mode</label>
  108. </div>
  109. </label>
  110. </a>
  111. <div class="panel-block">
  112. <button class="button is-small is-rounded" onclick="centerVideo()">
  113. <span class="icon is-small">
  114. <i class="fas fa-circle"></i>
  115. </span>
  116. <span>Center video</span>
  117. </button>
  118. </div>
  119. <h2 class="title is-5 titles">Playlist</h2>
  120. <div class="card">
  121. <div class="card-content">
  122. <div class="content">
  123. <ul id='playlist'><h2 class="title is-5" id="emptyFlag""">Empty...</h2></ul>
  124. </div>
  125. </div>
  126. <div class="panel-block">
  127. <button class="button is-link is-outlined is-fullwidth" onclick="addVideo()">
  128. Add Video
  129. </button>
  130. </div>
  131. <div class="card">
  132. <div class="card-content">
  133. <p class="title title is-5">
  134. Info
  135. </p>
  136. <p class="subtitle is-6">
  137. Shortcuts
  138. </p>
  139. <ul id="shortcuts">
  140. <li>P - Open/close Panel</li>
  141. <li>M - Muted</li>
  142. <li>Space - pause/play Video</li>
  143. </ul>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div id="controls">
  149. <input class="slider is-fullwidth has-output-tooltip" id="slidControl" step="1" min="0" max="100" value="50" type="range">
  150. <progress id="progressBar" class="progress is-info" value="45" max="100">45%</progress>
  151. </div>
  152. <script>
  153. let optionPanel = document.getElementById('panel')
  154. let progres = document.getElementById('controls')
  155. function hidepanel(bool){
  156. if (!bool) {
  157. optionPanel.style.right = "15px"
  158. optionPanel.style.opacity = 1
  159. progres.style.opacity = 1
  160. } else {
  161. optionPanel.style.right = "-315px"
  162. optionPanel.style.opacity = 0
  163. progres.style.opacity = 0
  164. }
  165. }
  166. document.addEventListener("keydown", function(event) {
  167. // console.log("event.key", event.key)
  168. let usedKeys = ["p", " ", "m"]
  169. if (usedKeys.indexOf(event.key) !== -1) { // touche - debug info
  170. event.preventDefault();
  171. if (event.key == "m" ) { // m for muted
  172. if (!videoPlayer.muted) videoPlayer.muted = true
  173. else videoPlayer.muted = false
  174. }
  175. if (event.key == " " ) { // space for pause
  176. if (!videoPlayer.paused) {
  177. videoPlayer.pause()
  178. } else {
  179. videoPlayer.play()
  180. }
  181. }
  182. if (event.key === "p") { // P for panel
  183. event.preventDefault();
  184. if(optionPanel.style.opacity == 0) hidepanel(false)
  185. else hidepanel(true)
  186. }
  187. }
  188. });
  189. </script>
  190. </body>
  191. </html>