Render albums for artist
This commit is contained in:
parent
f4450206b6
commit
06cc60b61c
3 changed files with 28 additions and 5 deletions
|
@ -46,11 +46,7 @@
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#library-list {
|
.library-item-grid {
|
||||||
height: 100%;
|
|
||||||
overflow-y: auto;
|
|
||||||
padding-bottom: 0;
|
|
||||||
|
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
||||||
grid-auto-flow: dense;
|
grid-auto-flow: dense;
|
||||||
|
@ -59,6 +55,11 @@
|
||||||
grid-auto-rows: min-content;
|
grid-auto-rows: min-content;
|
||||||
|
|
||||||
gap: var(--double-margin);
|
gap: var(--double-margin);
|
||||||
|
}
|
||||||
|
|
||||||
|
#library-list {
|
||||||
|
height: 100%;
|
||||||
|
overflow-y: auto;
|
||||||
padding: var(--double-margin);
|
padding: var(--double-margin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -272,6 +272,7 @@ pub fn library_view(
|
||||||
div(
|
div(
|
||||||
[
|
[
|
||||||
attribute.id("library-list"),
|
attribute.id("library-list"),
|
||||||
|
attribute.class("library-item-grid"),
|
||||||
event.on("scrollend", handle_scrollend),
|
event.on("scrollend", handle_scrollend),
|
||||||
scroll_to.on(ScrollRequested),
|
scroll_to.on(ScrollRequested),
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
//// A library view to a single artist's albums and non-album tracks.
|
//// A library view to a single artist's albums and non-album tracks.
|
||||||
|
|
||||||
import elekf/library.{type Library}
|
import elekf/library.{type Library}
|
||||||
|
import elekf/library/album_utils
|
||||||
import elekf/library/track.{type Track}
|
import elekf/library/track.{type Track}
|
||||||
import elekf/library/track_utils
|
import elekf/library/track_utils
|
||||||
import elekf/web/common
|
import elekf/web/common
|
||||||
import elekf/web/components/library_view
|
import elekf/web/components/library_view
|
||||||
|
import elekf/web/components/library_views/album_item
|
||||||
import elekf/web/components/library_views/track_item
|
import elekf/web/components/library_views/track_item
|
||||||
import elekf/web/components/track_length
|
import elekf/web/components/track_length
|
||||||
import elekf/web/library_item.{type LibraryItem}
|
import elekf/web/library_item.{type LibraryItem}
|
||||||
|
@ -92,6 +94,18 @@ fn header_view(
|
||||||
track_length.short_delimiters,
|
track_length.short_delimiters,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
let album_items =
|
||||||
|
set.fold(albums, [], fn(acc, album_id) {
|
||||||
|
case library.get_album(library, album_id) {
|
||||||
|
Ok(album) -> [#(album_id, album), ..acc]
|
||||||
|
Error(_) -> acc
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|> list.sort(fn(a, b) { album_utils.sort_by_year(a.1, b.1) })
|
||||||
|
|> list.flat_map(fn(item) {
|
||||||
|
album_item.view(library, model.settings, item)
|
||||||
|
})
|
||||||
|
|
||||||
[
|
[
|
||||||
div([attribute.id("library-list-stats-header")], [
|
div([attribute.id("library-list-stats-header")], [
|
||||||
h1([], [text(artist.name)]),
|
h1([], [text(artist.name)]),
|
||||||
|
@ -105,6 +119,13 @@ fn header_view(
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
|
div(
|
||||||
|
[
|
||||||
|
attribute.id("artist-albums-list"),
|
||||||
|
attribute.class("library-item-grid"),
|
||||||
|
],
|
||||||
|
album_items,
|
||||||
|
),
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Error(_) -> library_view.empty_header(model, library, filter, items)
|
Error(_) -> library_view.empty_header(model, library, filter, items)
|
||||||
|
|
Loading…
Reference in a new issue