From 00d757863fa30137dd103470c947d4922ba4a112 Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Mon, 22 Nov 2021 12:58:43 +0000 Subject: Add navbar sort order --- app/directory.mjs | 26 +++++++++++++++++++------- app/wikiparser.mjs | 3 ++- 2 files changed, 21 insertions(+), 8 deletions(-) (limited to 'app') diff --git a/app/directory.mjs b/app/directory.mjs index 5be6cce..4b5339c 100644 --- a/app/directory.mjs +++ b/app/directory.mjs @@ -37,7 +37,8 @@ export function buildPage(path) { html: content, raw: data, buildTime: result.metadata.buildTime, - hidden: result.metadata.hidden ?? false, + primary: result.metadata.primary ?? false, + sortOrder: result.metadata.sortOrder ?? -1, notitle: result.metadata.notitle ?? false, displayTitle: title }; @@ -57,6 +58,17 @@ export function rebuild() { file = file.replace('.wiki', ''); buildPage(file); }); + + let primaryPages = []; + for (const page of Object.keys(pages)) { + if (pages[page].primary) { + primaryPages.push(page); + } + } + primaryPages.sort((a, b) => { + return a.sortOrder - b.sortOrder; + }); + metadata.navbar = primaryPages; metadata.fileTreeBuildTime = new Date(); } @@ -89,12 +101,12 @@ export function getPages() { } export function getNavbar(current = '') { - let navbar = ''; - for (const path of Object.keys(pages)) { - if (pages[path].hidden) { - continue; - } - navbar = navbar + ``; + if (!metadata.navbar) { + return ''; + } + let navbar = ''; + for (const page of metadata.navbar) { + navbar = navbar + ``; } return navbar; } diff --git a/app/wikiparser.mjs b/app/wikiparser.mjs index a3231aa..4210bd1 100644 --- a/app/wikiparser.mjs +++ b/app/wikiparser.mjs @@ -40,11 +40,12 @@ export function parse(data) { // Metadata: displayTitle, __NOTOC__, etc .replace(re(r`{{ \s* displayTitle: ([^}]+) }}`), (_, title) => (metadata.displayTitle = title, '')) + .replace(re(r`{{ \s* navbarSortOrder: ([^}]+) }}`), (_, order) => (metadata.sortOrder = parseInt(order, 10), '')) .replace(re(r`__NOINDEX__`), () => (metadata.noindex = true, '')) .replace(re(r`__NOTOC__`), () => (metadata.notoc = true, '')) .replace(re(r`__FORCETOC__`), () => (metadata.toc = true, '')) .replace(re(r`__TOC__`), () => (metadata.toc = true, '')) - .replace(re(r`__HIDDEN__`), () => (metadata.hidden = true, '')) + .replace(re(r`__PRIMARY__`), () => (metadata.primary = true, '')) .replace(re(r`__NOTITLE__`), () => (metadata.notitle = true, '')) // Magic words: {{!}}, {{reflist}}, etc -- cgit v1.2.3-70-g09d2