From 8f4473336fcf9ed94222797ce7e0c35226a90cbb Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 6 Apr 2023 10:57:42 -0300 Subject: build steps: jank together ultra-basic page write Super simple technically functional sketch. --- src/page/album.js | 216 +++++++++--------------------------------------------- src/page/index.js | 22 +++--- 2 files changed, 46 insertions(+), 192 deletions(-) (limited to 'src/page') diff --git a/src/page/album.js b/src/page/album.js index 4ed4dfc..6b82f84 100644 --- a/src/page/album.js +++ b/src/page/album.js @@ -1,205 +1,59 @@ // Album page specification. -import { - bindOpts, - compareArrays, - empty, -} from '../util/sugar.js'; - -import { - getAlbumCover, - getAlbumListTag, - getTotalDuration, -} from '../util/wiki-data.js'; - -import { - u_generateAlbumStylesheet, -} from '../misc-templates.js'; - export const description = `per-album info & track artwork gallery pages`; export function targets({wikiData}) { return wikiData.albumData; } -export const dataSteps = { - contentDependencies: [ - 'generateAlbumSocialEmbed', - 'generateAlbumStylesheet', - ], - - computePathsForTarget(data, album) { - data.hasGalleryPage = album.tracks.some(t => t.hasUniqueCoverArt); - data.hasCommentaryPage = !!album.commentary || album.tracks.some(t => t.commentary); - - return [ - { - type: 'page', - path: ['album', album.directory], - }, - - data.hasGalleryPage && { - type: 'page', - path: ['albumGallery', album.directory], - }, +export function pathsForTarget(album) { + const hasGalleryPage = album.tracks.some(t => t.hasUniqueCoverArt); + const hasCommentaryPage = !!album.commentary || album.tracks.some(t => t.commentary); - data.hasCommentaryPage && { - type: 'page', - path: ['albumCommentary', album.directory], - }, + return [ + { + type: 'page', + path: ['album', album.directory], - { - type: 'data', - path: ['album', album.directory], + contentFunction: { + name: 'generateAlbumInfoPage', + args: [album], }, - ]; - }, - - computeDataCommonAcrossMixedWrites(data, album) { - data.albumDuration = getTotalDuration(album.tracks); - }, - - computeDataCommonAcrossPageWrites(data, album) { - data.listTag = getAlbumListTag(album); - }, - - computeDataForPageWrite: { - album(data, album, _pathArgs) { - // TODO: We can't use content-unfulfilled functions here. - // But how do we express that these need to be fulfilled - // from within data steps? - data.socialEmbedData = data.dependencies.generateAlbumSocialEmbed.data(album); - data.stylesheetData = data.dependencies.generateAlbumStylesheet.data(album); - - data.name = album.name; - data.color = album.color; - data.directory = album.directory; - - data.hasAdditionalFiles = !empty(album.additionalFiles); - data.numAdditionalFiles = album.additionalFiles.flatMap((g) => g.files).length; - - data.displayTrackSections = - album.trackSections && - (album.trackSections.length > 1 || - !album.trackSections[0]?.isDefaultTrackSection); - }, - }, - - computeContentForPageWrite: { - album(data, { - absoluteTo, - fancifyURL, - generateAdditionalFilesShortcut, - generateAdditionalFilesList, - generateChronologyLinks, - generateContributionLinks, - generateContentHeading, - generateNavigationLinks, - getAlbumCover, - getAlbumStylesheet, - getLinkThemeString, - getSizeOfAdditionalFile, - getThemeString, - html, - link, - language, - transformMultiline, - urls, - }) { - const generateTrackListItem = bindOpts(u_generateTrackListItem, { - generateContributionLinks, - getLinkThemeString, - html, - language, - link, - }); - - const generateAlbumSocialEmbedDescription = u_generateAlbumSocialEmbedDescription.fulfill({ - language, - }); - - const generateAlbumSocialEmbed = u_generateAlbumSocialEmbed.fulfill({ - generateSocialEmbedDescription: generateAlbumSocialEmbedDescription, - }); - - void generateTrackListItem; }, - }, -}; -/* -const infoPage = { - page: () => { - return { - banner: !empty(album.bannerArtistContribs) && { - dimensions: album.bannerDimensions, - path: [ - 'media.albumBanner', - album.directory, - album.bannerFileExtension, - ], - alt: language.$('misc.alt.albumBanner'), - position: 'top', - }, + /* + hasGalleryPage && { + type: 'page', + path: ['albumGallery', album.directory], - cover: { - src: getAlbumCover(album), - alt: language.$('misc.alt.albumCover'), - artTags: album.artTags, + contentFunction: { + name: 'generateAlbumGalleryPage', + args: [album], }, + }, - main: { - headingMode: 'sticky', + hasCommentaryPage && { + type: 'page', + path: ['albumCommentary', album.directory], - content: [ - ], + contentFunction: { + name: 'generateAlbumCommentaryPage', + args: [album], }, + }, - sidebarLeft: generateAlbumSidebar(album, null, { - fancifyURL, - getLinkThemeString, - html, - link, - language, - transformMultiline, - wikiData, - }), + { + type: 'data', + path: ['album', album.directory], - nav: { - linkContainerClasses: ['nav-links-hierarchy'], - links: [ - {toHome: true}, - { - html: language.$('albumPage.nav.album', { - album: link.album(album, {class: 'current'}), - }), - }, - { - divider: false, - html: generateAlbumNavLinks(album, null, { - generateNavigationLinks, - html, - language, - link, - }), - } - ], - content: generateAlbumChronologyLinks(album, null, { - generateChronologyLinks, - html, - }), + contentFunction: { + name: 'generateAlbumDataFile', + args: [album], }, - - secondaryNav: generateAlbumSecondaryNav(album, null, { - getLinkThemeString, - html, - language, - link, - }), - }; - }, -}; -*/ + }, + */ + ]; +} /* export function write(album, {wikiData}) { diff --git a/src/page/index.js b/src/page/index.js index fc0c646..8cf1d96 100644 --- a/src/page/index.js +++ b/src/page/index.js @@ -110,14 +110,14 @@ // pertain only to site page generation. export * as album from './album.js'; -export * as albumCommentary from './album-commentary.js'; -export * as artist from './artist.js'; -export * as artistAlias from './artist-alias.js'; -export * as flash from './flash.js'; -export * as group from './group.js'; -export * as homepage from './homepage.js'; -export * as listing from './listing.js'; -export * as news from './news.js'; -export * as static from './static.js'; -export * as tag from './tag.js'; -export * as track from './track.js'; +// export * as albumCommentary from './album-commentary.js'; +// export * as artist from './artist.js'; +// export * as artistAlias from './artist-alias.js'; +// export * as flash from './flash.js'; +// export * as group from './group.js'; +// export * as homepage from './homepage.js'; +// export * as listing from './listing.js'; +// export * as news from './news.js'; +// export * as static from './static.js'; +// export * as tag from './tag.js'; +// export * as track from './track.js'; -- cgit 1.3.0-6-gf8a5