« get me outta code hell

content: generateTrackInfoPageOtherReleasesList: paragraphize - 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-02-18 13:38:59 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-03-02 08:23:21 -0400
commit6ebf03dc972806d7a6c3053350caf45ade1a1533 (patch)
tree038c7b134defe8f4f98092cef2d4b35f6e5f2d97
parent9562f48b308b060ee4159a2c365db82581ecc107 (diff)
content: generateTrackInfoPageOtherReleasesList: paragraphize
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js12
-rw-r--r--src/content/dependencies/generateTrackInfoPageOtherReleasesList.js84
-rw-r--r--src/strings-default.yaml7
3 files changed, 23 insertions, 80 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index 4540b79c..9713ddfe 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -67,7 +67,7 @@ export default {
       relation('generateTrackReleaseInfo', track),
 
     otherReleasesList:
-        relation('generateTrackInfoPageOtherReleasesList', track),
+      relation('generateTrackInfoPageOtherReleasesList', track),
 
     contributorContributionList:
       relation('generateContributionList', track.contributorContribs),
@@ -201,15 +201,7 @@ export default {
                   })),
             ])),
 
-          html.tags([
-            relations.contentHeading.clone()
-              .slots({
-                attributes: {id: 'also-released-as'},
-                title: language.$('releaseInfo.alsoReleasedAs'),
-              }),
-
-            relations.otherReleasesList,
-          ]),
+          relations.otherReleasesList,
 
           html.tags([
             relations.contentHeading.clone()
diff --git a/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js b/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js
index 004bba6d..063f11aa 100644
--- a/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js
+++ b/src/content/dependencies/generateTrackInfoPageOtherReleasesList.js
@@ -1,80 +1,36 @@
 import {stitchArrays} from '#sugar';
 
 export default {
-  contentDependencies: [
-    'generateAbsoluteDatetimestamp',
-    'generateColorStyleAttribute',
-    'generateRelativeDatetimestamp',
-    'linkAlbum',
-    'linkTrack',
-  ],
-
+  contentDependencies: ['linkTrack'],
   extraDependencies: ['html', 'language'],
 
   relations: (relation, track) => ({
-    colorStyles:
-      track.otherReleases
-        .map(track => relation('generateColorStyleAttribute', track.color)),
-
     trackLinks:
       track.otherReleases
         .map(track => relation('linkTrack', track)),
+  }),
 
-    albumLinks:
+  data: (track) => ({
+    albumNames:
       track.otherReleases
-        .map(track => relation('linkAlbum', track.album)),
-
-    datetimestamps:
-      track.otherReleases.map(track2 =>
-        (track2.date
-          ? (track.date
-              ? relation('generateRelativeDatetimestamp',
-                  track2.date,
-                  track.date)
-              : relation('generateAbsoluteDatetimestamp',
-                  track2.date))
-          : null)),
-
-    items:
-      track.otherReleases.map(track => ({
-        trackLink: relation('linkTrack', track),
-        albumLink: relation('linkAlbum', track.album),
-      })),
+        .map(track => track.album.name),
   }),
 
-  generate: (relations, {html, language}) =>
-    html.tag('ul',
+  generate: (data, relations, {html, language}) =>
+    html.tag('p',
       {[html.onlyIfContent]: true},
 
-      stitchArrays({
-        trackLink: relations.trackLinks,
-        albumLink: relations.albumLinks,
-        datetimestamp: relations.datetimestamps,
-        colorStyle: relations.colorStyles,
-      }).map(({
-          trackLink,
-          albumLink,
-          datetimestamp,
-          colorStyle,
-        }) => {
-          const parts = ['releaseInfo.alsoReleasedAs.item'];
-          const options = {};
-
-          options.track = trackLink.slot('color', false);
-          options.album = albumLink;
-
-          if (datetimestamp) {
-            parts.push('withYear');
-            options.year =
-              datetimestamp.slots({
-                style: 'year',
-                tooltip: true,
-              });
-          }
-
-          return (
-            html.tag('li',
-              colorStyle,
-              language.$(...parts, options)));
-        })),
+      language.$('releaseInfo.alsoReleasedOn', {
+        [language.onlyIfOptions]: ['albums'],
+
+        albums:
+          language.formatConjunctionList(
+            stitchArrays({
+              trackLink: relations.trackLinks,
+              albumName: data.albumNames,
+            }).map(({trackLink, albumName}) =>
+                trackLink.slots({
+                  content: language.sanitize(albumName),
+                }))),
+      })),
 };
diff --git a/src/strings-default.yaml b/src/strings-default.yaml
index b1a4d9a4..2ed0c680 100644
--- a/src/strings-default.yaml
+++ b/src/strings-default.yaml
@@ -291,12 +291,7 @@ releaseInfo:
   lyrics: "Lyrics:"
   note: "Context notes:"
 
-  alsoReleasedAs:
-    _: "Also released as:"
-
-    item:
-      _: "{TRACK} ({ALBUM})"
-      withYear: "({YEAR}) {TRACK} ({ALBUM})"
+  alsoReleasedOn: "Also released on {ALBUMS}."
 
   tracksReferenced:
     _: "Tracks that {TRACK} references:"