総合案内版になりつつある。
Room
よく見るページはブックマークしてますが、そのページに行くまでに左サイドパネルをファイルエクスプローラやThinoからブックマークに切り替え、それから開きたいブックマークを選んで、って手数が多い。
いつもRoomを開くんだから、そこを起点にすればいいじゃないか。
Room.md
だんだん大きくなっていく。
```dataviewjs const FOLDER = "keyword/" const s = "background:ivory;width:119px;height:112px;border:1px solid #eee;border-top:8px solid gold;text-decoration:none;padding:3px;border-radius:3px;margin:3px;overflow:hidden;float:left;" const ss = "border-top:8px solid orange;" dv.paragraph(">[!info]- Room\n>~~~dataview\n>task where !completed group by file.link\n>~~~\n") const p = dv.el("input") p.placeholder = "..." p.style = "font-size:large;background:whitesmoke;border-radius:3px;" const btn = dv.el("button","▶︎") btn.style = "font-size:small;margin:5px;width:40px;" const h = dv.el("hr", "") h.style = "border:1px solid whitesmoke;margin:10px;" const b = dv.el("div", "") b.style = "font-size:small;font-weight:bold;height:4000px;" disp() p.onkeyup = () => disp() btn.onclick = () => { q = encodeURI(p.value) if(q){ open(`obsidian://new?file=${encodeURI(FOLDER)}${q}&content=%0A~~~query%0A${q}%0A~~~%0A`) }else{ open("obsidian://new") } } function disp(){ r = new RegExp(`(${p.value})`, "i") const c = dv.pages('').file .filter(x => r.test(x.name)) .filter(x => x.starred) .sort(x => x.mtime, "desc") .map(x => `<a class=internal-link style='${s}${ss}' href='${x.name}'>${x.name}</a>`) const d = dv.array(Object.entries(dv.app.metadataCache.fileCache)) .filter(([x,y]) => r.test(x)) .sort(([x,y]) => y.mtime, "desc") .limit(210) .map(([x,y]) => `<a class=internal-link style='${s}' href='${x}'>${x.split("/").pop().replace(".md","")}</a>`) b.innerHTML = c.join("\n") + d.join("\n") } ```
キャッシュではブックマークの有無が拾えないので、二重の検索になっています。 見た目はあまり変わらない。
変数ssでスタイルを指定するとブックマークのカード配色をカスタマイズできます。
使い方
ブックマークしたページが初めの方にきます。 そのあとに修正順のファイル履歴が並びます。 カードをタップするとそのノートを開きます。 Roomをピン留めしておけば別窓で開きます。 履歴にブックマークも表示されますが、この回避法が分からず。
検索欄にキーワードを書いて絞り込み。 右横の「▶︎」で新規ファイル作成。 キーワードがあるときは、変数FOLDERのフォルダにクエリー・ファイルを作ります。
上段の「Room」に未完了タスクのリストが表示されます。
まとめ
これで蔵書データベースにもアクセスしやすい。