From: 2weiEmu Date: Fri, 13 Mar 2026 17:26:17 +0000 (+0100) Subject: updated: song editing should work for now X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=318d9de9fd57d37d9c7fe998398b08622352d579;p=binbsis50-sm.git updated: song editing should work for now --- diff --git a/main.go b/main.go index 5ea134b..50ce94f 100644 --- a/main.go +++ b/main.go @@ -45,6 +45,7 @@ func main() { // Setting up the routing mux := http.NewServeMux() mux.HandleFunc("/api/db_status_update", DBwrapper.GetDBStatus) + mux.HandleFunc("/api/updateSong", DBwrapper.UpdateSongStats) mux.Handle("/", http.FileServer(http.Dir("./public/"))) listenPort := ":" + strconv.Itoa(*paramPort) diff --git a/pkg/dbhandling/dbhandling.go b/pkg/dbhandling/dbhandling.go index a2b7c5f..74dc158 100644 --- a/pkg/dbhandling/dbhandling.go +++ b/pkg/dbhandling/dbhandling.go @@ -48,6 +48,36 @@ func NewDbWrapper(redisLocation string) DBWrapper { } } +func (dbw *DBWrapper) UpdateSongStats(w http.ResponseWriter, r *http.Request) { + if r.Method != "POST" { + w.WriteHeader(http.StatusMethodNotAllowed) + return + } + + changeSong := DBSong{} + err := json.NewDecoder(r.Body).Decode(&changeSong) + if err != nil { + panic(err) + } + + _, err = dbw.RedisDb.HMSet(dbw.ctx, changeSong.Key, map[string]interface{}{ + "artistName": changeSong.ArtistName, + "trackName": changeSong.TrackName, + "trackViewUrl": changeSong.TrackViewURL, + "previewUrl": changeSong.PreviewURL, + "artworkUrl60": changeSong.ArtworkURL60, + "artworkUrl100": changeSong.ArtworkURL100, + "displayArtistNames": changeSong.DisplayArtistNames, + "displayTrackName": changeSong.DisplayTrackName, + }).Result() + + if err != nil { + panic(err) + } + + w.WriteHeader(http.StatusOK) +} + func (dbw *DBWrapper) GetDBStatus(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { w.WriteHeader(http.StatusMethodNotAllowed) diff --git a/public/css/index.css b/public/css/index.css index b9c15fc..76fbc32 100644 --- a/public/css/index.css +++ b/public/css/index.css @@ -1,3 +1,7 @@ :root { font-family: sans-serif; } + +#editElement { + background-color: red; +} diff --git a/public/index.html b/public/index.html index 0472aff..4c0f66f 100644 --- a/public/index.html +++ b/public/index.html @@ -32,6 +32,37 @@

Song Overview

+ + diff --git a/public/js/index.js b/public/js/index.js index de9d782..13d2cc7 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -1,5 +1,74 @@ let AllSongs = null +let currentEditSong = null let dbSongList = document.getElementById("db_status_song_list") +let editElement = document.getElementById("editElement") + + +let editArtistName = document.getElementById("editArtistName") +let editTrackName = document.getElementById("editTrackName") +let editTrackViewUrl = document.getElementById("editTrackViewUrl") +let editPreviewUrl = document.getElementById("editPreviewUrl") +let editArtworkUrl60 = document.getElementById("editArtworkUrl60") +let editArtworkUrl100 = document.getElementById("editArtworkUrl100") +let editDisplayArtistNames = document.getElementById("editDisplayArtistNames") +let editDisplayTrackName = document.getElementById("editDisplayTrackName") + + +function getSongUsingKey(key) { + for (let song of AllSongs) { + if (song.Key == key) { + return song + } + } + return null +} + + +function openEditElement(song) { + editElement.style.display = "block" + editArtistName.value = song.ArtistName + editTrackName.value = song.TrackName + editTrackViewUrl.value = song.TrackViewURL + editPreviewUrl.value = song.PreviewURL + editArtworkUrl60.value = song.ArtworkURL60 + editArtworkUrl100.value = song.ArtworkURL100 + editDisplayArtistNames.value = song.DisplayArtistNames + editDisplayTrackName.value = song.DisplayTrackName +} + +function closeEditElement() { + editElement.style.display = "none" +} + +function editSong(event) { + console.log(event.srcElement.parentNode.id) + let id = event.srcElement.parentNode.id + let songKey = id.split("=")[1] + + let song = getSongUsingKey(songKey) + currentEditSong = songKey + console.log(song) + + openEditElement(song) +} + +function newSongDisplayWithEdit(song) { + let wrap = document.createElement("div") + wrap.id = "key=" + song.Key + let info = document.createElement("p") + info.innerText = "(" + song.Key + ") " + song.DisplayTrackName + " by " + song.DisplayArtistNames + + let but = document.createElement("button") + but.innerText = "Edit" + + but.onclick = (event) => {editSong(event)} + + + wrap.appendChild(info) + wrap.appendChild(but) + + return wrap +} let allSongFilterList = document.getElementById("allSongFilterList") @@ -25,7 +94,7 @@ function filterAllSongs(event) { for (let song of AllSongs) { if (filterSongByAllAttrs(filterBy, song)) { let li = document.createElement("li") - li.innerText = song.Key + li.appendChild(newSongDisplayWithEdit(song)) dbSongList.appendChild(li) } } @@ -36,6 +105,7 @@ function filterAllSongs(event) { async function get_updated_status() { console.log("updating database status...") + dbSongList.innerHTML = "" fetch("http://localhost:8000/api/db_status_update", {'Accept': 'application/json', 'Content-type': 'application/json'}).then(async (response) => { const body = await response.json() @@ -44,7 +114,7 @@ async function get_updated_status() { AllSongs = body.AllSongs for (let song of body.AllSongs) { let li = document.createElement("li") - li.innerText = song.Key + li.appendChild(newSongDisplayWithEdit(song)) dbSongList.appendChild(li) } @@ -66,3 +136,31 @@ window.onload = () => { get_updated_status() } +async function setNewSongValue() { + let newArtistName = editArtistName.value + let newTrackName = editTrackName.value + let newTrackViewUrl = editTrackViewUrl.value + let newPreviewUrl = editPreviewUrl.value + let newArtworkUrl60 = editArtworkUrl60.value + let newArtworkUrl100 = editArtworkUrl100.value + let newDisplayArtistNames = editDisplayArtistNames.value + let newDisplayTrackName = editDisplayTrackName.value + + await fetch("/api/updateSong", { + method: "POST", + body: JSON.stringify({ + Key: currentEditSong, + ArtistName: newArtistName, + TrackName: newTrackName, + TrackViewURL: newTrackViewUrl, + PreviewURL: newPreviewUrl, + ArtworkURL60: newArtworkUrl60, + ArtworkURL100: newArtworkUrl100, + DisplayArtistNames: newDisplayArtistNames, + DisplayTrackName: newDisplayTrackName, + }) + }) + + get_updated_status() + //await fetch("https://binb.sis50.nl/reloadRooms") +} diff --git a/songmanager b/songmanager index bf81630..1385a4b 100755 Binary files a/songmanager and b/songmanager differ