迷途花海的驴
2023 年7 月 9 日 06:03
270
调试完毕,现在结果可以显示![[文件名]]类形和网络链接类型的图片,![](相对路径}类行/绝对路径类型的,有需求可以自己完善
const term = "测试"
const files = dv.pages()
const b = files.map(async function(p){
var x = await app.vault.readRaw(p.file.path);
x = x.split("\n## ").filter(p=>p.slice(0,term.length)==term)[0];
// 使用replace方法,把![[]]或者![[ ]]替换成用<img>标签包裹的字符串
x = x.replace(/!\[\[(.*?)\]\]/g, function(match, p1) { return "<img src=\""+app.vault.adapter.basePath+"/"+p1+"\">"});
dv.header(3,p.file.link);
dv.paragraph(x.slice(term.length));
})
结果
本来都打算跑去用图床了,但是平板日常没网
2 个赞
确实,这是个好办法,dataview对嵌入总有些bug
迷途花海的驴
2023 年7 月 12 日 08:37
274
佬,请问如何对日期格式标准化(YYYY-MM-DD) 例如
对当前时间转换用moment().subtract(1,‘day’).format(‘YYYY-MM-DD’)
那对文档创建时期dv.current().file.cday如何转换呢,加.format(‘YYYY-MM-DD’)不太行
我比较喜欢用 moment(dv.current().file.cday.ts).format('YYYY-MM-DD')
leeson
2023 年7 月 12 日 12:31
276
以下代码能够汇总全库的标签并统计数量。
-```dataviewjs
dv.paragraph(
dv.pages("").file.etags.distinct()
.sort(t => dv.pages(t).length , 'desc')
.map(
t => {
return `[${t}](${t})`+"("+dv.pages(t).length+")"
}
).array().join(" ")
)
-```
但是,如果把file.etags替代为aliases,会提示错误。怎么修改才能汇总全库的alias并统计数量呢?
为什么要汇总全库的alias呢,难道有大量的笔记是同样的别名吗
leeson
2023 年7 月 12 日 13:02
278
谢谢提醒。我在很多笔记里都设置了相同的别名,把别名当作主题词了,得改。
那么,如果很多笔记里都设置了行内字段 “主题词”,笔记A是“主题词:: 1,2,3”,笔记B是“主题词:: 2,3,4,5”…,那么怎么统计全库有多少主题词以及各自频次呢?
这样就可以了
```dataviewjs
let c = dv.pages("").主题词.groupBy(p=>p)
dv.paragraph(`主题词有${c.length}个`)
dv.paragraph(c.map(p=>`- ${p.key}(${p.rows.length})`).join('\n'))
```
leeson
2023 年7 月 12 日 13:55
280
谢谢,完美实现!太牛啦!这样就可以建立自己的动态“主题词表”,有希望以主题词为线索建立知识管理系统了。
我加上了链接,可以直接打开以该主题词命名的笔记。
let c = dv.pages("").主题词.groupBy(p=>p)
dv.paragraph(`主题词有${c.length}个`)
dv.paragraph(c.map(p=>`- [${p.key}](${p.key})(${p.rows.length})`).join('\n'))
实现效果如下:
又有了新的问题:
dataview将"[主题词]"和"主题词"视作不同的对象,该怎么处理呢?
能不能实现这个功能,在点击每个主题词的"(数量)"时,激活针对该主题词的搜索?
1 个赞
ZSEA
(1 1)
2023 年7 月 13 日 03:54
281
大佬,求助,麻烦看一下我发的那个求助,能不能麻烦帮帮忙
迷途花海的驴
2023 年7 月 23 日 02:57
283
大佬, 我想用您最初发贴时的案例(就是那个使用chart插件创建每日新建文档数量的折线图的案例), 做一个折线图: 来统计每天完成题目的数量(题目数量会在日记中给出)
例如:
想问一下提取数字和赋值如何来实现
如果是元数据直接用dataview拿出来就可以了,如果只是普通的文本就只能拿正则表达式硬拆了
迷途花海的驴
2023 年7 月 23 日 05:47
285
迷途花海的驴
2023 年7 月 23 日 07:51
287
我记得/ /
的正则表达式好像不能传入变量
function getBlockContent(str, title){
return str.match(new RegExp(`- \\*\\*${title}\\*\\*:(\\d\\d)个`,'g')).map(val => val.match(/\d\d/)[0])
}
let content = await app.vault.readRaw(dv.current().file.path);
dv.list(getBlockContent(content , "题目量"))
1 个赞
迷途花海的驴
2023 年7 月 23 日 08:19
289
多个条件之间使用 and 或者 or 进行逻辑组合