« get me outta code hell

content: generateAlbumSidebar: single track list at top - 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>2025-07-13 16:01:50 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-07-13 16:01:50 -0300
commited79cdfaef5ab6335c4a29daf9b46d418b28b0de (patch)
tree8aab5e20281cb0186f2b3d4c5e497e6a5a591a6c
parentc81b953122b437574afb4703817b347654b051b8 (diff)
content: generateAlbumSidebar: single track list at top
-rw-r--r--src/content/dependencies/generateAlbumSidebar.js70
1 files changed, 39 insertions, 31 deletions
diff --git a/src/content/dependencies/generateAlbumSidebar.js b/src/content/dependencies/generateAlbumSidebar.js
index 464274e3..29d434cd 100644
--- a/src/content/dependencies/generateAlbumSidebar.js
+++ b/src/content/dependencies/generateAlbumSidebar.js
@@ -128,24 +128,45 @@ export default {
       box.setSlot('mode', presentGroupsLikeAlbum ? 'album' : 'track');
     }
 
+    const groupBoxes =
+      (presentGroupsLikeAlbum
+        ? [
+            relations.disconnectedSeriesBoxes,
+
+            stitchArrays({
+              groupBox: relations.groupBoxes,
+              seriesBoxes: relations.seriesBoxes,
+            }).map(({groupBox, seriesBoxes}) => [
+                groupBox,
+                seriesBoxes.map(seriesBox => [
+                  html.tag('div',
+                    {class: 'sidebar-box-joiner'},
+                    {class: 'collapsible'}),
+                  seriesBox,
+                ]),
+              ]),
+          ]
+        : [
+            relations.conjoinedBox.slots({
+              attributes: {class: 'conjoined-group-sidebar-box'},
+              boxes:
+                ([relations.disconnectedSeriesBoxes,
+                  stitchArrays({
+                    groupBox: relations.groupBoxes,
+                    seriesBoxes: relations.seriesBoxes,
+                  }).flatMap(({groupBox, seriesBoxes}) => [
+                      groupBox,
+                      ...seriesBoxes,
+                    ]),
+                ]).flat()
+                  .map(box => box.content), /* TODO: Kludge. */
+            })
+          ]);
+
     return relations.sidebar.slots({
       boxes: [
-        presentGroupsLikeAlbum && [
-          relations.disconnectedSeriesBoxes,
-
-          stitchArrays({
-            groupBox: relations.groupBoxes,
-            seriesBoxes: relations.seriesBoxes,
-          }).map(({groupBox, seriesBoxes}) => [
-              groupBox,
-              seriesBoxes.map(seriesBox => [
-                html.tag('div',
-                  {class: 'sidebar-box-joiner'},
-                  {class: 'collapsible'}),
-                seriesBox,
-              ]),
-            ]),
-        ],
+        data.isAlbumPage &&
+          groupBoxes,
 
         data.isTrackPage &&
           relations.earlierTrackReleaseBoxes,
@@ -155,21 +176,8 @@ export default {
         data.isTrackPage &&
           relations.laterTrackReleaseBoxes,
 
-        !presentGroupsLikeAlbum &&
-          relations.conjoinedBox.slots({
-            attributes: {class: 'conjoined-group-sidebar-box'},
-            boxes:
-              ([relations.disconnectedSeriesBoxes,
-                stitchArrays({
-                  groupBox: relations.groupBoxes,
-                  seriesBoxes: relations.seriesBoxes,
-                }).flatMap(({groupBox, seriesBoxes}) => [
-                    groupBox,
-                    ...seriesBoxes,
-                  ]),
-              ]).flat()
-                .map(box => box.content), /* TODO: Kludge. */
-          }),
+        data.isTrackPage &&
+          groupBoxes,
       ],
     });
   },