From b8daaca57747812d9a9188a3782eb818e09615ad Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 5 Feb 2023 08:46:06 -0400 Subject: support trackless albums This also keeps the wiki from exploding when all tracks in a given album are errored (so its track list is empty). --- src/page/album.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/page') diff --git a/src/page/album.js b/src/page/album.js index 1fc74520..80397065 100644 --- a/src/page/album.js +++ b/src/page/album.js @@ -53,7 +53,7 @@ export function write(album, {wikiData}) { const displayTrackGroups = album.trackGroups && (album.trackGroups.length > 1 || - !album.trackGroups[0].isDefaultTrackGroup); + !album.trackGroups[0]?.isDefaultTrackGroup); const listTag = getAlbumListTag(album); @@ -301,6 +301,7 @@ export function write(album, {wikiData}) { })), displayTrackGroups && + !empty(album.trackGroups) && html.tag('dl', {class: 'album-group-list'}, album.trackGroups.flatMap(({ @@ -323,6 +324,7 @@ export function write(album, {wikiData}) { ])), !displayTrackGroups && + !empty(album.tracks) && html.tag(listTag, album.tracks.map(trackToListItem)), @@ -759,6 +761,10 @@ export function generateAlbumNavLinks(album, currentTrack, { randomLink, ].filter(Boolean); + if (empty(allLinks)) { + return ''; + } + return `(${language.formatUnitList(allLinks)})`; } -- cgit 1.3.0-6-gf8a5 From 7c668d5cc6a107b3613e6bc1ab20c9005590b3cf Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 5 Feb 2023 08:59:30 -0400 Subject: support albumless groups --- src/page/group.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/page') diff --git a/src/page/group.js b/src/page/group.js index 6bfd1532..f9af8e80 100644 --- a/src/page/group.js +++ b/src/page/group.js @@ -16,8 +16,7 @@ export function targets({wikiData}) { export function write(group, {wikiData}) { const {listingSpec, wikiInfo} = wikiData; - const {albums} = group; - const tracks = albums.flatMap((album) => album.tracks); + const tracks = group.albums.flatMap((album) => album.tracks); const totalDuration = getTotalDuration(tracks, {originalReleasesOnly: true}); const albumLines = group.albums.map((album) => ({ @@ -65,7 +64,7 @@ export function write(group, {wikiData}) { transformMultiline(group.description)), ...html.fragment( - group.albums && [ + !empty(group.albums) && [ html.tag('h2', {class: ['content-heading']}, language.$('groupInfoPage.albumList.title')), @@ -123,7 +122,7 @@ export function write(group, {wikiData}) { }), }; - const galleryPage = { + const galleryPage = !empty(group.albums) && { type: 'page', path: ['groupGallery', group.directory], page: ({ @@ -165,7 +164,7 @@ export function write(group, {wikiData}) { unit: true, })), albums: html.tag('b', - language.countAlbums(albums.length, { + language.countAlbums(group.albums.length, { unit: true, })), time: html.tag('b', @@ -222,7 +221,7 @@ export function write(group, {wikiData}) { }), }; - return [infoPage, galleryPage]; + return [infoPage, galleryPage].filter(Boolean); } // Utility functions @@ -240,8 +239,6 @@ function generateGroupSidebar(currentGroup, isGallery, { return null; } - const linkKey = isGallery ? 'groupGallery' : 'groupInfo'; - return { content: [ html.tag('h1', @@ -260,15 +257,21 @@ function generateGroupSidebar(currentGroup, isGallery, { category: `${category.name}`, })), html.tag('ul', - category.groups.map((group) => - html.tag('li', + category.groups.map((group) => { + const linkKey = ( + isGallery && !empty(group.albums) + ? 'groupGallery' + : 'groupInfo'); + + return html.tag('li', { class: group === currentGroup && 'current', style: getLinkThemeString(group.color), }, language.$('groupSidebar.groupList.item', { group: link[linkKey](group), - })))), + })); + })), ])), ], }; -- cgit 1.3.0-6-gf8a5