« get me outta code hell

content, data: Track.nameDetailWithinSection, meta-only in-album display - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-06-19 09:54:54 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-06-19 09:54:54 -0300
commit6af9aa5fa40234136d24bc163cc3bd2c25793a20 (patch)
treed83dae869bcaf6d98fb694ec6f18c7280e1c1ef8
parenta6805c91982d6108f691bf2930c8dfae673ee91a (diff)
content, data: Track.nameDetailWithinSection, meta-only in-album display preview
-rw-r--r--src/content/dependencies/generateAlbumSidebarTrackSection.js5
-rw-r--r--src/content/dependencies/generateAlbumTrackListItem.js6
-rw-r--r--src/content/dependencies/generateArtistInfoPageTracksChunkItem.js2
-rw-r--r--src/content/dependencies/generateNearbyTrackList.js8
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js4
-rw-r--r--src/content/dependencies/generateTrackListItem.js19
-rw-r--r--src/content/dependencies/generateTrackNavLinks.js4
-rw-r--r--src/data/things/Track.js25
8 files changed, 59 insertions, 14 deletions
diff --git a/src/content/dependencies/generateAlbumSidebarTrackSection.js b/src/content/dependencies/generateAlbumSidebarTrackSection.js
index 94785c2d..642ef78e 100644
--- a/src/content/dependencies/generateAlbumSidebarTrackSection.js
+++ b/src/content/dependencies/generateAlbumSidebarTrackSection.js
@@ -42,7 +42,10 @@ export default {
 
     data.trackNameDetails =
       trackSection.tracks
-        .map(track => track.nameDetailWithinAlbum);
+        .map(track =>
+          (album.style === 'meta'
+            ? track.nameDetailWithinAlbum
+            : null));
 
     data.tracksAreMissingCommentary =
       trackSection.tracks
diff --git a/src/content/dependencies/generateAlbumTrackListItem.js b/src/content/dependencies/generateAlbumTrackListItem.js
index e46e9904..1f1d8d2b 100644
--- a/src/content/dependencies/generateAlbumTrackListItem.js
+++ b/src/content/dependencies/generateAlbumTrackListItem.js
@@ -21,6 +21,7 @@ export default {
   }),
 
   data: (query, track, album) => ({
+    albumStyle: album.style,
     albumShowsTrackArtists: album.showArtistsInTrackList,
 
     trackHasDuration: query.trackHasDuration,
@@ -47,7 +48,10 @@ export default {
           ? 'auto'
           : false),
 
-      showDetail: 'from within album',
+      showNameDetail:
+        (data.albumStyle === 'meta'
+          ? 'from within section'
+          : false),
 
       showDuration:
         (slots.collapseDurationScope === 'track'
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
index fa384a3e..0b2aaf8c 100644
--- a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
+++ b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
@@ -116,7 +116,7 @@ export default {
             html.inside(
               relations.trackListItem.slots({
                 showArtists: 'auto',
-                showDetail: 'from across wiki',
+                showNameDetail: 'from within album',
                 showDuration: slots.showDuration,
                 showDate: data.date,
               })),
diff --git a/src/content/dependencies/generateNearbyTrackList.js b/src/content/dependencies/generateNearbyTrackList.js
index ff1c969b..be44bc0f 100644
--- a/src/content/dependencies/generateNearbyTrackList.js
+++ b/src/content/dependencies/generateNearbyTrackList.js
@@ -33,7 +33,7 @@ export default {
       default: false,
     },
 
-    showDetail: {
+    showNameDetail: {
       type: 'boolean',
       default: true,
     },
@@ -56,10 +56,10 @@ export default {
           showArtists: slots.showArtists,
           showDuration: slots.showDuration,
 
-          showDetail:
-            (slots.showDetail && releasesMatch
+          showNameDetail:
+            (slots.showNameDetail && releasesMatch
               ? 'from within album'
-          : slots.showDetail
+          : slots.showNameDetail
               ? 'from across wiki'
               : false),
 
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index 3d06b364..cc322f53 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -149,7 +149,9 @@ export default {
       track.nameStyle,
 
     nameDetail:
-      track.nameDetailAcrossWiki,
+      (track.album.style === 'meta'
+        ? track.nameDetailWithinAlbum
+        : null),
 
     color:
       track.color,
diff --git a/src/content/dependencies/generateTrackListItem.js b/src/content/dependencies/generateTrackListItem.js
index ce975326..8f324df7 100644
--- a/src/content/dependencies/generateTrackListItem.js
+++ b/src/content/dependencies/generateTrackListItem.js
@@ -28,6 +28,9 @@ export default {
     date:
       track.date,
 
+    nameDetailWithinSection:
+      track.nameDetailWithinSection,
+
     nameDetailWithinAlbum:
       track.nameDetailWithinAlbum,
 
@@ -49,8 +52,14 @@ export default {
       default: 'auto',
     },
 
-    showDetail: {
-      validate: v => v.is('from across wiki', 'from within album', false),
+    showNameDetail: {
+      validate: v => v.is(...[
+        'from within section',
+        'from within album',
+        'from across wiki',
+        false,
+      ]),
+
       default: false,
     },
 
@@ -128,9 +137,11 @@ export default {
               .slot('color', slots.colorMode === 'track');
 
           const nameDetail =
-            (slots.showDetail === 'from within album'
+            (slots.showNameDetail === 'from within section'
+              ? data.nameDetailWithinSection
+           : slots.showNameDetail === 'from within album'
               ? data.nameDetailWithinAlbum
-           : slots.showDetail
+           : slots.showNameDetail
               ? data.nameDetailAcrossWiki
               : null);
 
diff --git a/src/content/dependencies/generateTrackNavLinks.js b/src/content/dependencies/generateTrackNavLinks.js
index 836ada5f..0bc03d17 100644
--- a/src/content/dependencies/generateTrackNavLinks.js
+++ b/src/content/dependencies/generateTrackNavLinks.js
@@ -26,7 +26,9 @@ export default {
       track.trackNumber,
 
     nameDetail:
-      track.nameDetailWithinAlbum,
+      (track.album.style === 'meta'
+        ? track.nameDetailWithinAlbum
+        : null),
   }),
 
   slots: {
diff --git a/src/data/things/Track.js b/src/data/things/Track.js
index 0806de36..cd83ef19 100644
--- a/src/data/things/Track.js
+++ b/src/data/things/Track.js
@@ -773,7 +773,7 @@ export class Track extends Thing {
       },
     ],
 
-    nameDetailWithinAlbum: [
+    nameDetailWithinSection: [
       {
         dependencies: ['_nameDetail'],
         compute: ({
@@ -787,6 +787,29 @@ export class Track extends Thing {
       },
     ],
 
+    nameDetailWithinAlbum: [
+      withPropertyFromObject('trackSection', V('nameDetailForTracks')),
+
+      {
+        dependencies: [
+          '_nameDetail',
+          '#trackSection.nameDetailForTracks',
+        ],
+
+        compute: ({
+          ['_nameDetail']: nameDetail,
+
+          ['#trackSection.nameDetailForTracks']:
+            trackSectionNameDetailForTracks,
+        }) =>
+          (nameDetail === 'album'
+            ? null
+         : nameDetail === 'section'
+            ? trackSectionNameDetailForTracks
+            : nameDetail),
+      },
+    ],
+
     nameDetailAcrossWiki: [
       withPropertyFromObject('album', V('nameDetailForTracks')),
       withPropertyFromObject('trackSection', V('nameDetailForTracks')),