From b1fc03df98d7618f5a5189089bd810f243e9aa8c Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 23 Apr 2024 16:54:41 -0300 Subject: content: generateTrackChronologyLinks: handle details collapsing --- .../dependencies/generateTrackChronologyLinks.js | 46 ++++++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'src/content/dependencies/generateTrackChronologyLinks.js') diff --git a/src/content/dependencies/generateTrackChronologyLinks.js b/src/content/dependencies/generateTrackChronologyLinks.js index fd676942..e30dd9ba 100644 --- a/src/content/dependencies/generateTrackChronologyLinks.js +++ b/src/content/dependencies/generateTrackChronologyLinks.js @@ -1,4 +1,5 @@ import {sortAlbumsTracksChronologically} from '#sort'; +import {accumulateSum} from '#sugar'; import getChronologyRelations from '../util/getChronologyRelations.js'; @@ -86,33 +87,52 @@ export default { }, generate(relations) { - function slotScopedRelations(scope) { - return scope.chronologyLinks.slots({ + function slotScopedRelations(content) { + return content.chronologyLinks.slots({ showOnly: true, + allowCollapsing: false, chronologyInfoSets: [ { headingString: 'misc.chronology.heading.track', - contributions: scope.artistChronologyContributions, + contributions: content.artistChronologyContributions, }, { headingString: 'misc.chronology.heading.coverArt', - contributions: scope.coverArtistChronologyContributions, + contributions: content.coverArtistChronologyContributions, }, ], }); } - return relations.scopeSwitcher.slots({ - scopes: [ - 'wiki', - 'album', - ], + const scopes = [ + 'wiki', + 'album', + ]; - contents: [ - slotScopedRelations(relations.wiki), - slotScopedRelations(relations.album), - ], + const contents = [ + relations.wiki, + relations.album, + ]; + + const totalContributionCount = + accumulateSum( + contents.flatMap(content => [ + content.artistChronologyContributions, + content.coverArtistChronologyContributions, + ]), + contributions => contributions.length); + + relations.scopeSwitcher.setSlots({ + scopes, + + open: + totalContributionCount <= 5, + + contents: + contents.map(content => slotScopedRelations(content)) }); + + return relations.scopeSwitcher; }, }; -- cgit 1.3.0-6-gf8a5