diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2025-10-23 18:17:33 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2025-10-23 18:19:17 -0300 |
| commit | 2d8622f8b31df0367ded52a45d7362abfe6d9a7c (patch) | |
| tree | 0c66e60a8b86729d32daf025e5ac13a4be235a2f /src | |
| parent | e100804966122cd730a0ec4bf55ad10e10b6be60 (diff) | |
content: generateNearbyTrackList
makes generateTrackList more general
Diffstat (limited to 'src')
5 files changed, 55 insertions, 20 deletions
diff --git a/src/content/dependencies/generateFlashInfoPage.js b/src/content/dependencies/generateFlashInfoPage.js index 86ec6648..935ffdc6 100644 --- a/src/content/dependencies/generateFlashInfoPage.js +++ b/src/content/dependencies/generateFlashInfoPage.js @@ -63,7 +63,7 @@ export default { relation('generateFlashNavAccent', flash), featuredTracksList: - relation('generateTrackList', flash.featuredTracks), + relation('generateTrackList', flash.featuredTracks, []), contributorContributionList: relation('generateContributionList', flash.contributorContribs), diff --git a/src/content/dependencies/generateNearbyTrackList.js b/src/content/dependencies/generateNearbyTrackList.js new file mode 100644 index 00000000..6771285a --- /dev/null +++ b/src/content/dependencies/generateNearbyTrackList.js @@ -0,0 +1,34 @@ +export default { + query: (tracks, contextTrack) => ({ + presentedTracks: + (contextTrack + ? tracks.map(track => + track.otherReleases.find(({album}) => album === contextTrack.album) ?? + track) + : tracks), + }), + + relations: (relation, query, _tracks, _contextTrack) => ({ + items: + query.presentedTracks + .map(track => relation('generateTrackListItem', track, [])), + }), + + slots: { + colorMode: { + validate: v => v.is('none', 'track', 'line'), + default: 'track', + }, + }, + + generate: (relations, slots, {html}) => + html.tag('ul', + {[html.onlyIfContent]: true}, + + relations.items.map(item => + item.slots({ + showArtists: 'auto', + showDuration: false, + colorMode: slots.colorMode, + }))), +}; diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index 92e00a41..3903e0fe 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -87,10 +87,10 @@ export default { relation('generateContributionList', track.contributorContribs), referencedTracksList: - relation('generateTrackList', track.referencedTracks, track), + relation('generateNearbyTrackList', track.referencedTracks, track), sampledTracksList: - relation('generateTrackList', track.sampledTracks, track), + relation('generateNearbyTrackList', track.sampledTracks, track), referencedByTracksList: relation('generateTrackListDividedByGroups', diff --git a/src/content/dependencies/generateTrackList.js b/src/content/dependencies/generateTrackList.js index 6771285a..c259c914 100644 --- a/src/content/dependencies/generateTrackList.js +++ b/src/content/dependencies/generateTrackList.js @@ -1,20 +1,21 @@ export default { - query: (tracks, contextTrack) => ({ - presentedTracks: - (contextTrack - ? tracks.map(track => - track.otherReleases.find(({album}) => album === contextTrack.album) ?? - track) - : tracks), - }), - - relations: (relation, query, _tracks, _contextTrack) => ({ + relations: (relation, tracks, contextContributions) => ({ items: - query.presentedTracks - .map(track => relation('generateTrackListItem', track, [])), + tracks.map(track => + relation('generateTrackListItem', track, contextContributions)), }), slots: { + showArtists: { + validate: v => v.is(true, false, 'auto'), + default: 'auto', + }, + + showDuration: { + type: 'boolean', + default: false, + }, + colorMode: { validate: v => v.is('none', 'track', 'line'), default: 'track', @@ -27,8 +28,8 @@ export default { relations.items.map(item => item.slots({ - showArtists: 'auto', - showDuration: false, + showArtists: slots.showArtists, + showDuration: slots.showDuration, colorMode: slots.colorMode, }))), }; diff --git a/src/content/dependencies/generateTrackListDividedByGroups.js b/src/content/dependencies/generateTrackListDividedByGroups.js index d7342891..c23617ff 100644 --- a/src/content/dependencies/generateTrackListDividedByGroups.js +++ b/src/content/dependencies/generateTrackListDividedByGroups.js @@ -45,7 +45,7 @@ export default { relations: (relation, query, sprawl, tracks, contextTrack) => ({ flatList: (empty(sprawl.divideTrackListsByGroups) - ? relation('generateTrackList', tracks, contextTrack) + ? relation('generateNearbyTrackList', tracks, contextTrack) : null), contentHeading: @@ -57,12 +57,12 @@ export default { groupedTrackLists: query.groupedTracks - .map(tracks => relation('generateTrackList', tracks, contextTrack)), + .map(tracks => relation('generateNearbyTrackList', tracks, contextTrack)), ungroupedTrackList: (empty(query.ungroupedTracks) ? null - : relation('generateTrackList', query.ungroupedTracks, contextTrack)), + : relation('generateNearbyTrackList', query.ungroupedTracks, contextTrack)), }), data: (query, _sprawl, _tracks) => ({ |