Elmで何か作って勉強しようという目的のもと、自分が時間管理に使いそうなものを作っています
リポジトリはこちら
機能
- startをクリックしてからの経過時間を計測します
- endをクリックして計測を中断でき、startをクリックして再開できます
- resetで計測を終了して、履歴に記録します
データ設計
当初は、経過時間を計ればいいから開始時刻と終了時刻をMaybe Int
で準備すればいいかと思っていたのですが、IntroductionのMaybeを読んで考え直すことにしました。
結果として状態を3つ(Initial, Start, Stop)に分けて、
- Initialは時刻を持たない
- Startは「最後に中断したときまでの経過時間」、「開始時刻」を持つ
- Stopは「経過時間」を持つ
ことにしました。Maybeで持つよりは大分よくなったと思います。
レイアウト
elm-neat-layoutを使ってみることにしました。
個々の部品にpaddingを設定して、縦並びと横並びを組み合わせて組んでいくイメージのようですね。1
表示内容に変更があったときでもそれっぽく並べてくれるので、全体を見つついろんなところを調整する、、、なんてことがなくなりそうです。
今後
とりあえず以下の機能を作ったら個人的に使い始められそう
1. サブを足して、ストップウォッチを2つにする
2. 中断していた時間はサブで計測し、別で履歴を残す
3. 履歴のimport/export
2019/10/05
追加開発したので更新
-
paddingは型で管理されているので、違うpaddingを同じ並びに入れてしまう(レイアウトが崩れる)とコンパイラが教えてくれます。 ↩