我是如何像Obsidian Publish那样在本地集成Graph View的

我是如何像Obsidian Publish那样在本地集成Graph View的

💡 原文中文,约5900字,阅读约需15分钟。
📝

内容提要

这篇文章介绍了作者如何通过脚本在本地集成Obsidian的Graph View视图。作者解释了设计思路和解决问题的方法,并计划将该功能加入到personal assistant插件中。文章提供了详细的代码和操作步骤。

🔎

延伸解读

实现原理:利用原生命令与DOM操作

文章的核心思路是借助Obsidian内置的local graph命令生成canvas图形,再通过DOM操作将其插入当前笔记的workspace leaf中。具体步骤包括执行命令、将生成的视图移动到独立窗口、定位canvas元素并插入到笔记的view-header下方。这种方法绕过了原生不支持的限制,但依赖于Obsidian内部结构,可能随版本更新失效。

关键问题与临时解决方案

实现过程中遇到多个问题:canvas占用空间过大,通过设置宽高和居中样式解决;tab切换时出现空白残留,通过unlink tab和自定义样式处理;重复插入和配置菜单默认打开,则通过监听file-open事件和模拟点击来缓解。这些方案虽能工作,但属于临时修补,可能影响稳定性。

当前局限与后续计划

现有实现存在明显缺陷:dataviewjs触发时机滞后,导致canvas插入延迟;electron窗口接口问题造成视图切换显示异常;偶尔引发Obsidian闪退。作者计划将该功能集成到personal assistant插件中,以实现自动化开关和配置,从而解决这些不足。

❓

Q&A

如何在Obsidian中集成Graph View视图?

可以通过脚本将canvas元素插入到当前笔记的workspace leaf中,使用local graph命令绘制当前笔记的关联图谱。

Obsidian Publish和Obsidian App在Graph View支持上有什么区别?

Obsidian Publish支持Graph View,而Obsidian App原生不支持该功能。

在集成Graph View时遇到了哪些问题?

遇到的问题包括canvas占用空间过大、tab切换时出现空白、重复插入canvas等。

如何解决tab切换时的重复插入问题?

通过监听文件打开事件,确保在切换时正确处理canvas的插入和移除。

将Graph View集成功能计划如何实现?

计划将该功能集成到personal assistant插件中,以实现自动化开关和配置。

如何通过dataview触发local graph的集成?

可以在任意笔记文件中执行js代码,通过dataview实现local graph的集成触发。

🏷️

标签

➡️

继续阅读