LoginSignup
1
0

Denoでプログレスバーを表示する

Last updated at Posted at 2023-12-01

はじめに

おにぎりくれる奴だいたい友達、にわのわです。
本アドベントカレンダーのモチベーションを保つために、
アドベントカレンダーの進捗を表示するプログレスバーを作ることにしました。
プログレスバー、見てるとテンションアがるよね?

作ったもの

ソースはこちら

bar-kansei.gif

要件

  • ツイッターで呟きたいので1画面で収まるか、140字に収まること。
  • 全体進捗と各記事の進捗を表示したい。
  • 各記事の進捗は["タイトル未定", "タイトルだけ決まった" ,"書いてる","書いた"]の4段階で表現したい。

素材

もうライブラリあった。

ということでREADMEにあったサンプルを動かしてみる
bar-example.gif

いいじゃん!

作る

これから良い感じにカスタムしていきます。

同一ディレクトリにあるprogress.jsonを読みます。 jsonの形はこんな感じ。

progress.json
"dayNN": {
        "tittle": "未定",
        "progress": "タイトル未定"
    },...

あとはサンプルコードをもとにプログレスバーの表示を行います

main.ts
  function showProgress(progress: Progress[]) {
  if (completed <= total){
    completed += 1;
    bars.render(
      progress.map(p => ({ completed:(p.progress >= completed) ? completed:p.progress, total,  text: p.title }))
    )
    setTimeout(function () {
      showProgress(progress);
    }, 100);
  }else{
    bars.end();
  }
}

ポイントとしてはelseできちんとbars.end()を呼ぶことです。
でないとこんな感じで閉まらない終わり方になってしまいます。
bar-kimoi.gif

プログレスバーなのに完了しないことを想定してないからね…

まとめ

プログレスバー、見てるとテンションアがるよね?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0