« get me outta code hell

content: generateAlbumNavLinks, generatePageLayout nav bar - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPage.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-04-15 14:16:04 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-04-15 14:16:04 -0300
commit357015de21e7e427f25b31a2622fb9182ec292e1 (patch)
treebabdd9b39abafa8a5d3add55436150757942c002 /src/content/dependencies/generateTrackInfoPage.js
parent6b35077eb1542eaf9a89534d6920c35fee86cc04 (diff)
content: generateAlbumNavLinks, generatePageLayout nav bar
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index 0519b7e8..acf8461b 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -1,10 +1,13 @@
 export default {
   contentDependencies: [
     'generateTrackInfoPageContent',
+    'generateAlbumNavLinks',
     'generateAlbumSidebar',
     'generateAlbumStyleRules',
     'generateColorStyleRules',
     'generatePageLayout',
+    'linkAlbum',
+    'linkTrack',
   ],
 
   extraDependencies: ['language'],
@@ -13,6 +16,10 @@ export default {
     return {
       layout: relation('generatePageLayout'),
 
+      albumLink: relation('linkAlbum', track.album),
+      trackLink: relation('linkTrack', track),
+      albumNavLinks: relation('generateAlbumNavLinks', track.album, track),
+
       content: relation('generateTrackInfoPageContent', track),
       sidebar: relation('generateAlbumSidebar', track.album, track),
       albumStyleRules: relation('generateAlbumStyleRules', track.album),
@@ -23,6 +30,9 @@ export default {
   data(track) {
     return {
       name: track.name,
+
+      hasTrackNumbers: track.album.hasTrackNumbers,
+      trackNumber: track.album.tracks.indexOf(track) + 1,
     };
   },
 
@@ -38,6 +48,33 @@ export default {
         cover: relations.content.cover,
         mainContent: relations.content.main.content,
 
+        navLinkStyle: 'hierarchical',
+        navLinks: [
+          {auto: 'home'},
+          {html: relations.albumLink},
+          {
+            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'}),
+                  })),
+          },
+        ],
+
+        navContent: '(Chronology links here)',
+
+        navBottomRowContent:
+          relations.albumNavLinks.slots({
+            showTrackNavigation: true,
+            showExtraLinks: false,
+          }),
+
         ...relations.sidebar,
       });
   },