room.html 22 KB

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