« get me outta code hell

content, data: generateMusicVideo: same day as album/single/track - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-01-17 18:54:29 -0400
committer(quasar) nebula <qznebula@protonmail.com>2026-01-17 18:54:29 -0400
commit85fa29d1cef35f7b3ba977b35dc913d39d3268be (patch)
treee788954c6a87f512a3571311c54f944d5f444f11 /src/content/dependencies
parent28319f6e7302be38db45e85767b156fe4496e13f (diff)
content, data: generateMusicVideo: same day as album/single/track
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateMusicVideo.js37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/content/dependencies/generateMusicVideo.js b/src/content/dependencies/generateMusicVideo.js
index b3171716..628c1a17 100644
--- a/src/content/dependencies/generateMusicVideo.js
+++ b/src/content/dependencies/generateMusicVideo.js
@@ -14,12 +14,34 @@ export default {
       relation('generateArtistCredit', musicVideo.contributorContribs, []),
   }),
 
-  data: (musicVideo, _track) => ({
+  data: (musicVideo, track) => ({
     label:
       musicVideo.label,
 
     url:
       musicVideo.url,
+
+    sameDay:
+      (() => {
+        if (!musicVideo.dateIsSpecified) return null;
+
+        const compare = (a, b) =>
+          a.toDateString() === b.toDateString();
+
+        if (compare(musicVideo.date, track.album.date)) {
+          if (track.album.style === 'single') {
+            return 'single';
+          } else {
+            return 'album';
+          }
+        }
+
+        if (compare(musicVideo.date, track.date)) {
+          return 'track';
+        }
+
+        return null;
+      })(),
   }),
 
   generate: (data, relations, {language, html}) =>
@@ -41,7 +63,7 @@ export default {
           link: data.url,
         }),
 
-        html.tag('p', {class: 'music-video-credits'},
+        html.tag('p', {class: 'music-video-info'},
           {[html.joinChildren]: html.tag('br')},
 
           [
@@ -50,6 +72,17 @@ export default {
 
               relations.releaseLine),
 
+            language.encapsulate(capsule, 'date', capsule => [
+              data.sameDay == 'album' &&
+                language.$(capsule, 'sameDayAsAlbum'),
+
+              data.sameDay == 'single' &&
+                language.$(capsule, 'sameDayAsTrack'),
+
+              data.sameDay === 'track' &&
+                language.$(capsule, 'sameDayAsTrack'),
+            ]),
+
             language.encapsulate(capsule, 'contributorsLine', capsule =>
               language.$(capsule, {
                 [language.onlyIfOptions]: ['credit'],