« get me outta code hell

data: Album.hideTracKSectionDurations, TrackSection.hideDuration - 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-07-04 13:19:47 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-07-04 13:19:47 -0300
commit46d936a5485d69551a3c30c5d9a1400f7fa3cd42 (patch)
tree85f790e9b1378d335291afe3d6de964b2ffcbc0e
parent26c6d6ccb887cbdac10d26160c923d2afcc7d521 (diff)
data: Album.hideTracKSectionDurations, TrackSection.hideDuration
-rw-r--r--src/content/dependencies/generateAlbumTrackList.js6
-rw-r--r--src/data/things/album/Album.js9
-rw-r--r--src/data/things/album/TrackSection.js10
3 files changed, 23 insertions, 2 deletions
diff --git a/src/content/dependencies/generateAlbumTrackList.js b/src/content/dependencies/generateAlbumTrackList.js
index d40fb259..6c8a21c2 100644
--- a/src/content/dependencies/generateAlbumTrackList.js
+++ b/src/content/dependencies/generateAlbumTrackList.js
@@ -87,7 +87,9 @@ export default {
         data.trackSectionDurations =
           album.trackSections
             .map(section =>
-              accumulateSum(section.tracks, track => track.duration));
+              (section.hideDuration
+                ? null
+                : accumulateSum(section.tracks, track => track.duration)));
 
         data.trackSectionDurationsApproximate =
           album.trackSections
@@ -159,7 +161,7 @@ export default {
                     language.encapsulate(capsule, capsule => {
                       const options = {section: name};
 
-                      if (duration !== 0) {
+                      if (duration) {
                         capsule += '.withDuration';
                         options.duration =
                           language.formatDuration(duration, {
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index 5da54419..54b7ef2d 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -328,6 +328,14 @@ export class Album extends Thing {
       },
     ],
 
+    hideTrackSectionDurations: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isBoolean),
+      }),
+
+      exposeDependency('hideDuration'),
+    ],
+
     // > Update & expose - General metadata
 
     color: color(),
@@ -860,6 +868,7 @@ export class Album extends Thing {
       'Show Section In Nav Bar': {property: 'showTrackSectionInNavBar'},
       'Show Artists In Track List': {property: 'showArtistsInTrackList'},
       'Hide Duration': {property: 'hideDuration'},
+      'Hide Track Section Durations': {property: 'hideTrackSectionDurations'},
 
       // General metadata
 
diff --git a/src/data/things/album/TrackSection.js b/src/data/things/album/TrackSection.js
index 58515954..45c42250 100644
--- a/src/data/things/album/TrackSection.js
+++ b/src/data/things/album/TrackSection.js
@@ -146,6 +146,15 @@ export class TrackSection extends Thing {
       exposeDependency('#album.countTracksInArtistTotals'),
     ],
 
+    hideDuration: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isBoolean),
+      }),
+
+      withPropertyFromObject('album', V('hideTrackSectionDurations')),
+      exposeDependency('#album.hideTrackSectionDurations'),
+    ],
+
     excludingTrackURLs: [
       exposeUpdateValueOrContinue({
         validate: input.value(
@@ -244,6 +253,7 @@ export class TrackSection extends Thing {
       },
 
       'Count Tracks In Artist Totals': {property: 'countTracksInArtistTotals'},
+      'Hide Duration': {property: 'hideDuration'},
 
       'Excluding Track URLs': {
         property: 'excludingTrackURLs',