diff options
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r-- | src/content/dependencies/generateTrackInfoPage.js | 181 |
1 files changed, 86 insertions, 95 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index 64ed0cb4..6c16ce27 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -1,20 +1,24 @@ export default { contentDependencies: [ - 'generateAlbumAdditionalFilesList', + 'generateAdditionalFilesList', + 'generateAdditionalNamesBox', 'generateAlbumNavAccent', 'generateAlbumSecondaryNav', 'generateAlbumSidebar', - 'generateAlbumStyleRules', - 'generateCommentarySection', + 'generateAlbumStyleTags', + 'generateCommentaryEntry', + 'generateContentContentHeading', 'generateContentHeading', 'generateContributionList', + 'generateLyricsSection', 'generatePageLayout', - 'generateTrackAdditionalNamesBox', - 'generateTrackCoverArtwork', + 'generateTrackArtistCommentarySection', + 'generateTrackArtworkColumn', 'generateTrackInfoPageFeaturedByFlashesList', 'generateTrackInfoPageOtherReleasesList', 'generateTrackList', 'generateTrackListDividedByGroups', + 'generateTrackNavLinks', 'generateTrackReleaseInfo', 'generateTrackSocialEmbed', 'linkAlbum', @@ -22,28 +26,27 @@ export default { 'transformContent', ], - extraDependencies: ['html', 'language', 'wikiData'], + extraDependencies: ['html', 'language'], - sprawl: ({wikiInfo}) => ({ - divideTrackListsByGroups: - wikiInfo.divideTrackListsByGroups, + query: (track) => ({ + mainReleaseTrack: + (track.isMainRelease + ? track + : track.mainReleaseTrack), }), - relations: (relation, sprawl, track) => ({ + relations: (relation, query, track) => ({ layout: relation('generatePageLayout'), - albumStyleRules: - relation('generateAlbumStyleRules', track.album, track), + albumStyleTags: + relation('generateAlbumStyleTags', track.album, track), socialEmbed: relation('generateTrackSocialEmbed', track), - albumLink: - relation('linkAlbum', track.album), - - trackLink: - relation('linkTrack', track), + navLinks: + relation('generateTrackNavLinks', track), albumNavAccent: relation('generateAlbumNavAccent', track.album, track), @@ -55,21 +58,22 @@ export default { relation('generateAlbumSidebar', track.album, track), additionalNamesBox: - relation('generateTrackAdditionalNamesBox', track), + relation('generateAdditionalNamesBox', track.additionalNames), - cover: - (track.hasUniqueCoverArt || track.album.hasCoverArt - ? relation('generateTrackCoverArtwork', track) - : null), + artworkColumn: + relation('generateTrackArtworkColumn', track), contentHeading: relation('generateContentHeading'), + contentContentHeading: + relation('generateContentContentHeading', track), + releaseInfo: relation('generateTrackReleaseInfo', track), otherReleasesList: - relation('generateTrackInfoPageOtherReleasesList', track), + relation('generateTrackInfoPageOtherReleasesList', track), contributorContributionList: relation('generateContributionList', track.contributorContribs), @@ -82,51 +86,45 @@ export default { referencedByTracksList: relation('generateTrackListDividedByGroups', - track.referencedByTracks, - sprawl.divideTrackListsByGroups), + query.mainReleaseTrack.referencedByTracks), sampledByTracksList: relation('generateTrackListDividedByGroups', - track.sampledByTracks, - sprawl.divideTrackListsByGroups), + query.mainReleaseTrack.sampledByTracks), flashesThatFeatureList: relation('generateTrackInfoPageFeaturedByFlashesList', track), - lyrics: - relation('transformContent', track.lyrics), + lyricsSection: + relation('generateLyricsSection', track.lyrics), sheetMusicFilesList: - relation('generateAlbumAdditionalFilesList', - track.album, - track.sheetMusicFiles), + relation('generateAdditionalFilesList', track.sheetMusicFiles), midiProjectFilesList: - relation('generateAlbumAdditionalFilesList', - track.album, - track.midiProjectFiles), + relation('generateAdditionalFilesList', track.midiProjectFiles), additionalFilesList: - relation('generateAlbumAdditionalFilesList', - track.album, - track.additionalFiles), + relation('generateAdditionalFilesList', track.additionalFiles), artistCommentarySection: - relation('generateCommentarySection', track.commentary), + relation('generateTrackArtistCommentarySection', track), + + creditingSourceEntries: + track.creditingSources + .map(entry => relation('generateCommentaryEntry', entry)), + + referencingSourceEntries: + track.referencingSources + .map(entry => relation('generateCommentaryEntry', entry)), }), - data: (sprawl, track) => ({ + data: (_query, track) => ({ name: track.name, color: track.color, - - hasTrackNumbers: - track.album.hasTrackNumbers, - - trackNumber: - track.album.tracks.indexOf(track) + 1, }), generate: (data, relations, {html, language}) => @@ -142,14 +140,10 @@ export default { additionalNames: relations.additionalNamesBox, color: data.color, - styleRules: [relations.albumStyleRules], + styleTags: relations.albumStyleTags, - cover: - (relations.cover - ? relations.cover.slots({ - alt: language.$('misc.alt.trackCover'), - }) - : null), + artworkColumnContent: + relations.artworkColumn, mainContent: [ relations.releaseInfo, @@ -194,17 +188,27 @@ export default { {href: '#artist-commentary'}, language.$(capsule, 'link')), })), - ])), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'also-released-as'}, - title: language.$('releaseInfo.alsoReleasedAs'), - }), + !html.isBlank(relations.creditingSourceEntries) && + language.encapsulate(capsule, 'readCreditingSources', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#crediting-sources'}, + language.$(capsule, 'link')), + })), - relations.otherReleasesList, - ]), + !html.isBlank(relations.referencingSourceEntries) && + language.encapsulate(capsule, 'readReferencingSources', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#referencing-sources'}, + language.$(capsule, 'link')), + })), + ])), + + relations.otherReleasesList, html.tags([ relations.contentHeading.clone() @@ -316,17 +320,7 @@ export default { relations.flashesThatFeatureList, ]), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'lyrics'}, - title: language.$('releaseInfo.lyrics'), - }), - - html.tag('blockquote', - {[html.onlyIfContent]: true}, - relations.lyrics.slot('mode', 'lyrics')), - ]), + relations.lyricsSection, html.tags([ relations.contentHeading.clone() @@ -359,34 +353,31 @@ export default { ]), relations.artistCommentarySection, - ], - - navLinkStyle: 'hierarchical', - - navLinks: [ - {auto: 'home'}, - - {html: relations.albumLink.slot('color', false)}, - { - html: - language.encapsulate(pageCapsule, 'nav.track', workingCapsule => { - const workingOptions = {}; - - workingOptions.track = - relations.trackLink - .slot('attributes', {class: 'current'}); + html.tags([ + relations.contentContentHeading.clone() + .slots({ + attributes: {id: 'crediting-sources'}, + string: 'misc.creditingSources', + }), - if (data.hasTrackNumbers) { - workingCapsule += '.withNumber'; - workingOptions.number = data.trackNumber; - } + relations.creditingSourceEntries, + ]), - return language.$(workingCapsule, workingOptions); + html.tags([ + relations.contentContentHeading.clone() + .slots({ + attributes: {id: 'referencing-sources'}, + string: 'misc.referencingSources', }), - }, + + relations.referencingSourceEntries, + ]), ], + navLinkStyle: 'hierarchical', + navLinks: html.resolve(relations.navLinks), + navBottomRowContent: relations.albumNavAccent.slots({ showTrackNavigation: true, |