From f276ef1ff2e2e1d229717fac4838cf7cac58cb33 Mon Sep 17 00:00:00 2001 From: ari melody Date: Sun, 4 Aug 2024 00:23:55 +0100 Subject: [PATCH] update track API and lyrics fixes Signed-off-by: ari melody --- admin/http.go | 31 ++++++++++++++++++++----------- admin/static/admin.css | 28 +++++++++++++++++++++++++++- music/controller/track.go | 3 +-- music/view/release.go | 4 ++++ views/admin/index.html | 9 ++++++++- 5 files changed, 60 insertions(+), 15 deletions(-) diff --git a/admin/http.go b/admin/http.go index da25279..05a20e9 100644 --- a/admin/http.go +++ b/admin/http.go @@ -33,23 +33,32 @@ func Handler() http.Handler { return } - type IndexData struct { - Releases []*musicModel.Release - Artists []*musicModel.Artist - Tracks []*musicModel.Track - } - - var orphan_tracks = []*musicModel.Track{} - for _, track := range global.Tracks { - if track.Release == nil { - orphan_tracks = append(orphan_tracks, track) + type ( + Track struct { + *musicModel.Track + Lyrics template.HTML + // Number int } + IndexData struct { + Releases []*musicModel.Release + Artists []*musicModel.Artist + Tracks []Track + } + ) + + + var tracks = []Track{} + for _, track := range global.Tracks { + tracks = append(tracks, Track{ + Track: track, + Lyrics: template.HTML(strings.Replace(track.Lyrics, "\n", "
", -1)), + }) } serveTemplate("index.html", IndexData{ Releases: global.Releases, Artists: global.Artists, - Tracks: global.Tracks, + Tracks: tracks, }).ServeHTTP(w, r) })) diff --git a/admin/static/admin.css b/admin/static/admin.css index 7024a9c..9ec1e36 100644 --- a/admin/static/admin.css +++ b/admin/static/admin.css @@ -226,13 +226,39 @@ a:hover { } h2.track-title { - margin: 0 + margin: 0; + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.track-album { + margin-left: auto; + font-style: italic; + font-size: .75em; + opacity: .5; +} + +.track-album.empty { + color: #ff2020; + opacity: 1; } .track-description { font-style: italic; } +.track-lyrics { + max-height: 10em; + overflow-y: scroll; +} + .track .empty { opacity: 0.75; } + +@media screen and (max-width: 520px) { + body { + font-size: 12px; + } +} diff --git a/music/controller/track.go b/music/controller/track.go index b5a329e..ffa2c61 100644 --- a/music/controller/track.go +++ b/music/controller/track.go @@ -55,8 +55,7 @@ func UpdateTrackDB(db *sqlx.DB, track *model.Track) error { _, err := db.Exec( "UPDATE musictrack "+ "SET title=$2, description=$3, lyrics=$4, preview_url=$5 "+ - "WHERE id=$1"+ - "RETURNING id", + "WHERE id=$1", track.ID, track.Title, track.Description, diff --git a/music/view/release.go b/music/view/release.go index 7c236fa..65ddc3a 100644 --- a/music/view/release.go +++ b/music/view/release.go @@ -3,7 +3,9 @@ package view import ( "encoding/json" "fmt" + "html/template" "net/http" + "strings" "arimelody.me/arimelody.me/admin" "arimelody.me/arimelody.me/global" @@ -52,6 +54,7 @@ func ServeGateway() http.Handler { type ( GatewayTrack struct { *model.Track + Lyrics template.HTML Number int } @@ -72,6 +75,7 @@ func ServeGateway() http.Handler { for i, track := range release.Tracks { tracks = append([]GatewayTrack{GatewayTrack{ Track: track, + Lyrics: template.HTML(strings.Replace(track.Lyrics, "\n", "
", -1)), Number: len(release.Tracks) - i, }}, tracks...) } diff --git a/views/admin/index.html b/views/admin/index.html index 8724996..660866f 100644 --- a/views/admin/index.html +++ b/views/admin/index.html @@ -62,7 +62,14 @@
{{range $Track := .Tracks}}
-

{{$Track.Title}}

+

+ {{$Track.Title}} + {{if $Track.Release}} + {{$Track.Release.Title}} + {{else}} + (no album) + {{end}} +

{{if $Track.Description}}

{{$Track.Description}}

{{else}}