diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-04-11 13:18:06 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-04-11 13:18:06 -0300 |
| commit | 5b03e4f671f45378de5ebb006f05cf288805aa66 (patch) | |
| tree | 5a8652ac11056305dafff3aeb99088b1724b6f31 /src | |
| parent | 0d054901fc56f68dfcbc587115c73e8edc1d8f05 (diff) | |
content: division list fixes and thingies
- drop unused unfinished slots code for divided flash lsit
- tidy and fix guarding against empty divide-by list
- support underOther list in flash list ("other flashes")
- change condition for using flat list (non-divided)
- used to be if there's nothing to divide by
- now it's if there's nothing divided into any of those
- this goes for divided track list too
Diffstat (limited to 'src')
| -rw-r--r-- | src/content/dependencies/generateDividedFeaturedInFlashesList.js | 92 | ||||
| -rw-r--r-- | src/content/dependencies/generateDividedTrackList.js | 4 | ||||
| -rw-r--r-- | src/strings-default.yaml | 1 |
3 files changed, 51 insertions, 46 deletions
diff --git a/src/content/dependencies/generateDividedFeaturedInFlashesList.js b/src/content/dependencies/generateDividedFeaturedInFlashesList.js index 93e29991..c4f5e445 100644 --- a/src/content/dependencies/generateDividedFeaturedInFlashesList.js +++ b/src/content/dependencies/generateDividedFeaturedInFlashesList.js @@ -14,13 +14,26 @@ export default { query(sprawl, features, _contextTrack) { if (!sprawl.enableFlashesAndGames) { - return {dividingSides: [], dividedFeatures: []}; + return { + dividingSides: [], dividingLabels: [], + dividedFeatures: [], + undividedFeatures: [], + }; + } + + if (empty(sprawl.divideFlashListsBySides)) { + return { + dividingSides: [], dividingLabels: [], + dividedFeatures: [], + undividedFeatures: features, + }; } const {allSides} = sprawl; const divisions = new Map(); const dividingSideIndices = []; + const undividedFeatures = []; for (const {side, label} of sprawl.divideFlashListsBySides) { divisions.set(side, {label, features: []}); dividingSideIndices.push(allSides.indexOf(side)); @@ -33,11 +46,13 @@ export default { const closestDividingSideIndex = dividingSideIndices.findLast(i => i <= sideIndex); - const closestDividingSide = - allSides.at(closestDividingSideIndex); + if (typeof closestDividingSideIndex === 'number') { + const closestDividingSide = + allSides.at(closestDividingSideIndex); - if (closestDividingSide) { divisions.get(closestDividingSide).features.push(feature); + } else { + undividedFeatures.push(feature); } } @@ -51,12 +66,16 @@ export default { dividedFeatures, (_side, _label, dividedFeatures) => !empty(dividedFeatures)); - return {dividingSides, dividingLabels, dividedFeatures}; + return { + dividingSides, dividingLabels, + dividedFeatures, + undividedFeatures, + }; }, - relations: (relation, query, sprawl, features, contextTrack) => ({ + relations: (relation, query, _sprawl, features, contextTrack) => ({ flatList: - (empty(sprawl.divideFlashListsBySides) + (empty(query.dividedFeatures) ? relation('generateTrackFeaturedInFlashesList', features, contextTrack) : null), @@ -70,24 +89,19 @@ export default { dividedFlashLists: query.dividedFeatures .map(features => relation('generateTrackFeaturedInFlashesList', features, contextTrack)), + + undividedFlashList: + (empty(query.undividedFeatures) + ? null + : relation('generateTrackFeaturedInFlashesList', query.undividedFeatures, contextTrack)), }), data: (query, _sprawl, _tracks) => ({ - dividingSideNames: - query.dividingSides - .map(side => side.name), - dividingLabels: query.dividingLabels, }), - slots: { - headingString: { - type: 'string', - }, - }, - - generate(data, relations, slots, {html, language}) { + generate(data, relations, {html, language}) { if (relations.flatList) { return relations.flatList; } @@ -107,36 +121,26 @@ export default { html.tag('dl', {class: 'division-list'}, {[html.onlyIfContent]: true}, - language.encapsulate('flashList', listCapsule => + language.encapsulate('flashList', listCapsule => [ stitchArrays({ sideLink: relations.dividingSideLinks, flashList: relations.dividedFlashLists, - sideName: data.dividingSideNames, - label: data.dividingLabels, - }).map(({sideLink, flashList, sideName, label}) => [ - language.encapsulate(listCapsule, 'underSide', capsule => - (slots.headingString - ? relations.contentHeading.clone().slots({ - tag: 'dt', - - title: - language.$(capsule, {side: sideLink}), - - stickyTitle: - language.$(slots.headingString, 'sticky', 'fromGroup', { - side: - (label - ? language.sanitize(label) - : language.sanitize(sideName)), - }), - }) - - : html.tag('dt', - language.$(capsule, { - side: sideLink, - })))), + }).map(({sideLink, flashList}) => [ + html.tag('dt', + language.$(listCapsule, 'underSide', {side: sideLink})), html.tag('dd', flashList), - ])))); + ]), + + html.tags([ + html.tag('dt', + {[html.onlyIfSiblings]: true}, + language.$(listCapsule, 'underOther')), + + html.tag('dd', + {[html.onlyIfContent]: true}, + relations.undividedFlashList), + ]), + ]))); }, }; diff --git a/src/content/dependencies/generateDividedTrackList.js b/src/content/dependencies/generateDividedTrackList.js index e89f08db..870c8156 100644 --- a/src/content/dependencies/generateDividedTrackList.js +++ b/src/content/dependencies/generateDividedTrackList.js @@ -85,9 +85,9 @@ export default { return {groupingGroups, groupedTracks, ungroupedTracks}; }, - relations: (relation, query, sprawl, tracks, contextTrack) => ({ + relations: (relation, query, _sprawl, tracks, contextTrack) => ({ flatList: - (empty(sprawl.divideTrackListsByGroups) + (empty(query.groupedTracks) ? relation('generateNearbyTrackList', tracks, contextTrack, []) : null), diff --git a/src/strings-default.yaml b/src/strings-default.yaml index 15bff2e8..daca8347 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -472,6 +472,7 @@ trackList: flashList: underSide: "under {SIDE}:" + underOther: "other flashes:" item: _: "{FLASH}" |