Obsidian 插件篇 -DataviewJS 基础知识
本篇文章主要介绍一下 DataviewJS 基础知识,便于后面进行脚本测试编写。原文地址:Obsidian插件篇-DataviewJS基础知识。
检索
dataviewjs
//根据标签或者文件夹返回页面参数
dv.pages("#books") //返回所有带有标签 books 的页面
dv.pages('"folder"') //返回所有在 folder 文件夹的页面
dv.pages("#yes or -#no") //返回所有带有标签 yes 或者没有标签 no 的页面
dv.pages("") //返回所有页面
dataviewjs
//返回文件路径作为参数
dv.pagePaths("#books") //返回所有带有标签 books 的页面路径
dv.pagePaths('"folder"') //返回所有在 folder 文件夹的页面路径
dv.pagePaths("#yes or -#no") //返回所有带有标签 yes 或者没有标签 no 的页面路径
dataviewjs
//用于返回单个页面作为参数
dv.page("Index") //返回名称为 Index 的页面
渲染
dataviewjs
dv.header(level, text) //用于渲染特定的文本为标题,其中 level 为层级,text 为文本。
dv.paragraph(text) //用于渲染为段落,你可以理解成普通文本。
列表
dataviewjs
dv.list([1, 2, 3]) //生成一个1,2,3的列表
dv.list(dv.pages().file.name) //生成所有文件的文件名列表
dv.list(dv.pages().file.link) //生成所有文件的文件链接列表,即双链
dv.list(dv.pages("").file.tags.distinct()) //生成所有标签的列表
dv.list(dv.pages("#book").where(p => p.rating > 7)) //生成在标签 book 内所有评分大于 7 的书本列表
任务列表
dataviewjs
//默认为 dv.taskList(tasks, groupByFile),当 groupByFile 为 True 或者 1 的时候,会按照文件名分组。
// 从所有带有标签 project 的页面中获取所有的未完成任务生成列表
dv.taskList(dv.pages("#project").file.tasks
.where(t => !t.completed))
// 从所有带有标签 project 的页面中获取所有"#tag"字符的任务生成列表
dv.taskList(dv.pages("#project").file.tasks
.where(t => t.text.includes("#tag")))
// 将所有未完成且带有exam字符串的任务按文件分组列出
dv.taskList(
dv.pages("").file.tasks
.where(t => t.text.includes("exam") && !t.completed),1)
表格
dataviewjs
//默认为 dv.table(headers, elements) ,提供表头和元素内容即可生成对应的表格。
// 根据标签 book 对应的页面的 YAML 生成一个简单的表格,其中 map 为对应的内容所对应的表头,按顺序填入即可。
dv.table(["File", "Genre", "Time Read", "Rating"], dv.pages("#book")
.sort(b => b.rating)
.map(b => [b.file.link, b.genre, b["time-read"], b.rating]))