home to your local SPACEGIRL 💫 arimelody.space
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

update track API and lyrics fixes

Signed-off-by: ari melody <ari@arimelody.me>

+59 -14
+19 -10
admin/http.go
··· 33 33 return 34 34 } 35 35 36 - type IndexData struct { 37 - Releases []*musicModel.Release 38 - Artists []*musicModel.Artist 39 - Tracks []*musicModel.Track 40 - } 36 + type ( 37 + Track struct { 38 + *musicModel.Track 39 + Lyrics template.HTML 40 + // Number int 41 + } 42 + IndexData struct { 43 + Releases []*musicModel.Release 44 + Artists []*musicModel.Artist 45 + Tracks []Track 46 + } 47 + ) 48 + 41 49 42 - var orphan_tracks = []*musicModel.Track{} 50 + var tracks = []Track{} 43 51 for _, track := range global.Tracks { 44 - if track.Release == nil { 45 - orphan_tracks = append(orphan_tracks, track) 46 - } 52 + tracks = append(tracks, Track{ 53 + Track: track, 54 + Lyrics: template.HTML(strings.Replace(track.Lyrics, "\n", "<br>", -1)), 55 + }) 47 56 } 48 57 49 58 serveTemplate("index.html", IndexData{ 50 59 Releases: global.Releases, 51 60 Artists: global.Artists, 52 - Tracks: global.Tracks, 61 + Tracks: tracks, 53 62 }).ServeHTTP(w, r) 54 63 })) 55 64
+27 -1
admin/static/admin.css
··· 226 226 } 227 227 228 228 h2.track-title { 229 - margin: 0 229 + margin: 0; 230 + display: flex; 231 + flex-direction: row; 232 + justify-content: space-between; 233 + } 234 + 235 + .track-album { 236 + margin-left: auto; 237 + font-style: italic; 238 + font-size: .75em; 239 + opacity: .5; 240 + } 241 + 242 + .track-album.empty { 243 + color: #ff2020; 244 + opacity: 1; 230 245 } 231 246 232 247 .track-description { 233 248 font-style: italic; 234 249 } 235 250 251 + .track-lyrics { 252 + max-height: 10em; 253 + overflow-y: scroll; 254 + } 255 + 236 256 .track .empty { 237 257 opacity: 0.75; 238 258 } 259 + 260 + @media screen and (max-width: 520px) { 261 + body { 262 + font-size: 12px; 263 + } 264 + }
+1 -2
music/controller/track.go
··· 55 55 _, err := db.Exec( 56 56 "UPDATE musictrack "+ 57 57 "SET title=$2, description=$3, lyrics=$4, preview_url=$5 "+ 58 - "WHERE id=$1"+ 59 - "RETURNING id", 58 + "WHERE id=$1", 60 59 track.ID, 61 60 track.Title, 62 61 track.Description,
+4
music/view/release.go
··· 3 3 import ( 4 4 "encoding/json" 5 5 "fmt" 6 + "html/template" 6 7 "net/http" 8 + "strings" 7 9 8 10 "arimelody.me/arimelody.me/admin" 9 11 "arimelody.me/arimelody.me/global" ··· 52 54 type ( 53 55 GatewayTrack struct { 54 56 *model.Track 57 + Lyrics template.HTML 55 58 Number int 56 59 } 57 60 ··· 72 75 for i, track := range release.Tracks { 73 76 tracks = append([]GatewayTrack{GatewayTrack{ 74 77 Track: track, 78 + Lyrics: template.HTML(strings.Replace(track.Lyrics, "\n", "<br>", -1)), 75 79 Number: len(release.Tracks) - i, 76 80 }}, tracks...) 77 81 }
+8 -1
views/admin/index.html
··· 62 62 <div class="card tracks"> 63 63 {{range $Track := .Tracks}} 64 64 <div class="track"> 65 - <h2 class="track-title">{{$Track.Title}}</h2> 65 + <h2 class="track-title"> 66 + {{$Track.Title}} 67 + {{if $Track.Release}} 68 + <small class="track-album">{{$Track.Release.Title}}</small> 69 + {{else}} 70 + <small class="track-album empty">(no album)</small> 71 + {{end}} 72 + </h2> 66 73 {{if $Track.Description}} 67 74 <p class="track-description">{{$Track.Description}}</p> 68 75 {{else}}