From 4075254c9e38be6741527e1fb535eed444e6ad08 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 26 Jun 2022 16:41:09 -0300 Subject: initial prettier/eslint commit --- src/page/listing.js | 341 ++++++++++++++++++++++++++++------------------------ 1 file changed, 183 insertions(+), 158 deletions(-) (limited to 'src/page/listing.js') diff --git a/src/page/listing.js b/src/page/listing.js index 447a0c8f..886c8a9d 100644 --- a/src/page/listing.js +++ b/src/page/listing.js @@ -10,193 +10,218 @@ // Imports -import fixWS from 'fix-whitespace'; +import fixWS from "fix-whitespace"; -import * as html from '../util/html.js'; +import * as html from "../util/html.js"; -import { - getTotalDuration -} from '../util/wiki-data.js'; +import { getTotalDuration } from "../util/wiki-data.js"; // Page exports -export function condition({wikiData}) { - return wikiData.wikiInfo.enableListings; +export function condition({ wikiData }) { + return wikiData.wikiInfo.enableListings; } -export function targets({wikiData}) { - return wikiData.listingSpec; +export function targets({ wikiData }) { + return wikiData.listingSpec; } -export function write(listing, {wikiData}) { - if (listing.condition && !listing.condition({wikiData})) { - return null; - } +export function write(listing, { wikiData }) { + if (listing.condition && !listing.condition({ wikiData })) { + return null; + } - const { wikiInfo } = wikiData; + const { wikiInfo } = wikiData; - const data = (listing.data - ? listing.data({wikiData}) - : null); + const data = listing.data ? listing.data({ wikiData }) : null; - const page = { - type: 'page', - path: ['listing', listing.directory], - page: opts => { - const { getLinkThemeString, link, language } = opts; - const titleKey = `listingPage.${listing.stringsKey}.title`; + const page = { + type: "page", + path: ["listing", listing.directory], + page: (opts) => { + const { getLinkThemeString, link, language } = opts; + const titleKey = `listingPage.${listing.stringsKey}.title`; - return { - title: language.$(titleKey), + return { + title: language.$(titleKey), - main: { - content: fixWS` + main: { + content: fixWS`

${language.$(titleKey)}

- ${listing.html && (listing.data + ${ + listing.html && + (listing.data ? listing.html(data, opts) - : listing.html(opts))} - ${listing.row && fixWS` + : listing.html(opts)) + } + ${ + listing.row && + fixWS` - `} - ` - }, - - sidebarLeft: { - content: generateSidebarForListings(listing, { - getLinkThemeString, - link, - language, - wikiData - }) - }, - - nav: { - linkContainerClasses: ['nav-links-hierarchy'], - links: [ - {toHome: true}, - { - path: ['localized.listingIndex'], - title: language.$('listingIndex.title') - }, - {toCurrentPage: true} - ] - } - }; - } - }; - - return [page]; -} - -export function writeTargetless({wikiData}) { - const { albumData, trackData, wikiInfo } = wikiData; + ` + } + `, + }, - const totalDuration = getTotalDuration(trackData); - - const page = { - type: 'page', - path: ['listingIndex'], - page: ({ + sidebarLeft: { + content: generateSidebarForListings(listing, { getLinkThemeString, + link, language, - link - }) => ({ - title: language.$('listingIndex.title'), - - main: { - content: fixWS` -

${language.$('listingIndex.title')}

-

${language.$('listingIndex.infoLine', { - wiki: wikiInfo.name, - tracks: `${language.countTracks(trackData.length, {unit: true})}`, - albums: `${language.countAlbums(albumData.length, {unit: true})}`, - duration: `${language.formatDuration(totalDuration, {approximate: true, unit: true})}` - })}

-
-

${language.$('listingIndex.exploreList')}

- ${generateLinkIndexForListings(null, false, {link, language, wikiData})} - ` - }, - - sidebarLeft: { - content: generateSidebarForListings(null, { - getLinkThemeString, - link, - language, - wikiData - }) + wikiData, + }), + }, + + nav: { + linkContainerClasses: ["nav-links-hierarchy"], + links: [ + { toHome: true }, + { + path: ["localized.listingIndex"], + title: language.$("listingIndex.title"), }, + { toCurrentPage: true }, + ], + }, + }; + }, + }; + + return [page]; +} - nav: {simple: true} - }) - }; - - return [page]; -}; +export function writeTargetless({ wikiData }) { + const { albumData, trackData, wikiInfo } = wikiData; + + const totalDuration = getTotalDuration(trackData); + + const page = { + type: "page", + path: ["listingIndex"], + page: ({ getLinkThemeString, language, link }) => ({ + title: language.$("listingIndex.title"), + + main: { + content: fixWS` +

${language.$("listingIndex.title")}

+

${language.$("listingIndex.infoLine", { + wiki: wikiInfo.name, + tracks: `${language.countTracks(trackData.length, { + unit: true, + })}`, + albums: `${language.countAlbums(albumData.length, { + unit: true, + })}`, + duration: `${language.formatDuration(totalDuration, { + approximate: true, + unit: true, + })}`, + })}

+
+

${language.$("listingIndex.exploreList")}

+ ${generateLinkIndexForListings(null, false, { + link, + language, + wikiData, + })} + `, + }, + + sidebarLeft: { + content: generateSidebarForListings(null, { + getLinkThemeString, + link, + language, + wikiData, + }), + }, + + nav: { simple: true }, + }), + }; + + return [page]; +} // Utility functions -function generateSidebarForListings(currentListing, { - getLinkThemeString, - link, - language, - wikiData -}) { - return fixWS` -

${link.listingIndex('', {text: language.$('listingIndex.title')})}

+function generateSidebarForListings( + currentListing, + { getLinkThemeString, link, language, wikiData } +) { + return fixWS` +

${link.listingIndex("", { + text: language.$("listingIndex.title"), + })}

${generateLinkIndexForListings(currentListing, true, { - getLinkThemeString, - link, - language, - wikiData + getLinkThemeString, + link, + language, + wikiData, })} `; } -function generateLinkIndexForListings(currentListing, forSidebar, { - getLinkThemeString, - link, - language, - wikiData -}) { - const { listingTargetSpec, wikiInfo } = wikiData; - - const filteredByCondition = listingTargetSpec - .map(({ listings, ...rest }) => ({ - ...rest, - listings: listings.filter(({ condition: c }) => !c || c({wikiData})) - })) - .filter(({ listings }) => listings.length > 0); - - const genUL = listings => html.tag('ul', - listings.map(listing => html.tag('li', - {class: [listing === currentListing && 'current']}, - link.listing(listing, {text: language.$(`listingPage.${listing.stringsKey}.title.short`)}) - ))); - - if (forSidebar) { - return filteredByCondition.map(({ title, listings }) => - html.tag('details', { - open: !forSidebar || listings.includes(currentListing), - class: listings.includes(currentListing) && 'current' - }, [ - html.tag('summary', - {style: getLinkThemeString(wikiInfo.color)}, - html.tag('span', - {class: 'group-name'}, - title({language}))), - genUL(listings) - ])).join('\n'); - } else { - return html.tag('dl', - filteredByCondition.flatMap(({ title, listings }) => [ - html.tag('dt', title({language})), - html.tag('dd', genUL(listings)) - ])); - } +function generateLinkIndexForListings( + currentListing, + forSidebar, + { getLinkThemeString, link, language, wikiData } +) { + const { listingTargetSpec, wikiInfo } = wikiData; + + const filteredByCondition = listingTargetSpec + .map(({ listings, ...rest }) => ({ + ...rest, + listings: listings.filter(({ condition: c }) => !c || c({ wikiData })), + })) + .filter(({ listings }) => listings.length > 0); + + const genUL = (listings) => + html.tag( + "ul", + listings.map((listing) => + html.tag( + "li", + { class: [listing === currentListing && "current"] }, + link.listing(listing, { + text: language.$(`listingPage.${listing.stringsKey}.title.short`), + }) + ) + ) + ); + + if (forSidebar) { + return filteredByCondition + .map(({ title, listings }) => + html.tag( + "details", + { + open: !forSidebar || listings.includes(currentListing), + class: listings.includes(currentListing) && "current", + }, + [ + html.tag( + "summary", + { style: getLinkThemeString(wikiInfo.color) }, + html.tag("span", { class: "group-name" }, title({ language })) + ), + genUL(listings), + ] + ) + ) + .join("\n"); + } else { + return html.tag( + "dl", + filteredByCondition.flatMap(({ title, listings }) => [ + html.tag("dt", title({ language })), + html.tag("dd", genUL(listings)), + ]) + ); + } } -- cgit 1.3.0-6-gf8a5