すみません。 スクリプトに const をつけるのを忘れていて、他のスクリプトとバッティングを起こすようになってました。 修正版に置き換えてください。
Room
Obsidianのファイル履歴をカード形式で表示します。
このページを見ればファイル全体にアクセスしやすい。 そうした入口を目指していたのに、ポカしてしまいました。
Room.md
インポートすればルートにRoomを作ります。
>[!example]- Room
>```dataview
> task where !completed group by file.link
>```
```dataviewjs
const FOLDER = "keyword/"
const s = "background:wheat;width:120px;height:112px;border:1px solid #eee;border-top:8px solid tan;text-decoration:none;padding:3px;border-radius:3px;margin:3px;overflow:hidden;float:left;"
const p = dv.el("input")
p.placeholder = "..."
p.style = "font-size:18px;background:whitesmoke;border-radius:3px;"
const btn = dv.el("button","+")
btn.style = "font-size:12px;margin:5px;width:40px;"
dv.paragraph("---")
const b = dv.el("div","")
b.style = "font-size:small;font-weight:bold;height:5000px;"
disp()
p.onkeyup = function(){
disp()
}
btn.onclick = function(){
q = encodeURI(p.value)
if(q){
open("obsidian://new?file=" + encodeURI(FOLDER) + q + "&content=%0A```query%0A" + q + "%0A```%0A")
}else{
open("obsidian://new?content=")
}
}
function disp(){
r = new RegExp("("+ p.value +")","i")
const d = dv.array(Object.entries(dv.app.metadataCache.fileCache))
.filter(([x,y]) => r.test(x))
.sort(([x,y]) => y.mtime, "desc")
.limit(200)
.map(([x,y]) => "<a class=internal-link style='" + s + "' href='" + x + "'>" + x.split("/").pop().replace(".md","") + "</a>")
b.innerHTML = d.join("\n")
}
```
dataviewがインストールされていることが前提。
使い方
リーディングモードで表示します。
カードをタップすればそのページを開きます。 カードは修正日順に並んでいます。 検索欄でファイルの絞り込みをすることもできます。
検索欄の右横にある「+」で新規ファイル作成になります。
検索欄にキーワードがあるときは、そのキーワードを全文検索した結果をファイルとして開きます。 ソースの先頭にある変数FOLDERで指定したフォルダにキーワード用のファイルを作ります。 これで内部リンクが作りやすくなる仕組み。
まとめ
ということで、とりあえず修正版。