add watchlist indicator to artists listed on the library page that are in the user watchlist
This commit is contained in:
parent
e9c405559d
commit
93d65b1ad3
3 changed files with 38 additions and 2 deletions
|
|
@ -4082,10 +4082,16 @@ class MusicDatabase:
|
||||||
a.genres,
|
a.genres,
|
||||||
a.musicbrainz_id,
|
a.musicbrainz_id,
|
||||||
COUNT(DISTINCT al.id) as album_count,
|
COUNT(DISTINCT al.id) as album_count,
|
||||||
COUNT(DISTINCT t.id) as track_count
|
COUNT(DISTINCT t.id) as track_count,
|
||||||
|
MAX(CASE WHEN wa.id IS NOT NULL THEN 1 ELSE 0 END) as is_watched
|
||||||
FROM artists a
|
FROM artists a
|
||||||
LEFT JOIN albums al ON a.id = al.artist_id
|
LEFT JOIN albums al ON a.id = al.artist_id
|
||||||
LEFT JOIN tracks t ON al.id = t.album_id
|
LEFT JOIN tracks t ON al.id = t.album_id
|
||||||
|
LEFT JOIN watchlist_artists wa ON (
|
||||||
|
(a.spotify_artist_id IS NOT NULL AND a.spotify_artist_id = wa.spotify_artist_id)
|
||||||
|
OR (a.itunes_artist_id IS NOT NULL AND a.itunes_artist_id = wa.itunes_artist_id)
|
||||||
|
OR LOWER(a.name) = LOWER(wa.artist_name)
|
||||||
|
)
|
||||||
WHERE {where_clause}
|
WHERE {where_clause}
|
||||||
GROUP BY a.id, a.name, a.thumb_url, a.genres, a.musicbrainz_id
|
GROUP BY a.id, a.name, a.thumb_url, a.genres, a.musicbrainz_id
|
||||||
ORDER BY a.name COLLATE NOCASE
|
ORDER BY a.name COLLATE NOCASE
|
||||||
|
|
@ -4126,7 +4132,8 @@ class MusicDatabase:
|
||||||
'genres': artist.genres,
|
'genres': artist.genres,
|
||||||
'musicbrainz_id': row['musicbrainz_id'],
|
'musicbrainz_id': row['musicbrainz_id'],
|
||||||
'album_count': row['album_count'] or 0,
|
'album_count': row['album_count'] or 0,
|
||||||
'track_count': row['track_count'] or 0
|
'track_count': row['track_count'] or 0,
|
||||||
|
'is_watched': bool(row['is_watched'])
|
||||||
}
|
}
|
||||||
artists.append(artist_data)
|
artists.append(artist_data)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25478,6 +25478,16 @@ function createLibraryArtistCard(artist) {
|
||||||
card.appendChild(mbIcon);
|
card.appendChild(mbIcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add watchlist indicator if artist is on the watchlist
|
||||||
|
if (artist.is_watched) {
|
||||||
|
const watchIcon = document.createElement('div');
|
||||||
|
watchIcon.className = 'watchlist-card-icon';
|
||||||
|
watchIcon.title = 'On your watchlist';
|
||||||
|
watchIcon.style.top = artist.musicbrainz_id ? '40px' : '8px';
|
||||||
|
watchIcon.textContent = '👁️';
|
||||||
|
card.appendChild(watchIcon);
|
||||||
|
}
|
||||||
|
|
||||||
// Create image element
|
// Create image element
|
||||||
const imageContainer = document.createElement("div");
|
const imageContainer = document.createElement("div");
|
||||||
imageContainer.className = "library-artist-image";
|
imageContainer.className = "library-artist-image";
|
||||||
|
|
|
||||||
|
|
@ -21980,6 +21980,25 @@ body {
|
||||||
opacity: 1 !important;
|
opacity: 1 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.watchlist-card-icon {
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
backdrop-filter: blur(4px);
|
||||||
|
border: 1px solid rgba(29, 185, 84, 0.4);
|
||||||
|
border-radius: 4px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
opacity: 0.9;
|
||||||
|
z-index: 100;
|
||||||
|
font-size: 14px;
|
||||||
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
/* IMPORT MODAL */
|
/* IMPORT MODAL */
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue