« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js36
1 files changed, 28 insertions, 8 deletions
diff --git a/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js b/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
index a3c65872..7a4f97d5 100644
--- a/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
+++ b/src/content/dependencies/generateTrackInfoPageOtherReleasesLine.js
@@ -1,22 +1,22 @@
 import {onlyItem, stitchArrays} from '#sugar';
 
 export default {
-  query(track) {
+  query(track, releases) {
     const query = {};
 
     query.singleSingle =
       onlyItem(
-        track.otherReleases.filter(track => track.album.style === 'single'));
+        releases.filter(track => track.album.style === 'single'));
 
     query.regularReleases =
       (query.singleSingle
-        ? track.otherReleases.filter(track => track !== query.singleSingle)
-        : track.otherReleases);
+        ? releases.filter(track => track !== query.singleSingle)
+        : releases);
 
     return query;
   },
 
-  relations: (relation, query, track) => ({
+  relations: (relation, query, track, _releases) => ({
     textWithTooltip:
       relation('generateTextWithTooltip'),
 
@@ -42,7 +42,10 @@ export default {
             otherTrack, track)),
   }),
 
-  data: (query, _track) => ({
+  data: (query, track, _releases) => ({
+    ownAlbumStyle:
+      track.album.style,
+
     albumNames:
       query.regularReleases
         .map(track => track.album.name),
@@ -57,11 +60,26 @@ export default {
         : null),
   }),
 
-  generate: (data, relations, {html, language}) =>
+  slots: {
+    meta: {type: 'boolean', default: false},
+  },
+
+  generate: (data, relations, slots, {html, language}) =>
     language.encapsulate('releaseInfo.alsoReleased', capsule =>
       language.encapsulate(capsule, workingCapsule => {
         const workingOptions = {};
 
+        if (slots.meta) {
+          workingOptions.alsoReleased =
+            language.$(capsule, 'included');
+        } else if (data.ownAlbumStyle === 'meta') {
+          workingOptions.alsoReleased =
+            language.$(capsule, 'released');
+        } else {
+          workingOptions.alsoReleased =
+            language.$(capsule, 'alsoReleased');
+        }
+
         let any = false;
 
         const albumList =
@@ -88,7 +106,9 @@ export default {
                     }),
 
                   tooltip:
-                    trackTooltip,
+                    (slots.meta
+                      ? null
+                      : trackTooltip),
                 })));
 
         if (!html.isBlank(albumList)) {