Digital Garden
目录

    Obsidian 插件:Dataview

    示例一 最近 30 天创建的文件

    Table file.ctime as "创建日期"
    Where date(today) - file.ctime <= dur(30 day)
    Sort file.ctime desc
    

    把满足今天的日期减去创建文件的日期小于等于三天的文件,按照倒序排列,以表格的形式展示满足条件的文件的创建日期。

    示例二 时间计算

    今天已经过了 =round((date(now)-date(today)).hours,2) 小时,占比 =round((date(now)-date(today)).seconds/dur(24 hours).seconds*100,2)+"%";还剩 =round((date(tomorrow)-date(now)).hours,2) 小时,剩余:=round((date(tomorrow)-date(now)).seconds/dur(24 hours).seconds*100,2)+"%";

    本周已经过了 =round((date(now)-date(sow)).hours,2) 小时,占比 =round((date(now)-date(sow)).second/dur(7 d).seconds*100,2)+"%";还剩 =round((date(eow)-date(now)).day,2) 天,也就是 =round((date(eow)-date(now)).hours,2) 小时,剩余 =round((date(eow)-date(now)).second/dur(7 d).seconds*100,2)+"%";
    =date(today).month 月已经过了 =round((date(now)-date(som)).hours,2) 小时,占比 =round((date(now)-date(som)).second/(date(eom)-date(som)).seconds*100,2)+"%";还剩 =round((date(eom)-date(now)).day,2) 天,也就是 =round((date(eom)-date(now)).hours,2) 小时,剩余 =round((date(eom)-date(now)).second/(date(eom)-date(som)).seconds*100,2)+"%";

    今年已经过了 =round((date(now)-date(soy)).day,2) 天,占比 =round((date(now)-date(soy)).second/dur(365 d).seconds*100,2)+"%";还剩 =round((date(eoy)-date(now)).day,2) 天,也就是 =round((date(eoy)-date(now)).hours,2) 小时,剩余:=round((date(eoy)-date(now)).second/dur(365 d).seconds*100,2)+"%";

    dataviewjs
    // 最高文件夹级别tag列表
    for (let group of dv.pages("").filter(p => p.file.folder != "").groupBy(p => p.file.folder.split("/")[0])) {
      dv.paragraph(`## ${group.key}`);
      dv.paragraph(
        dv.pages(`"${group.key}"`).file.tags.distinct().map(t => {return `[${t}](${t})`}).array().sort().join(" | "));
    }
    
    dataviewjs
    // 主页最近创建文件示例
    let now = moment();
    dv.list(
    	dv.pages()
    		.filter(p => p["dg-publish"] === true) // 添加这一行来检查 dg-publish 元数据
    		.sort(p => p.file.cday, 'desc') // 按文件创建日期降序排列
    		.filter(p => moment(Number(p.file.cday)).isBetween(now.clone().subtract(7, 'days'), now, null, '[]')) // 筛选为最近七天
    		.map(p => moment(Number(p.file.cday)).format('yyyy-MM-DD') + ' — ' + p.file.link) // 设置输出格式
    		.limit(5)
    )
    

    在 Obsidian 的使用过程中,Dataview 的表格视图如何只显示二级子标签

    在 Obsidian 中使用 Dataview 插件创建表格视图并只显示二级子标签,可以通过一些自定义查询来实现。假设你在笔记中使用了多级标签(如 #标签/子标签),你可以使用 Dataview 的 where 语句过滤掉不需要的内容,仅保留二级子标签。

    以下是一个 dataview 示例查询语句:

    table file.name as "文件名", tags as "标签" from "你的文件夹路径" where contains(tags, "/") and !contains(tags, "/") == false
    
    1. table file.name as "文件名", tags as "标签":这是表格视图的定义,其中列出文件名和标签。
    2. from "你的文件夹路径":指定要查询的文件夹路径。
    3. where contains(tags, "/") and !contains(tags, "/") == false:这是过滤条件,确保只显示包含 / 的标签,也就是有子标签的情况。你可以根据需要进一步调整这个条件,以更精确地匹配特定的二级子标签。

    你可能还需要根据具体的标签结构对查询进行调整。如果你想显示特定的二级子标签,可以修改查询以更精确地匹配。

    PKMer_Obsidian 插件:Dataview

    Dataview 示例文件库

    Dataview 官方文档

    DataviewJS 小白手册

    Dataviewjs的奇技淫巧