From 39dfd7bb398adf3c6e4aee6a5bc56fff2098a24c Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 25 Jul 2025 04:45:02 -0300 Subject: content: generateGroupGalleryPageAlbumGridTab (factor out) --- .../generateGroupGalleryPageAlbumGrid.js | 67 ++++------------------ 1 file changed, 10 insertions(+), 57 deletions(-) (limited to 'src/content/dependencies/generateGroupGalleryPageAlbumGrid.js') diff --git a/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js index 9167a5ad..7b90fd68 100644 --- a/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js +++ b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js @@ -1,43 +1,17 @@ -import {empty, stitchArrays} from '#sugar'; +import {stitchArrays} from '#sugar'; import {getTotalDuration} from '#wiki-data'; export default { contentDependencies: [ - 'generateArtistCredit', 'generateCoverGrid', + 'generateGroupGalleryPageAlbumGridTab', 'image', 'linkAlbum', ], extraDependencies: ['language', 'wikiData'], - query: (albums, group) => ({ - notedGroups: - albums.map(album => { - const contextGroup = group; - - const candidateGroups = - album.groups - .filter(group => !group.excludeFromGalleryTabs) - .filter(group => group.category !== contextGroup.category); - - return candidateGroups.at(0) ?? null; - }), - - notedArtistContribs: - albums.map(album => { - if ( - album.artistContribs.length === 1 && - !empty(group.closelyLinkedArtists) && - (album.artistContribs[0].artist.name === - group.closelyLinkedArtists[0].artist.name) - ) { - return []; - } - - return album.artistContribs; - }), - + query: (albums, _group) => ({ artworks: albums.map(album => (album.hasCoverArt @@ -45,14 +19,10 @@ export default { : null)), }), - relations: (relation, query, albums, _group) => ({ + relations: (relation, query, albums, group) => ({ coverGrid: relation('generateCoverGrid'), - artistCredits: - query.notedArtistContribs - .map(contribs => relation('generateArtistCredit', contribs, [])), - links: albums .map(album => relation('linkAlbum', album)), @@ -60,6 +30,11 @@ export default { images: query.artworks .map(artwork => relation('image', artwork)), + + tabs: + albums + .map(album => + relation('generateGroupGalleryPageAlbumGridTab', album, group)), }), data: (query, albums, group) => ({ @@ -81,10 +56,6 @@ export default { ? null : getTotalDuration(album.tracks))), - groupNames: - query.notedGroups - .map(group => group ? group.name : null), - notFromThisGroup: albums.map(album => !album.groups.includes(group)), }), @@ -111,25 +82,7 @@ export default { itemAttributes: data.styles.map(style => ({'data-style': style})), - tab: - language.encapsulate(capsule, 'tab', capsule => - stitchArrays({ - groupName: data.groupNames, - artistCredit: relations.artistCredits, - }).map(({groupName, artistCredit}) => - (groupName - ? language.$(capsule, 'group', { - group: groupName, - }) - : artistCredit - ? artistCredit?.slots({ - normalStringKey: - capsule + '.artists', - - normalFeaturingStringKey: - capsule + '.artists.featuring', - }) - : null))), + tab: relations.tabs, info: stitchArrays({ -- cgit 1.3.0-6-gf8a5