« 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/generateAlbumGalleryStatsLine.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateAlbumGalleryStatsLine.js')
-rw-r--r--src/content/dependencies/generateAlbumGalleryStatsLine.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/content/dependencies/generateAlbumGalleryStatsLine.js b/src/content/dependencies/generateAlbumGalleryStatsLine.js
new file mode 100644
index 0000000..75bffb3
--- /dev/null
+++ b/src/content/dependencies/generateAlbumGalleryStatsLine.js
@@ -0,0 +1,38 @@
+import {getTotalDuration} from '#wiki-data';
+
+export default {
+  extraDependencies: ['html', 'language'],
+
+  data(album) {
+    return {
+      name: album.name,
+      date: album.date,
+      duration: getTotalDuration(album.tracks),
+      numTracks: album.tracks.length,
+    };
+  },
+
+  generate(data, {html, language}) {
+    const parts = ['albumGalleryPage.statsLine'];
+    const options = {};
+
+    options.tracks =
+      html.tag('b',
+        language.countTracks(data.numTracks, {unit: true}));
+
+    options.duration =
+      html.tag('b',
+        language.formatDuration(data.duration, {unit: true}));
+
+    if (data.date) {
+      parts.push('withDate');
+      options.date =
+        html.tag('b',
+          language.formatDate(data.date));
+    }
+
+    return (
+      html.tag('p', {class: 'quick-info'},
+        language.formatString(...parts, options)));
+  },
+};