最近一直忙于插件开发中,好久没来论坛了,今天来分享几个非常简短的 dataviewjs
代码,实现对 obsidian 库里的图片、excalidraw 白板的统一管理。
为论坛添砖加瓦
需求
-
因为库里有一些图片是属于可重复使用的素材,希望能集中的查看和使用,最好是有预览图
-
想全局的查看目前已经创建的 Excalidraw 白板,最好是有预览图
最开始想做成一个插件,但是最近一直专注在 components 插件的开发上,不想再分心投入时间在其它事情上了,于是就简单研究了下 dataviewjs,发现用很短的代码也能实现一个差不多的功能,给大家分享分享。
效果图
数量和名称筛选输入框是基于 components 插件的 dataview 组件扩展而来,并不是 dvjs 原生实现的
- 图片管理
- Excalidraw 管理
源码
- 图片管理
const app = this.app;
const files= app.vault.getAllLoadedFiles()
.filter(file => file.extension && file?.extension !== 'md') // 这里我过滤的是非 md 文件
.sort((a,b) => a.stat.ctime < b.stat.ctime) // 创建时间排序
.slice(0, 30) // 只显示 30 条数据
const data = files.map(f => {
return [f.name, dv.fileLink(f.path, true)]
})
dv.table(['file', 'image'], data)
- Excalidraw 管理
const app = this.app;
const files= app.vault.getAllLoadedFiles()
.filter(file => file.path.endsWith('excalidraw.md')) // 得到所有 excalidraw.md 结尾的文件
.slice(0, 30) // 只展示 30 条数据
const data = files.map(f => {
return [f.name, dv.fileLink(f.path, true)]
})
dv.table(['file', 'excalidraw'], data)