Things I have tried
My apologies for anyone who saw my first post, the formatting was impossible to follow, and complete hodge podge and i’ve removed that post and fixed it with this one. Thanks for anyone who can help!
I’ve tried changing all the settings for turning off and on the javascript settings for inline and block within the dataview plugin. I’ve also tried updating - i did find an update and installed it. I tried turning off all other plugins, so see if another one was causing the issue. I’ve tried switching between reading view, source view, and live preview (i mostly work in live preview) but none of these settings are changing what i’m seeing.
What I’m trying to do
I have several Dataviewjs code blocks throughout my notes, and they were working fine today until suddenly they stopped working, like the graphs either don’t throw an error and completely disappear, or they throw an error I can’t make sense of.
I remember I was updating my yaml sections in several notes because I accidentally put the three ticks and “yaml” at the top of every file and was wondering why my aliases weren’t working. So i was removing those from my templates and existing notes one by one to get the aliases working again when I noticed my dataviewjs blocks were broken.
Here’s one example of what’s going wrong:
Within my “people” notes, I have dataviewjs blocks that are pulling in all the meetings that i’ve had with that person, which I got from @dannb here Dann Berg's People Template for Obsidian. Uses Dataview & Templater plugins. Should be saved as a Markdown file in Obsidian. Full blog post coming soon on dannb.org · GitHub, and had to rejig it a bit to get it to work the way I was hoping.
Here is my dataviewjs block:
await dv.view("meta/views/meetings_for_person", {filename: dv.current().file.name});
Here’s what’s happening in Live Preview:
It’s just not showing up.
Here’s another example of what’s going wrong:
I also have another section of dataviewjs code blocks that pulls in interesting details I’ve written during meetings using FirstnameLastname:: syntax, which used to be working earlier today. I got this from this forum topic: Aggregating personal details from meeting notes into Person pages
It used to be working flawlessly, and here is the dataviewjs code block:
const personString = dv.current().file.name.split(" ").join("");
dv.list(dv.pages("").where(p => p[personString])[personString]);
and this in Live Preview mode:
Here’s a third example of what’s going wrong:
What’s weird is not ALL of my dataview blocks are broken, as this one is working fine:
In Source Mode:
const today = dv.func.date('today');
const birthday = dv.current().birthday;
function difference(d1, d2) {
var m = moment(d1);
var years = m.diff(d2, 'years');
m.add(-years, 'years');
var months = m.diff(d2, 'months');
m.add(-months, 'months');
var days = m.diff(d2, 'days');
return {years: years, months: months, days: days};
}
y = difference(Date.parse(today), Date.parse(birthday));
dv.span(y)
In Preview Mode:
But interestingly, not in Reading Mode:
Here’s a fourth example that’s going wrong:
The last thing that’s not working, is my dataview block in my Meetings Notes.
it lists details of the attendees, pulled from their linked People Note. I know SOME of it is working, because when I remove all the attendees from the attendees:: area of the note, it correctly displays “No people”.
But when I link two names like attendees:: [[This Person]], [[That Person]] (which used to work), i get NOTHING in live preview or reading mode, it just looks invisible.
I would post more images, but as a new user here i’m limited to 5 embedded images.
At this point, I’m really not sure why it suddenly stopped working. If it helps, here are my two templates I used for People, and Meetings:
My People Template:
<%*
let title = tp.file.title
if (title.startsWith("Untitled")) {
title = await tp.system.prompt("Person's Name");
await tp.file.rename(`${title}`);
}
await tp.file.move("/people/" + `${title}`);
tR += "---"
%>
created: <% tp.file.creation_date() %>
aliases: []
---
contact-info:
- company: <% tp.file.cursor() %>
- address:
- title:
- phone:
- email:
- birthday:
- deathday:
age::
\```dataviewjs
const today = dv.func.date('today');
const birthday = dv.current().birthday;
function difference(d1, d2) {
var m = moment(d1);
var years = m.diff(d2, 'years');
m.add(-years, 'years');
var months = m.diff(d2, 'months');
m.add(-months, 'months');
var days = m.diff(d2, 'days');
return {years: years, months: months, days: days};
}
y = difference(Date.parse(today), Date.parse(birthday));
dv.span(y)
\```
---
# <%* tR += `${title}` %>
---
date:: [[<% tp.date.now("YYYY-MM-DD") %>]]
type:: #person
tags::
links:: [[🙍♂️People MOC]]
---
## Notes
-
## Personal Notes:
\```dataviewjs
const personString = dv.current().file.name.split(" ").join("");
dv.list(dv.pages("").where(p => p[personString])[personString])
\```
---
## Meetings
\```dataviewjs
await dv.view("meta/views/meetings_for_person", {filename: dv.current().file.name})
\```
___
## Interesting details:
Notable Details::
Hobbies::
Love Language::
___
## Relations
Spouse::
Children::
Colleagues::
---
This page was last edited on: **`$= dv.current().file.mtime`**
My Meetings Template:
<%*
let title = tp.file.title
if (title.startsWith("Untitled")) {
title = await tp.system.prompt("Meeting Description");
await tp.file.rename(`${title}`);
}
await tp.file.move("/notes/meetings/" + `${title}`);
tR += "---"
%>
created: <% tp.file.creation_date() %>
aliases: []
---
# <%* tR += tp.date.now("YYYY-MM-DD") + " " + `${title}` %>
---
date:: [[<% tp.date.now("YYYY-MM-DD") %>]]
type:: #note/meeting
attendees:: <% tp.file.cursor() %>
summary::
tags::
links:: [[🗣 Meetings MOC]],
---
## agenda / questions
-
## notes / minutes
-
## action items (put into TickTick)
- [ ]
## meeting recording link
## attendee details:
\```dataviewjs
let facts = ["Children", "Spouse", "Notable Details", "Love Language", "Hobbies"]
displayAttendeeFacts(facts)
function displayAttendeeFacts(facts) {
let people = getLinkedPeople()
let tableColumns = ["person"].concat(facts)
let tableDataFunction = (page) => {
let personColumn = [dv.fileLink(page.file.name)]
let factColumns = facts.map(fact => page[fact])
return personColumn.concat(factColumns)
}
if (people.length > 0) {
dv.table(tableColumns, people.map(tableDataFunction).sort(page => page.file))
} else {
dv.paragraph("No people.")
}
}
function getLinkedPeople() {
// Get filenames from outgoing links
let outlinks = dv.current().file.outlinks || []
let attendees = outlinks.map((link) => link.path.match(/.*\/(.*)\.md/)[1])
// Retrieve 'people notes' with the same names as outgoing links
let linkedPeople = [];
if (attendees.length > 0) {
linkedPeople = dv.pages('#person')
.filter(page => {
let fileName = page.file.name
let isNotATemplate = !fileName.contains("Template")
let isAnAttendee = attendees.includes(fileName)
return isNotATemplate && isAnAttendee
})
}
return linkedPeople
}
\```
---
This page was last edited on: **`$= dv.current().file.mtime`**
i’ve tried to be as thorough as i can so that someone has the information to understand what’s going on, sorry if I was incredibly verbose haha.