import './styles/counter.css'
import { Countdown } from './counter.js'
import { fetchObject } from './fetch.js';
import { entrypoint } from './entrypoint.local.js';
// select elements
const main = document.querySelector('#app');
const heading = document.createElement('h1');
const message = document.createElement('div');
message.classList.add('message');
const app = document.createElement('div');
app.classList.add('countdown-timer');
main.appendChild(heading);
main.appendChild(app);
main.appendChild(message);
const api = new fetchObject(entrypoint, main.dataset.id);
constcheckCounter();
// Get the new year
const getEndTime = (counter) => {
return new Date(Date.parse(counter.endTime));
};
const format = (t) => {
return t < 10 ? '0' + t : t;
};
const render = (time) => {
app.innerHTML = `
${format(time.days)}
Days
${format(time.hours)}
Hours
${format(time.minutes)}
Minutes
${format(time.seconds)}
Seconds
`;
};
const showMessage = () => {
message.innerHTML = "Le compteur est terminé";
//app.innerHTML = '';
//heading.style.display = 'none';
};
const hideMessage = () => {
message.innerHTML = '';
heading.style.display = 'block';
};
const complete = () => {
showMessage();
constcheckCounter();
};
const showErrorMessage = (error) => {
message.innerHTML = 'Erreur ' + error.code + ' - ' + error.message;
const buttonRestart = document.createElement('button');
buttonRestart.innerText = "Réessayer";
app.appendChild(buttonRestart);
buttonRestart.addEventListener('click', (e) => {
buttonRestart.remove();
constcheckCounter();
})
}
function constcheckCounter () {
const intervalId = setInterval(async () => {
const counter = await api.getCounter();
if (counter.error) {
clearInterval(intervalId);
showErrorMessage(counter.error);
return;
}
heading.innerText = counter.name;
if (counter.state === 'ready') {
hideMessage();
const period = new Date(counter.minutes * 1000 * 60);
render(Countdown.getTime(period));
} else if (counter.state === 'completed') {
const zero = new Date(0);
showMessage();
render(Countdown.getTime(zero));
} else {
clearInterval(intervalId);
const countdownTimer = new Countdown(
getEndTime(counter),
render,
complete
)
}
}, 1000)
}