Dataviewjs的奇技淫巧

我可以的,我只用阅诚模式和源代码模式,实时预览我不用的。

谢谢 :rose: :rose: :rose:

大佬,我之前从写日记的帖子里面拿到了一段可以汇总日记文件的指定标题下内容的代码:

let files = dv.pages(`"1000.PoinKo日寄"`)
HeaderAggregation(files,['今天做了啥🙂','每日句子🤔'])

async function HeaderAggregation(files,headers) {
    let d = await Promise.all(files.map(async function(file) {
        let contents = []
        for(let i in headers) {
            let content = await app.vault.readRaw(file.file.path)
            content = content.split(/^#+ /m).find(p=>p.startsWith(headers[i]))
            contents.push(content?.slice(headers[i].length)??'')
        }
        if(contents.every(p=>p.replace(/\s+/,'')=='')) return
        return [file.file.link,...contents]
    }))
    d=d.filter(p=>p)
    dv.table(['name',...headers],d).sort(p=>p.file.name,"desc")
}

但是它只能索引出文本,图片不能渲染出来:
image

问题ken’en可能出现在正则筛选上,但是个人水平实在有限,改了很久也没有结果,大佬能有空帮忙看看吗 :smiling_face_with_tear:

图片,好像需要用 然后就能生成出来。

<img src="你的图片路径">

大佬,我想问一下,我现在得到了一个图片,这个图片是我放在库里面的,![[]]格式,请问怎么得到这个图片的相对路径。

是要用 a.jpg 变成库里的路径(像这样 c/b/a.jpg)还是真的相对路径(这样的 …/…/a.jpg)

是这种 c/b/a.jpg 格式

那就这样 app.vault.getFiles().find(p=>p.name=='a.jpg')?.path,不过有重复名称(包括后缀名)的图片可能会找错,app.vault.getFiles().filter(p=>p.name=='a.jpg') 找到所有 a.jpg

不不,我的意思是我在一个文件B里

图片:: ![[图片.png]]

然后我用 dataviewjs 查询 B 文件中的这个图片的相对路径,用 dataview 可以 meta(图片).path 来获取。

dv.current().图片.path

1 个赞

用dataview的行内方式显示:

=map(filter(this.file.outlinks,(f)=>meta(f).embed),(f)=>meta(f).path)

显示本文件中所有嵌入链接(![[xx]])的文件路径

image

@lazyloong 大佬,这种方案目前在新版本上好像实行不通了,在V1.4.16和V1.5.3中都无法实现,而在旧版V0.14.6中可以(虽然数据多时,缓慢且可能崩溃,大部分时候是可以的),请问新版本中不行这是由于ob更新导致的吗?会有什么解决方案吗?

感谢提醒,但不一定是图片,这种方式可以汇总,#某级标题的内容
举例:
二级标题 ##摘要,如有多个文件,可以通过这种方式将汇总展示这些文件的摘要内容:
文件a ##摘要 内容
文件b ##摘要 内容
文件c ##摘要 内容
@PlayerMiller

但是之前我还想汇总基于block引用的内容,这个需要渲染完成,之前大佬说似乎是ob底层不支持,不知道新版本能否实现?(或者需要某种“奇技淫巧”)

DataviewJS 的翻页与随机 实例 1 有汇总含【** 和 **】的块的示例,如果要显示图片可能得加上 DataviewJS 汇总全文及特定标题下内容并解决图片显示痛点 中的代码调整一下。

文档嵌入如 ![[文档]](中间为 MD 文档)应该还是不支持。

1 个赞

感谢解答,确实有效,相关讨论我将回复在对应贴中。

效果好棒!请问大神这个代码可以分享吗?

请问大佬,怎么调取日记内的行内元数据生成折线图,比如2024-01-28这天的日记里,收入::200,消费::30,阅读::10,能不能把一周内七天日记的这三个数据变成下面这个代码及其示例展现的这个折线图呢?同时包含三条线

如该图右上角的折线图:

type: line
labels: [Monday,Tuesday,Wednesday,Thursday,Friday]
series:
 - title: Title 1
   data: [1,2,3,4,5]
 - title: Title 2
   data: [5,4,3,2,1]
 - title: Title 3
   data: [8,2,5,-1,4]

书签是可以添加到分组的,能不能把书签按照所属的分组显示。