下書きをフォルダに集めていると、今どれを書くのだったか、わかりにくい。 書き掛けで終わってるのはどれだろう? 人の流れの中でそっと時刻表を見上げる。
そんな迷子のための案内板です。
progress
フォルダ内のファイルを閲覧するdataview。 修正日順に並びます。
1600文字を見安として、どれくらい書き進んでいるかを棒グラフで表示。 タイトルをタップするとファイルを開きます。 これで章立てを分割執筆しようという算段。
cssclassesを使うのでMinimalテーマ限定です。
変更点
数値を「文字数」にしました。 サイズを2で割ってるだけですけど。
---
cssclasses: table-wide, table-nowrap, table-tiny, row-alt, cards
---
```dataviewjs
const MAX = 1600
const s = dv.current().file.folder
dv.el("div","<a class=internal-link href='" + s + "/new'>" + s + "</a>")
const d = dv.pages("").file
.filter(x => x.folder == s)
.sort(x => x.mtime, "desc")
.map(x => [ x.link, "<progress value=" + Math.min(100, x.size/MAX*50) + " max=100></progress>", "<div align=right>" + parseInt(x.size/2) + "</div>"])
dv.table(["name", "bar", "words"], d)
```
バーの配色も整えました。 文字数が少ないうちは赤系列で、書き進めるに従い茶や緑になります。 フルマークはアクセントカラー。 「外観」で設定した色ですね。
使い方
dataviewなのでリーディングビューで表示するだけ。
progress.mdのあるフォルダをカード形式で表示します。
左上にフォルダ名が出てますが、ここをタップすると同じフォルダでの新規ファイル作成になります。
Sortable
プラグインのSortableを入れると、名前順や文字数順に変えたりできます。
dataviewにSortableは不可欠だと思う。
文字数ではない
厳密に言うと、ファイルサイズは文字数ではありません。 全角文字は2バイトになるし、改行もカウントされる。 しかも、普通に文章を書けば余白が生まれます。 空行も入る。 これらを考慮すると、1600文字だとA4の2枚分になるんじゃないかな。
そんなわけで、もし少ないと思われたら、スクリプト内の変数MAXを書き換えてください。 書こうとしているモノによって、この数値は異なると思います。
まとめ
Roomが全体の目次だとすると、progressはフォルダの目次。