diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-02-18 16:23:40 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-03-02 08:23:22 -0400 |
commit | 90d484d4ca6525b7184e28f452349e1a3b6e759f (patch) | |
tree | 399f0e0547870c8527bc4fe3053d238f38edd844 /src | |
parent | 298b26c82aa7f029f4a640ee1a0a95ac5ab2c4c4 (diff) |
data, content: make commentary [] when empty
Diffstat (limited to 'src')
9 files changed, 51 insertions, 41 deletions
diff --git a/src/content/dependencies/generateAlbumCommentaryPage.js b/src/content/dependencies/generateAlbumCommentaryPage.js index 91ffeb04..f5df7c3d 100644 --- a/src/content/dependencies/generateAlbumCommentaryPage.js +++ b/src/content/dependencies/generateAlbumCommentaryPage.js @@ -1,4 +1,4 @@ -import {stitchArrays} from '#sugar'; +import {empty, stitchArrays} from '#sugar'; export default { contentDependencies: [ @@ -18,7 +18,22 @@ export default { extraDependencies: ['html', 'language'], - relations(relation, album) { + query(album) { + const query = {}; + + query.tracksWithCommentary = + album.tracks + .filter(({commentary}) => !empty(commentary)); + + query.thingsWithCommentary = + (empty(album.commentary) + ? query.tracksWithCommentary + : [album, ...query.tracksWithCommentary]); + + return query; + }, + + relations(relation, query, album) { const relations = {}; relations.layout = @@ -39,7 +54,7 @@ export default { relations.albumNavAccent = relation('generateAlbumNavAccent', album, null); - if (album.commentary) { + if (!empty(album.commentary)) { relations.albumCommentaryHeading = relation('generateContentHeading'); @@ -59,32 +74,28 @@ export default { .map(entry => relation('generateCommentaryEntry', entry)); } - const tracksWithCommentary = - album.tracks - .filter(({commentary}) => commentary); - relations.trackCommentaryHeadings = - tracksWithCommentary + query.tracksWithCommentary .map(() => relation('generateContentHeading')); relations.trackCommentaryLinks = - tracksWithCommentary + query.tracksWithCommentary .map(track => relation('linkTrack', track)); relations.trackCommentaryListeningLinks = - tracksWithCommentary + query.tracksWithCommentary .map(track => track.urls.map(url => relation('linkExternal', url))); relations.trackCommentaryCovers = - tracksWithCommentary + query.tracksWithCommentary .map(track => (track.hasUniqueCoverArt ? relation('generateTrackCoverArtwork', track) : null)); relations.trackCommentaryEntries = - tracksWithCommentary + query.tracksWithCommentary .map(track => track.commentary .map(entry => relation('generateCommentaryEntry', entry))); @@ -92,29 +103,20 @@ export default { return relations; }, - data(album) { + data(query, album) { const data = {}; data.name = album.name; data.color = album.color; data.date = album.date; - const tracksWithCommentary = - album.tracks - .filter(({commentary}) => commentary); - - const thingsWithCommentary = - (album.commentary - ? [album, ...tracksWithCommentary] - : tracksWithCommentary); - data.entryCount = - thingsWithCommentary + query.thingsWithCommentary .flatMap(({commentary}) => commentary) .length; data.wordCount = - thingsWithCommentary + query.thingsWithCommentary .flatMap(({commentary}) => commentary) .map(({body}) => body) .join(' ') @@ -122,15 +124,15 @@ export default { .length; data.trackCommentaryTrackDates = - tracksWithCommentary + query.tracksWithCommentary .map(track => track.dateFirstReleased); data.trackCommentaryDirectories = - tracksWithCommentary + query.tracksWithCommentary .map(track => track.directory); data.trackCommentaryColors = - tracksWithCommentary + query.tracksWithCommentary .map(track => (track.color === album.color ? null diff --git a/src/content/dependencies/generateAlbumCommentarySidebar.js b/src/content/dependencies/generateAlbumCommentarySidebar.js index 8313e6de..9ecec66d 100644 --- a/src/content/dependencies/generateAlbumCommentarySidebar.js +++ b/src/content/dependencies/generateAlbumCommentarySidebar.js @@ -1,3 +1,5 @@ +import {empty} from '#sugar'; + export default { contentDependencies: [ 'generateAlbumSidebarTrackSection', @@ -28,10 +30,10 @@ export default { data: (album) => ({ albumHasCommentary: - !!album.commentary, + !empty(album.commentary), anyTrackHasCommentary: - album.tracks.some(track => track.commentary), + album.tracks.some(track => !empty(track.commentary)), }), generate: (data, relations, {html, language}) => diff --git a/src/content/dependencies/generateAlbumInfoPage.js b/src/content/dependencies/generateAlbumInfoPage.js index 1f741a60..242680c5 100644 --- a/src/content/dependencies/generateAlbumInfoPage.js +++ b/src/content/dependencies/generateAlbumInfoPage.js @@ -1,3 +1,5 @@ +import {empty} from '#sugar'; + export default { contentDependencies: [ 'generateAdditionalNamesBox', @@ -64,7 +66,7 @@ export default { : null), commentaryLink: - (album.commentary || album.tracks.some(t => t.commentary) + ([album, ...album.tracks].some(({commentary}) => !empty(commentary)) ? relation('linkAlbumCommentary', album) : null), diff --git a/src/content/dependencies/generateAlbumNavAccent.js b/src/content/dependencies/generateAlbumNavAccent.js index 3adb01be..432c5f3d 100644 --- a/src/content/dependencies/generateAlbumNavAccent.js +++ b/src/content/dependencies/generateAlbumNavAccent.js @@ -1,4 +1,4 @@ -import {atOffset} from '#sugar'; +import {atOffset, empty} from '#sugar'; export default { contentDependencies: [ @@ -65,8 +65,8 @@ export default { album.tracks.length > 1, commentaryPageIsStub: - !album.commentary && - album.tracks.every(t => !t.commentary), + [album, ...album.tracks] + .every(({commentary}) => empty(commentary)), galleryIsStub: album.tracks.every(t => !t.hasUniqueCoverArt), diff --git a/src/content/dependencies/generateAlbumSidebarTrackSection.js b/src/content/dependencies/generateAlbumSidebarTrackSection.js index bb788d65..88aea409 100644 --- a/src/content/dependencies/generateAlbumSidebarTrackSection.js +++ b/src/content/dependencies/generateAlbumSidebarTrackSection.js @@ -1,3 +1,5 @@ +import {empty} from '#sugar'; + export default { contentDependencies: ['linkTrack'], extraDependencies: ['getColors', 'html', 'language'], @@ -39,7 +41,7 @@ export default { data.tracksAreMissingCommentary = trackSection.tracks - .map(track => !track.commentary); + .map(track => empty(track.commentary)); return data; }, diff --git a/src/content/dependencies/generateCommentarySection.js b/src/content/dependencies/generateCommentarySection.js index ed871b47..b5b88372 100644 --- a/src/content/dependencies/generateCommentarySection.js +++ b/src/content/dependencies/generateCommentarySection.js @@ -14,10 +14,8 @@ export default { relation('generateContentHeading'), entries: - (entries - ? entries.map(entry => - relation('generateCommentaryEntry', entry)) - : []), + entries.map(entry => + relation('generateCommentaryEntry', entry)), }), data: (entries) => ({ diff --git a/src/content/dependencies/linkAlbumDynamically.js b/src/content/dependencies/linkAlbumDynamically.js index 7173b417..45f8c2a9 100644 --- a/src/content/dependencies/linkAlbumDynamically.js +++ b/src/content/dependencies/linkAlbumDynamically.js @@ -1,3 +1,5 @@ +import {empty} from '#sugar'; + export default { contentDependencies: [ 'linkAlbumCommentary', @@ -23,7 +25,7 @@ export default { album.directory, albumHasCommentary: - !!album.commentary, + !empty(album.commentary), }), slots: { diff --git a/src/content/dependencies/linkTrackDynamically.js b/src/content/dependencies/linkTrackDynamically.js index 242cd4cb..bbcf1c34 100644 --- a/src/content/dependencies/linkTrackDynamically.js +++ b/src/content/dependencies/linkTrackDynamically.js @@ -1,3 +1,5 @@ +import {empty} from '#sugar'; + export default { contentDependencies: ['linkTrack'], extraDependencies: ['pagePath'], @@ -14,7 +16,7 @@ export default { track.album.directory, trackHasCommentary: - !!track.commentary, + !empty(track.commentary), }), generate(data, relations, {pagePath}) { diff --git a/src/data/composite/wiki-properties/commentary.js b/src/data/composite/wiki-properties/commentary.js index cd6b7ac4..9625278d 100644 --- a/src/data/composite/wiki-properties/commentary.js +++ b/src/data/composite/wiki-properties/commentary.js @@ -16,7 +16,7 @@ export default templateCompositeFrom({ exitWithoutDependency({ dependency: input.updateValue({validate: isCommentary}), mode: input.value('falsy'), - value: input.value(null), + value: input.value([]), }), withParsedCommentaryEntries({ |