-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdep-script.js
123 lines (109 loc) · 4.01 KB
/
dep-script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
const html = document.querySelector('html');
const botonEnfoque = document.querySelector('.app__card-button--enfoque');
const botonCorto = document.querySelector('.app__card-button--corto');
const botonLargo = document.querySelector('.app__card-button--largo');
const banner = document.querySelector('.app__image');
const titulo = document.querySelector('.app__title');
const botones = document.querySelectorAll('.app__card-button');
const botonIniciarPausar = document.querySelector('#start-pause');
const inputMusicaEnfoque = document.querySelector('#alternar-musica');
const textoIniciarPausar = document.querySelector('#start-pause span');
const iconoIniciarPausar = document.querySelector(".app__card-primary-butto-icon");
const tiempoEnPantalla = document.querySelector('#timer');
const musica = new Audio('./sonidos/luna-rise-part-one.mp3');
const audioPlay = new Audio('./sonidos/play.wav');
const audioPausa = new Audio('./sonidos/pause.mp3');
const audioTiempoFinalizado = new Audio('./sonidos/beep.mp3');
let tiempoTranscurridoEnSegundos = 5;
let idIntervalo = null;
musica.loop = true;
inputMusicaEnfoque.addEventListener('change', () => {
if (musica.paused) {
musica.play();
} else {
musica.pause();
}
});
botonEnfoque.addEventListener('click', () => {
tiempoTranscurridoEnSegundos = 1500;
cambiarContexto('enfoque');
botonEnfoque.classList.add('active');
});
botonCorto.addEventListener('click', () => {
tiempoTranscurridoEnSegundos = 300;
cambiarContexto('descanso-corto');
botonCorto.classList.add('active');
});
botonLargo.addEventListener('click', () => {
tiempoTranscurridoEnSegundos = 900;
cambiarContexto('descanso-largo');
botonLargo.classList.add('active');
});
function cambiarContexto(contexto) {
mostrarTiempo();
botones.forEach(function (botonContexto) {
botonContexto.classList.remove('active');
});
html.setAttribute('data-contexto', contexto);
banner.setAttribute('src', `/imagenes/${contexto}.png`);
switch (contexto) {
case "enfoque":
titulo.innerHTML = `
Optimiza tu productividad,<br>
<strong class="app__title-strong">sumérgete en lo que importa.</strong>
`;
break;
case "descanso-corto":
titulo.innerHTML = `
¿Qué tal tomar un respiro? <strong class="app__title-strong">¡Haz una pausa corta!</strong>
`;
break;
case "descanso-largo":
titulo.innerHTML = `
Hora de volver a la superficie.<strong class="app__title-strong"> Haz una pausa larga.</strong>
`;
break;
default:
break;
}
}
const cuentaRegresiva = () => {
if (tiempoTranscurridoEnSegundos <= 0) {
audioTiempoFinalizado.play();
alert('¡Tiempo finalizado!');
const enfoqueActivo = html.getAttribute("data-contexto") == "enfoque"
if (enfoqueActivo) {
//Broadcast event
const evento = new CustomEvent("EnfoqueFinalizado")
document.dispatchEvent(evento)
}
reiniciar();
return;
}
tiempoTranscurridoEnSegundos -= 1;
mostrarTiempo();
};
botonIniciarPausar.addEventListener('click', iniciarOpausar);
function iniciarOpausar() {
if (idIntervalo) {
audioPausa.play();
reiniciar();
return;
}
audioPlay.play();
idIntervalo = setInterval(cuentaRegresiva, 1000);
textoIniciarPausar.textContent = "Pausar";
iconoIniciarPausar.setAttribute('src', `/imagenes/pause.png`);
}
function reiniciar() {
clearInterval(idIntervalo);
textoIniciarPausar.textContent = "Comenzar";
iconoIniciarPausar.setAttribute('src', `/imagenes/play_arrow.png`);
idIntervalo = null;
}
function mostrarTiempo() {
const tiempo = new Date(tiempoTranscurridoEnSegundos * 1000);
const tiempoFormateado = tiempo.toLocaleTimeString('es-ES', { minute: '2-digit', second: '2-digit' });
tiempoEnPantalla.innerHTML = `${tiempoFormateado}`;
}
mostrarTiempo();