I’m trying to create a hierarchical outline of my notes using Dataviewjs (essentially, I want a representation of a folgezettel sequence using a file property instead of embedding the folgezettel label in the filename). A similar question went unanswered before.
The main problem I’m running into is that I don’t know how to indent a bullet point. Here’s a first attempt:
const pages = dv.pages('"notes"').sort(b=>b.sequence)
for (let page of pages){
let seq = page.sequence;
const regex = /[\d]+|[a-z]+/g;
let level = seq.match(regex)
let indent = level.length
let pre = ""
if (indent == 1){
pre="-"
}
else{
for (var i = 0; i < indent; i++){
pre+="\t"
}
pre = pre + "-"
}
dv.el("p",pre+" "+seq + " " + dv.fileLink(page.file.path))
}
However, this leaves many lines indented so that they appear as code in the editor window:
My second attempt basically achieves the look I’m going for, but it has no affordances of outlines (e.g., folding)
const pages = dv.pages('"notes"').sort(b=>b.sequence)
for (let page of pages){
let seq = page.sequence;
const regex = /[\d]+|[a-z]+/g;
let level = seq.match(regex)
let indent = level.length
let pre = ""
for (var i = 0; i < indent; i++){
pre += "--"
}
dv.el("p",pre+" "+seq + " " + dv.fileLink(page.file.path))
}
So I forgot that you could use Templater to basically “print” a Dataview result into a file. This achieves what I want, it just needs to be re-run manually (or via a trigger):