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 checkCounter = () => { 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) } const api = new fetchObject(entrypoint, main.dataset.id); checkCounter(); const getEndTime = (counter) => { return new Date(Date.parse(counter.endTime)); }; const format = (t) => { return t < 10 ? '0' + t : t; }; const render = (time) => { app.innerHTML = `