Dataviewjs的奇技淫巧

请问下,这个代码,如果我现在打开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汇总特定小标题下的内容呀?


~小尾巴~
请问如何用dataviewjs汇总特定小标题下的内容?

请问如何调整移动端的mermaid流程图边框,减少空白部分?

请问如何获得文件夹的链接呢?

汇总特定标题下内容的方法前面好像提到过几次,基本思路是以 #+ 来正则分割文章,分割后再匹配开头是标题的段落

```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)
```
2 个赞

请问大佬,搜索出来的结果能否按照文件名折叠起来呢

折叠是折叠成什么样呢

就是您看这最后一行是 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的文件:joy:,如果想在`包起来的字符串中插入变量,可以用${}把变量括起来,像这样dv.pages(`"diary" and -"${this.file.path}"`).sort(p=>p.file.name)

报这个错不知道为什么

诶,我突然没反应过来这个变量,这个this是你从哪学来的:rofl:,它其实等同于dv,底下没有叫file的属性,也就没有path,如果想从dv里获取当前文件路径可以用dv.currentFilePath,不过更常见的方法是dv.current().file.path,或者说是this.current().file.path

好了没问题了谢谢大佬