I’m fiddling with implementing JD in Obsidian for my personal and academic duties. I chose the “one note per ID” strategy, because it looks the easiest. However, I realised that I would still like to have an index file, so that it is quicker to scan through the IDs on mobile.
After a bit of online search, I implemented a dynamic index file via the Dataview plugin (with dataviewjs enabled).
Very cool. Next we need a clean-up script for when I just slam a note in with just the xx.yy identifier and don’t take the time to do the front matter.
I do something very similar, although I make notes for areas and categories as well. It gives me a nice place to describe the area/category, its scope etc. I also use data view inside these to list its categories (for areas) or IDs (for categories).
I’ve uploaded a sample to Github. It looks like this:
Here is my dataviewjs version, it’s based on Life Admin version with notes for are/categories/ids and I added #type/index tag to all of them.
Script also adds highlighting to header ids.
function formatItem(i) {
let typeMark = "";
if (i.file.name.indexOf('■') > -1) {
return `==${i.file.link}==`;
}
return `${i.file.link}`;
}
let pages = dv.pages("#type/index").sort(p => p.file.name, "asc");
const by_area = pages.groupBy((p) => p.file.folder.split('/')[0])
for (let area of by_area) {
dv.header(3, area.key);
const by_category = area.rows.groupBy((p) => p.file.folder.split('/')[1]);
for (let category of by_category) {
const categoryRoot = dv.el("ul", "");
const categoryRootLi = dv.el("li", `[[${category.key}]]`, {container: categoryRoot});
const idRoot = dv.el("ul", "", {container: categoryRootLi});
for (let id of category.rows) {
dv.el("li", formatItem(id), {container: idRoot});
}
}
}
I have used and abused Obsidian for a long time, and really gone deep on dataview and todo systems. While I really like what they can achieve, it has always sat poorly with me that the file was now no longer usable outside of Obsidian. @ellane mentioned the Waypoint plugin in another thread here, and I think it is a great fit for this task. It does not allow for as nice formatting as dataview does, but it makes the file readable anywhere, which i find a huge plus.
I would add, I have not tested this on a large Obsidian vault, so I don’t know if there is a performance cost at some point, but given that it only updates on file management events (create, delete, move), I don’t think it will be noticeable.