room.html 18 KB

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