index.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  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. <script type="text/javascript" src="./assets/js/libs/bulma-toast.min.js"></script>
  25. <link rel="stylesheet" type="text/css" href="./assets/css/jquery-ui.css" />
  26. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"
  27. crossorigin="anonymous" referrerpolicy="no-referrer" />
  28. <script src="./assets/js/libs/Sortable.min.js"></script>
  29. <script>
  30. // console.log("INIT !")
  31. // if (typeof peerJsInit === "function") peerJsInit();
  32. </script>
  33. <div class="drag-widget-container" id="wrap">
  34. </div>
  35. <!-- Insert this line after script imports -->
  36. <script>if (window.module) module = window.module;</script>
  37. <script src="./renderer.js" type="module"></script>
  38. </head>
  39. <body>
  40. <div id="electron-titlebar" class="drag top-titlebar" style="-webkit-app-region: drag">
  41. <nav style="-webkit-app-region: drag; -webkit-user-select: none;">
  42. </nav>
  43. </div>
  44. <div id="panel" class="panel is-primary container card">
  45. <p class="panel-heading" id="headerTopbar">
  46. <img src="./assets/domPlayer.png" id="logo">
  47. DomPlayer Options
  48. </p>
  49. <p class="panel-tabs" id="tabs">
  50. <a class="is-active" data-tab="1">Config</a>
  51. <a data-tab="2">Controls</a>
  52. <a data-tab="3">Help</a>
  53. <a data-tab="4">About</a>
  54. </p>
  55. <div id="tab-content">
  56. <div class="is-active" data-content="1">
  57. <a class="panel-block is-active">
  58. <label class="panel-block">
  59. <div class="field">
  60. <input id="switchExample" type="checkbox" name="switchExample" class="switch is-small" checked="checked">
  61. <label for="switchExample">Half Dome mode</label>
  62. </div>
  63. </label>
  64. </a>
  65. <div class="panel-block">
  66. <button class="button is-small is-rounded" onclick="centerVideo()">
  67. <span class="icon is-small">
  68. <i class="fas fa-circle"></i>
  69. </span>
  70. <span>Center video</span>
  71. </button>
  72. </div>
  73. <h2 class="title is-5 titles">Playlist</h2>
  74. <div class="card">
  75. <div class="card-content">
  76. <div class="content">
  77. <ul id='playlist'>
  78. <h2 class="title is-5" id="emptyFlag""">Empty...</h2>
  79. </ul>
  80. </div>
  81. </div>
  82. <div class="panel-block">
  83. <button class="button is-link is-outlined is-fullwidth" onclick="addVideo()">
  84. Add Video
  85. </button>
  86. </div>
  87. </div>
  88. </div>
  89. <div class="" data-content="2">
  90. <p></p> controls tab
  91. <a class="panel-block is-active">CONTROLS tab</a>
  92. </div>
  93. <div class="" data-content="3">
  94. <div class="card">
  95. <div class="card-content">
  96. <p class="title title is-5">
  97. Info
  98. </p>
  99. <p class="subtitle is-6">
  100. Shortcuts
  101. </p>
  102. <ul id="shortcuts">
  103. <li>P - Open/close Panel</li>
  104. <li>M - Muted</li>
  105. <li>Space - pause/play Video</li>
  106. </ul>
  107. <p class="subtitle is-6">
  108. compatible Videos format
  109. </p>
  110. <p>
  111. All web video formats :
  112. mkv / avi / mp4 / m4v / webv / ogv
  113. </p>
  114. </div>
  115. </div>
  116. </div>
  117. <div class="" data-content="4">
  118. <a class="panel-block is-active">ABOUT</a>
  119. <div class="card">
  120. <div class="card-image">
  121. <figure class="is-4by3 logoAbout">
  122. <img src="./assets/icon_512x512.png" alt="logo domPlayer" style="width: 150px;height: 150px;">
  123. </figure>
  124. </div>
  125. <div class="card-content">
  126. <p class="title title is-5">
  127. DomPlayer
  128. </p>
  129. <p class="subtitle is-6">
  130. Version v1.0.1
  131. </p>
  132. <p>
  133. Domplayer allow you to easely play a video on an half dome and set the size en position of
  134. the video.
  135. </p>
  136. </div>
  137. <footer class="card-footer">
  138. <a href="https://niemes.info"" class="card-footer-item">
  139. <span>Made with <span>
  140. <span class="icon is-small">
  141. <i class="fas fa-heart"></i>
  142. </span>
  143. <span>by Niemeskern Kévin</span>
  144. </a>
  145. </footer>
  146. </div>
  147. </div>
  148. </div>
  149. </div>
  150. <div id="controls">
  151. <input class="slider is-fullwidth has-output-tooltip" id="slidControl" step="1" min="0" max="100" value="50"
  152. type="range">
  153. <progress id="progressBar" class="progress is-small is-info" value="45" max="100">45%</progress>
  154. </div>
  155. <script src="./assets/js/positions.js"></script>
  156. <script>
  157. let optionPanel = document.getElementById('panel')
  158. let progres = document.getElementById('controls')
  159. function hidepanel(bool) {
  160. if (!bool) {
  161. optionPanel.style.right = "15px"
  162. optionPanel.style.opacity = 1
  163. progres.style.opacity = 1
  164. } else {
  165. optionPanel.style.right = "-315px"
  166. optionPanel.style.opacity = 0
  167. progres.style.opacity = 0
  168. }
  169. }
  170. function miam(mess, type){
  171. bulmaToast.toast({
  172. message: mess,
  173. type: type,
  174. dismissible: true,
  175. duration: 1000,
  176. position: "top-left",
  177. "single": false,
  178. // animate: { in: 'fadeIn', out: 'fadeOut' }
  179. })
  180. }
  181. document.addEventListener("keydown", function (event) {
  182. // console.log("event.key", event.key)
  183. let usedKeys = ["p", " ", "m"]
  184. if (usedKeys.indexOf(event.key) !== -1) { // touche - debug info
  185. event.preventDefault();
  186. if (event.key == "m") { // m for muted
  187. if (!videoPlayer.muted) videoPlayer.muted = true
  188. else videoPlayer.muted = false
  189. // notif("success", "mute", videoPlayer.muted)
  190. miam( videoPlayer.muted ? "Mute" : "Unmute", 'is-primary' )
  191. }
  192. if (event.key == " ") { // space for pause
  193. if (!videoPlayer.paused) {
  194. videoPlayer.pause()
  195. miam('Video Paused.','is-primary')
  196. }
  197. else {
  198. videoPlayer.play()
  199. miam('Video is playing.','is-primary')
  200. }
  201. }
  202. if (event.key === "p") { // P for panel
  203. event.preventDefault();
  204. if (optionPanel.style.opacity == 0) hidepanel(false)
  205. else hidepanel(true)
  206. }
  207. }
  208. });
  209. </script>
  210. </body>
  211. </html>