2023-12-28 04:55:06 +01:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8" />
|
|
|
|
<title>Sanic</title>
|
|
|
|
<link rel="stylesheet" href="style.css" />
|
2023-12-29 16:55:51 +01:00
|
|
|
<link rel="icon" href="/favicon.ico" sizes="16x16 32x32 48x48 64x64" type="image/png" />
|
2023-12-28 04:55:06 +01:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<main>
|
|
|
|
<div id="nav">
|
|
|
|
<div>
|
|
|
|
<button>Login</button>
|
|
|
|
<button>Config</button>
|
2023-12-29 16:55:51 +01:00
|
|
|
<button id="control-update-db" disabled="disabled">Update DB</button>
|
2023-12-28 04:55:06 +01:00
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<div>
|
2023-12-29 16:55:51 +01:00
|
|
|
<button id="control-previous">⏮︎</button> <!-- ⏮️ Last Track Button -->
|
|
|
|
<button id="control-stop">⏹︎</button> <!-- ⏹️ Stop Button -->
|
|
|
|
<button id="control-play-pause">⏵︎</button> <!-- ▶️ Play or ⏸️ Pause Button -->
|
|
|
|
<button id="control-next">⏭︎</button> <!-- ⏭️ Next Track Button -->
|
2023-12-28 04:55:06 +01:00
|
|
|
</div>
|
|
|
|
<div>
|
2023-12-29 16:55:51 +01:00
|
|
|
<label for="control-progress"></label>
|
|
|
|
<input type="range" id="control-progress" name="progress" min="0" step="1" />
|
2023-12-28 04:55:06 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
2023-12-29 16:55:51 +01:00
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<label for="control-repeat">repeat</label>
|
|
|
|
<input type="checkbox" id="control-repeat" name="repeat" />
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<label for="control-shuffle">shuffle</label>
|
|
|
|
<input type="checkbox" id="control-shuffle" name="shuffle" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<label for="control-xfade">xfade</label>
|
|
|
|
<button id="control-xfade-minus">➖</button>
|
|
|
|
<input type="number" id="control-xfade" name="xfade" value="00" />
|
|
|
|
<button id="control-xfade-plus">➕</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-12-28 04:55:06 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="queue">
|
|
|
|
<table>
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<td>Pos</td>
|
|
|
|
<td>Artists</td>
|
|
|
|
<td>Track</td>
|
|
|
|
<td>Album</td>
|
|
|
|
<td>Length</td>
|
|
|
|
<td>Actions</td>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
2023-12-29 16:55:51 +01:00
|
|
|
<tbody></tbody>
|
2023-12-28 04:55:06 +01:00
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div id="browser">browser</div>
|
|
|
|
<div id="result">result</div>
|
|
|
|
</main>
|
2023-12-29 16:55:51 +01:00
|
|
|
<script src="controls.js"></script>
|
2023-12-28 04:55:06 +01:00
|
|
|
<script>
|
|
|
|
// create example elements in queue
|
2023-12-29 16:55:51 +01:00
|
|
|
const queue = document.querySelector("#queue tbody");
|
2023-12-28 04:55:06 +01:00
|
|
|
for (let i = 0; i < 100; i++) {
|
|
|
|
const tr = document.createElement("tr");
|
|
|
|
|
|
|
|
const pos = document.createElement("td");
|
|
|
|
pos.appendChild(document.createTextNode(i.toString()));
|
|
|
|
tr.appendChild(pos);
|
|
|
|
|
|
|
|
const artist = document.createElement("td");
|
|
|
|
artist.appendChild(document.createTextNode(`Artist ${i.toString()}`));
|
|
|
|
tr.appendChild(artist);
|
|
|
|
|
|
|
|
const track = document.createElement("td");
|
|
|
|
track.appendChild(document.createTextNode(`Track ${i.toString()}`));
|
|
|
|
tr.appendChild(track);
|
|
|
|
|
|
|
|
const album = document.createElement("td");
|
|
|
|
album.appendChild(document.createTextNode(`Album ${i.toString()}`));
|
|
|
|
tr.appendChild(album);
|
|
|
|
|
|
|
|
const length = document.createElement("td");
|
|
|
|
length.appendChild(document.createTextNode("1:23"));
|
|
|
|
tr.appendChild(length);
|
|
|
|
|
|
|
|
const actions = document.createElement("td");
|
|
|
|
const del = document.createElement("button");
|
|
|
|
del.innerHTML = "🗑";
|
|
|
|
actions.appendChild(del);
|
|
|
|
tr.appendChild(actions);
|
|
|
|
|
|
|
|
queue.appendChild(tr);
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|