TemplaterからDataview pluginのAPIを呼び出したいというパターンがあったのでDiscord探してみたらすぐ見つかった
結論
const dv = this.app.plugins.plugins["dataview"].api;
これでOKっぽい
すごい、Dataviewはやっと慣れてきたのでデータの取り回しとかはある程度把握できてきたと感じているので結構幅が広がる
事例
具体的な事例としては、Podcastで聞いたものリストをDailyNoteに記録していて、Dataviewでサマリー表示している
サマリー表示する際に、[name:: hogefm] [num:: 1]
のようにラベルを付与してこのタスクはどのPodcastでエピソード何なのかという情報を付与している
で、毎度携帯画面を見ながら入力するのがだるくなってきた+表記揺れが発生したのでTemplaterのSuggesterを使ってすでにある場合はそこから選択できるようにした
- templates/podcast.md
<%* const dv = this.app.plugins.plugins["dataview"].api; const tasks = dv.pages("#daily").file.tasks.where(t => t.completed && t.section.subpath === "Podcast"); const podcasts = tasks.map(t => t.name).distinct(); const selectedName = (await tp.system.suggester((name) => name, podcasts)); %><% selectedName %><% tp.file.cursor() %>
入力後は行末にカーソルが移るようにtp.file.cursor()
も記述している
これをTemplaterのHotKeyの部分に登録して、実際にHotKeyを設定しなくても編集中に/
でコマンド自体は呼び出せるのでそれを使っている
- HotKeyへ追加
- 使用イメージ
おわり
Discordのdataview
チャンネルとtemplater
チャンネルがサンプルコードの宝庫っぽい感じがしている
全然追えてないがGitHubとかよりサンプルありそうな気がしている
タグとかは補完精度がそれなりによいので気にしていなかったが特定文脈でこういうのが欲しいっていうのはあって、そういうケースをさくっと解決できてしまう仕組みがあるのはよいなーと感じた