Files
ugreen-homepage/script.js
2026-01-12 00:48:20 +09:00

69 lines
1.7 KiB
JavaScript

// ping
async function checkStatus() {
const cards = document.querySelectorAll(".card");
cards.forEach(async (card) => {
const url = card.getAttribute("data-url");
const dot = card.querySelector(".bolt.tr");
try {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000);
await fetch(url, {
mode: "no-cors",
cache: "no-cache",
signal: controller.signal,
});
dot.classList.remove("status-offline");
dot.classList.add("status-online");
clearTimeout(timeoutId);
} catch (e) {
dot.classList.remove("status-online");
dot.classList.add("status-offline");
}
});
}
checkStatus();
setInterval(checkStatus, 300000);
// bolt animation
function startBoltAction() {
const allBolts = document.querySelectorAll(".bolt, .header-bolt");
if (allBolts.length === 0) return;
const availableBolts = Array.from(allBolts).filter(
(bolt) => !bolt.classList.contains("bolt-acting")
);
if (availableBolts.length > 0) {
const randomBolt =
availableBolts[Math.floor(Math.random() * availableBolts.length)];
const baseRot =
randomBolt.getAttribute("data-rotate") ||
randomBolt.style.getPropertyValue("--r") ||
"0";
randomBolt.style.setProperty(
"--r",
baseRot.toString().replace("deg", "") + "deg"
);
randomBolt.classList.add("bolt-acting");
setTimeout(() => {
randomBolt.classList.remove("bolt-acting");
}, 8100);
}
const nextInterval = Math.random() * 4000 + 3000;
setTimeout(startBoltAction, nextInterval);
}
window.addEventListener("load", () => {
setTimeout(startBoltAction, 2000);
});