« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateAlbumSidebarTrackSection.js2
-rw-r--r--src/content/dependencies/generateAlbumTrackListItem.js2
-rw-r--r--src/content/dependencies/generateNearbyTrackList.js24
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js2
-rw-r--r--src/content/dependencies/generateTrackListItem.js20
-rw-r--r--src/content/dependencies/generateTrackNavLinks.js2
6 files changed, 40 insertions, 12 deletions
diff --git a/src/content/dependencies/generateAlbumSidebarTrackSection.js b/src/content/dependencies/generateAlbumSidebarTrackSection.js
index 97941698..94785c2d 100644
--- a/src/content/dependencies/generateAlbumSidebarTrackSection.js
+++ b/src/content/dependencies/generateAlbumSidebarTrackSection.js
@@ -42,7 +42,7 @@ export default {
 
     data.trackNameDetails =
       trackSection.tracks
-        .map(track => track.nameDetail);
+        .map(track => track.nameDetailWithinAlbum);
 
     data.tracksAreMissingCommentary =
       trackSection.tracks
diff --git a/src/content/dependencies/generateAlbumTrackListItem.js b/src/content/dependencies/generateAlbumTrackListItem.js
index 7024284b..e46e9904 100644
--- a/src/content/dependencies/generateAlbumTrackListItem.js
+++ b/src/content/dependencies/generateAlbumTrackListItem.js
@@ -47,7 +47,7 @@ export default {
           ? 'auto'
           : false),
 
-      showDetail: true,
+      showDetail: 'from within album',
 
       showDuration:
         (slots.collapseDurationScope === 'track'
diff --git a/src/content/dependencies/generateNearbyTrackList.js b/src/content/dependencies/generateNearbyTrackList.js
index ebea7206..ff1c969b 100644
--- a/src/content/dependencies/generateNearbyTrackList.js
+++ b/src/content/dependencies/generateNearbyTrackList.js
@@ -1,3 +1,5 @@
+import {stitchArrays} from '#sugar';
+
 export default {
   query: (tracks, contextTrack, _contextContributions) => ({
     presentedTracks:
@@ -14,6 +16,12 @@ export default {
         .map(track => relation('generateTrackListItem', track, contextContributions)),
   }),
 
+  data: (query, _tracks, contextTrack, _contextContributions) => ({
+    presentedTracksMatchContextRelease:
+      query.presentedTracks
+        .map(track => track.album === contextTrack.album),
+  }),
+
   slots: {
     showArtists: {
       validate: v => v.is(true, false, 'auto'),
@@ -36,15 +44,25 @@ export default {
     },
   },
 
-  generate: (relations, slots, {html}) =>
+  generate: (data, relations, slots, {html}) =>
     html.tag('ul',
       {[html.onlyIfContent]: true},
 
-      relations.items.map(item =>
+      stitchArrays({
+        item: relations.items,
+        releasesMatch: data.presentedTracksMatchContextRelease,
+      }).map(({item, releasesMatch}) =>
         item.slots({
           showArtists: slots.showArtists,
           showDuration: slots.showDuration,
-          showDetail: slots.showDetail,
+
+          showDetail:
+            (slots.showDetail && releasesMatch
+              ? 'from within album'
+          : slots.showDetail
+              ? 'from across wiki'
+              : false),
+
           colorMode: slots.colorMode,
         }))),
 };
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index 33242b4e..8b92c1be 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -147,7 +147,7 @@ export default {
       track.nameStyle,
 
     nameDetail:
-      track.nameDetail,
+      track.nameDetailAcrossWiki,
 
     color:
       track.color,
diff --git a/src/content/dependencies/generateTrackListItem.js b/src/content/dependencies/generateTrackListItem.js
index c1f6ff93..ce975326 100644
--- a/src/content/dependencies/generateTrackListItem.js
+++ b/src/content/dependencies/generateTrackListItem.js
@@ -28,8 +28,11 @@ export default {
     date:
       track.date,
 
-    detail:
-      track.nameDetail,
+    nameDetailWithinAlbum:
+      track.nameDetailWithinAlbum,
+
+    nameDetailAcrossWiki:
+      track.nameDetailAcrossWiki,
 
     duration:
       track.duration ?? 0,
@@ -47,7 +50,7 @@ export default {
     },
 
     showDetail: {
-      type: 'boolean',
+      validate: v => v.is('from across wiki', 'from within album', false),
       default: false,
     },
 
@@ -124,12 +127,19 @@ export default {
             relations.trackLink
               .slot('color', slots.colorMode === 'track');
 
-          if (data.detail && slots.showDetail) {
+          const nameDetail =
+            (slots.showDetail === 'from within album'
+              ? data.nameDetailWithinAlbum
+           : slots.showDetail
+              ? data.nameDetailAcrossWiki
+              : null);
+
+          if (nameDetail) {
             workingCapsule += '.withDetail';
             workingOptions.detailAccent =
               html.tag('span', {class: 'name-detail'},
                 language.$(itemCapsule, 'withDetail', 'accent', {
-                  detail: language.sanitize(data.detail),
+                  detail: language.sanitize(nameDetail),
                 }));
           }
 
diff --git a/src/content/dependencies/generateTrackNavLinks.js b/src/content/dependencies/generateTrackNavLinks.js
index 21ba48db..55029aa4 100644
--- a/src/content/dependencies/generateTrackNavLinks.js
+++ b/src/content/dependencies/generateTrackNavLinks.js
@@ -24,7 +24,7 @@ export default {
       track.trackNumber,
 
     nameDetail:
-      track.nameDetail,
+      track.nameDetailWithinAlbum,
   }),
 
   slots: {