room.html 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template name="room">
  2. <header>
  3. <nav>
  4. <div class="nav-wrapper teal accent-4">
  5. <ul class="left hide-on-med-and-down">
  6. <li><a href="/"><i class="material-icons">home</i></a></li>
  7. <li><a href="#add_song_modal" id="add-song-modal-button"><i class="material-icons">playlist_add</i></a></li>
  8. <li><a href="#bug_report_modal"><i class="material-icons">flag</i></a></li>
  9. <li><a id="vote-skip"><i class="material-icons left">skip_next</i>{{votes}}</a></li>
  10. {{#if isAdmin}}
  11. <li><a class='dropdown-button' data-activates='admin-dropdown'><i class="material-icons">control_point</i></a></li>
  12. {{/if}}
  13. </ul>
  14. <span class="brand-logo center">{{type}}</span>
  15. <ul class="right hide-on-med-and-down">
  16. <li><a href="#" id="playlist-slideout" data-activates="playlist-slide-out" class="header-collapse"><i class="material-icons">queue_music</i></a></li>
  17. <li><a href="#" id="chat-slideout" data-activates="chat-slide-out" class="header-collapse"><i class="material-icons">chat</i></a></li>
  18. </ul>
  19. </div>
  20. </nav>
  21. </header>
  22. {{> alerts}}
  23. <main id="room-content">
  24. <div class="container">
  25. <div class="row">
  26. <div class="col s12 m10 l8 offset-l2 offset-m1" id="media-container">
  27. <div class="video-container">
  28. <div id="player"></div>
  29. </div>
  30. </div>
  31. <div class="col s12 m10 l8 offset-l2 offset-m1">
  32. <div class="row">
  33. <div class="col s12 m12 l8">
  34. <h4 id="time-display"><span id="time-elapsed"></span> / <span id="time-total"></span></h4>
  35. <h3>{{{title}}}</h3>
  36. <h4 class="thin" style="margin-left: 0">{{{artist}}}</h4>
  37. <div class="row">
  38. <form action="#" class="left col s4 m4 l4">
  39. <p class="range-field" style="margin-top: 0">
  40. <input type="range" id="volume_slider" min="0" max="100"/>
  41. </p>
  42. </form>
  43. <div class="right col s4 m2 l2">
  44. <ul>
  45. <li id="like" class="left"><i id="thumbs_up"
  46. class="material-icons {{liked}}">thumb_up</i>
  47. </li>
  48. <li id="dislike" class="right"><i id="thumbs_down"
  49. class="material-icons {{disliked}}">thumb_down</i>
  50. </li>
  51. </ul>
  52. </div>
  53. </div>
  54. <div class="seeker-bar-container white" id="preview-progress">
  55. <div class="seeker-bar teal" style="width: 0%"></div>
  56. </div>
  57. </div>
  58. <img alt="Not loading" class="responsive-img song-img col s12 m12 l4"
  59. onError="this.src='http://static.boredpanda.com/blog/wp-content/uploads/2014/04/amazing-fox-photos-182.jpg'"
  60. id="song-img" style="margin-top: 10px !important"/>
  61. </div>
  62. </div>
  63. </div>
  64. </div>
  65. </main>
  66. <!--Chat slideout-->
  67. <div id="chat-slide-out" class="side-nav room-slideout">
  68. <h5>Chat</h5>
  69. <ul class="chat-ul">
  70. {{#each globalChat}}
  71. {{#emojione}}
  72. <li class="chat-message">
  73. <span title="{{time}}" style="float: right;">{{rtime time}}</span>
  74. <small class="rank-{{this.rawrank}}">{{this.rank}}</small>
  75. <a style="text-decoration: none" href="/u/{{this.username}}" target="_blank">{{this.username}}</a>
  76. <p style="clear: both; line-height: initial;">{{this.message}}</p>
  77. </li>
  78. {{/emojione}}
  79. <hr>
  80. {{/each}}
  81. </ul>
  82. <div>
  83. <div class="row">
  84. <div class="input-field col s12">
  85. <input id="chat-message" type="text">
  86. <label for="chat-message">Send a message</label>
  87. </div>
  88. </div>
  89. <a id="submit" class="waves-effect waves-light btn">Send</a>
  90. </div>
  91. </div>
  92. <!--Playlist slideout-->
  93. <div id="playlist-slide-out" class="side-nav room-slideout">
  94. <h5>Playlist</h5>
  95. </div>
  96. <!--Admin room controls-->
  97. <ul id='admin-dropdown' style="background-color: #00bfa5 !important; display: none">
  98. <li><a id="pause"><i class="material-icons">pause</i></a></li>
  99. <li><a id="skip"><i class="material-icons">skip_next</i></a></li>
  100. <li><a id="shuffle"><i class="material-icons">shuffle</i></a></li>
  101. <li><a id="lock"><i class="material-icons">lock_outline</i></a></li>
  102. </ul>
  103. <!--Add song modal-->
  104. <div id="add_song_modal" class="modal">
  105. <div class="modal-content container">
  106. <div class="row">
  107. <form class="black-text" id="search-info">
  108. <div class="row">
  109. <div class="input-field">
  110. <select id="si_or_pl">
  111. <option value="singleVideo" selected>Single Song</option>
  112. <option value="importPlaylist">Import Playlist</option>
  113. <label>Import Type</label>
  114. </select>
  115. </div>
  116. </div>
  117. {{#if singleVideo}}
  118. {{#if editingSong}}
  119. <div class="row">
  120. <button type="button" id="return-button" style="margin-bottom: 20px;"
  121. class="btn btn-small col l4 m4 s8 offset-l4 offset-m4 offset-s2 center waves-effect waves-light">
  122. Return
  123. </button>
  124. <h4 class="center-align col l12 m12 s12">Add Song</h4>
  125. <div class="input-field col l8 m8 s12 offset-l2 offset-m2">
  126. <select multiple id="genres">
  127. <option value="" disabled selected>Select Genre(s):</option>
  128. <option value="edm">EDM</option>
  129. <option value="chill">Chill</option>
  130. <option value="pop">Pop</option>
  131. <option value="country">Country</option>
  132. <option value="rock">Rock</option>
  133. <option value="randb">R&B</option>
  134. <option value="rap">Rap</option>
  135. <option value="heavymetal">Heavy Metal</option>
  136. <option value="christmas">Christmas</option>
  137. <option value="alternative">Alternative</option>
  138. </select>
  139. <label class="white-text">Genre(s)</label>
  140. </div>
  141. <div class="input-field col l8 m8 s12 offset-l2 offset-m2">
  142. <i class="material-icons prefix">vpn_key</i>
  143. <label for="id" class="teal-text">Song ID</label>
  144. <input class="validate" name="id" id="id" type="text" pattern=".{11}"/>
  145. </div>
  146. <div class="input-field col l8 m8 s12 offset-l2 offset-m2">
  147. <i class="material-icons prefix">person</i>
  148. <label for="artist" class="teal-text">Song Artist</label>
  149. <input class="validate" name="artist" id="artist" aria-required="true"
  150. type="text"/>
  151. </div>
  152. <div class="input-field col l8 m8 s12 offset-l2 offset-m2">
  153. <i class="material-icons prefix">subject</i>
  154. <label for="title" class="teal-text">Song Title</label>
  155. <input class="validate required" name="title" id="title" type="text"/>
  156. </div>
  157. <button type="button" id="add-song-button"
  158. class="btn btn-large col l6 m6 s10 offset-l3 offset-m3 offset-s1 waves-effect waves-light">
  159. Add Song
  160. </button>
  161. </div>
  162. <script>
  163. $('#genres').material_select();
  164. </script>
  165. {{else}}
  166. <div class="row" id="single-video">
  167. <div class="input-field">
  168. <input id="song-input" type="text" class="validate">
  169. <label for="search_for_song">Search for song</label>
  170. </div>
  171. <a class="waves-effect waves-light btn" id="search-song"><i
  172. class="material-icons left">search</i>Search</a>
  173. {{#if singleVideoResultsActive}}
  174. <div id="single-video-results">
  175. <div style="overflow: auto; height: 30vh; margin-top: 1rem;">
  176. <ul class="collection teal-text">
  177. {{#each result in singleVideoResults}}
  178. <li class="collection-item avatar youtube-search-result-li">
  179. <img src="{{result.image}}"
  180. onerror="this.src='http://static.boredpanda.com/blog/wp-content/uploads/2014/04/amazing-fox-photos-182.jpg'"
  181. alt="" class="video-import-thumbnail">
  182. <span class="title video-import-text">{{result.title}}</span>
  183. <p class="video-import-text">{{result.artist}} <br>
  184. <a href="https://youtube.com/watch?v={{result.id}}"
  185. target="_blank">View Video In YouTube</a>
  186. </p>
  187. <a href="#" class="secondary-content" id="addSong"
  188. data-result="{{result.id}}"><i class="material-icons"
  189. data-result="{{result.id}}">add</i></a>
  190. </li>
  191. {{/each}}
  192. </ul>
  193. </div>
  194. </div>
  195. {{/if}}
  196. </div>
  197. {{/if}}
  198. {{else}}
  199. <div class="row" id="import-playlist">
  200. <div class="input-field">
  201. <input id="playlist-url" type="text" class="validate">
  202. <label for="search_for_song">Playlist URL</label>
  203. </div>
  204. <div class="progress">
  205. <div class="determinate" id="import-progress" style="width: 0%"></div>
  206. </div>
  207. <a class="waves-effect waves-light btn" id="import-playlist-button">Import
  208. Playlist</a>
  209. {{#if playlistImportVideosActive}}
  210. <a class="waves-effect waves-light btn" id="confirm-import">Confirm selection
  211. and add songs to queue</a>
  212. <div class="input-field col l12 m12 s12">
  213. <select multiple id="genres_pl">
  214. <option value="" disabled selected>Select Genre(s):</option>
  215. <option value="edm">EDM</option>
  216. <option value="chill">Chill</option>
  217. <option value="pop">Pop</option>
  218. <option value="country">Country</option>
  219. <option value="rock">Rock</option>
  220. <option value="randb">R&B</option>
  221. <option value="rap">Rap</option>
  222. <option value="heavymetal">Heavy Metal</option>
  223. <option value="christmas">Christmas</option>
  224. <option value="alternative">Alternative</option>
  225. </select>
  226. <label class="white-text">Genre(s)</label>
  227. </div>
  228. <script>
  229. $('#genres_pl').material_select();
  230. </script>
  231. <div id="import-playlist-results">
  232. <ul class="collection teal-text">
  233. {{#each result in importPlaylistVideos}}
  234. <li class="collection-item avatar youtube-search-result-li">
  235. <img src="{{result.image}}"
  236. onerror="this.src='http://static.boredpanda.com/blog/wp-content/uploads/2014/04/amazing-fox-photos-182.jpg'"
  237. alt="" class="video-import-thumbnail">
  238. <span class="title video-import-text">{{result.title}}</span>
  239. <p class="video-import-text">{{result.artist}} <br>
  240. <a href="https://youtube.com/watch?v={{result.id}}"
  241. target="_blank">View Video In YouTube</a>
  242. </p>
  243. <a href="#" class="secondary-content" id="removeSong"
  244. data-result="{{result.id}}"><i class="material-icons"
  245. data-result="{{result.id}}">remove</i></a>
  246. </li>
  247. {{/each}}
  248. </ul>
  249. </div>
  250. {{/if}}
  251. </div>
  252. {{/if}}
  253. </form>
  254. <div id="song-results"></div>
  255. </div>
  256. <div class="row">
  257. <form class="black-text hide" id="add-info">
  258. <div class="row">
  259. <div class="input-field">
  260. <input id="song-id" type="text" class="validate">
  261. <label for="song-id">Song ID</label>
  262. </div>
  263. </div>
  264. <div class="row">
  265. <a class="waves-effect waves-light btn" id="add-song-button"><i
  266. class="material-icons left">playlist_add</i>Request Song</a>
  267. </div>
  268. </form>
  269. </div>
  270. </div>
  271. <div class="divider"></div>
  272. <div class="modal-footer">
  273. <a href="#" class="modal-action modal-close waves-effect btn">Close</a>
  274. </div>
  275. </div>
  276. <!--Report modal-->
  277. <div id="report_modal" class="modal">
  278. <div class="modal-content container">
  279. </div>
  280. <div class="divider"></div>
  281. <div class="modal-footer">
  282. <a class="modal-action modal-close waves-effect btn">Close</a>
  283. </div>
  284. </div>
  285. <script>
  286. $("#add-song-modal-button").leanModal({
  287. dismissible: true,
  288. opacity: .5,
  289. in_duration: 500,
  290. out_duration: 200
  291. });
  292. $("#report-modal-button").leanModal({
  293. dismissible: true,
  294. opacity: .5,
  295. in_duration: 500,
  296. out_duration: 200
  297. });
  298. $(".dropdown-button").dropdown({
  299. belowOrigin: true
  300. });
  301. $('select').material_select();
  302. $("#chat-slideout").sideNav({
  303. menuWidth: 350,
  304. edge: 'right'
  305. });
  306. $("#playlist-slideout").sideNav({
  307. menuWidth: 350,
  308. edge: 'right'
  309. });
  310. </script>
  311. </template>