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])
);
テーブルの並べ方をマップ関数で指定します。
まとめ
さて、ここからどうするか。