Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   pomodoro clock (https://javascript.ru/forum/misc/67858-pomodoro-clock.html)

killDucksForMoney 12.03.2017 09:26

pomodoro clock
 
Всем привет.

Пишу Pomodoro clock, это проектная работа для freecodecamp.

Вот рабочий пример.

Есть такой код:
window.onload = function(){
  var params = {
    session:25,
    break: 5
  };
  var time = new Timer(params);
  time.start();
}
function Timer(params){
  this.session = params.session||25;
  this.break = params.session||5;
}
Timer.prototype.start = function(){
  var self = this;
  var sec = 60;
  var timerId = setTimeout(tick, 1000);   
  var timing = setTimeout()
  function tick(){
    sec--;
    console.log(self.session+":"+sec);
    if(self.session==0&&sec==0)console.log("change time");//вот тут надо чтобы self.session=this.break а потом обратно когда выйдет его время.
    if(sec==0){      
      self.session--;          
      sec=60;
    }    
    timerId = setTimeout(tick, 1000);
  }   
}


Не могу придумать как переключать время с 25 минут на 5 минут без повтора кода. Посоветуйте что нибудь пожалуйста.

рони 12.03.2017 11:30

таймер-помидорка
 
killDucksForMoney,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.onload = function(){
  var params = {
    session:2,
    Break: 1
  };
  var time = new Timer(params);
  time.start();
}
function Timer(params){
  this.session = params.session||25;
  this.Break = params.Break||5;
  this.name = "session";
  this.time = (params.session||25)*60*1000;
  this.timerId = null;
}
Timer.prototype.stop = function(){window.clearTimeout(this.timerId) }
Timer.prototype.start = function(){
  var self = this;
  self.stop();
  var from = (new Date).getTime();
  var to = from + self.time
  function tick(){
    self.time = to - (new Date).getTime(); document.querySelector("#show").innerHTML = formatTime(self.time) + " " + self.name
    if(self.time <= 0){
     self.name = self.name == "session" ? "Break" : "session";
     self.time = self[self.name]*60*1000;
     self.start()
    }
    else self.timerId = setTimeout(tick, 1000);
  }
  tick()
function two(a) {
    return (9 < a ? "" : "0") + a
}
function formatTime(a) {
    a = Math.floor(a / 1E3);
    var c = Math.floor(a / 60),
        d = Math.floor(c / 60);
    a %= 60;
    c %= 60;
    return two(d) + " : " + two(c) + " : " + two(a)
}
}
  </script>
</head>

<body>
<div id="show"></div>

</body>
</html>

killDucksForMoney 12.03.2017 20:08

Спасибо рони!

Ты все сделал за меня) Все работает!

killDucksForMoney 12.03.2017 20:22

Rise, я вот только только понял это. И поспешил удалить сообщение, как увидел твое. Спасибо теперь понял)

рони 12.03.2017 20:22

killDucksForMoney,
зарезервированные слова лучше не использовать

killDucksForMoney 12.03.2017 20:25

рони,
я и забыл что "break" зарезервировано, пока не увидел на форуме что он подсвечивается иначе.


Часовой пояс GMT +3, время: 11:11.