diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-07-27 17:52:21 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-07-27 17:52:21 -0300 |
commit | dec015d9e25d9455558c0959dd7c8e23a4527a4b (patch) | |
tree | 265f91b3b8da0fcf289822327db913277bfad377 /src | |
parent | 5dd97e7e1f0241701ca43b61cc346ea905f18922 (diff) |
content: generateAlbumArtworkColumn: fix separating attaching arts
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/generateAlbumArtworkColumn.js | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/src/content/dependencies/generateAlbumArtworkColumn.js b/src/content/dependencies/generateAlbumArtworkColumn.js index e6762463..150d3b6e 100644 --- a/src/content/dependencies/generateAlbumArtworkColumn.js +++ b/src/content/dependencies/generateAlbumArtworkColumn.js @@ -2,37 +2,53 @@ export default { contentDependencies: ['generateAlbumArtInfoBox', 'generateCoverArtwork'], extraDependencies: ['html'], - relations: (relation, album) => ({ - firstCover: + query: (album) => ({ + nonAttachingArtworkIndex: (album.hasCoverArt - ? relation('generateCoverArtwork', album.coverArtworks[0]) + ? album.coverArtworks.findIndex((artwork, index) => + index > 1 && + !artwork.attachAbove) : null), + }), + + relations: (relation, query, album) => ({ + firstCovers: + (album.hasCoverArt && query.nonAttachingArtworkIndex >= 1 + ? album.coverArtworks + .slice(0, query.nonAttachingArtworkIndex) + .map(artwork => relation('generateCoverArtwork', artwork)) + + : album.hasCoverArt + ? album.coverArtworks + .map(artwork => relation('generateCoverArtwork', artwork)) - restCovers: - (album.hasCoverArt - ? album.coverArtworks.slice(1).map(artwork => - relation('generateCoverArtwork', artwork)) : []), albumArtInfoBox: relation('generateAlbumArtInfoBox', album), + + restCovers: + (album.hasCoverArt && query.nonAttachingArtworkIndex >= 1 + ? album.coverArtworks + .slice(query.nonAttachingArtworkIndex) + .map(artwork => relation('generateCoverArtwork', artwork)) + + : []), }), - generate: (relations, {html}) => - html.tags([ - relations.firstCover?.slots({ + generate(relations, {html}) { + for (const cover of [...relations.firstCovers, ...relations.restCovers]) { + cover.setSlots({ showOriginDetails: true, showArtTagDetails: true, showReferenceDetails: true, - }), + }); + } + return html.tags([ + relations.firstCovers, relations.albumArtInfoBox, - - relations.restCovers.map(cover => - cover.slots({ - showOriginDetails: true, - showArtTagDetails: true, - showReferenceDetails: true, - })), - ]), + relations.restCovers, + ]); + }, }; |