diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-02-06 18:20:51 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-02-10 13:31:05 -0400 |
commit | c53d9751c7a8d8687a6a27b308462c5ca77953e5 (patch) | |
tree | 44af9d5ebe76f7f3c1c0ea29171f363fd032c6db /src/content/dependencies/generateAlbumTrackListItem.js | |
parent | b451bcdea910c463f63bb2d1f9293d3f91aa1914 (diff) |
content, css: generateAlbumTrackList: handle missing durations
With bad CSS, at the moment.
Diffstat (limited to 'src/content/dependencies/generateAlbumTrackListItem.js')
-rw-r--r-- | src/content/dependencies/generateAlbumTrackListItem.js | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/content/dependencies/generateAlbumTrackListItem.js b/src/content/dependencies/generateAlbumTrackListItem.js index a66414d..2772496 100644 --- a/src/content/dependencies/generateAlbumTrackListItem.js +++ b/src/content/dependencies/generateAlbumTrackListItem.js @@ -2,13 +2,23 @@ import {compareArrays, empty} from '#sugar'; export default { contentDependencies: [ + 'generateAlbumTrackListMissingDuration', 'linkContribution', 'linkTrack', ], extraDependencies: ['getColors', 'html', 'language'], - relations(relation, track) { + query(track) { + const query = {}; + + query.duration = track.duration ?? 0; + query.durationMissing = !track.duration; + + return query; + }, + + relations(relation, query, track) { const relations = {}; if (!empty(track.artistContribs)) { @@ -20,13 +30,19 @@ export default { relations.trackLink = relation('linkTrack', track); + if (query.durationMissing) { + relations.missingDuration = + relation('generateAlbumTrackListMissingDuration'); + } + return relations; }, - data(track, album) { + data(query, track, album) { const data = {}; - data.duration = track.duration ?? 0; + data.duration = query.duration; + data.durationMissing = query.durationMissing; if (track.color !== album.color) { data.color = track.color; @@ -50,11 +66,18 @@ export default { colorStyle = {style: `--primary-color: ${primary}`}; } - const parts = ['trackList.item.withDuration']; + const parts = ['trackList.item']; const options = {}; + parts.push('withDuration'); + options.duration = - language.formatDuration(data.duration); + (data.durationMissing + ? relations.missingDuration + : language.$('trackList.item.withDuration.duration', { + duration: + language.formatDuration(data.duration), + })); options.track = relations.trackLink |