diff options
Diffstat (limited to 'src/content/dependencies/generateTrackChronologyLinks.js')
-rw-r--r-- | src/content/dependencies/generateTrackChronologyLinks.js | 46 |
1 files changed, 33 insertions, 13 deletions
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; }, }; |