diff --git a/src/components.js b/src/components.js index 9a39b32..826939f 100644 --- a/src/components.js +++ b/src/components.js @@ -27,7 +27,7 @@ export function makeAlbumCard(a) { } // ─── SONG LIST ITEM (library) ─── -export function makeSongItem(s, idx, list, { noArtistLink = false, noAlbumLink = false } = {}) { +export function makeSongItem(s, idx, list, { noArtistLink = false } = {}) { const el = document.createElement('div'); if(s.starred && !s._starred) s._starred = true; el.className = 'song-item' + (S.queue[S.qIdx]?.id === s.id ? ' playing' : ''); @@ -40,10 +40,7 @@ export function makeSongItem(s, idx, list, { noArtistLink = false, noAlbumLink = : `${esc(a.name)}` ).join(' • ') : ''; - // Hide album in subtitle when it's identical to the track title (common for singles) - const albumHtml = !noAlbumLink && (s.albumId||s.album) && s.album !== s.title - ? ` · ${esc(s.album||'')}` - : ''; + const playsHtml = S.cfg.showPlayCount ? `${s.playCount ? s.playCount.toLocaleString() + '×' : '—'}` : ''; @@ -51,7 +48,7 @@ export function makeSongItem(s, idx, list, { noArtistLink = false, noAlbumLink =
${cv ? `` : '
♪
'}
${esc(s.title)}
-
${artistHtml}${albumHtml}
+
${artistHtml}
${formatDur(s.duration)} diff --git a/src/ui.js b/src/ui.js index b7499d7..aa711be 100644 --- a/src/ui.js +++ b/src/ui.js @@ -135,6 +135,7 @@ export function showCtxMenu(e, song, list, idx) { .catch(err => toast('Fehler: ' + err.message)); }}, { sep: true }, + { icon: '💿', label: 'Zum Album', fn: () => song.albumId && navigate('album-detail', { id: song.albumId, name: song.album||'', artist: song.artist||'', artistId: song.artistId||'', coverArt: song.coverArt||'' }) }, { icon: 'ℹ', label: 'Song-Info', fn: () => showSongInfo(song) }, { icon: '⬇', label: 'Herunterladen', fn: () => dlSongLocal(song) }, ]; diff --git a/src/views.js b/src/views.js index d4f417a..24bb497 100644 --- a/src/views.js +++ b/src/views.js @@ -644,7 +644,7 @@ export async function loadAlbumDetail(album) { toast(`⬇ ${songs.length} Titel Download gestartet`); }; sl.innerHTML = ''; - songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noAlbumLink: true }))); + songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs))); } catch(e) { sl.innerHTML = `

${e.message}

`; } } @@ -711,7 +711,7 @@ export async function loadPlaylistDetail(pl) { sl.innerHTML = ''; const plSearch = document.getElementById('playlist-search'); if (plSearch) plSearch.value = ''; - songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noArtistLink: true, noAlbumLink: true }))); + songs.forEach((s,i) => sl.appendChild(makeSongItem(s, i, songs, { noArtistLink: true }))); _setupReorderMode(sl, songs, S._currentPlaylist); } catch(e) { sl.innerHTML = `

${e.message}

`; } } @@ -880,7 +880,7 @@ export async function loadStarred(sort = _starredSort) { else if (sort === 'plays') songs.sort((a, b) => (b.playCount||0) - (a.playCount||0)); el.innerHTML = ''; if(!songs.length) { el.innerHTML = '
⭐

Noch keine Favoriten

'; return; } - songs.forEach((s,i) => el.appendChild(makeSongItem(s, i, songs, { noArtistLink: true, noAlbumLink: true }))); + songs.forEach((s,i) => el.appendChild(makeSongItem(s, i, songs, { noArtistLink: true }))); } catch(e) { el.innerHTML = `

${e.message}

`; } }