« get me outta code hell

content, css: demo new cover artworks ui + data integration - 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-03-31 16:18:03 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-04-10 16:02:36 -0300
commitf8a5593abfddc433890e0c8916d07698bb8c7279 (patch)
tree75c80d152f00f8f81ba7d770dfba47b318ebba9c /src/content/dependencies/generateCoverArtworkOriginDetails.js
parentceb1d5ba8ed5ab5da7424d9a08ae765bd85b038c (diff)
content, css: demo new cover artworks ui + data integration
This is not remotely comprehensive and mostly just touches
album and track info pages.
Diffstat (limited to 'src/content/dependencies/generateCoverArtworkOriginDetails.js')
-rw-r--r--src/content/dependencies/generateCoverArtworkOriginDetails.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js
new file mode 100644
index 00000000..8b5a28ac
--- /dev/null
+++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js
@@ -0,0 +1,44 @@
+export default {
+  contentDependencies: ['generateArtistCredit'],
+  extraDependencies: ['html', 'language'],
+
+  relations: (relation, artwork) => ({
+    credit:
+      relation('generateArtistCredit', artwork.artistContribs, []),
+  }),
+
+  data: (artwork) => ({
+    date:
+      (artwork.date !== artwork.thing.date
+        ? artwork.date
+        : null),
+  }),
+
+  generate: (data, relations, {html, language}) =>
+    language.encapsulate('misc.coverArtwork', capsule =>
+      html.tag('p', {class: 'image-details'},
+        {[html.onlyIfContent]: true},
+        {[html.joinChildren]: html.tag('br')},
+
+        {class: 'origin-details'},
+
+        [
+          relations.credit.slots({
+            showAnnotation: true,
+            showExternalLinks: true,
+            showChronology: true,
+            showWikiEdits: true,
+
+            trimAnnotation: false,
+
+            chronologyKind: 'coverArt',
+
+            normalStringKey: capsule + '.artworkBy',
+          }),
+
+          language.$(capsule, 'released', {
+            [language.onlyIfOptions]: ['date'],
+            date: language.formatDate(data.date),
+          })
+        ])),
+};