diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/generateGroupGalleryPage.js | 54 | ||||
-rw-r--r-- | src/content/dependencies/generateGroupGalleryPageAlbumGrid.js | 62 |
2 files changed, 66 insertions, 50 deletions
diff --git a/src/content/dependencies/generateGroupGalleryPage.js b/src/content/dependencies/generateGroupGalleryPage.js index 2eefd305..453155cb 100644 --- a/src/content/dependencies/generateGroupGalleryPage.js +++ b/src/content/dependencies/generateGroupGalleryPage.js @@ -1,11 +1,10 @@ import {sortChronologically} from '#sort'; -import {stitchArrays} from '#sugar'; import {filterItemsForCarousel, getTotalDuration} from '#wiki-data'; export default { contentDependencies: [ 'generateCoverCarousel', - 'generateCoverGrid', + 'generateGroupGalleryPageAlbumGrid', 'generateGroupNavLinks', 'generateGroupSecondaryNav', 'generateGroupSidebar', @@ -67,18 +66,8 @@ export default { quickDescription: relation('generateQuickDescription', group), - coverGrid: - relation('generateCoverGrid'), - - gridLinks: - query.allAlbums - .map(album => relation('linkAlbum', album)), - - gridImages: - query.allAlbums.map(album => - (album.hasCoverArt - ? relation('image', album.coverArtworks[0]) - : relation('image'))), + albumGrid: + relation('generateGroupGalleryPageAlbumGrid', query.allAlbums), }), data: (query, _sprawl, group) => ({ @@ -96,15 +85,6 @@ export default { totalDuration: getTotalDuration(query.allTracks, {mainReleasesOnly: true}), - - gridNames: - query.allAlbums.map(album => album.name), - - gridDurations: - query.allAlbums.map(album => getTotalDuration(album.tracks)), - - gridNumTracks: - query.allAlbums.map(album => album.tracks.length), }), generate: (data, relations, {html, language}) => @@ -145,33 +125,7 @@ export default { })), })), - relations.coverGrid - .slots({ - links: relations.gridLinks, - names: data.gridNames, - - images: - stitchArrays({ - image: relations.gridImages, - name: data.gridNames, - }).map(({image, name}) => - image.slots({ - missingSourceContent: - language.$('misc.coverGrid.noCoverArt', { - album: name, - }), - })), - - info: - stitchArrays({ - numTracks: data.gridNumTracks, - duration: data.gridDurations, - }).map(({numTracks, duration}) => - language.$('misc.coverGrid.details.albumLength', { - tracks: language.countTracks(numTracks, {unit: true}), - time: language.formatDuration(duration), - })), - }), + relations.albumGrid, ], leftSidebar: diff --git a/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js new file mode 100644 index 00000000..7015679b --- /dev/null +++ b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js @@ -0,0 +1,62 @@ +import {stitchArrays} from '#sugar'; +import {getTotalDuration} from '#wiki-data'; + +export default { + contentDependencies: ['generateCoverGrid', 'image', 'linkAlbum'], + extraDependencies: ['language'], + + relations: (relation, albums) => ({ + coverGrid: + relation('generateCoverGrid'), + + links: + albums.map(album => + relation('linkAlbum', album)), + + images: + albums.map(album => + (album.hasCoverArt + ? relation('image', album.coverArtworks[0]) + : relation('image'))) + }), + + data: (albums) => ({ + names: + albums.map(album => album.name), + + durations: + albums.map(album => getTotalDuration(album.tracks)), + + tracks: + albums.map(album => album.tracks.length), + }), + + generate: (data, relations, {language}) => + language.encapsulate('misc.coverGrid', capsule => + relations.coverGrid.slots({ + links: relations.links, + names: data.names, + + images: + stitchArrays({ + image: relations.images, + name: data.names, + }).map(({image, name}) => + image.slots({ + missingSourceContent: + language.$(capsule, 'noCoverArt', { + album: name, + }), + })), + + info: + stitchArrays({ + tracks: data.tracks, + duration: data.durations, + }).map(({tracks, duration}) => + language.$(capsule, 'details.albumLength', { + tracks: language.countTracks(tracks, {unit: true}), + time: language.formatDuration(duration), + })), + })), +}; |