From aff76efc5b340012b6d82dea05a4df7db2e7a677 Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Sat, 11 Feb 2023 19:31:11 +0600 Subject: [PATCH 01/17] maturity visualization --- .eleventy.js | 6 +- src/site/_data/filetree.js | 129 +++++++++++---------- src/site/_data/meta.js | 21 ++++ src/site/_includes/components/filetree.njk | 4 +- src/site/_includes/layouts/note.njk | 4 +- src/site/img/tree-1.svg | 13 +++ src/site/img/tree-2.svg | 14 +++ src/site/img/tree-3.svg | 18 +++ src/site/index.njk | 2 +- src/site/styles/style.scss | 58 ++++++--- 10 files changed, 189 insertions(+), 80 deletions(-) create mode 100644 src/site/img/tree-1.svg create mode 100644 src/site/img/tree-2.svg create mode 100644 src/site/img/tree-3.svg diff --git a/.eleventy.js b/.eleventy.js index 8ec34bc..2549ae3 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -162,6 +162,7 @@ module.exports = function (eleventyConfig) { } let permalink = `/notes/${slugify(fileName)}`; + let maturity = process.env.MATURITY_DEFAULT; const title = linkTitle ? linkTitle : fileName; let deadLink = false; @@ -175,13 +176,16 @@ module.exports = function (eleventyConfig) { if (frontMatter.data.permalink) { permalink = frontMatter.data.permalink; } + if (frontMatter.data.maturity) { + maturity = frontMatter.data.maturity; + } } catch { deadLink = true; } return `${title}`; + }" ${deadLink ? "" : 'data-maturity="' + maturity + '"'} href="${permalink}${headerLinkPath}">${title}`; }) ); }); diff --git a/src/site/_data/filetree.js b/src/site/_data/filetree.js index ccb26fc..1c5a2f1 100644 --- a/src/site/_data/filetree.js +++ b/src/site/_data/filetree.js @@ -1,80 +1,87 @@ const fsFileTree = require("fs-file-tree"); -const matter = require('gray-matter'); -const fs = require('fs'); +const matter = require("gray-matter"); +const fs = require("fs"); module.exports = async () => { - const tree = await fsFileTree("src/site/notes"); - populateWithPermalink(tree); + const tree = await fsFileTree("src/site/notes"); + populateWithPermalink(tree); - return sortTree(tree); -} + return sortTree(tree); +}; const sortTree = (unsorted) => { - //Sort by folder before file, then by name - const orderedTree = Object.keys(unsorted).sort((a, b) => { - if (a.indexOf(".md") > -1 && b.indexOf(".md") === -1) { - return 1; - } - - if (a.indexOf(".md") === -1 && b.indexOf(".md") > -1) { - return -1; - } - - if (a.toLowerCase() > b.toLowerCase()) { - return 1; - } + //Sort by folder before file, then by name + const orderedTree = Object.keys(unsorted) + .sort((a, b) => { + if (a.indexOf(".md") > -1 && b.indexOf(".md") === -1) { + return 1; + } + if (a.indexOf(".md") === -1 && b.indexOf(".md") > -1) { return -1; - }).reduce( - (obj, key) => { - obj[key] = unsorted[key]; + } - return obj; - }, - {} - ); + if (a.toLowerCase() > b.toLowerCase()) { + return 1; + } - for (const key of Object.keys(orderedTree)) { - if (!orderedTree[key].path) { - orderedTree[key] = sortTree(orderedTree[key]) - } + return -1; + }) + .reduce((obj, key) => { + obj[key] = unsorted[key]; + + return obj; + }, {}); + + for (const key of Object.keys(orderedTree)) { + if (!orderedTree[key].path) { + orderedTree[key] = sortTree(orderedTree[key]); } + } - return orderedTree; -} + return orderedTree; +}; -function getPermalinkAndName(path, key) { - let permalink = "/" - let name = key.replace(".md", ""); - try { - const file = fs.readFileSync(`${path}`, 'utf8'); - const frontMatter = matter(file); - if (frontMatter.data.permalink) { - permalink = frontMatter.data.permalink; - } - if (frontMatter.data.title) { - name = frontMatter.data.title - } - } catch { - //ignore +function getPermalinkMeta(path, key) { + let permalink = "/"; + let name = key.replace(".md", ""); + let maturity = process.env.MATURITY_DEFAULT; + try { + const file = fs.readFileSync(`${path}`, "utf8"); + const frontMatter = matter(file); + if (frontMatter.data.permalink) { + permalink = frontMatter.data.permalink; } + if (frontMatter.data.title) { + name = frontMatter.data.title; + } + if (frontMatter.data.maturity) { + maturity = frontMatter.data.maturity; + } + } catch { + //ignore + } - return { permalink, name }; + return { permalink, name, maturity }; } function populateWithPermalink(tree) { - Object.keys(tree).forEach(key => { - if (tree[key].path) { - const isNote = tree[key].path.endsWith(".md"); - tree[key].isNote = isNote; - if (isNote) { - let { permalink, name } = getPermalinkAndName(tree[key].path, key); - tree[key].permalink = permalink - tree[key].name = name - } - } else { - tree[key].isFolder = true; - populateWithPermalink(tree[key]); - } - }); + Object.keys(tree).forEach((key) => { + if (tree[key].path) { + const isNote = tree[key].path.endsWith(".md"); + tree[key].isNote = isNote; + if (isNote) { + let { permalink, name, maturity } = getPermalinkMeta( + tree[key].path, + key + ); + tree[key].permalink = permalink; + tree[key].name = name; + tree[kye].maturity = maturity; + } + } else { + tree[key].isFolder = true; + populateWithPermalink(tree[key]); + } + }); } diff --git a/src/site/_data/meta.js b/src/site/_data/meta.js index 217f1e7..3e42f93 100644 --- a/src/site/_data/meta.js +++ b/src/site/_data/meta.js @@ -13,10 +13,31 @@ module.exports = async () => { if (themeStyle) { themeStyle = themeStyle.split("site")[1]; } + let bodyClasses = []; + let maturitySettings = { + filetree: false, + links: false, + title: false, + default: process.env.MATURITY_DEFAULT, + }; + if (process.env.MATURITY_TITLE) { + bodyClasses.push("title-maturity"); + maturitySettings.title = true; + } + if (process.env.MATURITY_FILETREE) { + bodyClasses.push("filetree-maturity"); + maturitySettings.filetree = true; + } + if (process.env.MATURITY_INTERNAL_LINKS) { + bodyClasses.push("links-maturity"); + maturitySettings.links = true; + } const meta = { env: process.env.ELEVENTY_ENV, theme: process.env.THEME, themeStyle, + bodyClasses: bodyClasses.join(" "), + maturitySettings, baseTheme: process.env.BASE_THEME || "dark", siteName: process.env.SITE_NAME_HEADER || "Digital Garden", siteBaseUrl: baseUrl, diff --git a/src/site/_includes/components/filetree.njk b/src/site/_includes/components/filetree.njk index c26d571..59d5f3c 100644 --- a/src/site/_includes/components/filetree.njk +++ b/src/site/_includes/components/filetree.njk @@ -3,8 +3,8 @@ + + + +{%if settings.dgShowLocalGraph === true %} + {%include "components/graphScript.njk"%} +{% endif %} \ No newline at end of file diff --git a/src/site/_includes/layouts/note.njk b/src/site/_includes/layouts/note.njk index fcb9cfe..7e06a59 100644 --- a/src/site/_includes/layouts/note.njk +++ b/src/site/_includes/layouts/note.njk @@ -6,6 +6,12 @@ permalink: "notes/{{ page.fileSlug | slugify }}/" {% if title %}{{ title }}{% else %}{{ page.fileSlug }}{% endif %} {%include "components/pageheader.njk"%} + {% for imp in dynamics.common.head %} + {% include imp %} + {% endfor %} + {% for imp in dynamics.notes.head %} + {% include imp %} + {% endfor %} {%include "components/notegrowthhistory.njk"%} @@ -45,6 +51,12 @@ permalink: "notes/{{ page.fileSlug | slugify }}/" {% include imp %} {% endfor %} + {% for imp in dynamics.common.beforeContent %} + {% include imp %} + {% endfor %} + {% for imp in dynamics.notes.beforeContent %} + {% include imp %} + {% endfor %} {{ content | hideDataview | link | taggify | highlight | safe}} {% for imp in dynamics.common.afterContent %} {% include imp %} diff --git a/src/site/index.njk b/src/site/index.njk index 1911472..4ea54e3 100644 --- a/src/site/index.njk +++ b/src/site/index.njk @@ -3,6 +3,12 @@ {{ noteTitle }} {%include "components/pageheader.njk"%} + {% for imp in dynamics.common.head %} + {% include imp %} + {% endfor %} + {% for imp in dynamics.index.head %} + {% include imp %} + {% endfor %} {%include "components/notegrowthhistory.njk"%} @@ -40,6 +46,12 @@ {% include imp %} {% endfor %} + {% for imp in dynamics.common.beforeContent %} + {% include imp %} + {% endfor %} + {% for imp in dynamics.index.beforeContent %} + {% include imp %} + {% endfor %} {%- for garden in collections.gardenEntry -%} {{garden.templateContent | hideDataview | link | taggify | highlight | safe }} {%- endfor -%} From a22abcc44ce0be839cdcf0bc47faa99d87727aee Mon Sep 17 00:00:00 2001 From: Utsob Roy Date: Sat, 11 Feb 2023 19:31:11 +0600 Subject: [PATCH 13/17] maturity visualization --- src/site/_includes/components/filetree.njk | 5 ++++ src/site/_includes/layouts/note.njk | 4 +++ src/site/styles/digital-garden-base.scss | 2 +- src/site/styles/style.scss | 33 ++++++++++++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/site/_includes/components/filetree.njk b/src/site/_includes/components/filetree.njk index 6c9f6d2..37e0ed4 100644 --- a/src/site/_includes/components/filetree.njk +++ b/src/site/_includes/components/filetree.njk @@ -3,8 +3,13 @@