diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-02-09 00:34:13 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-02-25 20:03:29 -0400 |
commit | 27ed45cf9652b4859ca65092b974bd02b9fb107c (patch) | |
tree | 81b22282813b38b85a46b554208208a2e7a70125 /src | |
parent | cc87d79e3cfc39fed8bf6d55b061824a3fd35318 (diff) |
content: generateArtTagInfoPage (etc): times featured map
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/generateArtTagAncestorDescendantMapList.js | 37 | ||||
-rw-r--r-- | src/content/dependencies/generateArtTagInfoPage.js | 18 | ||||
-rw-r--r-- | src/content/dependencies/generateArtTagSidebar.js | 20 | ||||
-rw-r--r-- | src/data/things/language.js | 1 | ||||
-rw-r--r-- | src/static/css/site.css | 6 | ||||
-rw-r--r-- | src/strings-default.yaml | 14 |
6 files changed, 86 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({ diff --git a/src/data/things/language.js b/src/data/things/language.js index 98ce12c6..a3f861bd 100644 --- a/src/data/things/language.js +++ b/src/data/things/language.js @@ -904,6 +904,7 @@ Object.assign(Language.prototype, { countDays: countHelper('days'), countFlashes: countHelper('flashes'), countMonths: countHelper('months'), + countTimesFeatured: countHelper('timesFeatured'), countTimesReferenced: countHelper('timesReferenced'), countTimesUsed: countHelper('timesUsed'), countTracks: countHelper('tracks'), diff --git a/src/static/css/site.css b/src/static/css/site.css index 32bb08d9..12625de4 100644 --- a/src/static/css/site.css +++ b/src/static/css/site.css @@ -428,6 +428,12 @@ body::before, .wallpaper-part { border-bottom: 1px solid; } +.sidebar .times-used { + opacity: 0.7; + font-size: 0.9em; + cursor: default; +} + .sidebar li.current { font-weight: 800; } diff --git a/src/strings-default.yaml b/src/strings-default.yaml index 8c990cd9..29994b52 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -149,6 +149,16 @@ count: many: "" other: "{MONTHS} months" + timesFeatured: + _: "{TIMES_FEATURED}" + withUnit: + zero: "" + one: "featured {TIMES_FEATURED} time" + two: "" + few: "" + many: "" + other: "featured {TIMES_FEATURED} times" + timesReferenced: _: "{TIMES_REFERENCED}" withUnit: @@ -1326,10 +1336,14 @@ artTagInfoPage: item: _: "{TAG}" + withGallery: _: "{TAG} ({GALLERY})" gallery: "Gallery" + withTimesUsed: "{TAG} ({TIMES_USED})" + withGallery.withTimesUsed: "{TAG} ({GALLERY}, {TIMES_USED})" + # # artTagGalleryPage: # The tag gallery page displays all the artworks that a tag has |