Jazzと読書の日々

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

dataviewをdataviewJSに書き換える実験

JSになると何が違うのだろう。

dataview

dataviewには二つの顔がある。 一つはデータベース、もう一つがスクリプト。 データベース的側面はQueryの拡張版ですが、スクリプトは何なのでしょうか。 それを理解するために、同じ機能の検索をそれぞれで書いてみます。

データベース

前回の「修正日で絞り込み」。小文字書きにしました。

```dataview
table file.cday as "作成日", file.mday as "修正日"
from "Inbox"
where date(today) - file.mday <= dur(7days)
sort file.mday desc
```

スクリプト

同じリストをスクリプトで再現しました。dataviewjsを付ける。

```dataviewjs
d = dv.pages("").file
  .where(x => (dv.date("today") - x.mday <= dv.duration("7days")))
  .sort(x => x.mday, "desc");

dv.table(["リンク", "作成日", "修正日"],
  d.map(x => [x.link, x.cday, x.mday])
);
```

解説

dvコマンドでデータを取得します。

d = dv.pages("").file

dv.page() が from に該当します。 どのフォルダを対象にするか指定。

  .where(x => (dv.date("today") - x.mday <= dv.duration("7days")))
  .sort(x => x.mday, "desc");

whereもsortもほぼ同じ。 アロー関数で記述します。

dv.table(["リンク", "作成日", "修正日"],
  d.map(x => [x.link, x.cday, x.mday])
);

テーブルの並べ方をマップ関数で指定します。

まとめ

さて、ここからどうするか。