168 lines
6.3 KiB
HTML
168 lines
6.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet" type="text/css" href="index.css">
|
|
<title>Music Server</title>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<div class="inline-flex">
|
|
<div class="dropdown" id="playlist-select">
|
|
<div class="dropdown-button" data-value="all">All Tracks</div>
|
|
<div class="dropdown-content">
|
|
<div data-value="all">All Tracks</div>
|
|
<div data-value="queue">Queue</div>
|
|
<div data-value="options">Options</div>
|
|
</div>
|
|
</div>
|
|
<input type="text" id="search" placeholder="Search" class="flex-row">
|
|
<span class="btn-clear" id="search-clear"></span>
|
|
</div>
|
|
<div class="table-container flex-row">
|
|
<table width="100%">
|
|
<tbody id="ttable">
|
|
<tr>
|
|
<th class="small">#</th>
|
|
<th>Track</th>
|
|
<th>Artist</th>
|
|
<th>Album</th>
|
|
<th class="small">Year</th>
|
|
<th class="small">Duration</th>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="pages flex-row">
|
|
<div class="paging btn" id="jump-first"><<</div>
|
|
<div class="paging btn inner" id="jump-prev"><</div>
|
|
<div class="paging bg" id="pagenum">0 / 0</div>
|
|
<div class="paging btn inner" id="jump-next">></div>
|
|
<div class="paging btn" id="jump-last">>></div>
|
|
</div>
|
|
<div class="player flex-row">
|
|
<div class="inline-flex">
|
|
<div id="queue" class="queue-tag" style="display: none;">Queue</div>
|
|
<div class="playing-bar">
|
|
<span id="playing">Nothing playing</span>
|
|
<canvas id="visualizer" height="40"></canvas>
|
|
</div>
|
|
</div>
|
|
<audio id="player"></audio>
|
|
<div class="player-controls">
|
|
<span class="prev-btn flex-col icon" id="player-prev"></span>
|
|
<span class="play-btn flex-col icon" id="player-play"></span>
|
|
<span class="next-btn flex-col icon" id="player-next"></span>
|
|
<span class="timestamp flex-col" id="player-ts">0:00 / 0:00</span>
|
|
<div class="seek-bar seek-container flex-col grow" id="player-seekbar">
|
|
<div class="seek-inner"></div>
|
|
</div>
|
|
<div class="volume flex-col">
|
|
<span class="mute-btn flex-col icon" id="player-mute"></span>
|
|
<div class="volume-bar seek-container flex-col" id="player-volbar">
|
|
<div class="seek-inner"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="ctx-menu" id="menu" style="display: none;">
|
|
<ul>
|
|
<li><a class="ctx-item" data-action="play">Play Track</a></li>
|
|
<li><a class="ctx-item" data-action="queue">Queue Track</a></li>
|
|
<li><a class="ctx-item" data-action="edit">Edit Metadata</a></li>
|
|
<li><a class="ctx-item" data-action="download">Download</a></li>
|
|
<li class="ctx-multi"><a class="ctx-item playlist-add" style="display: none;">Add to Playlist</a>
|
|
<ul class="ctx-sub-items playlist-list" id="ctx-playlists"></ul>
|
|
</li>
|
|
<li><a class="ctx-item" data-action="playlist-remove" style="display: none;">Remove from Playlist</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="sidebar background" id="options-drop">
|
|
<div class="sidebar drop sb-abs"></div>
|
|
<div class="sidebar bar sb-abs">
|
|
<h2>Options</h2>
|
|
<div class="sidebar content" id="options">
|
|
<div class="separator">Playback</div>
|
|
<div class="option checkbox">
|
|
<label for="st-autoplay">Automatically play next track</label>
|
|
<input type="checkbox" id="st-autoplay" name="autoplay">
|
|
</div>
|
|
<div class="separator">Search</div>
|
|
<div class="option checkbox">
|
|
<label for="st-streamable">Include streamable tracks in searches</label>
|
|
<input type="checkbox" id="st-streamable" name="streamable">
|
|
</div>
|
|
<div class="separator">Last.fm</div>
|
|
<div class="option url" id="lfm-connect">
|
|
<a href="/api/lastfm/connect">Connect your Last.fm account</a>
|
|
</div>
|
|
<div class="option url" id="lfm-disconnect">
|
|
<label id="lfm-connected"></label>
|
|
<a href="/api/lastfm/disconnect">Disconnect</a>
|
|
</div>
|
|
<div class="option checkbox" id="lfm-scrobble">
|
|
<label for="st-scrobble">Scrobble tracks</label>
|
|
<input type="checkbox" id="st-scrobble" name="scrobble">
|
|
</div>
|
|
<div class="separator">Sorting</div>
|
|
<div class="option checkbox">
|
|
<label for="st-trackids" title="Shows track number in album instead when unchecked">Show track IDs</label>
|
|
<input type="checkbox" id="st-trackids" name="trackids">
|
|
</div>
|
|
<div class="option">
|
|
<label for="st-sortby">Sort tracks by</label>
|
|
<select id="st-sortby" name="sortby">
|
|
<option value="id">Track ID</option>
|
|
<option value="title">Title</option>
|
|
<option value="artist">Artist</option>
|
|
<option value="album">Album</option>
|
|
<option value="year">Year</option>
|
|
<option value="file">File name</option>
|
|
</select>
|
|
</div>
|
|
<div class="option">
|
|
<label for="st-sortdir">Sort direction</label>
|
|
<select id="st-sortdir" name="sortdir">
|
|
<option value="asc">Ascending order</option>
|
|
<option value="desc">Descending order</option>
|
|
</select>
|
|
</div>
|
|
<div class="separator">User</div>
|
|
<div class="option">
|
|
<label id="logged-in"></label>
|
|
<a href="user/logout">Log out</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal" id="track-edit-modal" style="display: none;">
|
|
<div class="modal-box">
|
|
<div class="modal-header">Edit Track</div>
|
|
<div class="modal-content">
|
|
<form id="track-set">
|
|
<label for="ts-title">Title</label>
|
|
<input type="text" name="ts-title" id="ts-title">
|
|
<label for="ts-artist">Artist</label>
|
|
<input type="text" name="ts-artist" id="ts-artist">
|
|
<label for="ts-album">Album</label>
|
|
<input type="text" name="ts-album" id="ts-album">
|
|
<label for="ts-genre">Genre</label>
|
|
<input type="text" name="ts-genre" id="ts-genre">
|
|
<label for="ts-year">Year</label>
|
|
<input type="text" name="ts-year" id="ts-year">
|
|
<label for="ts-track">Track nr</label>
|
|
<input type="text" name="ts-track" id="ts-track">
|
|
<input type="submit" value="Edit">
|
|
</form>
|
|
<button id="track-edit-close">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript" src="index.js"></script>
|
|
<script type="text/javascript" src="player.js"></script>
|
|
<script type="text/javascript" src="visuals.js"></script>
|
|
</body>
|
|
</html>
|