« get me outta code hell

data, content: TrackSection.hasTrackNumbers - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateAlbumTrackList.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-12-10 17:32:11 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-12-10 17:32:11 -0400
commit69ae43806f57daf9a29caf5ee3de14ec53bcaac1 (patch)
tree5d4bbd1aafe9a2c0b91b4e13aef349f3762dbb4a /src/content/dependencies/generateAlbumTrackList.js
parent6b440b13585fd90614df42752a56d895c805256f (diff)
data, content: TrackSection.hasTrackNumbers
closes #566 PRETTY SWEET !!!
examples here: https://discord.com/channels/749042497610842152/779895315750715422/1448422818944647429
Diffstat (limited to 'src/content/dependencies/generateAlbumTrackList.js')
-rw-r--r--src/content/dependencies/generateAlbumTrackList.js40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/content/dependencies/generateAlbumTrackList.js b/src/content/dependencies/generateAlbumTrackList.js
index 93cb420b..d40fb259 100644
--- a/src/content/dependencies/generateAlbumTrackList.js
+++ b/src/content/dependencies/generateAlbumTrackList.js
@@ -76,7 +76,7 @@ export default {
     const data = {};
 
     data.displayMode = query.displayMode;
-    data.hasTrackNumbers = album.hasTrackNumbers;
+    data.albumHasTrackNumbers = album.hasTrackNumbers;
 
     switch (query.displayMode) {
       case 'trackSections':
@@ -93,15 +93,16 @@ export default {
           album.trackSections
             .map(section => section.tracks.length > 1);
 
-        if (album.hasTrackNumbers) {
-          data.trackSectionsStartCountingFrom =
-            album.trackSections
-              .map(section => section.startCountingFrom);
-        } else {
-          data.trackSectionsStartCountingFrom =
-            album.trackSections
-              .map(() => null);
-        }
+        data.trackSectionsHaveTrackNumbers =
+          album.trackSections
+            .map(section => section.hasTrackNumbers);
+
+        data.trackSectionsStartCountingFrom =
+          album.trackSections
+            .map(section =>
+              (section.hasTrackNumbers
+                ? section.startCountingFrom
+                : null));
 
         break;
     }
@@ -119,8 +120,6 @@ export default {
   },
 
   generate(data, relations, slots, {html, language}) {
-    const listTag = (data.hasTrackNumbers ? 'ol' : 'ul');
-
     const slotItems = items =>
       items.map(item =>
         item.slots({
@@ -139,6 +138,7 @@ export default {
             name: data.trackSectionNames,
             duration: data.trackSectionDurations,
             durationApproximate: data.trackSectionDurationsApproximate,
+            hasTrackNumbers: data.trackSectionsHaveTrackNumbers,
             startCountingFrom: data.trackSectionsStartCountingFrom,
           }).map(({
               heading,
@@ -148,6 +148,7 @@ export default {
               name,
               duration,
               durationApproximate,
+              hasTrackNumbers,
               startCountingFrom,
             }) => [
               language.encapsulate('trackList.section', capsule =>
@@ -180,16 +181,19 @@ export default {
                   {[html.onlyIfContent]: true},
                   description),
 
-                html.tag(listTag,
-                  data.hasTrackNumbers &&
-                    {start: startCountingFrom},
-
-                  slotItems(items)),
+                (hasTrackNumbers
+                  ? html.tag('ol', {start: startCountingFrom},
+                      slotItems(items))
+                  : html.tag('ul', slotItems(items))),
               ]),
             ]));
 
       case 'tracks':
-        return html.tag(listTag, slotItems(relations.items));
+        if (data.albumHasTrackNumbers) {
+          return html.tag('ol', slotItems(relations.items));
+        } else {
+          return html.tag('ul', slotItems(relations.items));
+        }
 
       default:
         return html.blank();