« get me outta code hell

content: generate{Album,Track}ReleaseInfo - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateAlbumInfoPage.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-06-12 18:16:13 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-06-12 18:16:13 -0300
commitfe0ebbb7aae5576492e8aa675fe5a538727bd9e5 (patch)
tree9d02348916dae47145666c89fd63a90538c7a767 /src/content/dependencies/generateAlbumInfoPage.js
parentea15c99d9ffa7ca59e9a44cdcccc492cca5a4ac0 (diff)
content: generate{Album,Track}ReleaseInfo
Diffstat (limited to 'src/content/dependencies/generateAlbumInfoPage.js')
-rw-r--r--src/content/dependencies/generateAlbumInfoPage.js84
1 files changed, 5 insertions, 79 deletions
diff --git a/src/content/dependencies/generateAlbumInfoPage.js b/src/content/dependencies/generateAlbumInfoPage.js
index 3658f02..d1be0f3 100644
--- a/src/content/dependencies/generateAlbumInfoPage.js
+++ b/src/content/dependencies/generateAlbumInfoPage.js
@@ -1,6 +1,6 @@
 import getChronologyRelations from '../util/getChronologyRelations.js';
 import {sortAlbumsTracksChronologically} from '../../util/wiki-data.js';
-import {accumulateSum, empty} from '../../util/sugar.js';
+import {empty} from '../../util/sugar.js';
 
 export default {
   contentDependencies: [
@@ -8,6 +8,7 @@ export default {
     'generateAlbumAdditionalFilesList',
     'generateAlbumCoverArtwork',
     'generateAlbumNavAccent',
+    'generateAlbumReleaseInfo',
     'generateAlbumSidebar',
     'generateAlbumSocialEmbed',
     'generateAlbumStyleRules',
@@ -16,12 +17,10 @@ export default {
     'generateColorStyleRules',
     'generateContentHeading',
     'generatePageLayout',
-    'generateReleaseInfoContributionsLine',
     'linkAlbum',
     'linkAlbumCommentary',
     'linkAlbumGallery',
     'linkArtist',
-    'linkExternal',
     'linkTrack',
     'transformContent',
   ],
@@ -78,29 +77,8 @@ export default {
 
     // Section: Release info
 
-    const releaseInfo = sections.releaseInfo = {};
-
-    releaseInfo.artistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.artistContribs);
-
-    releaseInfo.coverArtistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.coverArtistContribs);
-
-    releaseInfo.wallpaperArtistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.wallpaperArtistContribs);
-
-    releaseInfo.bannerArtistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.bannerArtistContribs);
-
-    // Section: Listen on
-
-    if (!empty(album.urls)) {
-      const listen = sections.listen = {};
-
-      listen.externalLinks =
-        album.urls.map(url =>
-          relation('linkExternal', url));
-    }
+    relations.releaseInfo =
+      relation('generateAlbumReleaseInfo', album);
 
     // Section: Extra links
 
@@ -157,14 +135,6 @@ export default {
     const data = {};
 
     data.name = album.name;
-    data.date = album.date;
-
-    data.duration = accumulateSum(album.tracks, track => track.duration);
-    data.durationApproximate = album.tracks.length > 1;
-
-    if (album.coverArtDate && +album.coverArtDate !== +album.date) {
-      data.coverArtDate = album.coverArtDate;
-    }
 
     if (!empty(album.additionalFiles)) {
       data.numAdditionalFiles = album.additionalFiles.length;
@@ -194,51 +164,7 @@ export default {
             : null),
 
         mainContent: [
-          html.tag('p',
-            {
-              [html.onlyIfContent]: true,
-              [html.joinChildren]: html.tag('br'),
-            },
-            [
-              sec.releaseInfo.artistContributionsLine
-                .slots({stringKey: 'releaseInfo.by'}),
-
-              sec.releaseInfo.coverArtistContributionsLine
-                .slots({stringKey: 'releaseInfo.coverArtBy'}),
-
-              sec.releaseInfo.wallpaperArtistContributionsLine
-                .slots({stringKey: 'releaseInfo.wallpaperArtBy'}),
-
-              sec.releaseInfo.bannerArtistContributionsLine
-                .slots({stringKey: 'releaseInfo.bannerArtBy'}),
-
-              data.date &&
-                language.$('releaseInfo.released', {
-                  date: language.formatDate(data.date),
-                }),
-
-              data.coverArtDate &&
-                language.$('releaseInfo.artReleased', {
-                  date: language.formatDate(data.coverArtDate),
-                }),
-
-              data.duration &&
-                language.$('releaseInfo.duration', {
-                  duration:
-                    language.formatDuration(data.duration, {
-                      approximate: data.durationApproximate,
-                    }),
-                }),
-            ]),
-
-          sec.listen &&
-            html.tag('p',
-              language.$('releaseInfo.listenOn', {
-                links:
-                  language.formatDisjunctionList(
-                    sec.listen.externalLinks
-                      .map(link => link.slot('mode', 'album'))),
-              })),
+          relations.releaseInfo,
 
           html.tag('p',
             {