2
respostas

[Bug] Correção: tempo não

Notei que, quando o tempo acaba e o alarme toca, o timer não "reseta" pra pessoa poder rodar um novo "pomodoro" de 25 minutos. Fica apenas zerado. É preciso recarregar a página.

Eu resolvi isso criando uma constante que recebe o mesmo valor do tempo inicial (chamei de "tempoDecorridoEmSegundosReset").

Na função contagemRegressiva, quando a condicional identifica que o tempo acabou, a constante* tempoDecorridoEmSegundos* (que nesse momento já está zerada), recebe o valor de tempoDecorridoEmSegundosReset, reiniciando o valor.

Coloquei na condicional *tempoDecorridoEmSegundos <= *0 a função mostrarTempo() para que ela mostre o novo valor de tempoDecorridoEmSegundos

Segue no comentário abaixo código no trecho citado (alguns nomes de constantes ficaram diferentes da aula)

2 respostas

Apenas o trecho citado


// MUDAR AQUI - MUDA O TEMPO PADRAO DO PRIMEIRO TIMER
//colocaR no primeiro número o tempo total do timer, em minutos
let tempoDecorridoEmSegundos = 25 * 60; 
tempoDecorridoEmSegundosReset = 25 * 60; 

let intervaloId = null;

//mudança de imagem, fundo e texto ---------------------------------------------------------------------------------------------------------------------------

focoBt.addEventListener('click',() => { //quando clica em um elemento que está no modo foco
    tempoDecorridoEmSegundos = 25 * 60 //ALTERAR AQUI - seta do tempo do timer nesse contexto
    tempoDecorridoEmSegundosReset = 25 * 60 ; //ALTERAR AQUI
    alterarContexto('foco');
    focoBt.classList.add('active'); //teste
}) 

curtoBt.addEventListener('click',() =>{ // eventListener ao clicar
    tempoDecorridoEmSegundos = 5 * 60; //seta do tempo do timer nesse contexto
    tempoDecorridoEmSegundosReset = 5 * 60;
    alterarContexto('descanso-curto');
    curtoBt.classList.add('active'); //teste
})

longoBt.addEventListener('click',() => {
    tempoDecorridoEmSegundos = 15 * 60; //seta do tempo do timer nesse contexto
    tempoDecorridoEmSegundosReset = 15 * 60;
    alterarContexto('descanso-longo');
    longoBt.classList.add('active'); 
})

//imprimir valor restane na tela
const contagemRegressiva =  () => { //arrow function
    if (tempoDecorridoEmSegundos <= 0) { //quando acaba do tempo
        // console.log("acabou tempo")
        musicaFim.play();
        alert('Tempo esgotado');
        
        zerar(); // para o temporizador
        imageStartPauseBt.setAttribute('src','imagens/play_arrow.png')
        textoStartPauseBt.innerHTML = 'Começar';
        tempoDecorridoEmSegundos = tempoDecorridoEmSegundosReset;
        mostrarTempo(); //imprime valor na tela
        
        return //para a execução
    }
        
        tempoDecorridoEmSegundos -= 1; //se não acabou, diminui um
        mostrarTempo(); //imprime valor na tela
               
}

Oii, Diogo! Tudo bem?

Agradeço por compartilhar com a comunidade a sugestão dessa funcionalidade para melhorar o seu projeto. Parabéns por colocar em prática e ir além do que é abordado no curso! Essa é uma ótima habilidade para Devs .

Continue se dedicando aos estudos e qualquer dúvida, conte conosco.

Abraço, Diogo!