« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateAlbumReleaseInfo.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateAlbumReleaseInfo.js')
-rw-r--r--src/content/dependencies/generateAlbumReleaseInfo.js88
1 files changed, 40 insertions, 48 deletions
diff --git a/src/content/dependencies/generateAlbumReleaseInfo.js b/src/content/dependencies/generateAlbumReleaseInfo.js
index 4cec4120..38cd1c05 100644
--- a/src/content/dependencies/generateAlbumReleaseInfo.js
+++ b/src/content/dependencies/generateAlbumReleaseInfo.js
@@ -1,17 +1,16 @@
 import {accumulateSum, empty} from '#sugar';
 
 export default {
-  relations(relation, album) {
-    const relations = {};
+  relations: (relation, album) => ({
+    block:
+      relation('generateReleaseInfoBlock'),
 
-    relations.artistContributionsLine =
-      relation('generateReleaseInfoContributionsLine', album.artistContribs);
+    artistContributionsLine:
+      relation('generateReleaseInfoContributionsLine', album.artistContribs),
 
-    relations.listenLine =
-      relation('generateReleaseInfoListenLine', album);
-
-    return relations;
-  },
+    listenLineOrList:
+      relation('generateListenLineOrList', album),
+  }),
 
   data(album) {
     const data = {};
@@ -45,44 +44,37 @@ export default {
   generate: (data, relations, {html, language}) =>
     language.encapsulate('releaseInfo', capsule =>
       html.tags([
-        html.tag('p',
-          {[html.onlyIfContent]: true},
-          {[html.joinChildren]: html.tag('br')},
-
-          [
-            relations.artistContributionsLine.slots({
-              stringKey: capsule + '.by',
-              featuringStringKey: capsule + '.by.featuring',
-              chronologyKind: 'album',
-            }),
-
-            language.$(capsule, 'released', {
-              [language.onlyIfOptions]: ['date'],
-              date: language.formatDate(data.date),
-            }),
-
-            language.$(capsule, 'duration', {
-              [language.onlyIfOptions]: ['duration'],
-              duration:
-                language.formatDuration(data.duration, {
-                  approximate: data.durationApproximate,
-                }),
-            }),
-          ]),
-
-        html.tag('p',
-          {[html.onlyIfContent]: true},
-
-          relations.listenLine.slots({
-            context: [
-              'album',
-
-              (data.numTracks === 0
-                ? 'albumNoTracks'
-             : data.numTracks === 1
-                ? 'albumOneTrack'
-                : 'albumMultipleTracks'),
-            ],
-          })),
+        relations.block.slot('items', [
+          relations.artistContributionsLine.slots({
+            stringKey: capsule + '.by',
+            featuringStringKey: capsule + '.by.featuring',
+            chronologyKind: 'album',
+          }),
+
+          language.$(capsule, 'released', {
+            [language.onlyIfOptions]: ['date'],
+            date: language.formatDate(data.date),
+          }),
+
+          language.$(capsule, 'duration', {
+            [language.onlyIfOptions]: ['duration'],
+            duration:
+              language.formatDuration(data.duration, {
+                approximate: data.durationApproximate,
+              }),
+          }),
+        ]),
+
+        relations.listenLineOrList.slots({
+          context: [
+            'album',
+
+            (data.numTracks === 0
+              ? 'albumNoTracks'
+           : data.numTracks === 1
+              ? 'albumOneTrack'
+              : 'albumMultipleTracks'),
+          ],
+        }),
       ])),
 };