monorepo/music-player/client/src/main.ts

66 lines
2.0 KiB
TypeScript
Raw Normal View History

import * as _ from "lodash";
import { TrackInfo, getTracks } from "./client";
import { DataCard } from "./components/DataCard";
2023-03-04 22:06:11 +00:00
import { NowPlaying } from "./components/NowPlaying";
import { TextField } from "./components/TextField";
import { TrackCard } from "./components/TrackCard";
window.customElements.define("data-card", DataCard);
2023-03-04 22:06:11 +00:00
window.customElements.define("now-playing", NowPlaying);
window.customElements.define("text-field", TextField);
window.customElements.define("track-card", TrackCard);
declare global {
interface HTMLElementTagNameMap {
"data-card": DataCard;
2023-03-04 22:06:11 +00:00
"now-playing": NowPlaying;
"text-field": TextField;
"track-card": TrackCard;
}
}
const updateTrackList = (tracks: TrackInfo[]) => {
const track_list = document.querySelector(".track-list__tracks");
if (track_list) {
let track_formats = _.map(tracks, (info) => {
let card: TrackCard = document.createElement("track-card");
card.name = info.name || null;
card.album = info.album || null;
card.artist = info.artist || null;
card.duration = (info.duration && `${info.duration}`) || null;
return card;
});
_.map(track_formats, (trackCard) => {
let listItem = document.createElement("li");
listItem.classList.add("track-list__row");
listItem.appendChild(trackCard);
track_list.appendChild(listItem);
});
} else {
console.log("track_list does not exist");
}
};
2023-03-04 22:06:11 +00:00
const updateNowPlaying = (track: TrackInfo) => {
const track_list = document.querySelector("#now-playing");
if (track_list) {
let card: NowPlaying = document.createElement("now-playing");
card.name = track.name || null;
card.album = track.album || null;
card.artist = track.artist || null;
track_list.appendChild(card);
}
};
const run = () => {
2023-03-04 22:06:11 +00:00
updateNowPlaying({
id: "example id",
name: "Underground",
album: "Artemis",
artist: "Lindsey Stirling",
});
getTracks().then((tracks) => updateTrackList(tracks));
};
run();