« get me outta code hell

content, css: fold non-unique-line into artwork origin details - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateCoverArtworkOriginDetails.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-04-02 18:41:59 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-04-10 16:02:38 -0300
commit380fe9e7aaf8350f54ddecfd9cfc62f36ad06690 (patch)
tree9feac217b23e344f02d7b4ad4db7207e35f34103 /src/content/dependencies/generateCoverArtworkOriginDetails.js
parentb99aaacf875b826bc196d992412a0bf246bd4f9b (diff)
content, css: fold non-unique-line into artwork origin details
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkOriginDetails.js')
-rw-r--r--src/content/dependencies/generateCoverArtworkOriginDetails.js37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js
index 83f5ae8a..c0109141 100644
--- a/src/content/dependencies/generateCoverArtworkOriginDetails.js
+++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js
@@ -1,16 +1,33 @@
+import Thing from '#thing';
+
 export default {
-  contentDependencies: ['generateArtistCredit', 'transformContent'],
-  extraDependencies: ['html', 'language'],
+  contentDependencies: [
+    'generateArtistCredit',
+    'linkAlbum',
+    'transformContent',
+  ],
+
+  extraDependencies: ['html', 'language', 'pagePath'],
+
+  query: (artwork) => ({
+    artworkThingType:
+      artwork.thing.constructor[Thing.referenceType],
+  }),
 
-  relations: (relation, artwork) => ({
+  relations: (relation, query, artwork) => ({
     credit:
       relation('generateArtistCredit', artwork.artistContribs, []),
 
     source:
       relation('transformContent', artwork.source),
+
+    albumLink:
+      (query.artworkThingType === 'album'
+        ? relation('linkAlbum', artwork.thing)
+        : null),
   }),
 
-  data: (artwork) => ({
+  data: (query, artwork) => ({
     label:
       artwork.label,
 
@@ -18,9 +35,12 @@ export default {
       (artwork.date !== artwork.thing.date
         ? artwork.date
         : null),
+
+    artworkThingType:
+      query.artworkThingType,
   }),
 
-  generate: (data, relations, {html, language}) =>
+  generate: (data, relations, {html, language, pagePath}) =>
     language.encapsulate('misc.coverArtwork', capsule =>
       html.tag('p', {class: 'image-details'},
         {[html.onlyIfContent]: true},
@@ -50,6 +70,13 @@ export default {
                 : {}),
           }),
 
+          pagePath[0] === 'track' &&
+          data.artworkThingType === 'album' &&
+            language.$(capsule, 'trackArtFromAlbum', {
+              album:
+                relations.albumLink.slot('color', false),
+            }),
+
           language.$(capsule, 'released', {
             [language.onlyIfOptions]: ['date'],
             date: language.formatDate(data.date),