|
@@ -0,0 +1,54 @@
|
|
|
+import React, { useEffect } from 'react';
|
|
|
+
|
|
|
+import s from './TimerPresentation.module.css';
|
|
|
+
|
|
|
+const TimerPresentation = () => {
|
|
|
+ useEffect(() => {
|
|
|
+ function setRotation(el: HTMLDivElement, rotationRatio: number) {
|
|
|
+ el.style.setProperty('--rotation', String(rotationRatio * 360));
|
|
|
+ }
|
|
|
+ const hourHand = document.querySelector(
|
|
|
+ '[data-hour-hand]',
|
|
|
+ ) as HTMLDivElement;
|
|
|
+ const minuteHand = document.querySelector(
|
|
|
+ '[data-minute-hand]',
|
|
|
+ ) as HTMLDivElement;
|
|
|
+ const secondHand = document.querySelector(
|
|
|
+ '[data-second-hand]',
|
|
|
+ ) as HTMLDivElement;
|
|
|
+ function setClock() {
|
|
|
+ const currentDate = new Date();
|
|
|
+ const secondsRatio = currentDate.getSeconds() / 60;
|
|
|
+ const minutesRatio = (secondsRatio + currentDate.getMinutes()) / 60;
|
|
|
+ const hoursRatio = (minutesRatio + currentDate.getHours()) / 12;
|
|
|
+ setRotation(secondHand, secondsRatio);
|
|
|
+ setRotation(minuteHand, minutesRatio);
|
|
|
+ setRotation(hourHand, hoursRatio);
|
|
|
+ }
|
|
|
+ setClock();
|
|
|
+ const idInterval = setInterval(setClock, 1000);
|
|
|
+ return () => clearInterval(idInterval);
|
|
|
+ }, []);
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className={s.clock}>
|
|
|
+ <div className={s.hand + ' ' + s.hour} data-hour-hand></div>
|
|
|
+ <div className={s.hand + ' ' + s.minute} data-minute-hand></div>
|
|
|
+ <div className={s.hand + ' ' + s.second} data-second-hand></div>
|
|
|
+ <div className={s.number + ' ' + s.number1}>1</div>
|
|
|
+ <div className={s.number + ' ' + s.number2}>2</div>
|
|
|
+ <div className={s.number + ' ' + s.number3}>3</div>
|
|
|
+ <div className={s.number + ' ' + s.number4}>4</div>
|
|
|
+ <div className={s.number + ' ' + s.number5}>5</div>
|
|
|
+ <div className={s.number + ' ' + s.number6}>6</div>
|
|
|
+ <div className={s.number + ' ' + s.number7}>7</div>
|
|
|
+ <div className={s.number + ' ' + s.number8}>8</div>
|
|
|
+ <div className={s.number + ' ' + s.number9}>9</div>
|
|
|
+ <div className={s.number + ' ' + s.number10}>10</div>
|
|
|
+ <div className={s.number + ' ' + s.number11}>11</div>
|
|
|
+ <div className={s.number + ' ' + s.number12}>12</div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+export default TimerPresentation;
|