0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

🔰JS初心者が作るGoogle extension V3 ⑩ -popupのポモドーロタイマーの処理-

Last updated at Posted at 2022-11-03

前回の続き → 🔰JS初心者が作るGoogle extension V3 ⑨ -ポモドーロタイマーの処理-

完成した作品は → こちら🐕

popupのポモドーロタイマーの処理

popupに戻ってきました。
おさらいですが現状popupはこうなってます。

popup.js

//色々定義
const ~~
let ~~
//がいっぱい

//タブの切り替え
document.addEventListener('DOMContentLoaded', function(){省略}, false);

//「タイマーを設定する▷」を押した時
makeTimerBtn.onclick = function() {省略};

//フォームから時間内容を取得
function get_timer_form(){省略}

//タイマーを作成したら、タイマーとボタンを表示
function timer_display(){省略}

function start() {
    途中まで省略
    popup_pomodoro_timer()
};

function stop() {省略};

function reset() {省略};

このstart()内にあるpopup_pomodoro_timer()の中身を見ていく。


popup_pomodoro_timer()の中に
popup_count_down()popup_interval_count_down()があります。

bgのpomodoro_timer()と違うのは、bgから送られてきた値を使うので、request.~~を使うやすくするために関数の中に関数を入れました。

中に入れてるものの、構成はbgのpomodoro_timer()さほど変わらないので軽く詳細を。

function popup_pomodoro_timer() { 
    //bgから送られてくる
    chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
        //集中時間が0秒以上の場合popup_count_down()を実行
        if (request.work_second >= 0) {
            popup_count_down()
        //休憩時間が0より上(0を含まない)の場合popup_interval_down()を実行
        }else if(request.interval_second > 0){
            popup_interval_count_down()
        //休憩時間が0になるかつ、経過時間と総秒数が同じ場合reset()を行う
        }else if(request.interval_second == 0 && request.elapsed_time == request.total_second){
             reset()
          };
        };

        //timer_display()と同様の処理
        function popup_count_down() {
            let min = Math.floor(request.work_second / 60);
            let sec = request.work_second % 60;
            work_or_interval.innerHTML = "<div class='working pt-3'>集中タイム!</div>";
            view_timer.innerHTML = String(min).padStart(2,"0") + ":" + String(sec).padStart(2,"0");
        }

        function popup_interval_count_down() {
            let min = Math.floor(request.interval_second / 60);
            let sec = request.interval_second % 60;
            work_or_interval.innerHTML = "<div class='intervaling pt-3'>休憩タイム!</div>";
            view_timer.innerHTML = String(min).padStart(2,"0") + ":" + String(sec).padStart(2,"0");
        }

        return true
    })
};

popupとbackgroundは大まかに導入できたので、次回はbackgroundで出てきたcontent.jsを見ていく。

拡張機能の記事リンク

🔰JS初心者が作るGoogle extension V3 ①
🔰JS初心者が作るGoogle extension V3 ② -popup.htmlの作成-
🔰JS初心者が作るGoogle extension V3 ③ -タブの切り替えの処理-
🔰JS初心者が作るGoogle extension V3 ④ -タイマーを表示させる-
🔰JS初心者が作るGoogle extension V3 ⑤ -スタート/ストップ/リセットの各ボタン機能-
🔰JS初心者が作るGoogle extension V3 ⑥ -タイマー作動中の有無で表示する画面の処理-
🔰JS初心者が作るGoogle extension V3 ⑦ -初インストール時の処理/5分間の再接続処理-
🔰JS初心者が作るGoogle extension V3 ⑧ -start/stop/reset押した時の挙動-
🔰JS初心者が作るGoogle extension V3 ⑨ -ポモドーロタイマーの処理-
🔰JS初心者が作るGoogle extension V3 ⑩ -popupのポモドーロタイマーの処理-
🔰JS初心者が作るGoogle extension V3 ⑪ -content.jsの処理-

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?