Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidian:蔵書データベースをさらに磨く

今年のものは今年のうちに。

Books

Book Search プラグインを使ってデータベースを作ります。

作品の詳細もデータにあるのに検索の対象としてなかった。 ちょっともったいないなあと思ったのでサブタイトルも含め、絞り込みできるようにしました。

Books.md

dataviewスクリプトです。

```dataviewjs
const p = dv.el("input")
p.placeholder = "..."
p.style = "font-size:large;border-radius:3px;"
const btn = dv.el("button", "+")
btn.style = "font-size:small;margin:5px;width:40px;"
const b = dv.el("div", "")
b.style = "max-height:14000px;"
disp()

p.onkeyup = () => disp()

btn.onclick = () =>{
  navigator.clipboard.writeText(p.value)
  s = "obsidian-book-search-plugin:open-book-search-modal"
  app.commands.executeCommandById(s) 
}

function disp(){
  const  d = dv.pages('"book"')
  .filter(x => (x.title + x.subtitle + x.author + x.description).includes([p.value]))
  .sort(x => x.file.ctime, "desc")
  .map(x => `<tr style="font-size:small;padding:4px;"><td><a class=internal-link href="${x.file.name}"><img style="max-width:60px;" src="${x.coverSmallUrl}"></a></td><td>${x.title}</td><td>${x.author}</td><td>${(x.publisher || "")}</td><td>${x.publishDate.toLocaleString()}</td></tr>`)
  b.innerHTML = "<br><table style='width:100%;'>" + d.join("\n") + "</table>"
}
```

dv.pages('"book"')book は Book Search のファイルが作成されるフォルダです。 ご自分の環境に合わせ書き換えてください。

カード型データベース

プロパティはdataviewの検索対象になる。 考えてみるとこれは「カード型データベースになる」ということですね。 FileMakerみたいな感じで。

現状でもコアプラグインの Properties view でプロパティの検索はできます。 でも、このインターフェースでは活用する気になれない。

どうも Dynamic views という「プロパティのデータベース化」がロードマップに載っています。 ちょっと前まで「databases」という名前だったけど「Dynamic」に変わりました。 ただ表示するだけじゃない。 ダイナミックだ、ということでしょう。 Dynalist社が言うからには、この名前に意気込みが籠ってそう。

どんなのになるでしょう? 来年が待ち遠しい。

まとめ

しめ縄も飾ったしお鏡さんも床の間に置いたし。