diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-07-01 14:14:38 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-07-01 14:14:38 -0300 |
commit | 34a1115df603aff44f354abe9f15d24d53f7a5ac (patch) | |
tree | 09726c8bbfff8c2eec2c189a18841a10827e1ff5 /src/content/dependencies/listAlbumsByName.js | |
parent | 28514381d7c4639608786151dc94e5a1b22f85fe (diff) |
content: avoid boilerplate around listings, make spec relevant again
Diffstat (limited to 'src/content/dependencies/listAlbumsByName.js')
-rw-r--r-- | src/content/dependencies/listAlbumsByName.js | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/content/dependencies/listAlbumsByName.js b/src/content/dependencies/listAlbumsByName.js index 2182efa..c302a9c 100644 --- a/src/content/dependencies/listAlbumsByName.js +++ b/src/content/dependencies/listAlbumsByName.js @@ -9,38 +9,42 @@ export default { return {albumData}; }, - query({albumData}) { + query({albumData}, spec) { return { + spec, albums: sortAlphabetically(albumData.slice()), }; }, relations(relation, query) { return { - page: relation('generateListingPage'), - links: query.albums.map(album => relation('linkAlbum', album)), + page: relation('generateListingPage', query.spec), + + albumLinks: + query.albums + .map(album => relation('linkAlbum', album)), }; }, data(query) { return { - numTracks: query.albums.map(album => album.tracks.length), + counts: + query.albums + .map(album => album.tracks.length), }; }, generate(data, relations, {language}) { return relations.page.slots({ - title: language.$('listingPage.listAlbums.byName.title'), type: 'rows', rows: stitchArrays({ - link: relations.links, - numTracks: data.numTracks, - }).map(({link, numTracks}) => - language.$('listingPage.listAlbums.byName.item', { - album: link, - tracks: language.countTracks(numTracks, {unit: true}), - })), + link: relations.albumLinks, + count: data.counts, + }).map(({link, count}) => ({ + album: link, + tracks: language.countTracks(count, {unit: true}), + })), }); }, }; |