« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/content/dependencies/generateArtistInfoPageTracksChunk.js25
-rw-r--r--src/content/dependencies/generateArtistInfoPageTracksChunkItem.js22
-rw-r--r--src/static/css/site.css4
-rw-r--r--src/strings-default.yaml16
4 files changed, 44 insertions, 23 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunk.js b/src/content/dependencies/generateArtistInfoPageTracksChunk.js
index d964c5de..ce8b284b 100644
--- a/src/content/dependencies/generateArtistInfoPageTracksChunk.js
+++ b/src/content/dependencies/generateArtistInfoPageTracksChunk.js
@@ -26,6 +26,9 @@ export default {
     albumLink:
       relation('linkAlbum', album),
 
+    albumArtistCredit:
+      relation('generateArtistCredit', album.artistContribs, []),
+
     itemsCountingTowardTotals:
       query.contribListsCountingTowardTotals.map(trackContribs =>
         relation('generateArtistInfoPageTracksChunkItem',
@@ -91,10 +94,28 @@ export default {
     return data;
   },
 
-  generate: (data, relations, {html}) =>
+  generate: (data, relations, {html, language}) =>
     relations.template.slots({
       mode: 'album',
-      link: relations.albumLink,
+
+      link:
+        language.encapsulate('artistPage.creditList.album', workingCapsule => {
+          const creditCapsule = workingCapsule + '.credit';
+          const workingOptions = {album: relations.albumLink};
+
+          relations.albumArtistCredit.setSlots({
+            normalStringKey: creditCapsule + '.by',
+          });
+
+          if (!html.isBlank(relations.albumArtistCredit)) {
+            workingCapsule += '.withCredit';
+            workingOptions.credit =
+              html.tag('span', {class: 'by'},
+                relations.albumArtistCredit);
+          }
+
+          return language.$(workingCapsule, workingOptions);
+        }),
 
       dates: data.dates,
       duration: data.duration,
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
index 9006dda9..bf334d75 100644
--- a/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
+++ b/src/content/dependencies/generateArtistInfoPageTracksChunkItem.js
@@ -91,6 +91,11 @@ export default {
     trackLink:
       relation('linkTrack', query.track),
 
+    trackListItem:
+      relation('generateTrackListItem',
+        query.track,
+        query.track.album.artistContribs),
+
     rereleaseTooltip:
       (query.isLaterRelease
         ? relation('generateArtistInfoPageRereleaseTooltip', query.track, artist)
@@ -131,16 +136,13 @@ export default {
           : html.blank()),
 
       content:
-        language.encapsulate('artistPage.creditList.entry.track', workingCapsule => {
-          const workingOptions = {track: relations.trackLink};
-
-          if (slots.showDuration && data.duration) {
-            workingCapsule += '.withDuration';
-            workingOptions.duration =
-              language.formatDuration(data.duration);
-          }
-
-          return language.$(workingCapsule, workingOptions);
+        language.$('artistPage.creditList.entry.track', {
+          track:
+            html.inside(
+              relations.trackListItem.slots({
+                showArtists: 'auto',
+                showDuration: slots.showDuration,
+              })),
         }),
     }),
 };
diff --git a/src/static/css/site.css b/src/static/css/site.css
index 1253c49f..1e3a781a 100644
--- a/src/static/css/site.css
+++ b/src/static/css/site.css
@@ -2284,11 +2284,11 @@ ul.quick-info li:not(:last-child)::after {
   margin: 0 6px;
 }
 
-li .by {
+dt .by, li .by {
   font-style: oblique;
 }
 
-li .by a {
+dt .by a, li .by a {
   display: inline-block;
 }
 
diff --git a/src/strings-default.yaml b/src/strings-default.yaml
index 4b0972e1..791bcd22 100644
--- a/src/strings-default.yaml
+++ b/src/strings-default.yaml
@@ -1285,6 +1285,11 @@ artistPage:
 
     album:
       _: "{ALBUM}"
+
+      withCredit: "{ALBUM} {CREDIT}"
+      credit:
+        by: "by {ARTISTS}"
+
       withDate: "{ALBUM} ({DATE})"
       withDuration: "{ALBUM} ({DURATION})"
       withDate.withDuration: "{ALBUM} ({DATE}; {DURATION})"
@@ -1347,13 +1352,7 @@ artistPage:
         rerelease: >-
           Also released on {ALBUM}
 
-      # track:
-      #   The string without duration is used in both the artist's
-      #   track credits list as well as their commentary list.
-
-      track:
-        _: "{TRACK}"
-        withDuration: "({DURATION}) {TRACK}"
+      track: "{TRACK}"
 
       # album:
       #   The artist info page doesn't display if the artist is
@@ -1368,8 +1367,7 @@ artistPage:
         bannerArt: "(banner art)"
         commentary: "(album commentary)"
 
-      flash:
-        _: "{FLASH}"
+      flash: "{FLASH}"
 
       artwork.accent:
         withLabel: >-