« 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
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
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')
-rw-r--r--src/content/dependencies/generateAlbumCoverArtwork.js16
-rw-r--r--src/content/dependencies/generateAlbumInfoPage.js1
-rw-r--r--src/content/dependencies/generateAlbumReleaseInfo.js18
-rw-r--r--src/content/dependencies/generateCoverArtworkArtTagDetails.js8
-rw-r--r--src/content/dependencies/generateCoverArtworkArtistDetails.js4
-rw-r--r--src/content/dependencies/generateCoverArtworkOriginDetails.js44
-rw-r--r--src/content/dependencies/generateTrackCoverArtwork.js31
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js1
-rw-r--r--src/content/dependencies/generateTrackReleaseInfo.js15
9 files changed, 85 insertions, 53 deletions
diff --git a/src/content/dependencies/generateAlbumCoverArtwork.js b/src/content/dependencies/generateAlbumCoverArtwork.js
index ff7d2b85..7c546fc6 100644
--- a/src/content/dependencies/generateAlbumCoverArtwork.js
+++ b/src/content/dependencies/generateAlbumCoverArtwork.js
@@ -3,6 +3,7 @@ export default {
     'generateCoverArtwork',
     'generateCoverArtworkArtTagDetails',
     'generateCoverArtworkArtistDetails',
+    'generateCoverArtworkOriginDetails',
     'generateCoverArtworkReferenceDetails',
     'image',
     'linkAlbumReferencedArtworks',
@@ -18,11 +19,14 @@ export default {
     image:
       relation('image'),
 
+    originDetails:
+      relation('generateCoverArtworkOriginDetails', album.coverArtwork),
+
     artTagDetails:
-      relation('generateCoverArtworkArtTagDetails', album.artTags),
+      relation('generateCoverArtworkArtTagDetails', album.coverArtwork),
 
     artistDetails:
-      relation('generateCoverArtworkArtistDetails', album.coverArtistContribs),
+      relation('generateCoverArtworkArtistDetails', album.coverArtwork),
 
     referenceDetails:
       relation('generateCoverArtworkReferenceDetails',
@@ -60,6 +64,11 @@ export default {
       default: 'tags',
     },
 
+    showOriginDetails: {
+      type: 'boolean',
+      default: false,
+    },
+
     showReferenceLinks: {
       type: 'boolean',
       default: false,
@@ -81,6 +90,9 @@ export default {
       warnings: data.warnings,
 
       details: [
+        slots.showOriginDetails &&
+          relations.originDetails,
+
         slots.details === 'tags' &&
           relations.artTagDetails,
 
diff --git a/src/content/dependencies/generateAlbumInfoPage.js b/src/content/dependencies/generateAlbumInfoPage.js
index aae56637..2af461a4 100644
--- a/src/content/dependencies/generateAlbumInfoPage.js
+++ b/src/content/dependencies/generateAlbumInfoPage.js
@@ -115,6 +115,7 @@ export default {
         cover:
           (relations.cover
             ? relations.cover.slots({
+                showOriginDetails: true,
                 showReferenceLinks: true,
               })
             : null),
diff --git a/src/content/dependencies/generateAlbumReleaseInfo.js b/src/content/dependencies/generateAlbumReleaseInfo.js
index 217282c0..f9806c30 100644
--- a/src/content/dependencies/generateAlbumReleaseInfo.js
+++ b/src/content/dependencies/generateAlbumReleaseInfo.js
@@ -14,9 +14,6 @@ export default {
     relations.artistContributionsLine =
       relation('generateReleaseInfoContributionsLine', album.artistContribs);
 
-    relations.coverArtistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.coverArtistContribs);
-
     relations.wallpaperArtistContributionsLine =
       relation('generateReleaseInfoContributionsLine', album.wallpaperArtistContribs);
 
@@ -73,21 +70,6 @@ export default {
               chronologyKind: 'album',
             }),
 
-            relations.coverArtistContributionsLine.slots({
-              stringKey: capsule + '.coverArtBy',
-              chronologyKind: 'coverArt',
-            }),
-
-            relations.wallpaperArtistContributionsLine.slots({
-              stringKey: capsule + '.wallpaperArtBy',
-              chronologyKind: 'wallpaperArt',
-            }),
-
-            relations.bannerArtistContributionsLine.slots({
-              stringKey: capsule + '.bannerArtBy',
-              chronologyKind: 'bannerArt',
-            }),
-
             language.$(capsule, 'released', {
               [language.onlyIfOptions]: ['date'],
               date: language.formatDate(data.date),
diff --git a/src/content/dependencies/generateCoverArtworkArtTagDetails.js b/src/content/dependencies/generateCoverArtworkArtTagDetails.js
index b4edbbdd..b20f599b 100644
--- a/src/content/dependencies/generateCoverArtworkArtTagDetails.js
+++ b/src/content/dependencies/generateCoverArtworkArtTagDetails.js
@@ -4,19 +4,19 @@ export default {
   contentDependencies: ['linkArtTagGallery'],
   extraDependencies: ['html'],
 
-  query: (artTags) => ({
+  query: (artwork) => ({
     linkableArtTags:
-      artTags
+      artwork.artTags
         .filter(tag => !tag.isContentWarning),
   }),
 
-  relations: (relation, query, _artTags) => ({
+  relations: (relation, query, _artwork) => ({
     artTagLinks:
       query.linkableArtTags
         .map(tag => relation('linkArtTagGallery', tag)),
   }),
 
-  data: (query, _artTags) => {
+  data: (query, _artwork) => {
     const seenShortNames = new Set();
     const duplicateShortNames = new Set();
 
diff --git a/src/content/dependencies/generateCoverArtworkArtistDetails.js b/src/content/dependencies/generateCoverArtworkArtistDetails.js
index 5b235353..b9dd1fe2 100644
--- a/src/content/dependencies/generateCoverArtworkArtistDetails.js
+++ b/src/content/dependencies/generateCoverArtworkArtistDetails.js
@@ -2,9 +2,9 @@ export default {
   contentDependencies: ['linkArtistGallery'],
   extraDependencies: ['html', 'language'],
 
-  relations: (relation, contributions) => ({
+  relations: (relation, artwork) => ({
     artistLinks:
-      contributions
+      artwork.artistContribs
         .map(contrib => contrib.artist)
         .map(artist =>
           relation('linkArtistGallery', artist)),
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),
+          })
+        ])),
+};
diff --git a/src/content/dependencies/generateTrackCoverArtwork.js b/src/content/dependencies/generateTrackCoverArtwork.js
index 9153e2fc..937347a3 100644
--- a/src/content/dependencies/generateTrackCoverArtwork.js
+++ b/src/content/dependencies/generateTrackCoverArtwork.js
@@ -3,6 +3,7 @@ export default {
     'generateCoverArtwork',
     'generateCoverArtworkArtTagDetails',
     'generateCoverArtworkArtistDetails',
+    'generateCoverArtworkOriginDetails',
     'generateCoverArtworkReferenceDetails',
     'image',
     'linkAlbum',
@@ -15,13 +16,10 @@ export default {
   query: (track) => ({
     artTags:
       (track.hasUniqueCoverArt
-        ? track.artTags
-        : track.album.artTags),
-
-    coverArtistContribs:
-      (track.hasUniqueCoverArt
-        ? track.coverArtistContribs
-        : track.album.coverArtistContribs),
+        ? track.trackArtwork.artTags
+     : track.album.hasCoverArt
+        ? track.album.coverArtwork.artTags
+        : []),
   }),
 
   relations: (relation, query, track) => ({
@@ -31,13 +29,14 @@ export default {
     image:
       relation('image'),
 
+    originDetails:
+      relation('generateCoverArtworkOriginDetails', track.trackArtwork),
+
     artTagDetails:
-      relation('generateCoverArtworkArtTagDetails',
-        query.artTags),
+      relation('generateCoverArtworkArtTagDetails', track.trackArtwork),
 
     artistDetails:
-      relation('generateCoverArtworkArtistDetails',
-        query.coverArtistContribs),
+      relation('generateCoverArtworkArtistDetails', track.trackArtwork),
 
     referenceDetails:
       relation('generateCoverArtworkReferenceDetails',
@@ -85,6 +84,11 @@ export default {
       default: 'tags',
     },
 
+    showOriginDetails: {
+      type: 'boolean',
+      default: false,
+    },
+
     showReferenceLinks: {
       type: 'boolean',
       default: false,
@@ -111,6 +115,9 @@ export default {
       warnings: data.warnings,
 
       details: [
+        slots.showOriginDetails &&
+          relations.originDetails,
+
         slots.details === 'tags' &&
           relations.artTagDetails,
 
@@ -131,7 +138,7 @@ export default {
           html.tag('p', {class: 'image-details'},
             {class: 'non-unique-details'},
 
-            language.$('misc.trackArtFromAlbum', {
+            language.$('misc.coverArtwork.trackArtFromAlbum', {
               album:
                 relations.albumLink.slots({
                   color: false,
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index 1c349c2e..a2a83d2d 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -144,6 +144,7 @@ export default {
         cover:
           (relations.cover
             ? relations.cover.slots({
+                showOriginDetails: true,
                 showReferenceLinks: true,
                 showNonUniqueLine: true,
               })
diff --git a/src/content/dependencies/generateTrackReleaseInfo.js b/src/content/dependencies/generateTrackReleaseInfo.js
index 6f473041..54e462c7 100644
--- a/src/content/dependencies/generateTrackReleaseInfo.js
+++ b/src/content/dependencies/generateTrackReleaseInfo.js
@@ -14,11 +14,6 @@ export default {
     relations.artistContributionLinks =
       relation('generateReleaseInfoContributionsLine', track.artistContribs);
 
-    if (track.hasUniqueCoverArt) {
-      relations.coverArtistContributionsLine =
-        relation('generateReleaseInfoContributionsLine', track.coverArtistContribs);
-    }
-
     if (!empty(track.urls)) {
       relations.externalLinks =
         track.urls.map(url =>
@@ -59,21 +54,11 @@ export default {
               chronologyKind: 'track',
             }),
 
-            relations.coverArtistContributionsLine?.slots({
-              stringKey: capsule + '.coverArtBy',
-              chronologyKind: 'trackArt',
-            }),
-
             language.$(capsule, 'released', {
               [language.onlyIfOptions]: ['date'],
               date: language.formatDate(data.date),
             }),
 
-            language.$(capsule, 'artReleased', {
-              [language.onlyIfOptions]: ['date'],
-              date: language.formatDate(data.coverArtDate),
-            }),
-
             language.$(capsule, 'duration', {
               [language.onlyIfOptions]: ['duration'],
               duration: language.formatDuration(data.duration),