« get me outta code hell

content: generateTrackInfoPageOtherReleaseTooltip - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-01-01 16:32:00 -0400
committer(quasar) nebula <qznebula@protonmail.com>2026-01-01 16:32:00 -0400
commit5c3317f02e32291f20d6f1257e290dcec6bbba06 (patch)
tree7ec10b84f8efe194d825d137680795b1752dbe1e /src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js
parent38b1357c0870597ee58b3f0f5086ae93ffceb5f5 (diff)
content: generateTrackInfoPageOtherReleaseTooltip preview
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js b/src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js
new file mode 100644
index 00000000..92ab52ba
--- /dev/null
+++ b/src/content/dependencies/generateTrackInfoPageOtherReleaseTooltip.js
@@ -0,0 +1,53 @@
+import {compareKebabCase} from '#wiki-data';
+
+export default {
+  relations: (relation, otherTrack, _currentTrack) => ({
+    tooltip:
+      relation('generateTooltip'),
+
+    colorStyle:
+      relation('generateColorStyleAttribute', otherTrack.album.color),
+  }),
+
+  data: (otherTrack, currentTrack) => ({
+    otherDate:
+      otherTrack.date,
+
+    currentDate:
+      currentTrack.date,
+
+    differentName:
+      (compareKebabCase(otherTrack.name, currentTrack.name)
+        ? null
+        : otherTrack.name),
+  }),
+
+  generate: (data, relations, {html, language}) =>
+    language.encapsulate('releaseInfo.alsoReleased.tooltip', capsule =>
+      relations.tooltip.slots({
+        attributes: [
+          {class: 'other-release-tooltip'},
+          relations.colorStyle,
+        ],
+
+        contentAttributes: [
+          {[html.joinChildren]:
+            html.tag('span', {class: 'cute-break'})},
+        ],
+
+        content: [
+          language.$(capsule, 'differentName', {
+            [language.onlyIfOptions]: ['name'],
+
+            name: data.differentName,
+          }),
+
+          data.otherDate && data.currentDate &&
+            language.formatRelativeDate(data.otherDate, data.currentDate, {
+              considerRoundingDays: true,
+              approximate: true,
+              absolute: false,
+            }),
+        ],
+      })),
+};
\ No newline at end of file