diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-05-28 14:25:50 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-05-28 14:25:50 -0300 |
| commit | 8cf17aae87ba968d35c9871be9f90997cd5a80ad (patch) | |
| tree | 25725594d8a4c62f294ed08c0f7c33d71a99bc75 /src | |
| parent | 045b3eee42ce2ce20793f65ca7f4752457bbe77d (diff) | |
content: generateAlbumLinkNavAccent & friends
Diffstat (limited to 'src')
| -rw-r--r-- | src/content/dependencies/generateAlbumCommentaryPage.js | 29 | ||||
| -rw-r--r-- | src/content/dependencies/generateAlbumGalleryPage.js | 28 | ||||
| -rw-r--r-- | src/content/dependencies/generateAlbumInfoPage.js | 21 | ||||
| -rw-r--r-- | src/content/dependencies/generateAlbumLinkNavAccent.js | 46 | ||||
| -rw-r--r-- | src/content/dependencies/generateAlbumNavLinks.js | 56 | ||||
| -rw-r--r-- | src/content/dependencies/generateAlbumNavSwitcher.js (renamed from src/content/dependencies/generateAlbumNavAccent.js) | 0 | ||||
| -rw-r--r-- | src/content/dependencies/generateTrackInfoPage.js | 6 | ||||
| -rw-r--r-- | src/content/dependencies/generateTrackNavLinks.js | 11 | ||||
| -rw-r--r-- | src/strings-default.yaml | 29 |
9 files changed, 163 insertions, 63 deletions
diff --git a/src/content/dependencies/generateAlbumCommentaryPage.js b/src/content/dependencies/generateAlbumCommentaryPage.js index d2706918..0d7fb2cb 100644 --- a/src/content/dependencies/generateAlbumCommentaryPage.js +++ b/src/content/dependencies/generateAlbumCommentaryPage.js @@ -31,11 +31,8 @@ export default { relations.albumStyleTags = relation('generateAlbumStyleTags', album, null); - relations.albumLink = - relation('linkAlbum', album); - - relations.albumNavAccent = - relation('generateAlbumNavAccent', album, null); + relations.albumNavLinks = + relation('generateAlbumNavLinks', album); relations.totals = relation('getContentEntryTotals', @@ -263,21 +260,13 @@ export default { ], navLinkStyle: 'hierarchical', - navLinks: [ - {auto: 'home'}, - { - html: - relations.albumLink - .slot('attributes', {class: 'current'}), - - accent: - relations.albumNavAccent.slots({ - showTrackNavigation: false, - showExtraLinks: true, - currentExtra: 'commentary', - }), - }, - ], + navLinks: + html.resolve( + relations.albumNavLinks.slots({ + showTrackNavigation: false, + showExtraLinks: true, + currentExtra: 'commentary', + })), secondaryNav: relations.secondaryNav.slots({ diff --git a/src/content/dependencies/generateAlbumGalleryPage.js b/src/content/dependencies/generateAlbumGalleryPage.js index 85b0fb74..7e083fbf 100644 --- a/src/content/dependencies/generateAlbumGalleryPage.js +++ b/src/content/dependencies/generateAlbumGalleryPage.js @@ -34,11 +34,8 @@ export default { albumStyleTags: relation('generateAlbumStyleTags', album, null), - albumLink: - relation('linkAlbum', album), - - albumNavAccent: - relation('generateAlbumNavAccent', album, null), + albumNavLinks: + relation('generateAlbumNavLinks', album), secondaryNav: relation('generateAlbumSecondaryNav', album), @@ -132,20 +129,13 @@ export default { ], navLinkStyle: 'hierarchical', - navLinks: [ - {auto: 'home'}, - { - html: - relations.albumLink - .slot('attributes', {class: 'current'}), - accent: - relations.albumNavAccent.slots({ - showTrackNavigation: false, - showExtraLinks: true, - currentExtra: 'gallery', - }), - }, - ], + navLinks: + html.resolve( + relations.albumNavLinks.slots({ + showTrackNavigation: false, + showExtraLinks: true, + currentExtra: 'gallery', + })), secondaryNav: relations.secondaryNav, })), diff --git a/src/content/dependencies/generateAlbumInfoPage.js b/src/content/dependencies/generateAlbumInfoPage.js index 152518b0..34ebb649 100644 --- a/src/content/dependencies/generateAlbumInfoPage.js +++ b/src/content/dependencies/generateAlbumInfoPage.js @@ -11,8 +11,8 @@ export default { socialEmbed: relation('generateAlbumSocialEmbed', album), - albumNavAccent: - relation('generateAlbumNavAccent', album, null), + albumNavLinks: + relation('generateAlbumNavLinks', album), secondaryNav: relation('generateAlbumSecondaryNav', album), @@ -201,17 +201,12 @@ export default { ], navLinkStyle: 'hierarchical', - navLinks: [ - {auto: 'home'}, - { - auto: 'current', - accent: - relations.albumNavAccent.slots({ - showTrackNavigation: true, - showExtraLinks: true, - }), - }, - ], + navLinks: + html.resolve( + relations.albumNavLinks.slots({ + showTrackNavigation: true, + showExtraLinks: true, + })), banner: relations.banner ?? null, bannerPosition: 'top', diff --git a/src/content/dependencies/generateAlbumLinkNavAccent.js b/src/content/dependencies/generateAlbumLinkNavAccent.js new file mode 100644 index 00000000..50a53472 --- /dev/null +++ b/src/content/dependencies/generateAlbumLinkNavAccent.js @@ -0,0 +1,46 @@ +export default { + data: (album) => ({ + style: + album.style, + + nameDetail: + album.nameDetail, + }), + + slots: { + navString: {type: 'string', default: 'albumPage.nav'}, + }, + + generate: (data, slots, {html, language}) => + language.encapsulate(slots.navString, 'albumAccent', capsule => { + let workingCapsule = capsule; + let workingOptions = {}; + + let any = false; + + if (data.nameDetail) { + workingCapsule += '.withNameDetail'; + workingOptions.nameDetail = data.nameDetail; + any = true; + } + + const type = + (data.style === 'single' + ? language.$(capsule, 'type.single') + : data.style === 'in-game vgm' + ? language.$(capsule, 'type.vgm') + : html.blank()); + + if (!html.isBlank(type)) { + workingCapsule += '.withType'; + workingOptions.type = type; + any = true; + } + + if (any) { + return language.$(workingCapsule, workingOptions); + } else { + return html.blank(); + } + }), +}; diff --git a/src/content/dependencies/generateAlbumNavLinks.js b/src/content/dependencies/generateAlbumNavLinks.js new file mode 100644 index 00000000..3068b532 --- /dev/null +++ b/src/content/dependencies/generateAlbumNavLinks.js @@ -0,0 +1,56 @@ +export default { + relations: (relation, album) => ({ + albumLink: + relation('linkAlbum', album), + + switcher: + relation('generateAlbumNavSwitcher', album, null), + + accent: + relation('generateAlbumLinkNavAccent', album), + }), + + slots: { + showTrackNavigation: {type: 'boolean', default: false}, + showExtraLinks: {type: 'boolean', default: false}, + + currentExtra: { + validate: v => v.is('gallery', 'commentary'), + }, + }, + + generate: (relations, slots, {html, language}) => + language.encapsulate('albumPage.nav', navCapsule => [ + {auto: 'home'}, + + { + html: + relations.albumLink + .slot('attributes', {class: 'current'}), + + accent: + (() => { + const {switcher, accent} = relations; + + switcher.setSlots({ + showTrackNavigation: slots.showTrackNavigation, + showExtraLinks: slots.showExtraLinks, + currentExtra: slots.currentExtra, + }); + + if (!html.isBlank(switcher) && !html.isBlank(accent)) { + return language.$(navCapsule, 'albumAccent.withLinks', { + accent: accent, + links: switcher, + }); + } else if (!html.isBlank(accent)) { + return accent; + } else if (!html.isBlank(switcher)) { + return switcher; + } else { + return html.blank(); + } + })(), + }, + ]), +}; diff --git a/src/content/dependencies/generateAlbumNavAccent.js b/src/content/dependencies/generateAlbumNavSwitcher.js index 24a562f4..24a562f4 100644 --- a/src/content/dependencies/generateAlbumNavAccent.js +++ b/src/content/dependencies/generateAlbumNavSwitcher.js diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index 8b92c1be..72c3c897 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -51,8 +51,8 @@ export default { albumNavLink: relation('linkAlbum', track.album), - albumNavAccent: - relation('generateAlbumNavAccent', track.album, track), + albumNavSwitcher: + relation('generateAlbumNavSwitcher', track.album, track), secondaryNav: relation('generateAlbumSecondaryNav', track.album), @@ -401,7 +401,7 @@ export default { navBottomRowContent: (data.singleTrackSingle ? null - : relations.albumNavAccent.slots({ + : relations.albumNavSwitcher.slots({ showTrackNavigation: true, showExtraLinks: false, })), diff --git a/src/content/dependencies/generateTrackNavLinks.js b/src/content/dependencies/generateTrackNavLinks.js index 55029aa4..0fcd2118 100644 --- a/src/content/dependencies/generateTrackNavLinks.js +++ b/src/content/dependencies/generateTrackNavLinks.js @@ -3,14 +3,14 @@ export default { albumLink: relation('linkAlbum', track.album), + albumLinkNavAccent: + relation('generateAlbumLinkNavAccent', track.album), + trackLink: relation('linkTrack', track), }), data: (track) => ({ - albumStyle: - track.album.style, - showTrackSection: track.album.showTrackSectionInNavBar, @@ -39,10 +39,7 @@ export default { { html: relations.albumLink.slot('color', false), - accent: - (data.albumStyle === 'single' - ? language.$(navCapsule, 'singleAccent') - : null), + accent: relations.albumLinkNavAccent.slot('navString', navCapsule), }, data.showTrackSection && diff --git a/src/strings-default.yaml b/src/strings-default.yaml index 1d06d1d4..4e1bf94c 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -1365,6 +1365,22 @@ albumPage: backToAlbum: "Return to album page" + albumAccent: + withNameDetail: >- + {NAME_DETAIL} + + withType: >- + {TYPE} + + withNameDetail.withType: >- + {TYPE}: {NAME_DETAIL} + + type.single: "single" # This string should probably never appear, but... + type.vgm: "in-game vgm" + + withLinks: >- + {ACCENT} - {LINKS} + randomTrack: "Random Track" gallery: "Gallery" commentary: "Commentary" @@ -3110,7 +3126,18 @@ trackPage: backToTrack: "Return to track page" - singleAccent: "single" + albumAccent: + withNameDetail: >- + {NAME_DETAIL} + + withType: >- + {TYPE} + + withNameDetail.withType: >- + {TYPE}: {NAME_DETAIL} + + type.single: "single" + type.vgm: "vgm" track: _: "{TRACK}" |