// const TimerContainer = ({ seconds, refresh, render }) => {
// const [count, setCount] = useState(seconds) // отслеживаем состояние количества секунд
// const [isRunning, setIsRunning] = useState(true) // отслеживаем состояние кнопки стоп/старт для таймера
// const Render = render
// console.log('count ', count)
// // Таймер
// useEffect(() => { // эффект, отвечающий за то, когда счетчик прошле в 0, он его переводит в состояние паузы
// if (count <= 0) {
// setIsRunning(false)
// }
// }, [count <= 0])
// useEffect(() => { // сам счетчик
// if (isRunning) {
// const start = performance.now()
// const int = setInterval(() => {
// const diff = Math.floor((performance.now() - start) / refresh)
// setCount(count => count - diff)
// }, refresh)
// return () => clearInterval(int)
// }
// })
// return (
//
//
// {/* */}
//
// )
// }
// LCD
// TimerContainer для LCD
const TimerContainer = ({ seconds, refresh, render }) => {
const [count, setCount] = useState(seconds) // отслеживаем состояние количества секунд
const [isRunning, setIsRunning] = useState(false) // отслеживаем состояние кнопки стоп/старт для таймера
const Render = render
console.log('count ', count)
// Таймер
useEffect(() => { // эффект, отвечающий за то, когда счетчик прошле в 0, он его переводит в состояние паузы
if (count <= 0) {
setIsRunning(false)
}
}, [count <= 0])
useEffect(() => { // сам счетчик
if (isRunning) {
const start = performance.now()
const int = setInterval(() => {
const diff = Math.floor((performance.now() - start) / refresh)
setCount(count => count - diff)
}, refresh)
return () => clearInterval(int)
}
})
return (
)
}
// Timer для LCD
const Timer = ({ ms }) => {
// функция-перевод секунд в нормальный вид
function timerFormat(time) {
const h = Math.floor(time / 60 / 60)
const m = Math.floor(time / 60) - (h * 60)
const s = time % 60
const defaultZero = (param) => (param > 9) ? param : '0' + param
return `${defaultZero(h)} : ${defaultZero(m)} : ${defaultZero(s)}`
}
return (
{timerFormat(ms)}
)
}
// Watch
const Watch = ({ ms }) => {
const h = Math.floor(ms / 60 / 60) * 30 // умножаем на 30, чтоы перевести число часов в градусы циферблата
const m = (Math.floor(ms / 60) - (h * 60 / 30)) * 6 // умножаем на 6, чтоы перевести число минут в градусы циферблата
const s = ms % 60 * 6 // умножаем на 6, чтоы перевести число секунд в градусы циферблата
return (