请问下,这个代码,如果我现在打开5号的日记,6号的未完成事项,是不是会被抓出来?
这个是基于今天的时间,还是说你想跟笔记的时间比较
跟笔记的时间比较,比如笔记是5号,就跟5号比,6号就跟6号比。
```dataviewjs
dv.taskList(dv.pages().file.tasks.filter(p=>p.path.split('/').slice(-1)!=dv.current().file.name&&!p.completed).sort(p=>p.path))
```
非常感谢,应该可以用了。
汇总特定标题下内容的方法前面好像提到过几次,基本思路是以 #+
来正则分割文章,分割后再匹配开头是标题的段落
```dataviewjs
const term = "日常记录"
const files = dv.pages(`"600-日常" and #日记`).sort(p=>p.file.name)
files.map(async function(p){
let x = await app.vault.readRaw(p.file.path);
x = x.split(/^#+ /m).find(p=>p.startsWith(term));
dv.header(2,p.file.name);
dv.paragraph(x.split('\n').slice(1).join('\n'))
})
```
请问如果是想要把这个以dv.table的方式展现则应该怎么写呢
以dv.table方式展现是什么意思呢,是指标题当表头,内容放表格吗
是的,类似
文件名称 | 标题 |
---|---|
文件名 | 段落 |
这种的
这样啊,这种的表格展示正好之前有Johnny学OB的群友问过
```dataviewjs
const term = "日常记录"
const files = dv.pages(`"600-日常" and #日记`).sort(p=>p.file.name)
let a = []
for(let i of files) {
let x = await app.vault.readRaw(i.file.path);
x = x.split(/^#+ /m).find(p=>p.startsWith(term));
a.push([i.file.name, x.split('\n').slice(1).join('\n')])
}
dv.table(['文件名', term],a)
```
请问大佬,搜索出来的结果能否按照文件名折叠起来呢
折叠是折叠成什么样呢
就是您看这最后一行是 dv.paragraph("## "+p.file.name+…,这个filename被渲染成二级标题,但是仅仅是显示为二级标题样式,不能像普通的二级标题那样折叠下面的内容
抱歉这么晚才回复,这个问题似乎没办法解决,折叠功能似乎与dataviewjs不兼容,甚至正常标题会把dv同级标题一起折叠
谢谢大佬,目前我想到了一个办法,这个渲染成折叠的callout标注框可以间接地实现折叠
还有一个问题,这一句const files = dv.pages(#aaaaa
).sort(p=>p.file.name,‘desc’),我想搜索一个文件夹里的内容,但是想排除掉某些文件(已知文件名),要怎么写呢
准确的说是想排除当前文件,我写成const files = dv.pages("diary" and -"this.file.path"
).sort(p=>p.file.name)不能当前文件不知道为什么不行,但是我把当前文件的完整路径写进去就行
dv.pages(`"diary" and -"this.file.path"`).sort(p=>p.file.name)
,这样是不行的,你这相当于排除一个名叫this.file.path
的文件,如果想在`
包起来的字符串中插入变量,可以用${}
把变量括起来,像这样dv.pages(`"diary" and -"${this.file.path}"`).sort(p=>p.file.name)
诶,我突然没反应过来这个变量,这个this是你从哪学来的,它其实等同于dv,底下没有叫file的属性,也就没有path,如果想从dv里获取当前文件路径可以用dv.currentFilePath
,不过更常见的方法是dv.current().file.path
,或者说是this.current().file.path
好了没问题了谢谢大佬