Terry_C
(Terry)
2022 年10 月 19 日 13:09
1
起因
时间线是人类最基础的认知线索之一。从小学学写记叙文开始,无论是四要素还是六要素,时间都是放在第一位。因此时间线是构建我们认知和记忆很重要的一种方式。
最近看到论坛里一些关于记录时间的帖子,觉得很有趣。也唤起了我曾对一直有做时间记录的人的敬佩之情。
这几天以时间线展开联想,想将我的闪念笔记结合时间线管理起来。除了可以按日,按周回顾闪念笔记之外,将来还可以通过时间线来检索闪念笔记。
设想未来的场景
记录了多年后,突然想起 2~3 年前某一天记过一条很有趣的闪念笔记,但现在完全没有印象,连关键字都想不起,只记得很有趣。唯一线索就是同一个时间段,大概前后 1 个月,记过一条跟花有关的笔记。
检索思路 :通过“花”字去找所有的闪念笔记,再定位含“花”字闪念笔记前后一个月的 weekly notes,找出来的 weekly notes 再一个个浏览查找。
Workflow 介绍:
以 list 的方式将闪念笔记添加到 Daily notes 的下的 Fleeting notes 标题下
为闪念笔记自动补充时间并高亮,如:== 11:30==
Weekly notes 用 Dataview 展示一周所有闪念笔记,含多级时间线:日期,星期,时间
Workflow 草图
QuickAdd 插件 capture format
- ==⏰{{DATE: HH: mm}}== {{MVALUE}}
日志文件
周志文件
未来用 Dataview 检索
先检索带“花”字的闪念笔记,并且通过 dataview 语法在后面列出前后 2 周的 weekly notes 链接
```dataview
table
dateformat(date, "ccc") as 星期,
L.text as 闪念笔记,
L.link as 链接,
"[[" + dateformat(file.link.date - dur(2 w), "yyyy-'W'WW") + "]]" as 前两周,
"[[" + dateformat(file.link.date - dur(1 w), "yyyy-'W'WW") + "]]" as 前一周,
"[[" + dateformat(file.link.date, "yyyy-'W'WW") + "]]" as 当周,
"[[" + dateformat(file.link.date + dur(1 w), "yyyy-'W'WW") + "]]" as 后一周,
"[[" + dateformat(file.link.date + dur(2 w), "yyyy-'W'WW") + "]]" as 后两周
from "Daily notes"
flatten file.lists as L
where
!L.parent and
meta(L.link).subpath = "Fleeting notes" and
contains(L.text, "花")
```
筛选出来为数不多的带“花”字的笔记,再逐个点击 weekly notes 浏览查找要找的闪念笔记
10 个赞
Terry_C
(Terry)
2022 年10 月 20 日 01:05
3
---
week: 2022-W42
---
> <<[[2022-W41]]>>|<<[[2022-W43]]>>
## Fleeting notes of `=this.week`
```dataview
table
dateformat(date, "ccc") as 星期,
L.text as 闪念笔记,
L.link as 链接
from "Daily notes"
flatten file.lists as L
where
!L.parent and
meta(L.link).subpath = "Fleeting notes" and
dateformat(date(file.link), "yyyy-'W'WW") = this.week
```
1 个赞
Zeno
2022 年10 月 20 日 13:22
4
用插件memos也可以达到类似的效果。dataview的用法学到了,一直以为DQL只能用于简单查询
Terry_C
(Terry)
2022 年10 月 21 日 01:32
5
在 Dataview 强大和灵活的检索能力加持下,Obsidian 笔记库真正成为笔记数据库。通过片言只字,甚至是表情符号,都能快速聚合提取。值得花点时间深入学习。
Terry_C
(Terry)
2022 年10 月 22 日 13:59
6
添加 block ID 产生更精准的链接
为了在 weekly note 中更精准地指向 daily note 的闪念笔记行(原来只链接指向标题下),改为通过自定义 block ID 来实现
效果
QuickAdd capture format
- ==⏰{{DATE:HH:mm}}== {{MVALUE}} ^FL-{{DATE:HHmmss}}
weekly note 中 Dataview 代码微调
week: 2022-W42
---
> <<[[2022-W41]]>>|<<[[2022-W43]]>>
## Fleeting notes of `=this.week`
```dataview
table
dateformat(date, "ccc") as 星期,
L.text as 闪念笔记,
L.link as 链接
from "Daily notes"
flatten file.lists as L
where
!L.parent and
meta(L.section).subpath = "Fleeting notes" and
dateformat(date(file.link), "yyyy-'W'WW") = this.week
```
4 个赞
大佬,请问为啥我这个会将不是这一周的内容也汇总过来呢
而且内容全都显示在模板里了
Terry_C
(Terry)
2024 年6 月 3 日 06:36
8
不知道你的日志文件夹路径,日志格式,周志元数据,闪念笔记所在标题和是否有用blockId等信息,只能盲猜大概率是下面的原因:
如果你的闪念笔记无序列表有用blockId的话,where 里meta(L.link).subpath
就要改成 meta(L.section).subpath
周志的 frontmatter 是否有 week 字段,如果没有的话,where 里的 this.week
就要改成this.file.name
Terry_C:
meta(L.section)
大佬,2我试了没效果,添加了week也是乱的,干脆手动筛选了,现在有一个问题,就是能否给链接自动插一个别名,在表格上显示短一点
Terry_C
(Terry)
2024 年6 月 3 日 10:13
11
从你的截图来看,你的日志文件名不是常用的 YYYY-MM-DD。
你将where最后一句改成 dateformat(file.day, "yyyy-'W'WW") = this.week
看行不行吧。file.day 不确定能不能识别出你日志文件名中的日期。如果不行就要写复杂的逻辑来将你的日志文件名转换成标准日期格式,再转换成周来比较。
建议日志以最通用的方式命名。然后根据需要用 dataview 插件在输出时转换格式。
关于如何将链接缩短的问题,blockLink我不清楚如何加别名。不过有个 short links 的插件可以让链接不显示文件名部分,只保留标题或者blockId。但这个插件在1.0.2版本以后,在 dataview table里就失效。我自己就一直用这个插件的1.0.2版本,效果如下。下载链接 1.0.2
mopu
(mopu)
2024 年6 月 3 日 18:34
13
太感谢了,先学了quick app 再学这个这个折腾了两天终于成功
好的,谢谢大佬,请问您这一栏是怎么做到的呢
我这个星期这都是空的,不管使用您的代码还是直接填week,
Terry_C
(Terry)
2024 年6 月 5 日 07:41
15
就是用 dataview 的 dateformat函数 ,link函数 ,date函数 将日期转换成需要的格式,再拼起来。系统学习 dataview 可以看 dataview documentation
截图的【周-星期】字段的代码:
link(dateformat(date(file.name), "yyyy-'W'WW")) + " " + dateformat(date(file.name), "ccc") as 周-星期,
不好意思,还有最后一个问题,
这个源代码是啥呢,下面的复制过去好像不太行
Terry_C
(Terry)
2024 年6 月 6 日 05:31
18
这个是在周志模板里的。使用模板创建周志,算出目标周的前一周和后一周
周志模板:
> <<[[{{date-1w:yyyy-[W]ww}}]]>>|<<[[{{date+1w:yyyy-[W]ww}}]]>>
大佬,这个代码在没有blockid是是正常的,存在blockid就筛选不出来了,该怎么改呢,gpt改了半天也没效果
```dataview
table
L.text as 待办事项,
L.link as 链接 from "日记"
flatten file.lists as L
where !L.parent and
meta(L.link).subpath = "Todo" and
any(this.file.frontmatter.aliases, (alias) => contains(L.text, alias))
Terry_C
(Terry)
2024 年6 月 6 日 11:44
20
unscrew:
meta(L.link).subpath
meta(L.link).subpath
改为 meta(L.section).subpath
试试