« get me outta code hell

content: stub track page, misc. other changes - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPage.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-04-12 13:20:32 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-04-12 13:20:32 -0300
commit3a5b49cf3a10702c0dae1190c9baabd8a2c2ef3b (patch)
treec7a1ac0d4c2096733fd3fdfdc549f5695a78532e /src/content/dependencies/generateTrackInfoPage.js
parentb8394a89d31da72ef7d2086a1088a29e68df4edc (diff)
content: stub track page, misc. other changes
* generateContributionLinks replaced with linkContribution,
  tests still need updating

* album pages respect albums without cover art

* track pages without unique art inherit art tags from album
  (fixes #13)

not heavily tested, this commit probably breaks some pages
which were loading correctly before
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
new file mode 100644
index 0000000..f7f1457
--- /dev/null
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -0,0 +1,40 @@
+export default {
+  contentDependencies: [
+    'generateTrackInfoPageContent',
+    'generateAlbumStyleRules',
+    'generateColorStyleRules',
+    'generatePageLayout',
+  ],
+
+  extraDependencies: ['language'],
+
+  relations(relation, track) {
+    return {
+      layout: relation('generatePageLayout'),
+
+      content: relation('generateTrackInfoPageContent', track),
+      albumStyleRules: relation('generateAlbumStyleRules', track.album),
+      colorStyleRules: relation('generateColorStyleRules', track.color),
+    };
+  },
+
+  data(track) {
+    return {
+      name: track.name,
+    };
+  },
+
+  generate(data, relations, {language}) {
+    return relations.layout
+      .slots({
+        title: language.$('trackPage.title', {track: data.name}),
+        styleRules: [
+          relations.albumStyleRules,
+          relations.colorStyleRules,
+        ],
+
+        cover: relations.content.cover,
+        mainContent: relations.content.main.content,
+      });
+  },
+}