前几天分享过我的工作流:一个简单的工作流分享,如果你的生活没有太多要记录的东西 ,感觉说的不清楚,用图片分享一下,一看就懂。
日记中全部用无序列表记录,用标签或文件名做标记以便于后续汇总,用dataview汇总(一次书写代码,多处调用)
前几天分享过我的工作流:一个简单的工作流分享,如果你的生活没有太多要记录的东西 ,感觉说的不清楚,用图片分享一下,一看就懂。
日记中全部用无序列表记录,用标签或文件名做标记以便于后续汇总,用dataview汇总(一次书写代码,多处调用)
dataview里检索的排序和范围是什么呀 楼主还是没说清楚
dataview 代码可以分享出来么
更新:让kimi帮忙修复了安卓端排序错乱的问题,完美。
```dataviewjs
const files = app.vault.getMarkdownFiles().filter(file => file.path.includes("档案/日记")); // 文件夹路径过滤
const tag = "#日记";
let arr = files.map(async file => {
const content = await app.vault.cachedRead(file);
// 筛选出包含当前文件名和全角冒号的行
let lines = content.split("\n").filter(line =>
line.includes(dv.page(app.workspace.getActiveFile().path).file.name) &&
line.includes(':')
);
// 清理行内容
lines = lines.map(line => {
line = line.replace(/- /g, ''); // 移除特定的前缀
line = line.replace(/ /g, ' ').trim(); // 移除多余的空格并trim
return line;
});
return ["[[" + file.name.split(".")[0] + "]]", lines];
});
Promise.all(arr).then(values => {
// 过滤出有内容的项
const exists = values.filter(value => value[1].length > 0);
// 对文件名进行降序排序
const sortedExists = exists.sort((a, b) => b[0].localeCompare(a[0]));
// 使用DataviewJS创建表格展示结果
dv.table(["文件", "内容"], sortedExists.map(value => [value[0], value[1].join("\n")]));
}).catch(error => {
console.error("Error processing files: ", error);
});
已经分享代码,里面有说明
不知道能否解决排序在移动端无效的问题(pc有效)
这个dataview更适合放在[[张三]]文件中,在[[张三]]文件中,一句话代码就可以实现,这个是通用代码,放在张三、李四、王五中都可通用:
```dataviewjs
dv.table(["文件", "内容"], dv.pages('').sort(p => p.file.name,"desc").where(p => p.file.outlinks.includes(dv.current().file.link)).file.map(b=> [b.link, b.lists.where(a => String(a.outlinks).contains(dv.current().file.name)).text]))
```
这个好,不过有个问题,就是会把符合条件的条目之前的一条不符合的内容带上。
筛选出来的是
#日常 123456
[[张三]]:吃饭。
另外,不能使用文件调用,假如【【张三】】这样的文件有很多,我每次都要复制代码,其实有点麻烦,最好能像我本来那样,代码放在 【文件名复用代码】 这个文件里,在其他文件中使用 ![[文件名复用代码]] 调用最方便。
查出原因了,是因为我有些记录 不是无序列表,就会把上一条不符合条件的也带上,只要是无序列表就正常。
如果不想每次复制,可以用模板的方式建立,或者采用customJS插件统一管理(在其他文件中使用 ![[文件名复用代码]] 调用,有种把md当js来用了,那更应该直接使用js)。。假如张三的同名文件多,那在命名上应该要区分开 张三-北京 ,张三-上海这样。
使用![[文件名]] 调用有一个好处,就是一处修改全部更新,万一遇到这个需求(实际上我已经修改过很多次了),非常有用
customJS插件就是解决一处修改全部更新这个问题
看不懂插件介绍,不知道怎么用