Mercurial > code > home > repos > light9
diff light9/ascoltami/main.ts @ 2123:c4427fd59306
port some of ascoltami into lit
author | drewp@bigasterisk.com |
---|---|
date | Thu, 02 Jun 2022 23:24:09 -0700 |
parents | 758ce4dfbd2f |
children | eb5d8349c871 |
line wrap: on
line diff
--- a/light9/ascoltami/main.ts Thu Jun 02 23:23:01 2022 -0700 +++ b/light9/ascoltami/main.ts Thu Jun 02 23:24:09 2022 -0700 @@ -2,24 +2,15 @@ return document.getElementById(id)!; } -async function onLoad() { - const config = await (await fetch("api/config")).json(); - const times = config.times; - document.title = document.title.replace("{{host}}", config.host); - const h1 = document.querySelector("h1")!; - h1.innerText = h1.innerText.replace("{{host}}", config.host); - - byId("nav").innerText = navigator.userAgent; - var updateFreq = navigator.userAgent.indexOf("Linux") != -1 ? 10 : 2; - if (navigator.userAgent.match(/Windows NT/)) { - // helper laptop - updateFreq = 10; - } - byId("updateReq").innerText = "" + updateFreq; - - let currentDuration = 0; +(window as any).finishOldStyleSetup = async ( + times: { intro: number; post: number }, + updateFreq: number, + currentDurationChanged: (d: number) => void, + setNextText: (t: string) => void, + setIsPlaying: (is: boolean) => void +) => { let currentHighlightedSong = ""; - let lastPlaying = false; + // let lastPlaying = false; async function updateCurrent() { const data = await (await fetch("api/time")).json(); @@ -29,38 +20,27 @@ } byId("currentTime").innerText = data.t.toFixed(1); byId("leftTime").innerText = (data.duration - data.t).toFixed(1); - byId("leftAutoStopTime").innerText = Math.max( - 0, - data.duration - times.post - data.t - ).toFixed(1); + byId("leftAutoStopTime").innerText = Math.max(0, data.duration - times.post - data.t).toFixed(1); byId("states").innerText = JSON.stringify(data.state); - currentDuration = data.duration; + currentDurationChanged(data.duration); // document.querySelector("#timeSlider").slider({ value: data.t, max: data.duration }); - if (data.playing != lastPlaying) { - document - .querySelectorAll(".playMode") - .forEach((e: Element) => e.classList.remove("active")); - byId(data.playing ? "cmd-play" : "cmd-stop").classList.add("active"); - lastPlaying = data.playing; - } - byId("next").innerText = data.next; + setIsPlaying(data.playing); + setNextText(data.next); } function showCurrentSong(uri: string) { - document - .querySelectorAll(".songs div") - .forEach((row: Element, i: number) => { - if (row.querySelector("button")!.dataset.uri == uri) { - row.classList.add("currentSong"); - } else { - row.classList.remove("currentSong"); - } - }); + document.querySelectorAll(".songs div").forEach((row: Element, i: number) => { + if (row.querySelector("button")!.dataset.uri == uri) { + row.classList.add("currentSong"); + } else { + row.classList.remove("currentSong"); + } + }); currentHighlightedSong = uri; } const data = await (await fetch("api/songs")).json(); - data.songs.forEach((song) => { + data.songs.forEach((song: { uri: string; label: string }) => { const button = document.createElement("button"); // link is just for dragging, not clicking const link = document.createElement("a"); @@ -86,58 +66,9 @@ }); const dv = document.createElement("div"); dv.appendChild(button); - document.querySelector(".songs").appendChild(dv); + document.querySelector(".songs")!.appendChild(dv); }); - document.addEventListener("keypress", (ev) => { - if (ev.which == 115) { - byId("cmd-stop").click(); - return false; - } - if (ev.which == 112) { - byId("cmd-play").click(); - return false; - } - if (ev.which == 105) { - byId("cmd-intro").click(); - return false; - } - if (ev.which == 116) { - byId("cmd-post").click(); - return false; - } - - if (ev.key == "g") { - byId("cmd-go").click(); - return false; - } - return true; - }); - - async function postJson(url: string, jsBody: Object) { - return fetch(url, { - method: "POST", - headers: { "Content-Type": "applcation/json" }, - body: JSON.stringify(jsBody), - }); - } - - byId("cmd-stop").addEventListener("click", (ev: Event) => - postJson("api/time", { pause: true }) - ); - byId("cmd-play").addEventListener("click", (ev: Event) => - postJson("api/time", { resume: true }) - ); - byId("cmd-intro").addEventListener("click", (ev: Event) => - postJson("api/time", { t: times.intro, resume: true }) - ); - byId("cmd-post").addEventListener("click", (ev: Event) => - postJson("api/time", { t: currentDuration - times.post, resume: true }) - ); - byId("cmd-go").addEventListener("click", (ev: Event) => - postJson("api/go", {}) - ); - // var pendingSlide = false; // $("#timeSlider").slider({ // step: 0.01, @@ -163,15 +94,11 @@ if (recentUpdates.length > 1) { if (+new Date() - recentUpdates[recentUpdates.length - 1] > 1000) { byId("updateActual").innerText = "(stalled)"; - document - .querySelectorAll(".dimStalled") - .forEach((el) => el.classList.add("stalled")); + document.querySelectorAll(".dimStalled").forEach((el) => el.classList.add("stalled")); return; } - var avgMs = - (recentUpdates[recentUpdates.length - 1] - recentUpdates[0]) / - (recentUpdates.length - 1); + var avgMs = (recentUpdates[recentUpdates.length - 1] - recentUpdates[0]) / (recentUpdates.length - 1); byId("updateActual").innerText = "" + Math.round(1000 / avgMs); } } @@ -188,5 +115,4 @@ whenDone(); } updateLoop(); -} -onLoad(); +};