« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/content/dependencies/generateGroupGalleryPageAlbumGrid.js53
-rw-r--r--src/strings-default.yaml2
2 files changed, 33 insertions, 22 deletions
diff --git a/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js
index 9e25049e..7a8edb5d 100644
--- a/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js
+++ b/src/content/dependencies/generateGroupGalleryPageAlbumGrid.js
@@ -35,17 +35,18 @@ export default {
     styles:
       albums.map(album => album.style),
 
-    tracks:
-      albums.map(album => album.tracks.length),
-
     allWarnings:
       query.artworks.flatMap(artwork => artwork?.contentWarnings),
 
+    hideDuration:
+      albums.map(album => album.hideDuration),
+
+    tracks:
+      albums.map(album => album.tracks.length),
+
     durations:
       albums.map(album =>
-        (album.hideDuration
-          ? null
-       : album.style === 'single'
+        (album.style === 'single'
           ? album.tracks[0]?.duration ?? null
           : getTotalDuration(album.tracks))),
 
@@ -80,24 +81,32 @@ export default {
         info:
           stitchArrays({
             style: data.styles,
+            hideDuration: data.hideDuration,
             tracks: data.tracks,
             duration: data.durations,
-          }).map(({style, tracks, duration}) =>
-              (!duration
-                ? null
-             : style === 'single' && tracks > 1
-               ? language.$(capsule, 'details.albumLength.single.withMultipleTracks', {
-                   time: language.formatDuration(duration),
-                   tracks: language.countTracks(tracks, {unit: true}),
-                 })
-             : style === 'single'
-                ? language.$(capsule, 'details.albumLength.single', {
-                    time: language.formatDuration(duration),
-                  })
-                : language.$(capsule, 'details.albumLength', {
-                    tracks: language.countTracks(tracks, {unit: true}),
-                    time: language.formatDuration(duration),
-                  }))),
+          }).map(({style, hideDuration, tracks, duration}) =>
+              language.encapsulate(capsule, 'details.albumLength', capsule =>
+                (hideDuration
+                  ? null
+               : !duration && !tracks
+                  ? null
+               : style === 'single' && tracks > 1 && duration
+                  ? language.$(capsule, 'single.withMultipleTracks', {
+                      time: language.formatDuration(duration),
+                      tracks: language.countTracks(tracks, {unit: true}),
+                    })
+               : style === 'single' && duration
+                  ? language.$(capsule, 'single', {
+                      time: language.formatDuration(duration),
+                    })
+               : duration && tracks
+                  ? language.$(capsule, {
+                      time: language.formatDuration(duration),
+                      tracks: language.countTracks(tracks, {unit: true}),
+                    })
+                  : language.$(capsule, 'tracksOnly', {
+                      tracks: language.countTracks(tracks, {unit: true}),
+                    })))),
 
         revealAllWarnings: data.allWarnings,
       })),
diff --git a/src/strings-default.yaml b/src/strings-default.yaml
index e718aee6..965bf29f 100644
--- a/src/strings-default.yaml
+++ b/src/strings-default.yaml
@@ -1017,6 +1017,8 @@ misc:
         single, {TIME}
       albumLength.single.withMultipleTracks: >-
         single, {TRACKS}, {TIME}+
+      albumLength.tracksOnly: >-
+        {TRACKS}
 
       coverArtists: "Artwork by {ARTISTS}"
       coverArtists.customLabel: "{LABEL} by {ARTISTS}"