diff options
Diffstat (limited to 'src/content')
3 files changed, 65 insertions, 10 deletions
diff --git a/src/content/dependencies/generateArtTagAncestorDescendantMapList.js b/src/content/dependencies/generateArtTagAncestorDescendantMapList.js index 87b38059..89150615 100644 --- a/src/content/dependencies/generateArtTagAncestorDescendantMapList.js +++ b/src/content/dependencies/generateArtTagAncestorDescendantMapList.js @@ -1,4 +1,9 @@ -import {filterMultipleArrays, sortMultipleArrays, stitchArrays} from '#sugar'; +import { + filterMultipleArrays, + sortMultipleArrays, + stitchArrays, + unique, +} from '#sugar'; export default { contentDependencies: ['linkArtTagDynamically'], @@ -25,6 +30,13 @@ export default { .length : null); + const artTagsTimesFeaturedTotal = + artTags.map(artTag => + unique([ + ...artTag.directlyTaggedInThings, + ...artTag.indirectlyTaggedInThings, + ]).length); + const sublists = stitchArrays({ artTag: artTags, @@ -35,12 +47,12 @@ export default { : null)); if (displayBriefly) { - filterMultipleArrays(artTags, sublists, + filterMultipleArrays(artTags, sublists, artTagsTimesFeaturedTotal, (artTag, sublist) => artTag === targetArtTag || sublist !== null); } else { - sortMultipleArrays(artTags, sublists, + sortMultipleArrays(artTags, sublists, artTagsTimesFeaturedTotal, (artTagA, artTagB, sublistA, sublistB) => (sublistA && sublistB ? 0 @@ -55,6 +67,7 @@ export default { displayBriefly, numExemptArtTags, artTags, + artTagsTimesFeaturedTotal, sublists, }; }; @@ -77,9 +90,16 @@ export default { }, data(query, _ancestorArtTag, targetArtTag) { - const recursive = ({displayBriefly, numExemptArtTags, artTags, sublists}) => ({ + const recursive = ({ + displayBriefly, + numExemptArtTags, + artTags, + artTagsTimesFeaturedTotal, + sublists, + }) => ({ displayBriefly, numExemptArtTags, + artTagsTimesFeaturedTotal, artTagsAreTargetTag: artTags @@ -105,17 +125,22 @@ export default { stitchArrays({ isTargetTag: dataNode.artTagsAreTargetTag, + timesFeaturedTotal: dataNode.artTagsTimesFeaturedTotal, dataSublist: dataNode.sublists, artTagLink: relationsNode.artTagLinks, relationsSublist: relationsNode.sublists, }).map(({ - isTargetTag, dataSublist, + isTargetTag, timesFeaturedTotal, dataSublist, artTagLink, relationsSublist, }) => [ html.tag('dt', {class: (dataSublist || isTargetTag) && 'current'}, - artTagLink), + [ + artTagLink, + html.tag('span', {class: 'times-used'}, + language.countTimesFeatured(timesFeaturedTotal)), + ]), dataSublist && html.tag('dd', diff --git a/src/content/dependencies/generateArtTagInfoPage.js b/src/content/dependencies/generateArtTagInfoPage.js index f118735f..883dbbef 100644 --- a/src/content/dependencies/generateArtTagInfoPage.js +++ b/src/content/dependencies/generateArtTagInfoPage.js @@ -103,6 +103,13 @@ export default { relatedArtTagAnnotations: artTag.relatedArtTags .map(({annotation}) => annotation), + + directDescendantTimesFeaturedTotal: + artTag.directDescendantArtTags.map(artTag => + unique([ + ...artTag.directlyTaggedInThings, + ...artTag.indirectlyTaggedInThings, + ]).length), }), generate: (data, relations, {html, language}) => @@ -230,7 +237,8 @@ export default { stitchArrays({ infoLink: relations.directDescendantInfoLinks, galleryLink: relations.directDescendantGalleryLinks, - }).map(({infoLink, galleryLink}) => + timesFeaturedTotal: data.directDescendantTimesFeaturedTotal, + }).map(({infoLink, galleryLink, timesFeaturedTotal}) => html.tag('li', language.encapsulate(listCapsule, 'item', itemCapsule => language.encapsulate(itemCapsule, workingCapsule => { @@ -245,6 +253,14 @@ export default { language.$(itemCapsule, 'withGallery.gallery')); } + if (timesFeaturedTotal >= 1) { + workingCapsule += `.withTimesUsed`; + workingOptions.timesUsed = + language.countTimesFeatured(timesFeaturedTotal, { + unit: true, + }); + } + return language.$(workingCapsule, workingOptions); }))))), ])), diff --git a/src/content/dependencies/generateArtTagSidebar.js b/src/content/dependencies/generateArtTagSidebar.js index 254f0a57..c281b93d 100644 --- a/src/content/dependencies/generateArtTagSidebar.js +++ b/src/content/dependencies/generateArtTagSidebar.js @@ -1,4 +1,4 @@ -import {collectTreeLeaves, empty, stitchArrays} from '#sugar'; +import {collectTreeLeaves, empty, stitchArrays, unique} from '#sugar'; export default { contentDependencies: [ @@ -51,6 +51,13 @@ export default { data: (query, sprawl, artTag) => ({ name: artTag.name, + directDescendantTimesFeaturedTotal: + artTag.directDescendantArtTags.map(artTag => + unique([ + ...artTag.directlyTaggedInThings, + ...artTag.indirectlyTaggedInThings, + ]).length), + furthestAncestorArtTagNames: query.furthestAncestorArtTags .map(ancestorArtTag => ancestorArtTag.name), @@ -79,8 +86,15 @@ export default { language.sanitize(data.name)))), html.tag('ul', - relations.directDescendantArtTagLinks - .map(link => html.tag('li', link))), + stitchArrays({ + link: relations.directDescendantArtTagLinks, + timesFeaturedTotal: data.directDescendantTimesFeaturedTotal, + }).map(({link, timesFeaturedTotal}) => + html.tag('li', [ + link, + html.tag('span', {class: 'times-used'}, + language.countTimesFeatured(timesFeaturedTotal)), + ]))), ]), stitchArrays({ |