オンラインディベート向けの簡易タイマー
src/app
に格納- タイマーキットの実装を使ったアプリケーションの実装例
- 今は一種類だけどバリエーションがあってもよさそう
src/lib
に格納- 特定のUI実装に依存しないロジックを実装
- ファイル構成
TkClock
一秒をできるだけ正確に測ることを責務とするクラスTkTimerState
タイマーの状態遷移ロジックを切り出したクラスTkAudio
ブラウザのAudio
をラップしたクラスTkTimer
他のクラスを組み合わせてタイマーの機能を実現
spec
に格納
npm run build
public/index.html
を開く
- "online" のタイマーだけど一応オフラインでも最低限は動くように作っておく
- 当分はIE11でも動くように作りたい
- ロジックはできるだけテストを書いておく
npm run test
- issuesを参照
- 効果音は https://jfxr.frozenfractal.com/ とSoundEngineで頑張ってつくったけど、もっとそれっぽいのがあれば
- デザインもスキン的な感じで他のパターンもあると良さそう
stateDiagram-v2
初期状態 --> カウントダウン
初期状態 --> カウントアップ
カウントダウン --> 初期状態
カウントアップ --> 初期状態
state カウントダウン {
[*] --> カウントダウン時間設定
カウントダウン時間設定 --> カウントダウン中
カウントダウン時間設定 --> [*]
カウントダウン中 --> [*]
カウントダウン中 -->カウントダウン一時停止
カウントダウン中 --> カウントダウン完了
カウントダウン一時停止 --> [*]
カウントダウン一時停止 --> カウントダウン中
カウントダウン完了 --> カウントダウン時間設定
カウントダウン完了 --> [*]
}
state カウントアップ {
[*] --> カウントアップ中
カウントアップ中 --> [*]
カウントアップ中 --> カウントアップ一時停止
カウントアップ中 --> カウントアップ完了
カウントアップ一時停止 --> [*]
カウントアップ一時停止 --> カウントアップ中
カウントアップ完了 --> [*]
}