diff options
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r-- | src/content/dependencies/generateTrackInfoPage.js | 432 |
1 files changed, 227 insertions, 205 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index 1cbbc8a8..64ed0cb4 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -10,7 +10,6 @@ export default { 'generateContributionList', 'generatePageLayout', 'generateTrackAdditionalNamesBox', - 'generateTrackChronologyLinks', 'generateTrackCoverArtwork', 'generateTrackInfoPageFeaturedByFlashesList', 'generateTrackInfoPageOtherReleasesList', @@ -49,9 +48,6 @@ export default { albumNavAccent: relation('generateAlbumNavAccent', track.album, track), - chronologyLinks: - relation('generateTrackChronologyLinks', track), - secondaryNav: relation('generateAlbumSecondaryNav', track.album), @@ -134,251 +130,277 @@ export default { }), generate: (data, relations, {html, language}) => - relations.layout.slots({ - title: language.$('trackPage.title', {track: data.name}), - headingMode: 'sticky', - - additionalNames: relations.additionalNamesBox, - - color: data.color, - styleRules: [relations.albumStyleRules], - - cover: - (relations.cover - ? relations.cover.slots({ - alt: language.$('misc.alt.trackCover'), - }) - : null), - - mainContent: [ - relations.releaseInfo, - - html.tag('p', - {[html.onlyIfContent]: true}, - {[html.joinChildren]: html.tag('br')}, - - [ - !html.isBlank(relations.sheetMusicFilesList) && - language.$('releaseInfo.sheetMusicFiles.shortcut', { - link: html.tag('a', - {href: '#sheet-music-files'}, - language.$('releaseInfo.sheetMusicFiles.shortcut.link')), - }), + language.encapsulate('trackPage', pageCapsule => + relations.layout.slots({ + title: + language.$(pageCapsule, 'title', { + track: data.name, + }), - !html.isBlank(relations.midiProjectFilesList) && - language.$('releaseInfo.midiProjectFiles.shortcut', { - link: html.tag('a', - {href: '#midi-project-files'}, - language.$('releaseInfo.midiProjectFiles.shortcut.link')), - }), + headingMode: 'sticky', - !html.isBlank(relations.additionalFilesList) && - language.$('releaseInfo.additionalFiles.shortcut', { - link: html.tag('a', - {href: '#midi-project-files'}, - language.$('releaseInfo.additionalFiles.shortcut.link')), - }), + additionalNames: relations.additionalNamesBox, + + color: data.color, + styleRules: [relations.albumStyleRules], + + cover: + (relations.cover + ? relations.cover.slots({ + alt: language.$('misc.alt.trackCover'), + }) + : null), - !html.isBlank(relations.artistCommentarySection) && - language.$('releaseInfo.readCommentary', { - link: html.tag('a', - {href: '#artist-commentary'}, - language.$('releaseInfo.readCommentary.link')), + mainContent: [ + relations.releaseInfo, + + html.tag('p', + {[html.onlyIfContent]: true}, + {[html.joinChildren]: html.tag('br')}, + + language.encapsulate('releaseInfo', capsule => [ + !html.isBlank(relations.sheetMusicFilesList) && + language.encapsulate(capsule, 'sheetMusicFiles.shortcut', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#sheet-music-files'}, + language.$(capsule, 'link')), + })), + + !html.isBlank(relations.midiProjectFilesList) && + language.encapsulate(capsule, 'midiProjectFiles.shortcut', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#midi-project-files'}, + language.$(capsule, 'link')), + })), + + !html.isBlank(relations.additionalFilesList) && + language.encapsulate(capsule, 'additionalFiles.shortcut', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#midi-project-files'}, + language.$(capsule, 'link')), + })), + + !html.isBlank(relations.artistCommentarySection) && + language.encapsulate(capsule, 'readCommentary', capsule => + language.$(capsule, { + link: + html.tag('a', + {href: '#artist-commentary'}, + language.$(capsule, 'link')), + })), + ])), + + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'also-released-as'}, + title: language.$('releaseInfo.alsoReleasedAs'), }), + + relations.otherReleasesList, ]), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'also-released-as'}, - title: language.$('releaseInfo.alsoReleasedAs'), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'contributors'}, + title: language.$('releaseInfo.contributors'), + }), + + relations.contributorContributionList.slots({ + chronologyKind: 'trackContribution', }), + ]), - relations.otherReleasesList, - ]), + html.tags([ + language.encapsulate('releaseInfo.tracksReferenced', capsule => + relations.contentHeading.clone() + .slots({ + attributes: {id: 'references'}, - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'contributors'}, - title: language.$('releaseInfo.contributors'), - }), + title: + language.$(capsule, { + track: + html.tag('i', data.name), + }), - relations.contributorContributionList, - ]), + stickyTitle: + language.$(capsule, 'sticky'), + })), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'references'}, + relations.referencedTracksList, + ]), - title: - language.$('releaseInfo.tracksReferenced', { - track: html.tag('i', data.name), - }), + html.tags([ + language.encapsulate('releaseInfo.tracksSampled', capsule => + relations.contentHeading.clone() + .slots({ + attributes: {id: 'samples'}, - stickyTitle: - language.$('releaseInfo.tracksReferenced.sticky'), - }), + title: + language.$(capsule, { + track: + html.tag('i', data.name), + }), + + stickyTitle: + language.$(capsule, 'sticky'), + })), + + relations.sampledTracksList, + ]), - relations.referencedTracksList, - ]), + language.encapsulate('releaseInfo.tracksThatReference', capsule => + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'referenced-by'}, - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'samples'}, + title: + language.$(capsule, { + track: html.tag('i', data.name), + }), - title: - language.$('releaseInfo.tracksSampled', { - track: html.tag('i', data.name), + stickyTitle: + language.$(capsule, 'sticky'), }), - stickyTitle: - language.$('releaseInfo.tracksSampled.sticky'), - }), + relations.referencedByTracksList + .slots({ + headingString: capsule, + }), + ])), - relations.sampledTracksList, - ]), + language.encapsulate('releaseInfo.tracksThatSample', capsule => + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'sampled-by'}, - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'referenced-by'}, + title: + language.$(capsule, { + track: html.tag('i', data.name), + }), - title: - language.$('releaseInfo.tracksThatReference', { - track: html.tag('i', data.name), + stickyTitle: + language.$(capsule, 'sticky'), }), - stickyTitle: - language.$('releaseInfo.tracksThatReference.sticky'), - }), + relations.sampledByTracksList + .slots({ + headingString: capsule, + }), + ])), - relations.referencedByTracksList - .slots({ - headingString: 'releaseInfo.tracksThatReference', - }), - ]), + html.tags([ + language.encapsulate('releaseInfo.flashesThatFeature', capsule => + relations.contentHeading.clone() + .slots({ + attributes: {id: 'featured-in'}, - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'sampled-by'}, + title: + language.$(capsule, { + track: html.tag('i', data.name), + }), - title: - language.$('releaseInfo.tracksThatSample', { - track: html.tag('i', data.name), - }), + stickyTitle: + language.$(capsule, 'sticky'), + })), - stickyTitle: - language.$('releaseInfo.tracksThatSample.sticky'), - }), + relations.flashesThatFeatureList, + ]), - relations.sampledByTracksList - .slots({ - headingString: 'releaseInfo.tracksThatSample', - }), - ]), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'lyrics'}, + title: language.$('releaseInfo.lyrics'), + }), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'featured-in'}, + html.tag('blockquote', + {[html.onlyIfContent]: true}, + relations.lyrics.slot('mode', 'lyrics')), + ]), - title: - language.$('releaseInfo.flashesThatFeature', { - track: html.tag('i', data.name), - }), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'sheet-music-files'}, + title: language.$('releaseInfo.sheetMusicFiles.heading'), + }), - stickyTitle: - language.$('releaseInfo.flashesThatFeature.sticky'), - }), + relations.sheetMusicFilesList, + ]), - relations.flashesThatFeatureList, - ]), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'midi-project-files'}, + title: language.$('releaseInfo.midiProjectFiles.heading'), + }), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'lyrics'}, - title: language.$('releaseInfo.lyrics'), - }), + relations.midiProjectFilesList, + ]), - html.tag('blockquote', - {[html.onlyIfContent]: true}, - relations.lyrics.slot('mode', 'lyrics')), - ]), - - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'sheet-music-files'}, - title: language.$('releaseInfo.sheetMusicFiles.heading'), - }), + html.tags([ + relations.contentHeading.clone() + .slots({ + attributes: {id: 'additional-files'}, + title: language.$('releaseInfo.additionalFiles.heading'), + }), - relations.sheetMusicFilesList, - ]), + relations.additionalFilesList, + ]), - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'midi-project-files'}, - title: language.$('releaseInfo.midiProjectFiles.heading'), - }), + relations.artistCommentarySection, + ], - relations.midiProjectFilesList, - ]), + navLinkStyle: 'hierarchical', - html.tags([ - relations.contentHeading.clone() - .slots({ - attributes: {id: 'additional-files'}, - title: language.$('releaseInfo.additionalFiles.heading'), - }), + navLinks: [ + {auto: 'home'}, - relations.additionalFilesList, - ]), - - relations.artistCommentarySection, - ], - - navLinkStyle: 'hierarchical', - navLinks: [ - {auto: 'home'}, - {html: relations.albumLink.slot('color', false)}, - { - html: - (data.hasTrackNumbers - ? language.$('trackPage.nav.track.withNumber', { - number: data.trackNumber, - track: relations.trackLink - .slot('attributes', {class: 'current'}), - }) - : language.$('trackPage.nav.track', { - track: relations.trackLink - .slot('attributes', {class: 'current'}), - })), - }, - ], + {html: relations.albumLink.slot('color', false)}, - navBottomRowContent: - relations.albumNavAccent.slots({ - showTrackNavigation: true, - showExtraLinks: false, - }), + { + html: + language.encapsulate(pageCapsule, 'nav.track', workingCapsule => { + const workingOptions = {}; - navContent: - relations.chronologyLinks, + workingOptions.track = + relations.trackLink + .slot('attributes', {class: 'current'}); - secondaryNav: - relations.secondaryNav - .slot('mode', 'track'), + if (data.hasTrackNumbers) { + workingCapsule += '.withNumber'; + workingOptions.number = data.trackNumber; + } - leftSidebar: relations.sidebar, + return language.$(workingCapsule, workingOptions); + }), + }, + ], - socialEmbed: relations.socialEmbed, - }), + navBottomRowContent: + relations.albumNavAccent.slots({ + showTrackNavigation: true, + showExtraLinks: false, + }), + + secondaryNav: + relations.secondaryNav + .slot('mode', 'track'), + + leftSidebar: relations.sidebar, + + socialEmbed: relations.socialEmbed, + })), }; /* |