« get me outta code hell

content, data: Track.datePosted, etc - 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>2026-06-04 08:55:25 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-06-04 08:55:25 -0300
commitaeed300cb9f4fc543a4fdadc294106e455900309 (patch)
tree1f317d539dd78b6c5caaad91c65246d9ff3330e2 /src/content
parentaee74d1a422ca41a2f7fac7cf4cbc5e9285243a8 (diff)
content, data: Track.datePosted, etc
Diffstat (limited to 'src/content')
-rw-r--r--src/content/dependencies/generateAlbumCommentaryPage.js68
-rw-r--r--src/content/dependencies/generateAlbumGalleryStatsLine.js12
-rw-r--r--src/content/dependencies/generateAlbumSocialEmbedDescription.js11
-rw-r--r--src/content/dependencies/generateTrackReleaseInfo.js14
4 files changed, 82 insertions, 23 deletions
diff --git a/src/content/dependencies/generateAlbumCommentaryPage.js b/src/content/dependencies/generateAlbumCommentaryPage.js
index 0d7fb2cb..02755cf2 100644
--- a/src/content/dependencies/generateAlbumCommentaryPage.js
+++ b/src/content/dependencies/generateAlbumCommentaryPage.js
@@ -96,10 +96,18 @@ export default {
     data.name = album.name;
     data.color = album.color;
     data.date = album.date;
+    data.dateStyle = album.dateStyle;
 
     data.trackCommentaryTrackDates =
       query.tracksWithCommentary
-        .map(track => track.dateFirstReleased);
+        .map(track =>
+          (+track.date !== +album.date
+            ? track.date
+            : null));
+
+    data.trackCommentaryTrackDateStyles =
+      query.tracksWithCommentary
+        .map(track => track.dateStyle);
 
     data.trackCommentaryDirectories =
       query.tracksWithCommentary
@@ -136,10 +144,21 @@ export default {
             [
               data.date &&
               relations.totals.entryCount >= 1 &&
-                language.$('releaseInfo.albumReleased', {
-                  date:
-                    html.tag('b',
-                      language.formatDate(data.date)),
+                language.encapsulate('releaseInfo', workingCapsule => {
+                  const workingOptions = {};
+
+                  workingOptions.date =
+                    html.tag('b', language.formatDate(data.date));
+
+                  if (data.dateStyle === 'released') {
+                    workingCapsule += '.albumReleased';
+                  } else if (data.dateStyle === 'posted') {
+                    workingCapsule += '.albumPosted';
+                  } else {
+                    return html.blank();
+                  }
+
+                  return language.$(workingCapsule, workingOptions);
                 }),
 
               language.encapsulate(pageCapsule, 'infoLine', workingCapsule => {
@@ -211,6 +230,7 @@ export default {
             entries: relations.trackCommentaryEntries,
             color: data.trackCommentaryColors,
             trackDate: data.trackCommentaryTrackDates,
+            trackDateStyle: data.trackCommentaryTrackDateStyles,
           }).map(({
               heading,
               link,
@@ -220,6 +240,7 @@ export default {
               entries,
               color,
               trackDate,
+              trackDateStyle,
             }) =>
               language.encapsulate(pageCapsule, 'entry', entryCapsule => [
                 language.encapsulate(entryCapsule, 'title.trackCommentary', titleCapsule =>
@@ -243,20 +264,37 @@ export default {
                       }),
                   })),
 
-              cover?.slots({
-                mode: 'commentary',
-                color: true,
-              }),
+                cover?.slots({
+                  mode: 'commentary',
+                  color: true,
+                }),
 
-              trackDate &&
-              trackDate !== data.date &&
                 html.tag('p', {class: 'track-info'},
-                  language.$('releaseInfo.trackReleased', {
-                    date: language.formatDate(trackDate),
+                  {[html.onlyIfContent]: true},
+
+                  language.encapsulate('releaseInfo', workingCapsule => {
+                    const workingOptions = {};
+
+                    if (!trackDate) {
+                      return html.blank();
+                    }
+
+                    workingOptions.date =
+                      language.formatDate(trackDate);
+
+                    if (trackDateStyle === 'released') {
+                      workingCapsule += '.trackReleased';
+                    } else if (trackDateStyle === 'posted') {
+                      workingCapsule += '.trackPosted';
+                    } else {
+                      return html.blank();
+                    }
+
+                    return language.$(workingCapsule, workingOptions);
                   })),
 
-              entries.map(entry => entry.slot('color', color)),
-            ])),
+                entries.map(entry => entry.slot('color', color)),
+              ])),
         ],
 
         navLinkStyle: 'hierarchical',
diff --git a/src/content/dependencies/generateAlbumGalleryStatsLine.js b/src/content/dependencies/generateAlbumGalleryStatsLine.js
index 75341937..394be6b8 100644
--- a/src/content/dependencies/generateAlbumGalleryStatsLine.js
+++ b/src/content/dependencies/generateAlbumGalleryStatsLine.js
@@ -5,6 +5,9 @@ export default {
     date:
       album.date,
 
+    dateStyle:
+      album.dateStyle,
+
     hideDuration:
       album.hideDuration,
 
@@ -40,8 +43,13 @@ export default {
               language.formatDuration(data.duration, {unit: true}));
         }
 
-        if (data.date) {
-          workingCapsule += '.withDate';
+        if (data.dateStyle === 'released') {
+          workingCapsule += '.withDateReleased';
+          workingOptions.date =
+            html.tag('b',
+              language.formatDate(data.date));
+        } else if (data.dateStyle === 'posted') {
+          workingCapsule += '.withDatePosted';
           workingOptions.date =
             html.tag('b',
               language.formatDate(data.date));
diff --git a/src/content/dependencies/generateAlbumSocialEmbedDescription.js b/src/content/dependencies/generateAlbumSocialEmbedDescription.js
index db6da5b7..f584b59e 100644
--- a/src/content/dependencies/generateAlbumSocialEmbedDescription.js
+++ b/src/content/dependencies/generateAlbumSocialEmbedDescription.js
@@ -10,6 +10,9 @@ export default {
 
     date:
       album.date,
+
+    dateStyle:
+      album.dateStyle,
   }),
 
   generate: (data, {language}) =>
@@ -28,8 +31,12 @@ export default {
           language.countTracks(data.tracks, {unit: true});
       }
 
-      if (data.date) {
-        workingCapsule += '.withReleaseDate';
+      if (data.dateStyle === 'released') {
+        workingCapsule += '.withDateReleased';
+        workingOptions.date =
+          language.formatDate(data.date);
+      } else if (data.dateStyle === 'posted') {
+        workingCapsule += '.withDatePosted';
         workingOptions.date =
           language.formatDate(data.date);
       }
diff --git a/src/content/dependencies/generateTrackReleaseInfo.js b/src/content/dependencies/generateTrackReleaseInfo.js
index 001f5a54..b610188a 100644
--- a/src/content/dependencies/generateTrackReleaseInfo.js
+++ b/src/content/dependencies/generateTrackReleaseInfo.js
@@ -22,6 +22,7 @@ export default {
 
     data.name = track.name;
     data.date = track.date;
+    data.dateStyle = track.dateStyle;
     data.duration = track.duration;
 
     const {album} = track;
@@ -65,10 +66,15 @@ export default {
             });
           }),
 
-          language.$(capsule, 'released', {
-            [language.onlyIfOptions]: ['date'],
-            date: language.formatDate(data.date),
-          }),
+          (data.dateStyle === 'released'
+            ? language.$(capsule, 'released', {
+                date: language.formatDate(data.date),
+              })
+         : data.dateStyle === 'posted'
+            ? language.$(capsule, 'posted', {
+                date: language.formatDate(data.date),
+              })
+            : html.blank()),
 
           language.$(capsule, 'duration', {
             [language.onlyIfOptions]: ['duration'],