« 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
diff options
context:
space:
mode:
Diffstat (limited to 'src/content')
-rw-r--r--src/content/dependencies/generateCoverArtworkOriginDetails.js45
-rw-r--r--src/content/dependencies/generateGroupInfoPageAlbumsListItem.js3
-rw-r--r--src/content/dependencies/generatePageLayout.js4
-rw-r--r--src/content/dependencies/generateTrackListItem.js3
4 files changed, 43 insertions, 12 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js
index 3eb7c664..3908414f 100644
--- a/src/content/dependencies/generateCoverArtworkOriginDetails.js
+++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js
@@ -15,8 +15,8 @@ export default {
       artwork.thing.constructor[Thing.referenceType],
 
     attachedArtistContribs:
-      (!artwork.isMainArtwork && artwork.mainArtwork && artwork.attachAbove
-        ? artwork.mainArtwork.artistContribs
+      (artwork.attachedArtwork
+        ? artwork.attachedArtwork.artistContribs
         : null)
   }),
 
@@ -58,6 +58,11 @@ export default {
         {class: 'origin-details'},
 
         (() => {
+          relations.datetimestamp?.setSlots({
+            style: 'year',
+            tooltip: true,
+          });
+
           const artworkBy =
             language.encapsulate(capsule, 'artworkBy', workingCapsule => {
               const workingOptions = {};
@@ -69,11 +74,7 @@ export default {
 
               if (relations.datetimestamp) {
                 workingCapsule += '.withYear';
-                workingOptions.year =
-                  relations.datetimestamp.slots({
-                    style: 'year',
-                    tooltip: true,
-                  });
+                workingOptions.year = relations.datetimestamp;
               }
 
               return relations.credit.slots({
@@ -111,15 +112,38 @@ export default {
                 workingOptions.label = data.label;
               }
 
+              if (html.isBlank(artworkBy) && relations.datetimestamp) {
+                workingCapsule += '.withYear';
+                workingOptions.year = relations.datetimestamp;
+              }
+
               return language.$(workingCapsule, workingOptions);
             });
 
           const label =
             html.isBlank(artworkBy) &&
             html.isBlank(source) &&
-            language.$(capsule, 'customLabelAlone', {
-              [language.onlyIfOptions]: ['label'],
-              label: data.label,
+            language.encapsulate(capsule, 'customLabel', workingCapsule => {
+              const workingOptions = {
+                [language.onlyIfOptions]: ['label'],
+                label: data.label,
+              };
+
+              if (relations.datetimestamp) {
+                workingCapsule += '.withYear';
+                workingOptions.year = relations.datetimestamp;
+              }
+
+              return language.$(workingCapsule, workingOptions);
+            });
+
+          const year =
+            html.isBlank(artworkBy) &&
+            html.isBlank(source) &&
+            html.isBlank(label) &&
+            language.$(capsule, 'year', {
+              [language.onlyIfOptions]: ['year'],
+              year: relations.datetimestamp,
             });
 
           return [
@@ -127,6 +151,7 @@ export default {
             trackArtFromAlbum,
             source,
             label,
+            year,
           ];
         })())),
 };
diff --git a/src/content/dependencies/generateGroupInfoPageAlbumsListItem.js b/src/content/dependencies/generateGroupInfoPageAlbumsListItem.js
index 99e7e8ff..4680cb46 100644
--- a/src/content/dependencies/generateGroupInfoPageAlbumsListItem.js
+++ b/src/content/dependencies/generateGroupInfoPageAlbumsListItem.js
@@ -127,7 +127,8 @@ export default {
             workingCapsule += '.withArtists';
             workingOptions.by =
               html.tag('span', {class: 'by'},
-                html.metatag('chunkwrap', {split: ','},
+                // TODO: This is obviously evil.
+                html.metatag('chunkwrap', {split: /,| (?=and)/},
                   html.resolve(artistCredit)));
           }
 
diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js
index 8dad97e0..89fefb23 100644
--- a/src/content/dependencies/generatePageLayout.js
+++ b/src/content/dependencies/generatePageLayout.js
@@ -268,12 +268,16 @@ export default {
       const maybeTemplate =
         apparentFirst(slots.artworkColumnContent);
 
+      if (!maybeTemplate) return null;
+
       const maybeTemplateContent =
         html.resolve(maybeTemplate, {normalize: 'tag'});
 
       const maybeCoverArtwork =
         apparentFirst(maybeTemplateContent);
 
+      if (!maybeCoverArtwork) return null;
+
       if (maybeCoverArtwork.attributes.has('class', 'cover-artwork')) {
         return maybeTemplate;
       } else {
diff --git a/src/content/dependencies/generateTrackListItem.js b/src/content/dependencies/generateTrackListItem.js
index 887b6f03..3c850a18 100644
--- a/src/content/dependencies/generateTrackListItem.js
+++ b/src/content/dependencies/generateTrackListItem.js
@@ -97,7 +97,8 @@ export default {
             workingCapsule += '.withArtists';
             workingOptions.by =
               html.tag('span', {class: 'by'},
-                html.metatag('chunkwrap', {split: ','},
+                // TODO: This is obviously evil.
+                html.metatag('chunkwrap', {split: /,| (?=and)/},
                   html.resolve(relations.credit)));
           }