diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-02-18 13:38:21 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-03-02 08:23:21 -0400 |
commit | 9562f48b308b060ee4159a2c365db82581ecc107 (patch) | |
tree | 1cf5e0898e6341d4ec0376ecb17a423799e935c1 /src/content | |
parent | 016aab374619323a918cf6ff34fa3e5e89f3a2fc (diff) |
content: generateTrackReleaseBox
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/dependencies/generateAlbumSidebar.js | 12 | ||||
-rw-r--r-- | src/content/dependencies/generateTrackReleaseBox.js | 46 |
2 files changed, 57 insertions, 1 deletions
diff --git a/src/content/dependencies/generateAlbumSidebar.js b/src/content/dependencies/generateAlbumSidebar.js index bd53ef71..19fa7ee7 100644 --- a/src/content/dependencies/generateAlbumSidebar.js +++ b/src/content/dependencies/generateAlbumSidebar.js @@ -7,6 +7,7 @@ export default { 'generateAlbumSidebarTrackListBox', 'generatePageSidebar', 'generatePageSidebarConjoinedBox', + 'generateTrackReleaseBox', ], extraDependencies: ['html', 'wikiData'], @@ -63,10 +64,16 @@ export default { query.disconnectedSerieses .map(series => relation('generateAlbumSidebarSeriesBox', album, series)), + + trackReleaseBoxes: + track.otherReleases + .map(track => + relation('generateTrackReleaseBox', track)), }), data: (_query, _sprawl, _album, track) => ({ isAlbumPage: !track, + isTrackPage: !!track, }), generate(data, relations, {html}) { @@ -98,9 +105,12 @@ export default { ]), ], + data.isTrackPage && + relations.trackReleaseBoxes, + relations.trackListBox, - !data.isAlbumPage && + data.isTrackPage && relations.conjoinedBox.slots({ attributes: {class: 'conjoined-group-sidebar-box'}, boxes: diff --git a/src/content/dependencies/generateTrackReleaseBox.js b/src/content/dependencies/generateTrackReleaseBox.js new file mode 100644 index 00000000..ef02e2b9 --- /dev/null +++ b/src/content/dependencies/generateTrackReleaseBox.js @@ -0,0 +1,46 @@ +export default { + contentDependencies: [ + 'generateColorStyleAttribute', + 'generatePageSidebarBox', + 'linkTrack', + ], + + extraDependencies: ['html', 'language'], + + relations: (relation, track) => ({ + box: + relation('generatePageSidebarBox'), + + colorStyle: + relation('generateColorStyleAttribute', track.album.color), + + trackLink: + relation('linkTrack', track), + }), + + data: (track) => ({ + albumName: + track.album.name, + }), + + generate: (data, relations, {html, language}) => + language.encapsulate('albumSidebar.releaseBox', boxCapsule => + relations.box.slots({ + attributes: [ + {class: 'track-release-sidebar-box'}, + relations.colorStyle, + ], + + content: [ + html.tag('h1', + language.$(boxCapsule, 'title', { + album: + relations.trackLink.slots({ + color: false, + content: + language.sanitize(data.albumName), + }), + })), + ], + })), +}; |