Files
Site-Web/BadUI/FullAnalogClock/logic.js
T
2026-05-16 11:10:19 +02:00

112 lines
2.7 KiB
JavaScript
Executable File

"use strict";
const main = document.getElementById('main')
const numbers = [1,2,3,4,5,6,7,8,9,10,11,12]
// Add numbers
numbers.forEach((number) => {
let div = document.createElement('div')
div.innerText = number
div.classList.add('number')
div.style.setProperty('top', 'calc('+(50 - 50*Math.cos(number*Math.PI/6))+ '% - 8px)')
div.style.setProperty('left', 'calc('+(50 + 50*Math.sin(number*Math.PI/6)) + '% - 4px')
main.append(div)
})
var hour = 0
var min = 0
var sec = 0
const hourLabel = document.getElementById("hour")
const minLabel = document.getElementById("min")
const secLabel = document.getElementById("sec")
const hourPush = document.getElementById("hourPush")
const minPush = document.getElementById("minPush")
const secPush = document.getElementById("secPush")
const secHand = document.getElementById("secHand")
const minHand = document.getElementById("minHand")
const hourHand = document.getElementById("hourHand")
var date = new Date()
var currentSec = date.getSeconds()
var currentMin = date.getMinutes()
var currentHour = date.getHours() + currentMin/60
secHand.style.setProperty('transform', 'rotate(' + currentSec*6 + 'deg)')
minHand.style.setProperty('transform', 'rotate(' + currentMin*6 + 'deg)')
hourHand.style.setProperty('transform', 'rotate(' + currentHour*30 + 'deg)')
setInterval(()=>{
sec++
if(sec%60 == 0 && sec != 0){
min++
sec = 0
}
if(min%60 == 0 && min != 0){
hour++
min = 0
}
updateControlPanel()
},1000)
function updateControlPanel(){
secLabel.innerText = sec
minLabel.innerText = min
hourLabel.innerText = hour
if(sec > 0){
secLabel.classList.add("active")
secPush.classList.add("active")
}else{
secLabel.classList.remove("active")
secPush.classList.remove("active")
}
if(min > 0){
minLabel.classList.add("active")
minPush.classList.add("active")
}else{
minLabel.classList.remove("active")
minPush.classList.remove("active")
}
if(hour > 0){
hourLabel.classList.add("active")
hourPush.classList.add("active")
}else{
hourLabel.classList.remove("active")
hourPush.classList.remove("active")
}
}
function push(order){
switch (order) {
case 'hour':
currentHour += hour
hourHand.style.setProperty('transform', 'rotate(' + currentHour*30 + 'deg)')
hour = 0
break
case 'min':
currentMin += min
currentHour += min/60
minHand.style.setProperty('transform', 'rotate(' + currentMin*6 + 'deg)')
hourHand.style.setProperty('transform', 'rotate(' + currentHour*30 + 'deg)')
min = 0
break
case 'sec':
currentSec += sec
secHand.style.setProperty('transform', 'rotate(' + currentSec*6 + 'deg)')
sec = 0
break
}
updateControlPanel()
}