« get me outta code hell

content: generateChronologyLinks, generatePreviousNextLinks - 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 19:50:02 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-04-15 19:50:02 -0300
commited422988035ce2e67464c544267adce4df4f5f35 (patch)
tree3e89b89301cb5bab4e9558c9f9ad6343bec850e1 /src/content/dependencies/generateTrackInfoPage.js
parent60e85440588fa9c52ae2d856c1e53126935222a4 (diff)
content: generateChronologyLinks, generatePreviousNextLinks
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js51
1 files changed, 49 insertions, 2 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index acf8461..570aac9 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -1,3 +1,6 @@
+import getChronologyRelations from '../util/getChronologyRelations.js';
+import {sortAlbumsTracksChronologically} from '../../util/wiki-data.js';
+
 export default {
   contentDependencies: [
     'generateTrackInfoPageContent',
@@ -8,6 +11,7 @@ export default {
     'generatePageLayout',
     'linkAlbum',
     'linkTrack',
+    'generateChronologyLinks',
   ],
 
   extraDependencies: ['language'],
@@ -15,6 +19,37 @@ export default {
   relations(relation, track) {
     return {
       layout: relation('generatePageLayout'),
+      chronologyLinks: relation('generateChronologyLinks'),
+
+      artistChronologyContributions: getChronologyRelations(track, {
+        contributions: [...track.artistContribs, ...track.contributorContribs],
+
+        linkArtist: artist => relation('linkArtist', artist),
+        linkThing: track => relation('linkTrack', track),
+
+        getThings: artist =>
+          sortAlbumsTracksChronologically([
+            ...artist.tracksAsArtist,
+            ...artist.tracksAsContributor,
+          ]),
+      }),
+
+      coverArtistChronologyContributions: getChronologyRelations(track, {
+        contributions: track.coverArtistContribs,
+
+        linkArtist: artist => relation('linkArtist', artist),
+
+        linkThing: trackOrAlbum =>
+          (trackOrAlbum.album
+            ? relation('linkTrack', trackOrAlbum)
+            : relation('linkAlbum', trackOrAlbum)),
+
+        getThings: artist =>
+          sortAlbumsTracksChronologically([
+            ...artist.albumsAsCoverArtist,
+            ...artist.tracksAsCoverArtist,
+          ]),
+      }),
 
       albumLink: relation('linkAlbum', track.album),
       trackLink: relation('linkTrack', track),
@@ -67,14 +102,26 @@ export default {
           },
         ],
 
-        navContent: '(Chronology links here)',
-
         navBottomRowContent:
           relations.albumNavLinks.slots({
             showTrackNavigation: true,
             showExtraLinks: false,
           }),
 
+        navContent:
+          relations.chronologyLinks.slots({
+            chronologyInfoSets: [
+              {
+                headingString: 'misc.chronology.heading.track',
+                contributions: relations.artistChronologyContributions,
+              },
+              {
+                headingString: 'misc.chronology.heading.coverArt',
+                contributions: relations.coverArtistChronologyContributions,
+              },
+            ],
+          }),
+
         ...relations.sidebar,
       });
   },