2023-02-11 17:59:15 +00:00
|
|
|
import * as _ from "lodash";
|
|
|
|
|
2023-02-26 03:17:00 +00:00
|
|
|
interface TrackInfo {
|
|
|
|
id: string;
|
|
|
|
track_number?: number;
|
|
|
|
name?: string;
|
|
|
|
album?: string;
|
|
|
|
artist?: string;
|
|
|
|
}
|
|
|
|
|
2023-02-11 17:59:15 +00:00
|
|
|
const replaceTitle = () => {
|
|
|
|
const title = document.querySelector(".js-title");
|
|
|
|
if (title && title.innerHTML) {
|
|
|
|
title.innerHTML = "Music Player Paused";
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2023-02-26 03:17:00 +00:00
|
|
|
const getTracks = () => fetch("/api/v1/tracks").then((r) => r.json());
|
|
|
|
|
|
|
|
const formatTrack = (track: TrackInfo) => {
|
|
|
|
let row = document.createElement("tr");
|
|
|
|
row.classList.add("track-list__row");
|
|
|
|
|
|
|
|
let track_id = document.createElement("td");
|
|
|
|
track_id.appendChild(document.createTextNode(track.id));
|
|
|
|
track_id.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
let track_number = document.createElement("td");
|
|
|
|
track_number.appendChild(
|
|
|
|
document.createTextNode(track.track_number?.toString() || "")
|
|
|
|
);
|
|
|
|
track_number.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
let name = document.createElement("td");
|
|
|
|
name.appendChild(document.createTextNode(track.name || ""));
|
|
|
|
name.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
let album = document.createElement("td");
|
|
|
|
album.appendChild(document.createTextNode(track.album || ""));
|
|
|
|
album.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
let artist = document.createElement("td");
|
|
|
|
artist.appendChild(document.createTextNode(track.artist || ""));
|
|
|
|
artist.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
let length = document.createElement("td");
|
|
|
|
artist.appendChild(document.createTextNode(""));
|
|
|
|
length.classList.add("track-list__cell");
|
|
|
|
|
|
|
|
row.appendChild(track_id);
|
|
|
|
row.appendChild(track_number);
|
|
|
|
row.appendChild(name);
|
|
|
|
row.appendChild(artist);
|
|
|
|
row.appendChild(album);
|
|
|
|
row.appendChild(length);
|
|
|
|
return row;
|
|
|
|
};
|
|
|
|
|
|
|
|
const updateTrackList = (tracks: TrackInfo[]) => {
|
|
|
|
const track_list = document.querySelector(".track-list__tracks tbody");
|
|
|
|
if (track_list) {
|
|
|
|
let track_formats = _.map(tracks, formatTrack);
|
|
|
|
_.map(track_formats, (trackinfo) => track_list.appendChild(trackinfo));
|
|
|
|
}
|
|
|
|
};
|
2023-02-11 17:59:15 +00:00
|
|
|
|
|
|
|
const run = () => {
|
2023-02-26 03:17:00 +00:00
|
|
|
getTracks().then((tracks) => updateTrackList(tracks));
|
2023-02-11 17:59:15 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
run();
|