2020-03-10 05:24:31 +08:00
|
|
|
import * as format from "../format.js";
|
|
|
|
import * as html from "../html.js";
|
|
|
|
import { Item } from "../component.js";
|
|
|
|
|
|
|
|
export default class Song extends Item {
|
|
|
|
constructor(data) {
|
|
|
|
super();
|
|
|
|
this.data = data;
|
|
|
|
this.dataset.songId = data["Id"];
|
|
|
|
}
|
|
|
|
|
|
|
|
connectedCallback() {
|
|
|
|
let info = html.node("div", {className:"info"}, "", this);
|
|
|
|
|
|
|
|
let lines = formatSongInfo(this.data);
|
|
|
|
html.node("h2", {}, lines.shift(), info);
|
|
|
|
lines.length && html.node("div", {}, lines.shift(), info);
|
|
|
|
|
2020-03-10 22:25:43 +08:00
|
|
|
html.button({icon:"play"}, "", this).addEventListener("click", async e => {
|
|
|
|
e.stopPropagation(); // do not select
|
|
|
|
await this._mpd.command(`playid ${this.data["Id"]}`);
|
|
|
|
});
|
|
|
|
}
|
2020-03-10 05:24:31 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
customElements.define("cyp-song", Song);
|
|
|
|
|
|
|
|
|
|
|
|
// FIXME vyfaktorovat nekam do haje
|
|
|
|
function formatSongInfo(data) {
|
|
|
|
let lines = [];
|
|
|
|
let tokens = [];
|
|
|
|
|
|
|
|
if (data["Title"]) {
|
|
|
|
tokens.push(data["Title"]);
|
|
|
|
lines.push(tokens.join(" "));
|
|
|
|
lines.push(format.subtitle(data));
|
|
|
|
} else {
|
|
|
|
lines.push(fileName(data));
|
|
|
|
lines.push("\u00A0");
|
|
|
|
}
|
|
|
|
|
|
|
|
return lines;
|
|
|
|
}
|
|
|
|
|
|
|
|
// FIXME vyfaktorovat nekam do haje
|
|
|
|
function fileName(data) {
|
|
|
|
return data["file"].split("/").pop();
|
|
|
|
}
|