« 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/generateCoverArtworkOriginDetails.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkOriginDetails.js')
-rw-r--r--src/content/dependencies/generateCoverArtworkOriginDetails.js84
1 files changed, 50 insertions, 34 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js
index 3908414f..e489eea6 100644
--- a/src/content/dependencies/generateCoverArtworkOriginDetails.js
+++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js
@@ -1,19 +1,5 @@
-import Thing from '#thing';
-
 export default {
-  contentDependencies: [
-    'generateArtistCredit',
-    'generateAbsoluteDatetimestamp',
-    'linkAlbum',
-    'transformContent',
-  ],
-
-  extraDependencies: ['html', 'language', 'pagePath'],
-
   query: (artwork) => ({
-    artworkThingType:
-      artwork.thing.constructor[Thing.referenceType],
-
     attachedArtistContribs:
       (artwork.attachedArtwork
         ? artwork.attachedArtwork.artistContribs
@@ -29,15 +15,18 @@ export default {
     source:
       relation('transformContent', artwork.source),
 
+    originDetails:
+      relation('transformContent', artwork.originDetails),
+
     albumLink:
-      (query.artworkThingType === 'album'
+      (artwork.thing.isAlbum
         ? relation('linkAlbum', artwork.thing)
         : null),
 
     datetimestamp:
-      (artwork.date && artwork.date !== artwork.thing.date
-        ? relation('generateAbsoluteDatetimestamp', artwork.date)
-        : null),
+      relation('generateAbsoluteDatetimestamp',
+        artwork.date,
+        artwork.thing.date),
   }),
 
 
@@ -45,23 +34,26 @@ export default {
     label:
       artwork.label,
 
-    artworkThingType:
-      query.artworkThingType,
+    forAlbum:
+      artwork.thing.isAlbum,
+
+    forSingleStyleAlbum:
+      artwork.thing.isAlbum &&
+      artwork.thing.style === 'single',
+
+    showFilename:
+      artwork.showFilename,
   }),
 
   generate: (data, relations, {html, language, pagePath}) =>
     language.encapsulate('misc.coverArtwork', capsule =>
       html.tag('p', {class: 'image-details'},
         {[html.onlyIfContent]: true},
-        {[html.joinChildren]: html.tag('br')},
 
         {class: 'origin-details'},
 
         (() => {
-          relations.datetimestamp?.setSlots({
-            style: 'year',
-            tooltip: true,
-          });
+          relations.datetimestamp.setSlot('style', 'year-difference');
 
           const artworkBy =
             language.encapsulate(capsule, 'artworkBy', workingCapsule => {
@@ -72,7 +64,7 @@ export default {
                 workingOptions.label = data.label;
               }
 
-              if (relations.datetimestamp) {
+              if (!html.isBlank(relations.datetimestamp)) {
                 workingCapsule += '.withYear';
                 workingOptions.year = relations.datetimestamp;
               }
@@ -94,7 +86,8 @@ export default {
 
           const trackArtFromAlbum =
             pagePath[0] === 'track' &&
-            data.artworkThingType === 'album' &&
+            data.forAlbum &&
+            !data.forSingleStyleAlbum &&
               language.$(capsule, 'trackArtFromAlbum', {
                 album:
                   relations.albumLink.slot('color', false),
@@ -112,7 +105,7 @@ export default {
                 workingOptions.label = data.label;
               }
 
-              if (html.isBlank(artworkBy) && relations.datetimestamp) {
+              if (html.isBlank(artworkBy) && !html.isBlank(relations.datetimestamp)) {
                 workingCapsule += '.withYear';
                 workingOptions.year = relations.datetimestamp;
               }
@@ -129,7 +122,7 @@ export default {
                 label: data.label,
               };
 
-              if (relations.datetimestamp) {
+              if (!html.isBlank(relations.datetimestamp)) {
                 workingCapsule += '.withYear';
                 workingOptions.year = relations.datetimestamp;
               }
@@ -146,12 +139,35 @@ export default {
               year: relations.datetimestamp,
             });
 
+          const originDetailsLine =
+            html.tag('span', {class: 'origin-details-line'},
+              {[html.onlyIfContent]: true},
+
+              relations.originDetails.slots({
+                mode: 'inline',
+                absorbPunctuationFollowingExternalLinks: false,
+              }));
+
+          const filenameLine =
+            html.tag('span', {class: 'filename-line'},
+              {[html.onlyIfContent]: true},
+
+              html.tag('code', {class: 'filename'},
+                {[html.onlyIfContent]: true},
+
+                language.sanitize(data.showFilename)));
+
           return [
-            artworkBy,
-            trackArtFromAlbum,
-            source,
-            label,
-            year,
+            html.tags([
+              artworkBy,
+              trackArtFromAlbum,
+              source,
+              label,
+              year,
+            ], {[html.joinChildren]: html.tag('br')}),
+
+            originDetailsLine,
+            filenameLine,
           ];
         })())),
 };